Linux网络安全防护
从Linux Kernel 2.4开始,新的网络包过滤框架Netfilter/Iptables替代了原来的Ipchains/Ipfwadm系统,成为Linux系统新一代的内核级防火墙。作为内核网络协议的一个扩展集,Netfilter可以在内核内部高效地进行包过滤、网络地址转换(NAT)和包重组。对于网络安全防护来讲,主要用到的是Netfilter的包过滤功能,本节也将就这一主题展开描述。
1. Linux内核防火墙的包过滤机制
通过包过滤机制,Netfilter可以按要求禁止网络包对本地服务器的访问及本地对外的访问,或者对经过本地转发的信息包进行过滤以保护系统,防止未经允许的网络访问本地服务。图15-2展示了Netfilter的包过滤机制。
图15-2 Netfilter的包过滤机制 |
可以看出,Netfilter/Iptables防火墙的包过滤机制中实现了对以下3类访问方式的过滤,在Netfilter/Iptables中称它们为过滤链(chain)。
INPUT链:用于过滤来自外部系统、目的地为本机的信息包。例如,服务器中通过Apache Httpd来实现Web网站服务器,当外部系统尝试访问本地Httpd所在的端口80时,会触发INPUT链中的规则。
OUTPUT链:用于过滤从系统内部发出的对外访问的信息包。例如,本地用户对外发送电子邮件时,要求通过SMTP协议,也就是端口25来向外部邮件服务器发送信息,此时就会触发OUTPUT链中的规则。
FORWARD链:用于过滤要求进行转发的信息包,只有当/proc/sys/net/ipv4/ip_forward为"1"时才有效,也就是只对路由功能生效。例如,禁止某个IP通过本机路由访问到其他网段。
由于Netfilter/Iptables中的所有操作都通过iptables这一命令来实现的,因此业界当前也普遍使用Iptables作为Netfilter的代名词,代表Linux中的防火墙机制。
2 Iptables端口过滤实例(1)
1. 清空控制规则
操作实例:
方法1
方法2
操作分解(方法1):
-t filter:对过滤表进行操作,用于常规的网络地址及端口过滤。
-t nat:对网络地址转换表进行操作,用于网络连接共享、端口映射等操作。
-t mangle:对mangel表进行操作,用于改变包的TOS等特性的操作。
-F:清空列表中的所有规则。
全句解释(方法1):
通过Iptables命令清空filter、nat及mangle表中的规则,也就是清空Iptables中的所有规则。
全句解释(方法2):
在Red Hat Enterprise Linux中可以通过对Iptables服务进行stop操作来达到清空Iptables规则的效果,但是这并不会真正地清除规则,当Iptables应用启动的时候仍然会读取/etc/sysconfig/iptables文件,重新载入已记录的规则。
2. 基于访问源的控制
操作实例:
操作分解:
-t filter:使用过滤(表)功能对网络行为进行控制处理。
-A INPUT:表示对INPUT链进行规则追加操作。
-s 192.168.101.202:表示针对访问来源IP地址为192.168.101.202的信息包进行处理。
-j DROP:丢弃(不向访问来源返回任何信息)符合规则的信息包。
全句解释:
使用Iptables在过滤列表的INPUT链中追加规则,一旦发现从外部要求访问本机网络服务且源IP地址为192.168.101.202的信息包,就马上将其丢弃。
3. 基于访问目标的控制
操作示例:
操作分解:
-t filter:此处没有使用-t filter,但同样会对filter进行操作,因为filter是Iptables默认操作的链表。
-A OUTPUT:表示对OUTPUT链进行规则追加操作。
-d 192.168.101.250:表示针对访问目标为192.168.101.250的信息包进行处理。
-p tcp -dport 80:表示针对访问目标协议为TCP,且端口为80的信息包进行处理。
-j REJECT:拒绝(向访问源发送拒绝请求信息)符合规则的信息包。
全句解释:
使用Iptables在过滤列表的OUTPUT链中追加规则,一旦发现从本地要求访问外部网络服务且访问协议为TCP目标IP为192.168.101.250、端口为80的信息包,就马上将其拒绝。
4. 同时过滤多个端口
操作实例:
操作分解:
-i eth0:表示针对从eth0网卡进入的信息包进行操作。
-p udp --dport 137:139:表示针对访问目标协议为UDP且端口为137-139的信息包进行处理。
-I INPUT 2:在INPUT链的第2行进行规则插入操作。
-p tcp -m multiport --dports 80,443:表示针对访问目标协议为TCP且端口为80或443的信息包进行处理。
-j APPECT:允许符合规则的信息包通过。
全句解释:
第1句:使用Iptables在过滤列表的INPUT链中追加规则,一旦发现通过eth0网卡接口从外部要求访问本机网络服务且访问协议为UDP、目标访问端口为137-139的信息包,就马上将其拒绝。
第2句:使用Iptables在过滤列表的INPUT链的第2行插入规则,一旦发现通过eth