Сценарий, разрешающий трафик на порты 53,22,443,80 и отбрасывающий другие, НО я не могу запустить apt-get update

Я пишу сценарий для отбрасывания всего входящего и выходного трафика, кроме трафика на этих портах (53,22,80,443), но я не могу apt-get update.

#!/bin/sh    
# Flushing all rules
iptables -F
iptables -X

# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Allow incoming SSH
iptables -A INPUT -i ens33 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# Allow outgoing SSH
iptables -A OUTPUT -o ens33 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# Allow incoming HTTP
iptables -A INPUT -i ens33 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

# Allow outgoing HTTP
iptables -A OUTPUT -o ens33 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --dport 80 -m state --state ESTABLISHED -j ACCEPT

# Allow incoming HTTPS
iptables -A INPUT -i ens33 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

# Allow outgoing HTTPS
iptables -A OUTPUT -o ens33 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i ens33 -p tcp --dport 443 -m state --state ESTABLISHED -j ACCEPT

# Allow incoming DNS
iptables -A INPUT -i ens33 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o ens33 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
0
задан 21 April 2019 в 15:31
1 ответ

Фильтрация выходных пакетов (исходящих локально) не является обычной практикой, лучше не делайте этого, если вы не уверены, что именно делаете.

Чтобы разрешить исходящие dns (требуется при разрешении dns), вы должны принимать пакеты с новым состоянием на порт 53 в цепочке OUTPUT.

iptables -A OUTPUT -p tcp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Также в вашем случае вам нужны некоторые другие правила (и соответствующие правила зеркалирования в цепочке OUTPUT):

  • Разрешить локальные соединения ( iptables -I INPUT -i lo -j ACCEPT )

  • Разрешить СВЯЗАННЫЕ соединения (добавить СВЯЗАННЫЕ в - состояние совпадений), это также разрешает ответ ICMP пакетов.

  • Разрешить ICMP.

Также проверьте набор правил ipv6 (используйте команду iptables6 ).

Связанный документ: руководство по iptables.

2
ответ дан 4 December 2019 в 13:20

Теги

Похожие вопросы