前往顾页
以后地位: 主页 > 精通Office > Ubuntu教程 >

iptables常常利用实例备查

时候:2018-10-30 13:19来源:知行网www.zhixing123.cn 编辑:麦田守望者

1. 浅显法则

1.1 操纵法则

  • iptables -nL
    检察本机关于iptables的设置环境,默许检察的是-t filter,可以指定-t nat
  • iptables-save > iptables.rule
    会保存以后的防火墙法则设置,号令行下经由过程iptables建设的法则鄙人次重启后会见效,当然这也是为了不错误的建设防火墙。默许读取和保存的建设文件地点为/etc/sysconfig/iptables

  • 设置chain默许战略

    1
    2
    3
    iptables -P INPUT DROP
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT

将 INPUT 链默许措置战略设置为DROP,前提是已存在一条可以拜候22端口的法则。这里要申明的是,在增加这类回绝拜候的法则之前,必然要想好履行完,会不会把本身关在防火墙内里,不然就傻眼了。像下面这句。

1.2 限定拜候法则

  • iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    把这条语句插在input链的最前面(第一条),对状况为ESTABLISHED,RELATED的连接放行。
    这条法则在某种环境下乃至比下面开放ssh办事都首要:① 如果INPUT连默许为DROP,② INPUT链默许为INPUT,但存在这条法则-A INPUT -j REJECT --reject-with icmp-host-prohibited,下面两种环境下都必须增加--state RELATED,ESTABLISHED为第一条,不然22端口无法通行,把本身锁在防火墙内里了。
    有了这条法则,可包管只需以后ssh没有封闭,哪怕防火墙健忘开启22端口,也能够继续连接。

  • iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    许可所有,不宁静,默许。

  • iptables -A INPUT -s 172.29.73.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    限定指定IP范围能SSH,可取

  • iptables -A INPUT -s 10.30.0.0/16 -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
    许可一个IP段拜候多个端口

  • iptables -A INPUT -s 10.30.26.0/24 -p tcp -m tcp --dport 80 -j DROP
    避免某IP段拜候80端口,将-j DROP改成 -j REJECT --reject-with icmp-host-prohibited感化不异。

iptables -A INPUT -s 172.29.73.23 -j ACCEPT
完整信赖某一主机,尽可能不利用

iptables -I INPUT 2 -i lo -j ACCEPT
许可loopback。回环接口是一个主机外部发送和领受数据的假造装备接口,应当放行所有数据包。指定拔出地位为 2 则之前该编号为 2 法则顺次后移。

  • -A INPUT -p icmp -j ACCEPT
    接管icmp数据包,可以ping。也能够设置只许可某个特定的IP,见后文。

iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
这条法则用在INPUT链默没有DROP的环境,感化与-P DROP不异,以后面所有的法则都没婚配时,自然落到这个 REJECT 上。
近似的FORWARD链也能够这么用:iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

当然,更强的法则是将OUPUT链也设置成DROP,如许一来环境就会复杂很多,如就是发送名剖析请求,也要增加法则iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
恰是因为如许的过分费事,所以一般OUTPUT战略默许为ACCEPT。(宁静性比较高的体系除外)

1.3 删除法则

  • iptables -nL --line-number
    显现每条法则链的编号

  • iptables -D FORWARD 2
    删除FORWARD链的第2条法则,编号由上一条得知。如果删除的是nat表中的链,记得带上-t nat

  • iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited
    删除法则的第二种体例,所有选项要与要删除的法则都不异才气删除,不然提示iptables: No chain/target/match by that name.

  • 丢弃不法连接

    iptables -A INPUT -m state –state INVALID -j DROP
    iptables -A OUTPUT -m state –state INVALID -j DROP
    iptables-A FORWARD -m state –state INVALID -j DROP

2. 几种景象

2.1 端口转发

起首要开启端口转发器必须先点窜内核运行参数ip_forward,翻开转发:

1
2
3
4
# echo 1 > /proc/sys/net/ipv4/ip_forward   //此体例临时见效

