Как настроить iptables, чтобы нежелательный порт не отображался как отфильтрованный

9

Я бы хотел, чтобы другие не видели мои порты как отфильтрованные при стандартном сканировании nmap (непривилегированные). Допустим, у меня открыты следующие порты: 22, 3306, 995 и брандмауэр, настроенный так:

-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 995 -j DROP

Это результат сканирования nmap:

[+] Nmap scan report for X.X.X.X

    Host is up (0.040s latency).
    Not shown: 90 closed ports

    PORT     STATE    SERVICE
    22/tcp   filtered ssh
    995/tcp  filtered pop3s
    3306/tcp filtered mysql

Эти порты отображаются как отфильтрованные, потому что мой сервер не ответил RST за SYN. Есть ли способ изменить это поведение? Например: если брандмауэр iptables блокирует порт, ответьте RST для SYN, вместо того чтобы молчать (ничего не отвечая)?

user3125731
источник

Ответы:

18

Не используйте DROP, это легко идентифицировать как «отфильтрованный», если вы знаете, что окно работает. Вместо этого вы можете использовать следующее для отправки RST. (как будто служба прослушивает, но она не принимает соединения от вас)

-A INPUT -p tcp -m tcp --dport 22 -j REJECT --reject-with tcp-reset

Или просто используйте следующее, чтобы порт выглядел закрытым. (как будто на нем нет службы прослушивания)

-A INPUT -p tcp -m tcp --dport 22 -j REJECT
jornane
источник
9
-A INPUT -p tcp -m tcp --dport 995 -j REJECT --reject-with tcp-reset

должен делать то, что вы хотите (ответ с RST).

Свен
источник