深入浅出Netfilter/iptables防火墙框架(入门篇)

简介:

Linux系统管理员们都接触过Netfilter/iptables,这是Linux系统自带的免费防火墙,功能十分强大。在这个《深入浅出Netfilter/iptables防火墙框架》系列中,我们将对Netfilter/iptables进行详尽的、条理的介绍。上一篇(基础篇)介绍了netfilter/iptables的原理,本文是入门篇,介绍Netfilter/iptables框架的安装、启动和简单应用。

原文请见:http://os.51cto.com/art/201107/275664.htm

 

1、安装和启动Netfilter/iptables系统

因为Netfilter/iptables的netfilter组件是与内核2.4.x集成在一起的,高版本的Linux都配备了netfilter这个内核工具,所以一般不须要下载,而只要下载并安装iptables用户空间工具的源代码包:http://www.netfilter.org/projects/iptables/downloads.html。目前,最新源代码安装包是:iptables-1.4.10.tar.bz2。

在开始安装iptables用户空间工具之前,要对系统做某些修改,主要有如下选项须要配置修改:

  1. CONFIG_PACKET:如果要使应用程序和程序直接使用某些网络设备,那么这个选项是有用的。
  2. CONFIG_IP_NF_MATCH_STATE:如果要配置有状态的防火墙,那么这个选项非常重要而且很有用。这类防火墙会记得先前关于信息包过滤所做的决定,并根据它们做出新的决定。
  3. CONFIG_IP_NF_FILTER:这个选项提供一个基本的信息包过滤框架。如果打开这个选项,则会将一个基本过滤表(带有内置的INPUT、FORWARD和OUTPUT链)添加到内核空间。
  4. CONFIG_IP_NF_TARGET_REJECT:这个选项允许指定:应该发送ICMP错误消息来响应已被DROP掉的入站信息包,而不是简单地杀死这些信息包。

安装源代码包:

//将源代码文件解压缩
#bzip2 -d iptables-1.4.10-tar.bz2
#tar -xvf iptables 1.4.10.tar
//切换目录
#cd iptables 1.4.10
//编译该工具,指定编译的内核目录为/usr/src/linux-2.6.4-8
#make KERNEL_DIR=/usr/src/linux-2.4.16-8
//执行make install命令,同样设定内核目录为/usr/src/linux-2.6.4-8
#make install KERNEL_DIR=/usr/src/linux-2.6.4-8

安装完成后,就可以启动防火墙了:

//使用service命令手工启动
# service iptables start

如果想要在系统启动的时候也启动该防火墙服务,那么可以使用setup命令,然后进入System service选项,选择iptables守护进程即可。

2、 Iptables简单应用

1)    基本规则应用

下面将给出运用上述框架理论形成规则的一些简单示例,以供读者在实际的应用过程中进行模仿和使用:

(1)接受来自指定IP地址的所有流入的数据包:

#iptables -A INPUT -s 203.159.0.10 -j ACCEPT

(2)只接受来自指定端口(服务)的数据包:

#iptables -D INPUT --dport 80 -j DROP

(3)允许转发所有到本地(198.168.10.13)smtp服务器的数据包:

#iptables -A FORWARD -p tcp -d 198.168.10.13 --dport smtp -i eth0 -j ACCEPT

(4)允许转发所有到本地的udp数据包(诸如即时通信等软件产生的数据包):

#iptables -A FORWARD -p udp -d 198.168.80.0/24 -i eth0 -j ACCEPT

(5)拒绝发往WWW服务器的客户端的请求数据包:

#iptables -A FORWARD -p tcp -d 198.168.80.11 --dport www -i eth0 -j REJECT

(6)允许目的为指定端口的tcp数据包进入:

#iptables -A INPUT -p tcp -m multiport --destination-port 21,53,80,25,110 ACCEPT

(7)允许来源为指定端口的tcp数据包进入:

#iptables -A INPUT -p tcp -m multiport --source-port 21,53,80,25,110 ACCEPT

(8)丢掉SYN和ACK标志位置位的数据包:

#iptables -A INPUT-p tcp --tcp-flags ALL SYN,ACK DROP

2)    碎片检测及流量控制

(1)检查IP碎片:在TCP/IP网络中,链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU,这些被分段的片段就成为IP碎片。那么,如果在防火墙处不对IP碎片进行特别处理的话,那么有可能部分IP碎片会被防火墙拦截,从而影响到接受端对这些碎片的还原,并最终影响到信息的完整性和可用性问题,所以,下面的例子给出防火墙允许IP碎片通过的规则:

