Назад | Перейти на главную страницу

iptables не закрывает порт 3000?

Я хотел настроить iptables на своем сервере таким образом, чтобы открывались только определенные порты. Тем не менее я могу получить доступ, например, порт 3000, если я запускаю на нем веб-приложение. В чем может быть причина открытия 3000?

Вот результат работы команды iptables -nv -L INPUT

 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x00
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:!0x17/0x02 state NEW
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x3F/0x3F
  670  302K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
  187  136K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   33  1968 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp spt:25 state ESTABLISHED

На мой взгляд, таблица выше показывает, что открыты только порты 80, 443, 22 и 25, но, видимо, мне чего-то не хватает.

UPD. Содержание /etc/sysconfig/iptables

# Generated by iptables-save v1.4.21 on ...
*filter
:INPUT ACCEPT [11:812]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [7:2120]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 25 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*mangle
:PREROUTING ACCEPT [6775:1045434]
:INPUT ACCEPT [6183:992008]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [3415:5301713]
:POSTROUTING ACCEPT [3415:5301713]
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*nat
:PREROUTING ACCEPT [671:58811]
:POSTROUTING ACCEPT [3:243]
:OUTPUT ACCEPT [3:243]
COMMIT
# Completed on ...
# Generated by iptables-save v1.4.21 on ...
*raw
:PREROUTING ACCEPT [6775:1045434]
:OUTPUT ACCEPT [3415:5301713]
COMMIT

UPD. Спасибо за ответы, @akhfa и @Iain! Оба работают на меня. Кажется, что вариант отклонения немного лучше (например, ввиду это сравнение), поэтому я отмечаю его как принятый.

P.S. Теперь у меня проблема в том, что я больше не могу пинговать Google со своего сервера, но это, вероятно, выходит за рамки исходного вопроса. P.P.S. Неважно, в конце концов я решил проблему с доступом в Интернет, добавив вначале следующие правила:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT  -p udp --sport 53 -m state --state ESTABLISHED     -j ACCEPT
sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT  -p tcp --sport 53 -m state --state ESTABLISHED     -j ACCEPT

sudo iptables -A INPUT -p icmp -j ACCEPT

У вас нет правил для блокировки порта 3000. Ваша политика - ПРИНЯТЬ, поэтому порт 3000 (как и все остальное) открыт. Вы можете попробовать добавить отбрасывание / отклонение по умолчанию в конце ваших правил, это обычное дело

iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable

и должен выполнять свою работу, так как любой пакет, который заходит так далеко, будет отклонен, и удаленный компьютер будет думать, что он прослушивает эту часть.

Вы можете изменить политику по умолчанию в INPUT на DROP следующим образом

iptables -P INPUT DROP

а затем вы можете удалить все правила DROP в цепочке INPUT. Если вы внесете это изменение, вы должны добавить правило ACCEPT в каждый порт, который хотите открыть.