文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux实践工程师学习笔记二十三

Linux实践工程师学习笔记二十三

时间:2007-01-09  来源:cyrich

网络安全

防火墙的作用:过虑两个网络之间的数据包

Linux内核的Netfilter

 

进出数据包,以及发送到本机的数据包都要经过内核的处理

INPUT链用来过滤进入本机的数据包

OUTPUT链用来过滤从本机发送出去的数据包

FORWARD链用来过滤从本机路由出去的数据包

一个数据包的头部包括源地址、源端口、目的地址、目的端口、协议类型

包过滤正是根据这些特征来过滤数据包

Linux 下通过在三个链中设置规则来过滤

包的处理方式

#iptables -A INPUT -p icmp -j DROP   将进入本机,协议类型为icmp的数据包丢弃。

       -A    添加规则

       INPUT 对INPUT链进行操作

       -p    协议类型

       -j     指定动作,可以是ACCEPT(接收),LOG(日志),REJECT(弹回)

#iptables -L -n        显示三条链的过滤规则

       -L    显示所有链的所有规则

       -n    以数字形式显示

#iptables -F     清空所有链的所有规则

每个包进入本机时都被INPUT链检查

出去时经过OUTPUT链检查

转发时经过FORWARD检查

TCP/IP是双向通信的,所以添加规则时必须注意使INPUT链和OUTPUT链的规则对应。

 

       -D   rulenum   删除第几条规则

       -I     rulenum   在第几条前插入规则

       -P    修改链的默认策略,如默认状态ACCEPT,默认情况下数据包的处理方式

       -s    源地址 -m     匹配扩展条件

       -d    目的地址       -t     维护的表,默认为filter,另外还有一个nat表

       --line-numbers              规则中显示编号

#iptables -L -n --line-numbers       这样方便删除指定行编号的规则或在指定编号前插入

 

拒绝所有连接到本机21端口的所有连接

#iptables -A INPUT -P tcp -d 192.168.0.22 --dport 22 -j DROP

       --dport    目的端口

       --sport    源端口

 

在实际使用过程中服务器还不够严密,还存在被利用的弱点。如22端口,为防止没有请求过的包,在本机主动发送出去,需要检查包的状态。看包是否是人家请求过我,而我回应别人的。Linux的防火墙支持状态匹配检查。

#iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

       -m   匹配状态,上面表示跟本机连接过的包才能从22端口出去

如果正在使用ssh远程管理服务器,不要将第一条的22端口规则删掉,等添加完上面这条规则,才能把存在弱点的第一条删除,否则远程管理会立刻断掉。

 

80端口也同样设置

#iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

防止服务器在80端口主动发送请求,防止病毒利用。添加完后,删除OUTPUT中以前添加的那条80端口规则。

 

假设自己是ssh客户机,访问别人的ssh服务器,先经过OUTPUT链出去

#iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

当包回就,从对方22端口,如果对方有病毒,可能会使用22端口发送请求,所以只接受已建立连接的数据包。

#iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

#service iptables save     保存劳动成果

现在防火墙算配好了,不仅非常严密,还非常有效,有效防止别人攻击你的服务器的各种服务,可防止主动型的病毒或木马攻击。

 

LOG目标

过滤包的检查机制,可以指定某种要求的包写入日志中。

#iptables -A INPUT -p tcp --dport 22 -j LOG --log-level 5 --log-prefix “IPTABLES:”

       -j LOG    记录日志

       --log-level 5    写入日志时需指定级别,与日志服务器配合使用

       --log-prefix “IPTABLES:”      指定写入日志时,记录的前缀字符,主要方便用户分析日志。

添加LOG目标规则时,保证规则前同样的包没有被丢弃或接受,即要注意添加规则的次序。

编缉日志配置文件/etc/syslog.conf 添加:

kern.=notice          /var/log/firewall.log

(消息来源内核kern,级别notice),将内核这个级别消息,记录到firewall.log文件中,等号表示刚好等于这个级别的消息。为什么是notice?因为我们曾经用man syslog知道消息的默认级别notice为5,与LOG目标一致。

注意:日志级别5要跟syslog.conf中的级别一致,级别可通过syslog的manual帮助获得。

#service syslog restart

#tail /var/log/firewall.log

注意将前面在/etc/syslog.conf文件添加过的

*.*          @192.168.0.22

那行删除,还要将/etc/sysconfig/syslog文件中,那行还原为:

SYSLOGD_OPTIONS=”-m 0”

不管哪个服务,修改过配置文件,要立刻生效,必须重启服务。

这样会将进入本机22端口的包记录在firewall.log文件,当使用ssh持续登录使用时,由于不停记录包信息,firewall.log文件会持续增大!
相关阅读 更多 +
排行榜 更多 +
保卫萝卜4内购正式版

保卫萝卜4内购正式版

休闲益智 下载
变身快快跑

变身快快跑

休闲益智 下载
最强大脑逻辑电路

最强大脑逻辑电路

休闲益智 下载