Как проверить правила брандмауэра для конкретной службы?

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

т.е.

netstat -tulnp | grep 123
udp        0      0 0.0.0.0:123                 0.0.0.0:*                               1542/ntpd

Я не вижу LISTEN или же ESTABLISHED в выходной.

2 ответа

Одним из способов является использование tcpdump инструмент. Вы связываетесь с интерфейсом и говорите, что хотите слушать, а затем вы можете отлаживать происходящее.

Итак, вы хотите видеть UDP-пакеты на порте 123. Вы должны использовать что-то вроде этого:

tcpdump -i any -n udp port 123

Там вы увидите дейтаграммы, которые ваша машина получает через этот порт. Это может даже помочь вам отладить некоторые другие проблемы, если вы не видите UDP-дейтаграмм. Если этого недостаточно, вы можете использовать LOG действие в команде iptables, поэтому ваше правило будет выглядеть примерно так:

iptables -I INPUT -i eth0 -s 1.2.3.4 -p udp --dport 123 -j LOG

Таким образом, любое соответствующее правило будет зарегистрировано в вашем системном журнале, и вы сможете отследить, работает ли оно так, как задумано.

Действующие в настоящее время правила брандмауэра отображаются:

   iptables -L -n -v

Используемые для прослушивания порты отображаются

    ss -lntp
    ss -lnup

для соединений TCP и UDP соответственно.

Если вы хотите, вы можете получить довольно хорошее представление о том, что происходит даже в другой машине (и, для полноты, также самостоятельно) с помощью nmap:

       nmap -p PORT_NUMBERS IP_ADDRESS

Это вернет статус портов как open (процесс слушает его, и нет брандмауэра), closed (никто не слушает это), filtered (брандмауэр защищает порт, и nmap не может определить, открыт порт или нет), unfiltered когда порты реагируют на nmap который, однако, не может сказать, открыт порт или нет.

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

Другие вопросы по тегам