2

Признаюсь в начале, что задаю этот вопрос только после того, как найду ответ и хочу поделиться им со всеми остальными. Если это дурной тон, тогда я искренне извиняюсь, и я открыт для предложений о том, как правильно поделиться этой с трудом завоеванной информацией. Если это повторение, пожалуйста, закройте его и укажите посетителям исходный вопрос.

Итак, как я могу настроить firewalld (в моем случае, используя CentOS 7.6), чтобы блокировать весь исходящий трафик, кроме определенных портов, и в то же время позволить localhost получить доступ к любому из своих локальных портов?

Я начал с этого:

# First, allow outbound traffic for all allowed inbound traffic 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m state --state ESTABLISHED,RELATED -j ACCEPT 

# Allow outbound HTTP, HTTPS, DNS
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p icmp -m icmp --icmp-type=ping -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 53 -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p udp --dport 53 -j ACCEPT 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -p tcp -m tcp --dport 80 -j ACCEPT 

# Block all other outbound traffic 
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 2 -j DROP

И все это прекрасно работало для блокировки доступа сервера к чему-либо, кроме веб-сайтов и DNS.

Но любые локальные сервисы, пытающиеся получить доступ к другим локальным сервисам через локальную сеть, были заблокированы. Что еще хуже, даже если firewalld настроен на запись пропущенных пакетов, исходящие отбрасывания не регистрировались.

1 ответ1

1

Ответ, который я нашел методом проб и ошибок, потому что поиск этого точного (возможно, странного) сценария в Google или в другом месте был бесплодным:

# Allow all outbound traffic from localhost to localhost
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 1 -o lo -j ACCEPT

Это позволяет локальным службам связываться с любыми другими локальными службами (даже если IP-адрес, назначенный целевым службам, отличается от 127.0.0.1).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .