一.查看本机iptables配置情况.
iptables -L -n
二.清除所有规则
iptables -F
iptables -X
/etc/rc.d/init.d/iptables save
三.添加规则
---------------------------------------------------------
远程SSH登陆:端口22
web服务器:端口80
FTP服务器:端口21
DNS服务器:端口53
邮件服务器:POP3端口110端口,SMTP端口25
---------------------------------------------------------
INPUT,FORWARD 控制流入数据包.
OUTPUT 控制流出数据包.
---------------------------------------------------------
首先添加22端口,这很重要,因为你远程连接时必须的.
--针对所有IP都可访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
--只能192.168.0.99可访问
iptables -A INPUT -s 192.168.0.99 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.99 -p tcp --sport 22 -j ACCEPT
--只能192.168.0.1到192.168.0.225这个网段可访问(192.168.0.0/24),24表示子网掩码数.
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT
--是否允许icmp包通过(是否允许ping)
iptables -A OUTPUT -p icmp -j DROP (不允许DROP,允许ACCEPT )
iptables -A INPUT -p icmp -j DROP (不允许DROP,允许ACCEPT )
配置完保存: /etc/rc.d/init.d/iptables save
四.根据需要配置好各端口,并设置filter表中没有的规则的执行方式.这样按需配置,保证安全性.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT
配置完保存: /etc/rc.d/init.d/iptables save
五.删除某条规则.
先用查看一下各规则的序号
iptables -L --line-numbers
然后选择INPUT ,FORWARD ,OUTPUT中需要删除的序号.
iptables -D INPUT 2 (删除INPUT中序列为2的记录)
-------------------------------------------------------------------------------------------------------
系统启动时开启与关闭
chkconfig iptables on
chkconfig iptables off
服务启动与关闭
service iptables start
service iptables stop
service iptables restart
iptables运行原理
当数据包进入服务器时,linux Kernel会查找对应的的链,直到找到一条规则与数据包区配.如果该规则的target是ACCEPT,就会跳过剩下的规则,数据包会被继续发送.如果该规则的target是DROP,该数据包会被拦截掉,KERNEL不会再参考其它规则.如果从始至终都没有一条规则与数据包匹配,而且表末尾又没有DROP ALL的规则,哪么该数据包会被ACCEPT.