Я пытаюсь понять, как работает iptables, но после многих часов чтения статей я застрял. То, что я хочу сделать, это политика DROP INPUT & FORWARD и открыть некоторые порты. В частности, я хотел бы открыть порты 80 и 443, чтобы иметь http и https соответственно. Также имейте в виду, что у меня есть Arch Linux OS, и я использую Wi-Fi.

Я установил следующие правила в iptables.rules.

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [972:60914]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --doprt 443 -j ACCEPT
COMMIT

Когда я устанавливаю вышеуказанные правила, у меня нет входящих запросов вообще!

Также я пробовал ниже, но не работал:

:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [972:60914]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --doprt 443 -j ACCEPT
-A INPUT -j DROP
COMMIT

Также я пробовал этот учебник https://wiki.archlinux.org/index.php/Iptables. Так что мои правила таковы:

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [972:60914]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A UDP -p udp -m udp --dport 53 -j ACCEPT
COMMIT

Приведенный выше пример работает, но я не уверен, работает ли он правильно и как он работает. Например, я продолжаю получать входящий запрос, если удаляю эти строки:

-A TCP -p tcp -m tcp --dport 80 -j ACCEPT
-A TCP -p tcp -m tcp --dport 443 -j ACCEPT
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
-A UDP -p udp -m udp --dport 53 -j ACCEPT

1 ответ1

1

Несколько вещей кажутся очевидными:

  • основное различие между грубыми примерами и рабочим состоит в том, что в state RELATED,ESTABLISHED part - это позволяет исходящим соединениям с вашей машины безопасно возвращаться, а не отбрасываться
  • Пропуск через что-либо из интерфейса loopback lo также помогает освободить журнал, потому что это помогает предотвратить случайную блокировку локальных соединений.
  • разрешение входящих ICMP типа 8 - эхо-пакеты позволяет пинговать вашу машину, что обычно полезно для отладки
  • пропускать произвольные новые SSH (22/tcp) и DNS (53/udp) - это не то, что вы сказали, что хотите - вам следует просмотреть эти строки

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