#iptables -A FORWARD -p tcp -f -s 172.168.96.0/24 -d 172.168.97.18 -j ACCEPT

需要特别留意上述规则中的-f选项,它指定了第二个以及以后的IP碎片将由防火墙来处理通过,否则的话,考虑下面的规则,防火墙有可能对其第二个及其以后的IP碎片进行拦截,从而影响正常的信息流通:

#iptables -A FORWARD -p tcp -s 172.168.96.0/24 -d 172.168.97.18 -j ACCEPT

(2)速率限制:iptables提供了非常健全的速率控制机制,主要用来限制由外向内的单位时间内通过的数据包个数,这样做的一个直接的好处就是尽可能地抑制前面多次提到的拒绝服务攻击或者是分布式拒绝服务攻击,因为这两种攻击的一个非常典型的表现就是单位时间内有很多数据包涌向目的地。所以,我们可以使用下面的规则来限制单位时间内允许通过防火墙,从而进入被保护网络的数据包个数:

#iptables -A INPUT -m limit --limit 200/second
#iptables -A INPUT -m limit --limit 10000/minute

上述两条规则分别限制1秒内和1分钟内通过的数据包个数不能超过200和10000个。当然,在实际应用中,也可以通过/second、/minute、、/hour、/day这样的时间间隔来进行设定,并且,其中诸如200和10000这些具体数值的设定需要用户根据具体情况和经验来进行设定,没有规定的数值可循。

另外,在设定速率限制后,还可以设定超过该限制所触发的一些处理事件,比如说直接丢弃。下面的规则表示当速率超过200限制后,将直接对后续数据包进行丢弃:

#iptables -A INPUT -m limit --limit-burst 200















本文转自samsunglinuxl51CTO博客,原文链接:http://blog.51cto.com/patterson/612471 ,如需转载请自行联系原作者

相关文章
|
6月前
|
安全 Linux 网络安全
百度搜索:蓝易云【linux iptables安全技术与防火墙】
请注意,iptables的具体使用方法和配置选项可能会有所不同,取决于Linux发行版和版本。管理员应该参考相关文档和资源,以了解适用于其特定环境的最佳实践和配置方法。
467 0
百度搜索:蓝易云【linux iptables安全技术与防火墙】
|
6月前
|
网络协议 Linux 网络安全
小白也能看懂的 iptables 防火墙
iptables是Linux中功能最为强大的防火墙软件之一 是一个在 Linux 系统上常用的防火墙工具,用于配置和管理网络数据包过滤规则。它可以通过定义规则集来控制进出系统的网络流量,实现网络安全策略
250 5
|
4月前
|
网络协议 Linux 网络安全
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
Centos7中如何打开和关闭防火墙??CentOS 7以上默认使用firewall作为防火墙改为iptables
|
4月前
|
存储 网络协议 Linux
Linux加强篇008-使用Iptables与Firewalld防火墙
山重水复疑无路,柳暗花明又一村
304 0
Linux加强篇008-使用Iptables与Firewalld防火墙
|
4月前
|
Linux 网络安全
CentOS7下操作iptables防火墙和firewalld防火墙
CentOS7下操作iptables防火墙和firewalld防火墙
88 3
|
5月前
|
网络协议 网络安全 开发工具
iptables和防火墙1
iptables和防火墙1
27 0
|
6月前
|
Ubuntu 网络协议 Linux
Linux: FirewallD和Iptables防火墙 使用
Linux: FirewallD和Iptables防火墙 使用
99 0
|
4月前
|
运维 网络协议 安全
小白带你学习linux的防火墙
小白带你学习linux的防火墙
148 1
|
6月前
|
安全 Linux 网络安全
Linux一些防火墙实战知识
本文介绍了如何在Linux中设置防火墙和开放端口,以提高服务器的安全性。首先,使用firewalld作为防火墙软件包,并确保firewalld服务正在运行。然后,通过添加服务来定义允许的服务端口,可以使用firewall-cmd命令查看当前已定义的服务,并使用firewall-cmd命令添加服务。添加规则后,需要重新加载firewalld配置以使更改生效。在某些情况下,需要打开特定的端口,例如HTTP端口80和HTTPS端口443。可以使用firewall-cmd命令打开端口,并将规则添加到相应的区域。。。确实都是工作中日常中会用到的一些命令
|
6月前
|
开发框架 网络协议 Ubuntu
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
【Linux】配置网络和firewall防火墙(超详细介绍+实战)
1267 0