如何在 Ubuntu 服务器上完美地刷新 iptables 并且没有任何风险?
我有一些 ubuntu 云服务器,我将通过 ssh 访问它们。我在文件“/etc/iptables.rules”中输入我的 iptable 规则,然后使用命令“iptables-restore < /etc/iptables.rules”应用这些规则。
猫/etc/iptables.rules
*筛选
:输入下降 [0:0]
:转发接受 [0:0]
:输出接受 [0:0]
-A 输入-i lo -j 接受
-A 输入 -m 状态 --状态相关,已建立 -j 接受
-A 输入 -m 状态 -i eth0 --状态已建立,相关 -j 接受
-A 输入-p tcp -m tcp --dport 22 -j 接受
-A 输入-p tcp -m tcp --dport 80 -j 接受
-A 输入-p tcp -m tcp --dport 10000 -j 接受
犯罪
我的 IT 经理使用工具“nmap”检查发现一些端口被列为开放端口,而我并没有将其包含在 /etc/iptables.rules 文件中,并要求我尽快修复此问题。所以我只是猜测(并不完全确定)可能需要刷新 iptable 规则,这是我犯下的一个大错误,我觉得这对“管理员”职位来说是一种耻辱。在我当前的 ssh 会话终止后不久,我使用了“iptables -F”,云服务器甚至无法直接访问。然后我以“救援模式”启动它,并应用了默认的 iptable 规则。从那时起,如果与 iptables 有关,我就会感到紧张。
这个论坛对我帮助很大,我希望这个风险会变得容易。
- 刷新 iptable 规则的正确方法和
- 仅应将允许的端口列为开放端口
需要帮忙...
我在本地机器上检查了以下内容以刷新 iptables 并且成功了:
/sbin/iptables --policy 输入接受
/sbin/iptables --policy 输出接受
/sbin/iptables --policy 转发接受
/sbin/iptables -F
我将使用“iptables-apply /etc/iptables.rules”来避免配置错误。那么是否可以将上述条目放在文件 /etc/iptables.rules 中以供刷新?
即将上述条目放入 iptables.rules 文件中。
我安装了 nmap 监控工具。我使用以下命令检查开放端口:
nmap -vv –sS -O –T2 –R --randomize_hosts -oA 永久 192.168.2.101
它显示一些端口(https、ftp...)为开放端口,但这些端口未包含在上面的 iptable 规则中。以下是上述 namp 命令的输出
NSE:已加载 0 个脚本以供扫描。
无法解析给定的主机名/IP:–sS。请注意,您不能使用“/mask”和“1-4,7,100-”样式的 IP 范围 无法解析给定的主机名/IP:–T2。请注意,您不能使用“/mask”和“1-4,7,100-”样式的 IP 范围 无法解析给定的主机名/IP:–R。请注意,您不能使用“/mask”和“1-4,7,100-”样式的 IP 范围 正在启动 1 个主机的并行 DNS 解析。 15:36
已完成 1 个主机的并行 DNS 解析。于 15:36 完成,已用时 0.02 秒
15:36 启动 SYN 隐形扫描
扫描 192.168.2.101 [1000 个端口]
在 192.168.2.101 上发现开放端口 21/tcp
在 192.168.2.101 上发现开放端口 443/tcp
在 192.168.2.101 上发现开放端口 25/tcp
在 192.168.2.101 上发现开放端口 22/tcp
在 192.168.2.101 上发现开放端口 80/tcp
在 192.168.2.101 上发现开放端口 10000/tcp
在 192.168.2.101 上发现开放端口 8009/tcp
在 192.168.2.101 上发现开放端口 8081/tcp
已于 15:36 完成 SYN 隐形扫描,耗时 0.07 秒(共 1000 个端口)
针对 192.168.2.101 启动操作系统检测(尝试 #1)
针对 192.168.2.101 重试操作系统检测(尝试 #2)
针对 192.168.2.101 重试操作系统检测(尝试 #3)
针对 192.168.2.101 重试操作系统检测(尝试 #4)
针对 192.168.2.101 重试操作系统检测(尝试 #5)
主机 192.168.2.101 已启动(延迟 0.000096 秒)。
扫描于 2010-10-06 15:36:46 IST,耗时 12 秒
192.168.2.101 上有趣的端口:
未显示:992 个关闭的端口
港口国服务
21/tcp 开启 ftp
22/tcp 开启 ssh
25/tcp 开启 smtp
80/tcp 开放 http
443/tcp 打开 https
8009/tcp 打开 ajp13
8081/tcp 打开 blackice-icecap
10000/tcp 打开 snet-传感器-管理
没有与主机精确匹配的操作系统(如果您知道主机上运行的是什么操作系统,请参阅 http://nmap.org/submit/)。
' netstat -an | grep "LISTEN " ' 的输出:
tcp 0 0 0.0.0.0:21 0.0.0.0:* 监听
tcp 0 0 0.0.0.0:22 0.0.0.0:* 监听
tcp 0 0 0.0.0.0:25 0.0.0.0:* 监听
tcp 0 0 0.0.0.0:443 0.0.0.0:* 监听
tcp 0 0 127.0.0.1:3306 0.0.0.0:* 侦听
tcp 0 0 0.0.0.0:10000 0.0.0.0:* 监听
tcp 0 0 0.0.0.0:80 0.0.0.0:* 监听
tcp6 0 0 :::8081 :::* 侦听
tcp6 0 0 :::22 :::* 侦听
tcp6 0 0 :::8009 :::* 侦听
谢谢你!
答案1
如果链的默认策略是,DENY
则所有连接都将被切断,因为不再有任何方式通过 TCP/IP 进行通信。ACCEPT
在刷新之前将默认策略设置为,然后DENY
在重新建立规则后恢复为。
答案2
为了有一个防火墙更改期间的安全网您可以部署一个简短的脚本,借助 crontab 定期打开防火墙。只有在成功完成所有更改后,您才能停用此 cron。请参阅这里。