Как заблокировать все порты, кроме 80,443 с iptables? [дубликат]

этот вопрос уже есть ответ здесь:

блокировка всех портов(in и out) легко, но это трудно со словом "кроме". Я не знаю никаких правил, удовлетворяющих условию.

PS: Я знаю, что этот вопрос не является чем-то новым. Но на самом деле, я не найти что-нибудь поможет. Итак, помогите мне пожалуйста!

19
задан user71169
05.12.2022 7:44 Количество просмотров материала 2752
Распечатать страницу

3 ответа

первый ! это не символ.

iptables -A INPUT -p tcp -m tcp -m multiport ! --dports 80,443 -j DROP

во-вторых, правила, которые вы написали, могут не иметь ожидаемых результатов. Вы отбрасываете все, включая ответ на соединение на порту 80. Таким образом, вы не сможете подключиться к нему говорит для целей веб-сервера.

эти правила позволяют связанные и установленные соединения, поэтому веб-сервер должен функционировать, если это на самом деле то, что вы пытаетесь сделать.

iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 -j ACCEPT
<insert further allowed list here>
iptables -A INPUT -m conntrack -j ACCEPT  --ctstate RELATED,ESTABLISHED
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP
22
отвечен cybernard 2022-12-06 15:32
# Set the default policy of the INPUT chain to DROP
iptables -P INPUT DROP

# Accept incomming TCP connections from eth0 on port 80 and 443
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Это должно дать вам то, что вам нужно

5
отвечен Fazer87 2022-12-06 17:49

вы можете установить действие по умолчанию для удаления, а затем создать правила исключений, чтобы разрешить 80 и 443, например:

# Setting default policies:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Exceptions to default policy
iptables -A INPUT -p tcp --dport 80 -j ACCEPT       # HTTP
iptables -A INPUT -p tcp --dport 443 -j ACCEPT      # HTTPS

iptables будет проходить через список "исключений", пока не найдет совпадение. Затем он выполнит действие, указанное в -j параметр (в данном случае ACCEPT). Если это не найдет соответствие, то это вернется к политике по умолчанию и отбросит пакет.

Примечание что с этим обходным путем любые поддомены будут заблокированы. Для пример с этим методом вы будете иметь его работать на www.mydomain.com хорошо, но ваш поддомен, скажем так www.sub.mydomain.com не будет открыт для ошибок DNS.

3
отвечен mtak 2022-12-06 20:06

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх