Linux内核防火墙的包过滤机制

Linux网络安全防护

从Linux Kernel 2.4开始,新的网络包过滤框架Netfilter/Iptables替代了原来的Ipchains/Ipfwadm系统,成为Linux系统新一代的内核级防火墙。作为内核网络协议的一个扩展集,Netfilter可以在内核内部高效地进行包过滤、网络地址转换(NAT)和包重组。对于网络安全防护来讲,主要用到的是Netfilter的包过滤功能,本节也将就这一主题展开描述。

1.  Linux内核防火墙的包过滤机制

通过包过滤机制,Netfilter可以按要求禁止网络包对本地服务器的访问及本地对外的访问,或者对经过本地转发的信息包进行过滤以保护系统,防止未经允许的网络访问本地服务。图15-2展示了Netfilter的包过滤机制。

Linux内核防火墙的包过滤机制_第1张图片 
图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

 
  
  1. [root@server1 ~]# iptables -t filter -F  
  2. [root@server1 ~]# iptables -t nat -F  
  3. [root@server1 ~]# iptables -t mangle -F 

方法2

 
  
  1. [root@server1 ~]# /etc/init.d/iptables stop 

操作分解(方法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. 基于访问源的控制

操作实例:

 
  
  1. [root@server1 ~]# iptables -t filter -A INPUT -s 192.168.101.202 -j DROP 

操作分解:

-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. 基于访问目标的控制

操作示例:

 
  
  1. [root@server1 ~]# iptables -A OUTPUT -d 
    192.168.101.250 -p tcp --dport 80 -j REJECT 

操作分解:

-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. 同时过滤多个端口

操作实例:

 
  
  1. [root@server1 ~]# iptables -A INPUT -i eth0 
    -p udp --dport 137:139 -j REJECT  
  2. [root@server1 ~]# iptables -I INPUT 2 -i eth1 
    -p udp -m multiport --dports 80,443 -j APPECT 

操作分解:

-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

 

你可能感兴趣的:(linux应用技术)