iptables -F           //删除iptables现有规则
iptables -L [-v[vv] -n]   //查看iptables规则
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE	 //在POSTROUTING链尾添加一条规则
iptables -t nat -A POSTROUTING -s 20.20.20.0/24 -o eth1 -j MASQUERADE    //在POSTROUTING链中插入为第2条规则
iptables -t nat -R POSTROUTING 2 -s 40.40.40.40 -o eth1 -j MASQUERAD     //替换修改第二条规则
iptables -t nat -D POSTROUTING 2      //删除POSTROUTING链中第2条规则
iptables -t nat -P POSTROUTING DROP    //设置默认策略为DROP



//限制ping 192.168.146.3主机的数据包数,平均2/s个,最多不能超过3个
iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT 

//限制SSH连接速率(默认策略是DROP)
iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPT  
iptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 2 -m state --state NEW -j ACCEPT 
 
//防止syn攻击(限制syn的请求速度)
iptables -N syn-flood 
iptables -A INPUT -p tcp --syn -j syn-flood 
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN 
iptables -A syn-flood -j DROP 

//防止syn攻击(限制单个ip的最大syn连接数)
iptables –A INPUT –i eth0 –p tcp --syn -m connlimit --connlimit-above 15 -j DROP 
 
iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP   //利用recent模块抵御DOS攻击
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH   //单个IP最多连接3个会话
Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP  //只要是新的连接请求,就把它加入到SSH列表中。5分钟内你的尝试次数达到3次,就拒绝提供SSH列表中的这个IP服务。被限制5分钟后即可恢复访问。
 
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP    //防止单个IP访问量过大
iptables –A OUTPUT –m state --state NEW –j DROP  //阻止反弹木马
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT   //防止ping攻击

-m tcp   //-p tcp的扩展
    --sport  [!]N[:M]                      //源端口, 服务名、端口、端口范围。
    --dport  [!]N[:M]                      //目标端口,服务名、端口、端口范围
    --tcp-flags CHECKFLAGS FLAGSOFTRUE  //TCP标志位:SYN(同步),ACK(应答),RST(重置),FIN(结束),URG(紧急),PSH(强迫推送)。多个标志位逗号分隔。
                         //CHECKFLAGS为要检查的标志位,FLAGSOFTRUE为必须为1的标志位(其余的应该为0)
    --syn                               //第一次握手。 等效于 --tcpflags syn,ack,fin,rst syn   四个标志中只有syn为1
-m udp   //-p udp的扩展
    --sport N[-M] 
    --dport N[-M]
-m icmp  //隐含条件为-p icmp
    --icmp-type  N             //8:echo-request  0:echo-reply


-m state
    --state    //连接状态检测,NEW,ESTABLISHED,RELATED,INVALID
-m multiport 
    --source-ports   PORT[,PORT]...|N:M            //多个源端口,多个端口用逗号分隔,
    --destination-ports PORT[,PORT]...|N:M         //多个目的端口
    --ports                          //多个端口,每个包的源端口和目的端口相同才会匹配
-m limit
    --limit   N/UNIT    //速率,如3/minute, 1/s, n/second , n/day
    --limit-burst N     //峰值速率,如100,表示最大不能超过100个数据包
-m connlimit
    --connlimit-above N  //多于n个,前面加!取反
-m iprange
    --src-range IP-IP
    --dst-range IP-IP
-m mac                    
    --mac-source         //mac地址限制,不能用在OUTPUT和POSTROUTING规则链上,因为封包要送到网卡后,才能由网卡驱动程序透过ARP 通讯协议查出目的地的MAC 地址
-m string
    --algo [bm|kmp]      //匹配算法
    --string "PATTERN"   //匹配字符模式
-m recent
    --name               //设定列表名称,默认为DEFAULT
    --rsource            //源地址
    --rdest              //目的地址
    --set                //添加源地址的包到列表中
    --update             //每次建立连接都更新列表
    --rcheck             //检查地址是否在列表
    --seconds            //指定时间。必须与--rcheck或--update配合使用
    --hitcount           //命中次数。必须和--rcheck或--update配合使用
    --remove             //在列表中删除地址
-m time
    --timestart h:mm
    --timestop  hh:mm
    --days DAYS          //Mon,Tue,Wed,Thu,Fri,Sat,Sun; 逗号分隔
-m mark
    --mark N            //是否包含标记号N
-m owner 
    --uid-owner 500   //用来匹配来自本机的封包,是否为某特定使用者所产生的,可以避免服务器使用root或其它身分将敏感数据传送出
    --gid-owner O     //用来匹配来自本机的封包,是否为某特定使用者群组所产生的
    --pid-owner 78    //用来匹配来自本机的封包,是否为某特定进程所产生的
    --sid-owner 100   //用来匹配来自本机的封包,是否为某特定连接(Session ID)的响应封包


posted on 2022-11-09 21:33  你个der  阅读(59)  评论(0)    收藏  举报