13

Блокировать все порты (вход и выход) легко, но сложно со словом "кроме". Я не знаю никаких правил, которые удовлетворяют условию.

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

3 ответа3

23

Во первых то! это НЕ символ.

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

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

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

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
5
# 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

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

3

Вы можете установить действие по умолчанию для DROP, а затем создать правила исключений, чтобы разрешить 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 (в этом случае ПРИНЯТЬ). Если он не найдет совпадение, он вернется к политике по умолчанию и отбросит пакет.

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

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