我的虚拟服务器/网络服务器(操作系统:Debian squeeze)遭到黑客攻击并受到损害。因此,我想使用IPTable中的规则来阻止除ssh之外的所有输入和输出连接。之后我想至少备份一些应该保存的数据库和文件。我找到了一些描述工作流程的教程和脚本,但我仍然有疑问:
1.)由于我没有对服务器的物理访问权限,因此我非常小心地使用它,因为我不想将自己锁定。当我将以下脚本与“iptables-restore < /etc/myscript”一起使用时,我应该仍然能够从本地计算机通过 SSH 连接,对吧?如果不是,重新启动机器是否应该重新激活旧的标准规则?
2.) 我对定义 sport & dport (源端口和目标端口)的规则有点困惑。正如脚本中所写,是否可以从第三个网络服务器连接到受感染的计算机?因为我想将文件备份到另一个虚拟服务器,但显然无法通过 HTTP 传输文件。
3.)可能是最愚蠢的问题,但我仍然想问:逐行处理脚本的命令,在第二部分之后将完全阻止所有连接 - 允许 ssh 连接的规则定义在第三方。由于我是通过 SSH 连接的,因此在使用规则之后(以及在接受 ssh 之前)我的连接不应该被中断吗?
# flushing old rules
IPTABLES -F
IPTABLES -X
IPTABLES -t nat -F
IPTABLES -t nat -X
# creating general policy
IPTABLES -P INPUT DROP
IPTABLES -P OUTPUT DROP
IPTABLES -P FORWARD DROP
# allowing SSH
IPTABLES -A OUTPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
IPTABLES -A INPUT -p tcp --sport 22 -j ACCEPT
答案1
我应该仍然能够从本地计算机通过 SSH 连接,对吧?
不可以。相关规则是:
IPTABLES -A OUTPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
IPTABLES -A INPUT -p tcp --sport 22 -j ACCEPT
您可能希望将命令名称转换为小写,但规则本身需要更多工作。首先,您可能不想将第一个限制ACCEPT
为目的地port 22
。该ESTABLISH,RELATED
规则可能最好保持完全开放,这样您就可以为已经允许通过的任何交通开绿灯,这也是大多数人希望发生的情况。本质上,该规则表示“如果它与打开的连接(包括本地计算机打开的连接)相关,则让它通过。”无需比这更具体,因为我们正在DROP
使用除 SSH 之外的所有内容,并且如果我们从这台计算机启动连接,我们可能希望它能够通过。
第二条规则需要使用--dport
and not--sport
因为我们试图匹配来自其他地方的 ssh 连接并进入我们的服务器(这就是为什么你把它放在 INPUT 链上)。
正如脚本中所写,是否可以从第三个网络服务器连接到受感染的计算机?
如果您进行上述更正,则可以通过在受感染的服务器上启动连接或让第三个 Web 服务器通过 SSH 连接(这就是您将获得批准的方式)来传输文件。
由于我是通过 SSH 连接的,因此在使用规则之后(以及在接受 ssh 之前)我的连接不应该被中断吗?
只要保持RELATED,ESTABLISHED
开放状态就应该没问题,因为 ssh 会话已经与已建立的连接相关。但是,如果您以与当前连接不兼容的方式修改防火墙,则该连接将会断开。