Почему после применения правил IPTABLES в Debian 10 всё блокируется?

Перепробовал множество правил и в итоге всё приводит к полной блокировке. Помогает только reboot, не один порт после применения правил не работает. Исходя из логики, всё как бы должно работать, как быть?

Пример цепочек:

#!/bin/bash

# Flush rules and delete custom chains
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Define chain to allow particular source addresses
iptables -N chain-incoming-ssh
# iptables -A chain-incoming-ssh -s 192.168.1.148 -j ACCEPT
# iptables -A chain-incoming-ssh -s 192.168.1.149 -j ACCEPT
iptables -A chain-incoming-ssh -j DROP

# Define chain to allow particular services
iptables -N chain-outgoing-services
iptables -A chain-outgoing-services -p tcp --dport 53  -j ACCEPT
iptables -A chain-outgoing-services -p udp --dport 53  -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 123 -j ACCEPT
iptables -A chain-outgoing-services -p udp --dport 123 -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 80  -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 443 -j ACCEPT
iptables -A chain-outgoing-services -p tcp --dport 22  -j ACCEPT
iptables -A chain-outgoing-services -p icmp            -j ACCEPT
iptables -A chain-outgoing-services -j DROP

# Define chain to allow established connections
iptables -N chain-states
iptables -A chain-states -p tcp  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -p udp  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -p icmp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A chain-states -j RETURN

# Drop invalid packets
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Accept everything on loopback
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Accept incoming/outgoing packets for established connections
iptables -A INPUT  -j chain-states
iptables -A OUTPUT -j chain-states

# Accept incoming ICMP
iptables -A INPUT -p icmp -j ACCEPT

# Accept incoming SSH
iptables -A INPUT -p tcp --dport 22 -j chain-incoming-ssh

# Accept outgoing 
iptables -A OUTPUT -j chain-outgoing-services

## Drop everything else
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  DROP
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Yumashka
Динозавр
Единственный порт, который вы пытаетесь открыть: 22/tcp
# Accept incoming SSH
iptables -A INPUT -p tcp --dport 22 -j chain-incoming-ssh

Но в цепочке chain-incoming-ssh нет ничего, что разрешало бы ssh, там сразу стоит заглушка DROP.
Вариант 1: сразу открыть и не строить сложных конструкций
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Вариант 2: в ветке chain-incoming-ssh
iptables -N chain-incoming-ssh
iptables -A chain-incoming-ssh -p tcp --dport 22 -j ACCEPT
iptables -A chain-incoming-ssh -j DROP
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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