Как только я заблокировал свой VPS-сервер с помощью iptables, что означает, что у меня открыто только несколько выбранных портов для доступа к вводу, моя команда Gem перестала работать, и я не уверен, что делаю не так.
Это двоякий вопрос.
1-й. Это команда, запускаемая из командной строки для Gem.
gem list -r
Раньше он отображал список удаленных гемов, доступных для установки, теперь он зависает, если я снова не открою все порты через 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
Вторая часть моего вопроса заключается в том, как при отсутствии документации узнать, к каким IP-адресам и портам обращается программа, такая как gem, в данном случае? Я надеюсь, что есть какая-то программа, в которой я мог бы ввести аналогичную команду, как показано ниже:
sandbox-wrap 'gem list -r'
И следите за отображением информации о доступе в Интернет на экране.
Спасибо Иэн за ответ на вопрос. Для остальных, вот копия нового iptables с исправлением. Я добавил новую строку в позицию номер 1 таблицы фильтров, цепочку INPUT.
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
В соответствии с настройками, я думаю, ваша основная проблема - это DROP в конце цепочки LOGGING. Он отбрасывает все пакеты, которые до него доходят. Команда gem будет использовать случайный эфемерный порт для подключения к удаленной системе. Пакеты будут возвращены ему, и, поскольку вы не разрешаете пакетам только явные порты в вашей цепочке INPUT, вы блокируете их с помощью DROP.
Это нормально разрешать связанные / установленные соединения, добавляя это в начале цепочки INPUT.
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Это позволит принимать пакеты, связанные с исходящим соединением с гемом.