использовать iptables, чтобы разрешить входящие подключения к компьютеру на порту XYZ?

Это то, что у меня есть: iptables -i em1 -A INPUT -j ACCEPT -p tcp --dport 9001 -v . Если я хочу принимать входящие соединения на порт 9001 на этом (127.0.0.1 или в сети 192.168.1.143) адрес, что я делаю неправильно?

Я думаю, что ваша команда в порядке. Хотя порядок аргументов несколько неортодоксален, он должен работать.

Проблема, скорее всего, в том, что правила iptables влияют на порядок, в который они введены. Если вы введете правило блока, которое соответствует, то правило allow, правило allow не будет использоваться, потому что пакет уже соответствует блочному правилу.

Общая практика при настройке iptables заключается в том, чтобы очистить все правила, установить политику, затем ввести все, что вы хотите разрешить, а затем отказаться от всего остального, используя правило общего соответствия. Я подозреваю, что у вас неправильный порядок, и он отрицает все из-за ранее установленного правила и теперь пытается добавить разрешение.

Если это ваши единственные правила, вы должны быть чрезвычайно закрыты. Вы можете ограничить IP-адреса, с которых вы принимаете данные. Обычным является создание цепочек с правилом для приема подключений RELATED и ESTABLISHED.

Если вы не знаете, что делаете, вы можете использовать инструмент для создания брандмауэра. Я использую Shorewall, который хорошо документирован. Он будет генерировать правила ведения журнала для вас, чтобы вы могли заблокировать трафик. (Обычно зондированные порты, такие как общие папки Windows, не регистрируются в конфигурации по умолчанию.) Существуют примеры наборов для 1, 2 и 3 интерфейсных конфигураций, включенных в документацию. Существуют также команды, которые позволяют легко просматривать конфигурацию брандмауэра и подключения.