# vi /ect/sysctl.conf //此体例永久见效
# sysctl -p

本机端口转发

# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

按照 iptables防火墙道理详解 可知,实际上在数据包进入INPUT链之前,点窜了目标地点(端口),因而不难了解在开放端口时需求设置的是放行8080端口,无需考虑80:

# iptables -A INPUT -s 172.29.88.0/24 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

此时外部拜候http的80端口便可主动转到8080(浏览器地点栏不会变),并且又具有很高的机能,但如果你经由过程办事器本地主机的curl或firfox浏览器拜候http://localhost:80http://doman.com:80都是不可(假定你有如许的奇葩需求),这是因为本地数据包产生的目标地点不对,你需求分外增加这条 OUTPUT 法则:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

下面的法则可以到达一样的结果:

iptables -t nat -A PREROUTING -p tcp -i eth0 -d $YOUR_HOST_IP --dport 80 -j DNAT --to $YOUR_HOST_IP:8080
iptables -t nat -A OUTPUT -p tcp -d $YOUR_HOST_IP --dport 80 -j DNAT --to 127.0.0.1:8080
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1      --dport 80 -j DNAT --to 127.0.0.1:8080

异机端口转发
有些环境下企业外部收集隔离比较严格,但有一个跨网段拜候的环境,此时只需转发用的中转办事器可以或许与别的的两个IP(办事器或PC)通信便可利用iptables实现转发。(端口转发的另有其他体例,请参考 linux办事器下各种端口转发技能 )

要实现的是所有拜候 192.168.10.100:8000 的请求,转发到 172.29.88.56:80 上,在 192.168.10.100 是哪个增加法则:

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 192.168.10.100 --dport 8000 -j DNAT --to-destination 172.29.88.56:80
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.10.100
或
iptables -t nat -A PREROUTING -d 192.168.10.100 -p tcp --dport 8000 -j DNAT --to 172.29.88.56:80
iptables -t nat -A POSTROUTING -d 172.29.88.56 -p tcp --dport 80 -j SNAT --to-source 192.168.10.100

需求重视的是,如果你的FORWARD链默许为DROP,下面所有端口转发都必须建立在FORWARD链许可通行的环境下:

iptables -A FORWARD -d 172.29.88.56 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 172.29.88.56 -p tcp -j ACCEPT

2.2 记录日记

为22端口的INPUT包增加日记服从,插在input的第1个法则前面,为避免日记信息塞满/var/log/message,用--limit限定:

iptables -R INPUT 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG

vi /etc/rsyslog.conf 编辑日记建设文件,增加kern.=notice /var/log/iptables.log,可以将日记记录到自定义的文件中。

service rsyslog restart #重启日记办事

2.3 避免DoS抨击打击

SYN洪水是抨击打击者发送海量的SYN请求到目标办事器上的一种DoS抨击打击体例,下面的脚本用于防备轻量级的DoS抨击打击:
ipt-tcp.sh:
1234567891011121314
iptables -N syn-flood (如果您的防火墙默许建设有“ :syn-flood - [0:0] ”则不准要该项,因为反复了)iptables -A INPUT -p tcp --syn -j syn-flood iptables -I syn-flood -p tcp -m limit --limit 2/s --limit-burst 5 -j RETURN iptables -A syn-flood -j REJECT # 避免DOS太多连接出去,可以许可外网网卡每个IP最多15个初始连接,超越的丢弃# 需求iptables v1.4.19以上版本:iptables -V iptables -A INPUT -p tcp --syn -i eth0 --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP #用Iptables抵抗DDOS (参数与上不异) iptables -A INPUT -p tcp --syn -m limit --limit 5/s --limit-burst 10 -j ACCEPT iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT iptables -A FORWARD -p icmp -m limit --limit 2/s --limit-burst 10 -j ACCEPTiptables -A INPUT -p icmp --icmp-type 0 -s ! 172.29.73.0/24 -j DROP

------分开线----------------------------
标签(Tag):iptables常常利用实例 iptables
------分开线----------------------------
保举内容
猜你感兴趣