iptables使用总结

iptables为linux的防火墙提供支持,而android也支持使用iptables创建防火墙。该功能需要ROOT支持。

iptables是个好东西,但是各种规则对于刚上手的朋友来说很不友好,一开始会 摸不着头脑。傻东经过一段时间的研究,终于摸着点门道,不敢私藏,更怕 忘记,因此写下此文,与大家分享。本文中的内容是终端下输的命令,不是/etc/sysconfig/iptables中的内容。第一页为概略介绍,第二 页为详细规则演示,文中代码若有不正之处,欢迎留言指出!
对iptables操作的一般过程如下:
列出iptable内容
iptables -L -n
清除预设表filter中的所有规则链的规则
iptables -F
清除预设表filter中使用者自定链中的规则
iptables -X
修改规则…
保存iptables中规则
service iptables save
/etc/init.d/iptables save
重启iptables服务
service iptables restart
/etc/init.d/iptables restart
iptables规则介绍如下:
对应关系
INPUT –dport -s
OUTPUT –sport -d
添加规则
iptables -A INPUT|OUTPUT -s 源IP -d 目的IP -p all|tcp|udp|icmp –sport 源端口 –dport 目的端口 -j ACCEPT|DROP
iptables -A FORWARD -i 输入网卡 -o 输出网卡 -m state –state RELATED,ESTABLISHED -j ACCEPT|DROP
iptables -t nat -A PREROUTING -i 输入网卡 -s 源IP -d 目的IP –sport 源端口 –dport 目的端口 -j ACCEPT|DROP
删除规则
iptables -D INPUT|OUTPUT -s 源IP -d 目的IP -p all|tcp|udp|icmp –dport 端口 -j ACCEPT|DROP
iptables -D FORWARD -i 输入网卡 -o 输出网卡 -m state –state RELATED,ESTABLISHED -j ACCEPT|DROP
一、INPUT|OUTPUT链
1、允许rsync到远程服务器
iptables -A OUTPUT -p tcp –sport 873 -d 目的IP -j ACCEPT
2、允许WWW服务的80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
3、允许邮件服务的25和110端口
iptables -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 110 -j ACCEPT
4、允许FTP服务的21和20端口
iptables -A INPUT -p tcp –dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 21 -j ACCEPT
iptables -A INPUT -p tcp –dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 20 -j ACCEPT
5、允许DNS服务的53端口
iptables -A INPUT -p tcp –dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 53 -j ACCEPT
6、允许rsync的873端口
iptables -A INPUT -p all –dport 873 -j ACCEPT
iptables -A OUTPUT -p all –sport 873 -j ACCEPT
7、允许NRPE的5666端口
iptables -A INPUT -s 源IP -p all –dport 5666 -j ACCEPT
iptables -A OUTPUT -d 目的IP -p all –sport 5666 -j ACCEPT
8、允许Ping
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
9、允许loopback!(不然会导致DNS无法正常关闭等问题)
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
10、只允许某IP或某网段的机器进行SSH连接
iptables -A INPUT -s 192.168.0.8|192.168.0.0/24 -p tcp –dport 22 -j ACCEPT
11、允许所有已经建立的和相关的连接
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
12、拒绝非法连接
iptables -A INPUT -m state –state INVALID -j DROP
iptables -A OUTPUT -m state –state INVALID -j DROP
二、FORWARD链
1、开启转发功能(在做NAT时,FORWARD默认规则是DROP时,必须做)
iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
2、丢弃坏的TCP包
iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP
3、处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
4、设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.
iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
5、禁止非法连接
iptables -A FORWARD -m state –state INVALID -j DROP
三、NAT表
1、防止外网用内网IP欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
2、禁止与某IP或IP段的所有连接
iptables -t nat -A PREROUTING -d 192.168.0.8|192.168.0.0/24 -j DROP
3、禁止连接某IP或IP段的FTP的21端口
iptables -t nat -A PREROUTING -p tcp –dport 21 -d 192.168.0.8|192.168.0.0/24 -j DROP

一个经典实用的iptables shell脚本

一个经典实用的iptables shell脚本

 

http://www.ha97.com/4096.html

 

 

PS:这个iptables脚本不错,很实用,根据实际应用改一下就可以自己用。分享出来,供大家来参考。原作者佚名。源代码如下:

#!/bin/sh
#
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X
###########################INPUT键###################################
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 110,80,25 -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPT
#允许内网samba,smtp,pop3,连接
iptables -A INPUT -i eth1 -p udp -m multiport --dports 53 -j ACCEPT
#允许dns连接
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
#允许外网vpn连接
iptables -A INPUT -s 192.186.0.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -s 192.186.0.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃
iptables -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN: "
iptables -A INPUT -p icmp -j DROP
#禁止icmp通信-ping 不通
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#内网转发
iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN
iptables -A syn-flood -j REJECT
#防止SYN攻击 轻量
#######################FORWARD链###########################
iptables -P FORWARD DROP
iptables -A FORWARD -p tcp -s 192.168.0.0/24 -m multiport --dports 80,110,21,25,1723 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/24 --dport 53 -j ACCEPT
iptables -A FORWARD -p gre -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p icmp -s 192.168.0.0/24 -j ACCEPT
#允许 vpn客户走vpn网络连接外网
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
iptables -I FORWARD -p udp --dport 53 -m string --string "TENCENT" -m time --timestart 13:30 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的13:30-20:30禁止QQ通信
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 8:15 --timestop 12:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的8:00-12:30禁止qq网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com" -m time --timestart 13:00 --timestop 20:30 --days Mon,Tue,Wed,Thu,Fri,Sat  -j DROP
#星期一到星期六的13:30-20:30禁止QQ网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "ay2000.net" -j DROP
iptables -I FORWARD -d 192.168.0.0/24 -m string --string "宽频影院" -j DROP
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "色情" -j DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j DROP
#禁止ay2000.net,宽频影院,色情,广告网页连接 !但中文 不是很理想
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
#禁止BT连接
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 24
#######################################################################
sysctl -w net.ipv4.ip_forward=1 &>/dev/null
#打开转发
#######################################################################
sysctl -w net.ipv4.tcp_syncookies=1 &>/dev/null
#打开 syncookie (轻量级预防 DOS 攻击)
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=3800 &>/dev/null
#设置默认 TCP 连接痴呆时长为 3800 秒(此选项可以大大降低连接数)
sysctl -w net.ipv4.ip_conntrack_max=300000 &>/dev/null
#设置支持最大连接树为 30W(这个根据你的内存和 iptables 版本来,每个 connection 需要 300 多个字节)
#######################################################################
iptables -I INPUT -s 192.168.0.50 -j ACCEPT
iptables -I FORWARD -s 192.168.0.50 -j ACCEPT
#192.168.0.50是我的机子,全部放行!
############################完#########################################



转自:

http://www.zhixing123.cn/ubuntu/iptables-using-summary.html

http://blog.csdn.net/xymyeah/article/details/6531977
分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS