Мои iptables теперь выглядят так:
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:12001
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:12001
3 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:8989
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8989
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8888
Правило STATE NEW на порту 8989 пропускает новые соединения. Однако заблокирует ли он все установленные соединения на порту 8989?
Если это вся ваша цепочка INPUT, она ничего не блокирует, потому что политика INPUT - ACCEPT и у вас нет правил DROP.
Если вам нужен работающий брандмауэр, вам нужно либо изменить политику INPUT на DROP, либо добавить правило DROP. Но да, если вы это сделаете, вам также понадобится правило для принятия установленных соединений. Сделать это можно так:
iptables -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT
Это принимает все установленные соединения в качестве первого правила ввода, что обычно является разумным поступком.
Если вы подключаетесь по ssh, перед добавлением политики или правила DROP убедитесь, что вы принимаете как новые, так и установленные TCP-соединения на вашем ssh-порту. В противном случае вы можете заблокироваться.