ACCEPT(允许流量通过)、REJECT(拒绝流量后再回复一条“您的信息已经收到,但是被扔掉了)、LOG(记录日志信息)、DROP(拒绝流量通过,直接将流量丢弃而且不响应)

参数 作用
-P 设置默认策略
-F 清空规则链
-L 查看规则链
-A 在规则链的末尾加入新规则
-I num 在规则链的头部加入新规则
-D num 删除某一条规则
-s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外
-d 匹配目标地址
-i 网卡名称 匹配从这块网卡流入的数据
-o 网卡名称 匹配从这块网卡流出的数据
-p 匹配协议,如TCP、UDP、ICMP
–dport num 匹配目标端口号
–sport num 匹配来源端口号

iptables -L 查看已有的防火墙规则
iptables -F 清空已有的防火墙规则
iptables -I INPUT -p icmp -j ACCEPT 添加允许ICMP流量进入的策略

查看防火墙规则
iptables --list

允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量

iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
 iptables -A INPUT -p tcp --dport 22 -j REJECT拒绝所有人访问本机12345端口
 iptables -I INPUT -p tcp --dport 12345 -j REJECT
 iptables -I INPUT -p udp --dport 12345 -j REJECT拒绝所有主机访问本机1000~1024端口的策略
 iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
 iptables -A INPUT -p udp --dport 1000:1024 -j REJECTservice iptables save 保存命令
查看开启端口,加入管道符可查看自定端口状态
 netstat -nalp | grep 80linux系统防火墙iptables命令规则及配置的示例(本机IP为172.16.63.7):
