一旦我用 iptables 锁定我的 VPS 服务器,意味着我只打开了几个选定的端口进行输入访问,我的 Gem 命令就会停止工作,我不确定我做错了什么。
这是一个双重问题。
1. 这是在 Gem 命令行中运行的命令。
gem list -r
之前,它会显示可供安装的远程 gem 列表,现在它会停滞,除非我再次通过 iptables 打开所有端口。我读过几篇关于打开端口 443 的文章,但我看到的示例对我来说很陌生,我尝试从中获取的方法也没有奏效。所以有人知道吗?这是我的 iptables 设置的输出。
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 193 14308 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
3 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:81
4 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:82
5 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8090
7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
8 28 2214 LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 154 packets, 16540 bytes)
num pkts bytes target prot opt in out source destination
Chain LOGGING (1 references)
num pkts bytes target prot opt in out source destination
1 28 2214 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "IPTables Dropped"
2 28 2214 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
我的问题的第二部分是,在没有文档的情况下,我如何才能揭示本例中的 gem 等程序正在访问哪些 IP 地址和端口?我希望有某种程序可以输入类似以下命令:
sandbox-wrap 'gem list -r'
并且,观察屏幕上显示的互联网访问信息。
感谢 Iain 回答这个问题。对于其他人,这是经过更正的新 iptables 副本。我在过滤表 INPUT 链的第 1 位置添加了一行新代码。
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 7 488 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 700 50592 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
3 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:81
5 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:82
6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8090
8 1 40 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
9 83 6958 LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0
答案1
根据配置,我认为你的主要问题是 LOGGING 链末尾的 DROP。它会丢弃到达它的所有数据包。gem 命令将使用随机临时端口建立与远程系统的连接。数据包将被返回给它,而由于您只允许数据包到达 INPUT 链中的明确端口,因此您使用 DROP 阻止了它们。
通过在 INPUT 链早期添加此项来允许相关/已建立的连接是正常的
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
这将允许与传出 gem 连接相关的数据包进入。