iptables 使用技巧

Posted on Posted in iptables

几个 iptables 使用技巧

避免封锁自己

/sbin/iptables-save > /root/iptables-work
/sbin/iptables-save > /root/iptables-works-`date +%F`
/sbin/iptables-restore < /root/iptables-works-2018-09-11 # 利用文件恢复
# 策略顶部
iptables -A INPUT -p tcp --dport 22 -j DROP
# 将源地址为 10.0.0.0/8、 目的地址是 192.168.100.101、目的端口号是 22 (--dport 22 ) 的 TCP(-p tcp )数据包通通丢弃掉
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -d 192.168.100.101 -j DROP
# -I 表示则策略首部插入规则,-A 表示在策略尾部追加规则
iptables -I INPUT -s <your IP> -j ACCEPT # 加入白名单

设置策略

# 设置默认规则为丢弃
# Set a default policy of DROP
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# Accept any related or established connections
-I INPUT  1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow all traffic on the loopback interface
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# Allow outbound DHCP request
-A OUTPUT –o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Allow inbound SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW  -j ACCEPT

# Allow outbound email
-A OUTPUT -i eth0 -p tcp -m tcp --dport 25 -m state --state NEW  -j ACCEPT

# Outbound DNS lookups
-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT

# Outbound PING requests
-A OUTPUT -o eth0 -p icmp -j ACCEPT

# Outbound Network Time Protocol (NTP) requests
-A OUTPUT -o eth0 -p udp --dport 123 --sport 123 -j ACCEPT

# Outbound HTTP
-A OUTPUT -o eth0 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT

限制 IP 地址范围

 -> root@DESKTOP-N9ER5QO ~ ☺  # host -t a www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 14.215.177.38
www.a.shifen.com has address 14.215.177.39

使用 IP Range To CIDR 转换

iptables -A OUTPUT -p tcp -i eth0 -o eth1 -d 14.215.177.38/31 -j DROP

按照时间规定限制

# 指定在中午12点(--timestart 12:00)到下午 1 点(--timestop 13:00)之间允许(-j ACCEPT)到 www.baidu.com (-d 14.215.177.38/31)的 http 以及 https (-m multiport --dport http,https)的访问
iptables –A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 –timestop 13:00 –d 14.215.177.38/31 -j ACCEPT

按照时间拒绝所有

# 设置凌晨 2 点到 3 点之间拒绝所有的 TCP 和 UDP 访问, 进行维护
# 禁止(-j DROP)在凌晨2点(--timestart 02:00)到凌晨3点(--timestop 03:00)之间的 TCP 和 UDP (-p tcp and -p udp)的数据进入(-A INPUT)访问
iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP
iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

限制连接数量

# 单个主机在一分钟之内新建立(-p tcp -syn)超过 20 个(-connlimit-above 20)到你的 web 服务器(--dport http,https)的连接,服务器将拒绝(-j REJECT)建立新的连接,然后通知对方新建连接被拒绝(--reject-with-tcp-reset)
iptables –A INPUT -p tcp -syn -m multiport --dport http,https -m connlimit --connlimit-above 20 –j REJECT -–reject-with-tcp-reset

监控 iptables 规则

# 查看规则被访问了多少次
iptables -L -v -n -line-numbers
# 哪条规则从来没有被访问过,这些可以被清除掉
# 两个数字 0 之间不是 Tab 键,而是 5 个空格
iptables -nvL | grep -v "0     0"
# 监控正在发生什么
# 动态监视 iptables 中的活动,并仅显示正在遍历的规则
watch --interval=5 'iptables -nvL | grep -v "0     0"'

使用FWLogwatch生成日志报告

» 转载请注明来源:呢喃 » iptables 使用技巧

Leave a Reply

Your email address will not be published. Required fields are marked *

three × two =