1、清空当前系统的防火墙规则的命令,清空规则;
 #iptables -F
 注:当前策略一定要是ACCEPT,不然会被阻断(你可以试试),任何清空删除规则前,都要保证自己不会被阻断!!!2、允许172.16网段内的主机访问:
 #iptables -t filter -A INPUT -s 172.16.0.0/16 -d 172.16.63.7 -j ACCEPT
 译:-t表,默认filter -A追加规则 INPUT进入 -s检查源 -d检查目标 -j处理动作 ACCEPT接受;入栈的目标是本机所以-d是本机IP;3、以数值格式显示详细信息,列出表中链上的规则:
 #iptables -vnL
 pkts bytes译:XXX报文,XXXXX个字节4、以数值格式显示详细信息,列出表中链上的规则,并数字标记规则条数:
 #iptables -vnL --line-numbers5、拒绝172.16.63.66主机访问(目前172.16.63.66可以ping通本机,也可以ssh等):
 #iptables -t filter -A INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT
 注:如果你操作过第一个,那么此时设置完后,发现172.16.63.66依旧可以ping进来,原来是我们刚才已经添加了允许172.16网段访问的规则,所以此规则是后添加的,所以不生效。同一服务规则,小范围放上面,次序很重要。
 如果是多个不同的服务,规则排序要根据实际情况,例如web服务每天访问量巨大,而禁止某IP服务属于小范围,如果把某IP禁止服务放在前面,每次web服务都要先检查次IP,所以应该把匹配性较大的规则放在前面。6、删除刚才添加的“允许172.16网段访问的”规则:
 #iptables -D INPUT 1
 注:需要先-vnL --line-numbers查询下,此规则属于第几条,这里第一条则删除第一条。7、插入一条规则,不让172.16.63.66的主机访问本机:
 #iptables -I INPUT -s 172.16.63.66 -d 172.16.63.7 -j REJECT
 注:默认插入第一条,如果插入第二条,则:#iptables -I INPUT 2 -s 172.16.63.66 -d 172.16.63.7 -j REJECT
 注:这样172.16.63.66进行ping本机时,会直接提示拒绝,当然这样是不友好的(就是拒绝你,呵呵…),所以我们一般建议使用DROP直接丢弃。
 #iptables -I INPUT -s 172.16.63.66 -d 172.16.63.7 -j DROP8、替换第一条规则,不让172.16.63.77的主机访问本机:
 #iptables -R INPUT 1 -s 172.16.63.77 -d 172.16.63.7 -j DROP9、放行本机上的ssh:
 #iptables -A INPUT -s 172.16.0.0/16 -d 172.16.63.7 -p tcp --dport 22 -j ACCEPT
 #iptables -A OUTPUT -d 172.16.0.0/16 -s 172.16.63.7 -p tcp --sport 22 -j ACCEPT
 #iptables -p INPUT DROP
 #iptables -p OUTPUT DROP
 #iptables -p FORWARD DROP
 如果此时还要允许本机ping其它(其它主机不写,表示全部):
 #iptables -A OUTPUT -s 172.16.63.7 -p icmp --icmp-type 8 -j ACCEPT 允许ping其他了,但只放出了,进不来
 #iptables -A INPUT -d 172.16.63.7 -p icmp --icmp-type 0 -j ACCEPT 所以还要开放进入的
 如果此时也要允许其他主机ping本机:
 #iptables -A INPUT -d 172.16.63.7 -p icmp --icmp-type 8 -j ACCEPT 8是回显请求
 #iptables -A OUTPUT -s 172.16.63.7 -p icmp --icmp-type 0 -j ACCEPT 0是回显应答,此时其他主机也可以ping通本机
 注意:此时如果直接使用#iptables -F清空,清空后的后果你懂得,呵呵呵…
 所以此时我们要清空规则,则:
 #iptables -p OUTPUT ACCEPT
 #iptables -p INPUT ACCEPT
 #iptables -p FORWARD ACCEPT
 #iptables -F10、iptables只开启ssh、web、telnet访问
 先确定ss -lnt端口是否都已打开。
 #iptables -A INPUT -d 172.16.63.7 -p tcp -m multiport --dports 22:23,80 -j ACCEPT 连续的端口可用:表示XX端口到XX端口
 #iptables -A OUTPUT -s 172.16.63.7 -p tcp -m multiport --sports 22:23,80 -j ACCEPT
 #iptables -A INPUT -d 172.16.63.7 -j DROP
 #iptables -A OUTPUT -s 172.16.63.7 -j DROP11、(根据上面继续来做)指定ip地址范围可以访问本机mysql
 #iptables -I INPUT 2 -d 172.16.63.7 -p tcp --dport 3306 -m iprange --src-range 172.16.63.70-172.16.63.100 -j ACCEPT
 #iptables -I OUTPUT 2 -s 172.16.63.7 -p tcp --sport 3306 -m iprange --dst-range 172.16.63.70-172.16.63.100 -j ACCEPT
 #mysql 本机添加一个mysql测试
 GRANT ALL ON . TO ‘root’@’%’ IDENTIFIED BY ‘whsir’;
 使用172.16.63.70-172.16.63.100之间的一个主机访问下试试:
 #mysql -uroot -h172.16.63.7 -pwuhao 可以连接上,没问题12、(接上面操作)本机html内添加admin字符串,禁止网段内的IP不能访问带admin字符串的页面,但是可以访问其他页面
 #iptables -I OUTPUT -s 172.16.63.7 -p tcp --sport 80 -m iprange ! --dst-range 172.16.63.70-172.16.63.100 -m string --string “admin” --algo kmp -j REJECT 限制172.16.63.70-172.16.63.100网段13、仅允许周2、4、6,9点到18点访问本机telnet
 #iptables -I INPUT -d 172.16.63.7 -p tcp --dport 23 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays Tue,Thu,Sat -j ACCEPT14、限制客户端对本机telnet服务并发连接数小于等于3
 #iptables -A INPUT -d 172.16.63.7 -p tcp --dport 23 -m connlimit --connlimit-upto 3 -j ACCEPT 同一主机最大同时能连接3个
 #iptables -A INPUT -d 172.16.63.7 -p tcp --dport 22 -j ACCEPT
 #iptables -A INPUT -d 172.16.63.7 -j DROP
 #iptables -A OUTPUT -s 172.16.63.7 -j DROP15、允许客户端对本机连续ping5个包,然后每三秒钟ping一个
 #iptables -I INPUT -d 172.16.63.7 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit20/minute -j ACCEPT
 每分钟ping20个,也就是3秒一个,这样可以防止客户端对本机的大量ping操作