我已经制作了一个防火墙规则 bash 脚本,如下所示:
#!/bin/bash
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT
#
# Outgoing and Incoming ping – on all interface
#
ip6tables -A INPUT -i bond0 -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o bond0 -p ipv6-icmp -j ACCEPT
ip6tables -A INPUT -i bond1 -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o bond1 -p ipv6-icmp -j ACCEPT
ip6tables -A INPUT -i bond2 -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o bond2 -p ipv6-icmp -j ACCEPT
ip6tables -A INPUT -i bond3.243 -p ipv6-icmp -j ACCEPT
ip6tables -A OUTPUT -o bond3.243 -p ipv6-icmp -j ACCEPT
#
# ssh - 22/tcp
#
iptables -A INPUT -i bond1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o bond1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i bond3.243 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o bond3.243 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
ip6tables -A INPUT -i bond1 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -o bond1 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
ip6tables -A INPUT -i bond3.243 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -o bond3.243 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
#
# Save the configuration
#
service iptables save
service ip6tables save
#
# dobackup
#
chmod a+r /etc/sysconfig/iptables
chmod a+r /etc/sysconfig/ip6tables
现在,每当我应用此规则时,我都会失去与服务器的 ssh 连接。然后我需要停止 ip6tables 服务以恢复 ssh 连接。
但是当我更改iptables -P OUTPUT DROP to iptables -P OUTPUT ACCEPT
&ip6tables -P OUTPUT DROP to ip6tables -P OUTPUT ACCEPT
时,此规则也会得到实施,并且我没有失去 ssh 连接。
我不确定问题到底是什么。bash 文件中存在一些错误,或者我不知道。感谢您的支持。
答案1
我认为更方便的方法是允许 ssh 端口上的入站连接不受状态控制,并允许出站建立相关连接。
尝试使用规则:
iptables -A INPUT -i bond1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i bond3.243 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
您的服务器不能发送其他类型的流量,因为最后一条规则只允许发送 ESTABLISHED 和 RELATED 类型。