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

Безопасен ли мой брандмауэр Linux?

Я новичок в брандмауэрах Linux и пытаюсь настроить брандмауэр своей системы для общедоступного компьютера. Вот мои требования:

  1. Порты 80 и 22 должны быть открыты для HTTP-запросов и авторизации по SSH.
  2. Поскольку мой сервер приложений будет работать под пользователем без полномочий root на порту 8080. Я хочу перенаправить все пакеты на порт 8080. В некоторых случаях мое приложение само делает запрос к серверу изнутри сервера.

Вопрос: Есть ли дыры в моем брандмауэре? Способы сделать это более безопасным.

Вот мои настройки брандмауэра:

*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). По какой-то причине это рекомендуется, даже если ваше последнее правило - ОТКАЗАТЬ или ОТКЛОНЯТЬ, как ваше.