1,清空存在的策略
当你开始创建新的策略,你可能想清除所有的默认策略,和存在的策略,可以这么做:
iptables-F或者iptables--flush
2,设置默认策略
默认链策略是ACCEPT,改变所有的链策略为DROP:
iptables-PINPUTDROP
iptables-PFORWARDDROP
iptables-POUTPUTDROP
3,阻止一个指定的ip
BLOCK_THIS_IP=“x.x.x.x"
iptables-AINPUT-s”$BLOCK_THIS_IP“-jDROP
iptables-AINPUT-ieth0-s"$BLOCK_THIS_IP"-jDROP
iptables-AINPUT-ieth0-ptcp-s"$BLOCK_THIS_IP"-jDROP
4,允许SSH
允许所有通过eth0接口使用ssh协议连接本机:
iptables-AINPUT-ieth0-ptcp--dport22-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport22-mstate--stateESTABLISHED-jACCEPT
5,允许某个网段通过ssh连接
iptables-AINPUT-ieth0-ptcp-s192.168.100.0/24--dport22-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport22-mstate--stateESTABLISHED-jACCEPT
6,允许http和https
允许所有进来的web流量:http协议的80端口
iptables-AINPUT-ieth0-ptcp--dport80-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport80-mstate--stateESTABLISHED-jACCEPT
允许所有进来的web流量:https协议的443端口
iptables-AINPUT-ieth0-ptcp--dport443-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport443-mstate--stateESTABLISHED-jACCEPT
7,多个策略联合一起
允许ssh,http,https:
iptables-AINPUT-ieth0-ptcp-mmultiport--dports22,80,443-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp-mmultiport--sports22,80,443-mstate--stateESTABLISHED-jACCEPT
8,允许SSH连接其他主机
iptables-AOUTPUT-oeth0-ptcp--dport22-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AINPUT-ieth0-ptcp--sport22-mstate--stateESTABLISHED-jACCEPT
9,允许SSH连接指定的网段
iptables-AOUTPUT-oeth0-ptcp-d192.168.100.0/24--dport22-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AINPUT-ieth0-ptcp--sport22-mstate--stateESTABLISHED-jACCEPT
10,允许https出去
iptables-AOUTPUT-oeth0-ptcp--dport443-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AINPUT-ieth0-ptcp--sport443-mstate--stateESTABLISHED-jACCEPT
11,对web请求做负载均衡(每三个包,均衡到指定服务器,需要扩展iptables)
iptables-APREROUTING-ieth0-ptcp--dport443-mstate--stateNEW-mnth--counter0--every3--packet0-jDNAT--to-destination192.168.1.101:443
iptables-APREROUTING-ieth0-ptcp--dport443-mstate--stateNEW-mnth--counter0--every3--packet1-jDNAT--to-destination192.168.1.102:443
iptables-APREROUTING-ieth0-ptcp--dport443-mstate--stateNEW-mnth--counter0--every3--packet2-jDNAT--to-destination192.168.1.103:443
12,允许ping
iptables-AINPUT-picmp--icmp-typeecho-request-jACCEPT
iptables-AOUTPUT-picmp--icmp-typeecho-reply-jACCEPT
13,允许ping远程
iptables-AOUTPUT-picmp--icmp-typeecho-request-jACCEPT
iptables-AINPUT-picmp--icmp-typeecho-reply-jACCEPT
14,允许本地回环
iptables-AINPUT-ilo-jACCEPT
iptables-AOUTPUT-olo-jACCEPT
15,允许内网访问外部网络
这个例子eth1连接外部网络,eth0连接内部网络
iptables-AFORWARD-ieth0-oeth1-jACCEPT
16,允许DNS出去
iptables-AOUTPUT-pudp-oeth0--dport53-jACCEPT
iptables-AINPUT-pudp-ieth0--sport53-jACCEPT
17,允许NIS连接
NIS端口是动态的,当ypbind启动时它分配端口。
首先运行rpcinfo-p显示得到端口号,这个例子使用端口850,853。
iptables-AINPUT-ptcp--dport111-jACCEPT
iptables-AINPUT-pudp--dport111-jACCEPT
iptables-AINPUT-ptcp--dport853-jACCEPT
iptables-AINPUT-pudp--dport853-jACCEPT
iptables-AINPUT-ptcp--dport850-jACCEPT
iptables-AINPUT-pudp--dport850-jACCEPT
上面的例子当ypbind重新启动时将失效,有2种解决方案:
(1)分配nis服务静态ip(2)使用精妙的脚本
18,允许指定网段连接Rsync
iptables-AINPUT-ieth0-ptcp-s192.168.101.0/24--dport873-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport873-mstate--stateESTABLISHED-jACCEPT
19,允许mysql从指定的网段连接
iptables-AINPUT-ieth0-ptcp-s192.168.100.0/24--dport3306-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport3306-mstate--stateESTABLISHED-jACCEPT
20,允许sendmail或者postfix
iptables-AINPUT-ieth0-ptcp--dport25-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport25-mstate--stateESTABLISHED-jACCEPT
21,允许IMAP和IMAPS
IMAP:
iptables-AINPUT-ieth0-ptcp--dport143-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport143-mstate--stateESTABLISHED-jACCEPT
IMAPS:
iptables-AINPUT-ieth0-ptcp--dport993-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport993-mstate--stateESTABLISHED-jACCEPT
22,允许POP3和POP3S
POP3:
iptables-AINPUT-ieth0-ptcp--dport110-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport110-mstate--stateESTABLISHED-jACCEPT
POP3S:
iptables-AINPUT-ieth0-ptcp--dport995-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport995-mstate--stateESTABLISHED-jACCEPT
23,预防DOS***
iptables-AINPUT-ptcp--dport80-mlimit--limit25/minute--limit-burst100-jACCEPT
-m:使用iptables扩展
--limit25/minute:限制分钟连接请求数
--limit-burst:触发阀值,一次涌入数据包数量
24,端口转发
来自442的都转到22端口
iptables-tnat-APREROUTING-ptcp-d192.168.102.37--dport422-jDNAT--to192.168.102.37:22
你还必须明确允许442端口
iptables-AINPUT-ieth0-ptcp--dport422-mstate--stateNEW,ESTABLISHED-jACCEPT
iptables-AOUTPUT-oeth0-ptcp--sport422-mstate--stateESTABLISHED-jACCEPT
25,包丢弃日志
你也许想查看所有丢弃包的日志。
首先创建一个新链叫LOGGING
iptables-NLOGGING
确保所有的连接跳到LOGGING
iptables-AINPUT-jLOGGING
记录这些包通过自定义名字"log-prefix"
iptables-ALOGGING-mlimit--limit2/min-jLOG--log-prefix"IPTablesPacketDropped:"--log-level7
最后丢弃这些数据包
iptables-ALOGGING-jDROP