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

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

Я бы хотел, чтобы другие не видели мои порты как отфильтрованные в стандартном сканировании 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 вместо того, чтобы оставаться в молчании (ничего не отвечать)?

Не используйте 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
-A INPUT -p tcp -m tcp --dport 995 -j REJECT --reject-with tcp-reset

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