更改 iptables 默认策略后,如何防止被锁定?

更改 iptables 默认策略后,如何防止被锁定?

我正在做一个实验。当我(客户端)通过 ssh 进入网关并运行sudo iptables --policy INPUT DROP时,网关不会接受来自我的客户端的任何通信(或输入)。

通过running sudo iptables --policy INPUT ACCEPT网关,客户端就可以再次进行写入。

我的问题是:我怎样才能从客户端恢复这种情况?

答案1

为保持该系统可访问,您应该做两件事改变网络过滤器-规则:

  1. ssh在防火墙规则中为您的计算机创建例外
  2. 建立保障措施

创建例外

创建适当的规则iptables

sudo iptables -A INPUT -p tcp --dport ssh --source-address yourextIPadd -j ACCEPT

yourextIPadd从外面看你家里的机器的IP地址是哪里)

或利用 ufw

如果你有联邦快递安装 ufw已经安装完毕你可以告诉联邦快递创建一个例外

sudo ufw allow from yourextIPadd to any port 22

建立保障措施

在发出改变命令之前默认策略为了网络过滤器DROP可以使用这个方便的命令告诉系统在 5 分钟后恢复该命令at

sudo at -vM now +5 minutes

现在您处于一个类似编辑器的状态,您可以在其中键入稍后要执行的命令,您可以通过键入来关闭/结束它CTRLD

类型

/sbin/iptables --policy INPUT ACCEPT

CTRLD

你会看到类似

sudo at -vM  now +1 minute
Fri Aug 29 17:46:00 2014

warning: commands will be executed using /bin/sh
at> /sbin/iptables iptables --policy INPUT ACCEPT
at> <EOT>
job 5 at Fri Aug 29 17:46:00 2014

评论

  • 你需要打电话atsudo必须是root's 桌子)
  • sudo因此不需要
  • -v告诉at您完成后显示预期的执行时间
  • -M告诉at不发送有关成功/失败的电子邮件
  • 如需深入了解,请iptables查看IPTables 使用方法

答案2

您不能……至少不能使用基于 IP 的连接协议。因为您的规则会丢弃进入网关的所有传入 IP 流量。

顺便说一句,我知道的所有协议,如 ssh、vnc、rdp 等,都使用 IP。

答案3

我在研究其他类型的 iptables 规则时偶然发现了这个问题。我想我可以提出自己的建议。

举例来说,以下是一种确保您不会将自己锁定在本地主机之外的方法。编辑您的 IP 以适合您的网络拓扑。我不知道其他人使用什么 IP 范围。从安全角度来看,我的建议或建议是,在设置本地网络(家庭、企业等)时,不要使用 192.168.0.1,而要使用 10.0.0.0 ... 为什么?很简单。任何非默认设置都会立即提高您的安全性,即使只是一点点。一旦攻击者进入,他们就基本进入了。他们弄清楚您的网络模式只是时间问题。

希望这可以帮助。

只要您确保执行 netfilter-persistent 保存,此设置在重新启动机器后仍会持续存在。

    # Set default policies for all three default chains
    $ sudo iptables -P INPUT DROP
    $ sudo iptables -P FORWARD DROP
    $ sudo iptables-P OUTPUT ACCEPT

    # Enable free use of loopback interfaces
    $ sudo iptables -A INPUT -i lo -j ACCEPT
    $ sudo iptables -A OUTPUT -o lo -j ACCEPT

    #Dont lock yourself out
    $ sudo iptables -I INPUT 1 -i eth0 -p tcp --syn -m state --state NEW -s 192.168.0.1 -d 192.168.0.2 -j ACCEPT
    $ sudo iptables  -I OUTPUT 1 -o eth0 -p tcp --syn -m state --state NEW -s 192.168.0.1 -d 192.168.0.2 -j ACCEPT

    # Allow your local subnet
    $ sudo iptables  -A INPUT -p tcp ! --syn -m state --state NEW -s 192.168.0.1/24 -j DROP

    # Accept inbound TCP packets
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $ sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -s 192.168.0.1/24 -j ACCEPT

    # Accept inbound ICMP messages
    $ sudo iptables -A INPUT -p ICMP --icmp-type 8 -s 192.168.0.1/24 -j ACCEPT
    $ sudo iptables -A INPUT -p ICMP --icmp-type 11 -s 192.168.0.1/24 -j ACCEPT

    # Accept outbound packets
    $ sudo iptables -I OUTPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    $ sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

在执行其他任何操作之前,您应该执行

    $ sudo iptables-save >> iptables-rules-ipv4.sh
    $ sudo netfilter-persistent save

相关内容