Я новичок в брандмауэрах Linux и пытаюсь настроить брандмауэр своей системы для общедоступного компьютера. Вот мои требования:
Вопрос: Есть ли дыры в моем брандмауэре? Способы сделать это более безопасным.
Вот мои настройки брандмауэра:
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow Secure SSH transfer
-A RH-Firewall-1-INPUT -p tcp -m state -m tcp --dport 22 --state NEW -j ACCEPT
# Allow all HTTP requests
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
*nat
:OUTPUT ACCEPT [0:0]
-A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# Routes all HTTP requests from port 80 to port 8080.
# Allows you to run JETTY as a non-root user.
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
COMMIT
# Completed
В вашей конфигурации есть следующая строка:
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
Однако есть два типа запросов ICMP, которые можно рассматривать как небольшие проблемы безопасности (от введите описание ссылки здесь):
Type Name Reference
...
13 Timestamp [RFC792]
...
17 Address Mask Request [RFC950]
Тип 13 - это запрос точного времени согласно компьютеру назначения. Точное время может быть использовано для использования некоторых очень слабых алгоритмов шифрования в некоторых сетевых протоколах, позволяя злоумышленнику получить доступ к конфиденциальной информации. Тип 17 - это запрос сетевой маски интерфейса, на котором был получен запрос. Правильный ответ может помочь злоумышленнику узнать о топологии вашей сети. Вместо приведенного выше правила я рекомендую следующие три правила:
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 13 -j REJECT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 17 -j REJECT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
Эти правила предотвратят использование двух запрещенных типов ICMP и разрешат все остальные.
Я тоже довольно новичок в маршрутизации Linux, единственное, что я рекомендовал, - это изменить целевую политику INPUT на удаление / отклонение (iptables -P INPUT DROP). По какой-то причине это рекомендуется, даже если ваше последнее правило - ОТКАЗАТЬ или ОТКЛОНЯТЬ, как ваше.