注意-s
制定的$ip
可以是ip,也可以是ip段$ip/$mask
管理iptables
清除iptables(常用)
iptables -F
备份iptables(常用)
iptables-save > iptables.txt
导入iptables(常用)
iptables-restore < iptables.txt
机器重启自动生效(常用)
service iptables save
清空某条规则:
iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
禁用
禁止某个ip(下面用$ip表示)访问本机:
iptables -I INPUT -s $ip -j DROP
禁止某个ip段(下面用ip/mask
表示,其中$mask
是掩码)访问本机:
iptables -I INPUT -s ip/mask -j DROP
禁止本机访问某个ip(下面用$ip表示):
iptables -A OUTPUT -d $ip -j DROP
禁止某个ip(下面用$ip表示)访问本机的80端口的tcp服务:
iptables -I INPUT -p tcp –dport 80 -s $ip -j DROP
禁止所有ip访问本机的80端口的tcp服务:
iptables -A INPUT -p tcp --dport 80 -j DROP
禁止所有ip访问本机的所有端口:
iptables -A INPUT -j DROP
限制与放通
禁止除了某个ip(下面用$ip表示)之外其他ip都无法访问本机的3306端口
(常用):
1、首先 禁止所有
iptables -I INPUT -p tcp --dport 3306 -j DROP
2、然后 开放个别
iptables -I INPUT -s $ip -p tcp --dport 3306 -j ACCEPT
限制最大并发数
限制指定端口并发数
限制端口8388的IP最大连接数为5
iptables -I INPUT -p tcp --dport 8388 -m connlimit --connlimit-above 5 -j DROP
iptables -I OUTPUT -p tcp --dport 8388 -m connlimit --connlimit-above 5 -j DROP
限制端口段并发数(限制从1024-10240的端口并发为5)
iptables -I INPUT -p tcp --dport 1024:10240 -m connlimit --connlimit-above 5 -j DROP
iptables -I OUTPUT -p tcp --dport 1024:10240 -m connlimit --connlimit-above 5 -j DROP
限速
限制端口并发数(限制端口5037的最大连接速度为60个包每秒)
也就是限制每秒接受60个包,一般来说每个包大小为64—1518字节(Byte)。
iptables -A INPUT -p tcp --sport 5037 -m limit --limit 60/s -j ACCEPT
iptables -A INPUT -p tcp --sport 5037 -j DROP
限制IP的访问速度
原理:每秒对特定端口进行速度控制,比如每秒超过700个的数据包直接DROP,从而限制特定端口的速度
iptables -A FORWARD -m limit -d 208.8.14.53 --limit 700/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -d 208.8.14.53 -j DROP
实战示例:Linux/VPS下通过iptables限制流量,可通过以下脚本即可实现(首先需要将这台机器配置成网关)。下面给出一个脚本的简单示例:
当流量小于60/s的时候,iptables 接受并转发。当流量大于60/s 的时候,iptables丢弃数据包
#限制网段
for ((i = 1; i < 253; i++))
do
/sbin/iptables -A FORWARD -s 192.168.2.i -m limit \ --limit 60/s -j ACCEPT
/sbin/iptables -A FORWARD -s 192.168.2.i -j DROP
done
#限制单个ip
/sbin/iptables -A FORWARD -s 192.168.1.135/32 -m limit \ --limit 60/s -j ACCEPT
/sbin/iptables -A FORWARD -s 192.168.1.135/32 -j DROP
最重要的记得修改完成后保存生效
最后说一下如何解决防火墙重启后失败的问题
iptables-save >/etc/sysconfig/iptables
echo 'iptables-restore /etc/sysconfig/iptables' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
公众号
扫码订阅最新深度技术文,回复【资源】获取技术大礼包
评论