Я хотел бы запустить установку брандмауэра без сохранения состояния, и в настоящее время у меня есть следующие правила:

#Do not track any packet
*raw
:PREROUTING ACCEPT [0:0]
-A PREROUTING -j NOTRACK
COMMIT

#Actual firewall rules
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -m multiport -p tcp --sport 80,443 -j ACCEPT
COMMIT

Теперь мой вопрос: не может ли злоумышленник получить удаленный доступ к какой-либо службе на моем сервере, если он устанавливает это соединение со своего компьютера на исходный порт 80, 443 или 53?

1 ответ1

0

Эти правила разрешат любой входящий пакет, если его исходный порт равен 53 (UDP), 80 (TCP) или 443 (TCP). Неважно, какой порт назначения. Таким образом, на вашей машине открыты все порты для этих пакетов. И ответ - да.

Обычная конфигурация iptables будет фильтровать на основе портов назначения:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

ОБНОВЛЕНИЕ: Как вы заметили, он использует конечный автомат. Без этого брандмауэр не может отслеживать уже установленные TCP-соединения. Порт назначения (например, 80) изменяется на что-то другое сервером после получения соединения от прослушивающего сокета.

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