我正在做一个实验。当我(客户端)通过 ssh 进入网关并运行sudo iptables --policy INPUT DROP
时,网关不会接受来自我的客户端的任何通信(或输入)。
通过running sudo iptables --policy INPUT ACCEPT
网关,客户端就可以再次进行写入。
我的问题是:我怎样才能从客户端恢复这种情况?
答案1
为保持该系统可访问,您应该做两件事前改变网络过滤器-规则:
ssh
在防火墙规则中为您的计算机创建例外- 建立保障措施
创建例外
创建适当的规则iptables
sudo iptables -A INPUT -p tcp --dport ssh --source-address yourextIPadd -j ACCEPT
(yourextIPadd
从外面看你家里的机器的IP地址是哪里)
或利用 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
评论
- 你需要打电话
at
(sudo
必须是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