一、iptanles介绍
iptables 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。Linux中使用netfilter/iptanles架构实现网络防火墙的基本功能。
iptables是Linux系统中为用户提供的netfilter管理工具,用于实现对Linux内核中网络防火墙的管理。
二、iptables规则表
使用chkconfig命令自动加载iptables服务,如下所示。
(2)ntsysv。
使用ntsysv命令,利用文本图形界面对iptables自动加载进行配置。
四、iptables的基本语法
如果想灵活运用iptables来加固系统安全的话,就必须熟练地掌握iptables的语法格式。
iptables的语法格式如下。
1.表选项
iptables内置了filter、nat和mangle3张表,使用-t参数来设置对哪张表生效。例如,如果对nat表设置规则的话,可以在-t参数后面加上nat,如下 所示。
-t参数是可以省略的,如果省略了-t参数,则表示对filter表进行操作。例如:
2.命令选项
命令选项是指定对提交的规则要做什么样的操作。例如添加/删除规则,或者查看规则列表等。下面先来介绍一些最为常用的命令。
(1)-P或--policy。
作用:定义默认的策略,所有不符合规则的包都被强制使用这个策略。例如:
iptables -t filter -P INPUT DROP
注意:只有内建的链才可以使用规则。
(2)-A或--append。
作用:在所选择的链的最后添加一条规则。例如:
iptables -A OUTPUT -p tcp --sport 22 DROP
(3)-D或--delete。
作用:从所选链中删除规则。例如:
iptables -D OUTPUT 1
注意:删除规则的时候可以把规则完整写出来删除,就像创建规则时一样,但是更快的是指定规则在所选链中的序号。
(4)-L或--list。
作用:显示所选链的所有规则。如果没有指定链,则显示指定表中的所有链。例如:
iptables -t nat -L
注意:如果没有指定-t参数,就显示默认表filter中的所有链。(5)-F或--flush。
作用:清空所选的链中的规则。如果没有指定链,则清空指定表中的所有链的规则。例如:
iptables -F OUTPUT
(6)-I或--insert。
作用:根据给出的规则序号向所选链中插入规则。如果序号为1,规则会被插入链的头部。如果序号为2,则表示将规则插入第二行,依次类推。例如:
iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
注意:iptables对参数的大小写敏感,也就是说大写的参数-P和小写的参数-p表示不同的意思。
(1)-p或--protocol。
作用:匹配指定的协议。例如:
iptables -A INPUT -p udp -j DROP
注意:设置协议时可以使用它们对应的整数值。例如ICMP的值是1,TCP是6,UDP是17,默认设置为ALL,相应数值是0,仅代表匹配TCP、UDP和ICMP协议。
(2)--sport或--source-port。
作用:基于TCP包的源端口来匹配包,也就是说通过检测数据包的源端口是不是指定的来判断数据包的去留。例如:
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
注意:如果不指定此项,则表示针对所有端口。
(3)--dport或 --destination-port。
作用:基于TCP包的目的端口来匹配包,也就是说通过检测数据包的目的端口是不是指定的来判断数据包的去留。端口的指定形式和--sport完全一样。例 如:
(4)-s或--src或--source。
作用:以IP源地址匹配包。例如:
注意:在地址前加英文感叹号表示取反,注意空格,如:-s !192.168.0.0/24表示除此地址外的所有地址。
(5)-d或--dst或--destination。
作用:基于TCP包的目的端口来匹配包,也就是说通过检测数据包的目的端口是不是指定的来判断数据包的去留。端口的指定形式和-sport一致。例如:
iptables -I OUTPUT -d 192.168.1.0/24 -j ACCEPT
(6)-i或--in-interface
作用:以数据包进入本地所使用的网络接口来匹配。例如:
iptables -A INPUT -i eth0 -j ACCEPT
注意:这个匹配操作只能用于INPUT、FORWARD和PREROUTING这3个链,否则会报错。在接口前加英文感叹号表示取反,注意空格,如:-i !eth0意思是匹 配来自eth0外的所有数据包
(7)-o或--out-interface
作用:以包离开本地所使用的网络接口来匹配包。接口的指定形式和-i一致。例如:
iptables -A OUTPUT -o eth1 -j ACCEPT
3.保存规则与恢复
iptables提供了两个很有用的工具来保存和恢复规则,这在规则集较为庞大的时候非常实用。它们分别是iptables-save和iptables-restore。
iptables-save用来保存规则,它的用法比较简单,命令格式如下。
-c:保存包和字节计数器的值。这可以使在重启防火墙后不丢失对包和字节的统计。
-t:用来选择保存哪张表的规则,如果不跟-t参数则保存所有的表。
可以使用重定向命令来保存这些规则集,如下所示。
iptables-restore用来装载由iptables-save保存的规则集。其命令格式如下所示。
-c:如果加上-c参数,表示要求装入包和字节计数器。
-n:表示不要覆盖已有的表或表内的规则。默认情况是清除所有已存在的规则。
使用重定向来恢复由iptables-save保存的规则集,如下所示。
所有的添加、删除、修改规则都是临时生效。当重新启动系统后,恢复成原有的配置,如果想保持所做的修改在重新启动系统后依旧生效,可以使用以下命令来保存iptables的规则配置,如下所示。