RHCE_RHEL6_255 U8.2 iptables
基本概念:防火墙功能,是由内核模块netfilter的规则实现的。netfilter是内核模块,不是一个程序,即不是一个服务。
运行iptables命令更改内存中的netfilter内核模块规则,重启系统,丢失了。
运行service iptables save 将把规则写入/etc/sysconfig/iptables 中。重启系统,将被读取并加载到内存。
运行service iptables restart 重新读取并加载/etc/sysconfig/iptables
netfilter表和链:表:filter包过滤、nat地址转换、mangle(qos)不常用
netfilter数据包流:
一、规则匹配原则
① 规则是有先后顺序的
② 根据每条规则依次检测数据包
③ 在第一个匹配项中,将执行结果:通常退出该链
④ 可为匹配项指定多个条件的规则
规则中的每个条件都必须符合才能使整条规则被匹配(逻辑AND)
⑤ 如果没有任何匹配项,则应用链的默认策略日志的
规则匹配结果–动作执行
内置目标: |
DROP、ACCEPT |
|
扩展目标: |
LOG |
可连接至系统日志内核设施 |
REJECT |
发送能够返回到发送者的通知(建议) |
|
自定义链 |
||
动作是可选的,但每个规则只能有一个动作,如果缺少动作,则默认为链策略 |
二、简单示例
iptables 选项 |
定义 |
|
-vnL –line-num |
数字模式下,显示所有规则,计数匹配包,并加行号 |
|
-A |
新增一条规则,添加到链的末尾 |
|
-I |
默认插入成第一条。可以指定第n 条-I INPUT 2 |
|
-D |
删除。可以指定删除第n 条 -D INPUT 3 |
|
-F |
删除刷新链中所有规则 |
|
规则匹配语法 |
||
IP地址或网络(FORWARD) |
源:-s 192.168.0.0/24目标:-d 192.168.1.254 |
|
UDP/TCP和端口 |
-p udp –sport 68 –dport 67(端口参见/etc/services) |
|
start:end定范围 |
–p tcp –dport 80:1000 –j REJECT|80:|:1000 |
|
ICMP和类型 |
-p icmp –icmp-type echo-reply |
|
入站接口 |
-i eth0 |
|
出站接口 |
-o eth1 |
|
‘!’可转换条件 |
iptables -A INPUT ‘!’ 192.168.0.0./24 -j REJECT |
|
-P |
更改链的默认策略 |
|
-N |
添加自定义链 |
|
-X |
删除自定义链 |
|
-Z |
匹配规则计数清‘0’ |
|
连接跟踪 |
-m state –state ESTABLISHED,RELATED |
|
NEW |
客户端第一次发送请求 |
|
ESTABLISHED |
Tcp三次握手已经完成,tcp连接已经建立 |
|
RELATED |
服务器回应的包 |
|
INVALID |
无法确定的,被损坏的包。通常丢弃! |
连接跟踪存储关于之前看到的信息,以做出匹配决定。允许连接后,信息放置在连接跟踪表中,直至超时、连接关闭或看到更多匹配的通信(重计时)。尽管这需要更多的内存,但是好处在于可以简化规则设计。
为了连接跟踪起作用,可能要加载相应的模块: 下面以ftp为例:
① # modprobe nf_conntrack_ftp
② /etc/sysconfig/iptables-config
ftp.sh中添加“state”,加载模块!
三、NAT地址转换
附加学习脚本:
[root@desktop34 ~]# vim refire.sh
[root@desktop34 ~]# chmod u+x refire.sh
[root@desktop34 ~]# ./refire.sh
[root@desktop34 ~]# service iptables save
[root@desktop34 ~]# service iptabble restart