Задать вопрос
ighost
@ighost

Настроил iptables, а трафик все равно проходит. Как быть?

Купил давным давно сервера, собрал модуль geoip, настроил iptables, политика INPUT - DROP, сброс всего чего не пропустили правила. Ошибок iptables не выдавал, ну думаю все работает. Пока я не поднял adguard и прочие ништяки в докере и выставив им доступ только из РФ, остальной трафик должен быть сбрасываться. Но недавно, про мой днс разнюхали и начали поступать много запросов из зарубежа, всякие scaleway, aws и прочих инстансов по 8М запросов в сутки. Машинка начала напрягаться, т.к ходит трафик по DoT, DoH от сервера и к клиентам. Тут то и выяснилось, что правила iptables не работают(я не проверял работу правил). Ниже будет спойлер с настройками, мб кто разберется, ибо тут мои полномочия все.

rules.v4

# Generated by iptables-save v1.8.7 on Fri Sep  9 11:16:43 2022
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "enable IN connections" -j ACCEPT

# SSH Rule
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED --dport 22 -m comment --comment "Allow SSH" -j ACCEPT
-A INPUT ! -i lo -p tcp --dport 22 -m geoip ! --src-cc RU -j DROP

# Open Ports
#-A INPUT -p tcp -m state --state NEW -m multiport --dports 5005 -j ACCEPT
#-A INPUT -p udp -m state --state NEW -m multiport --dports 5182 -j ACCEPT

# ICMP Accept
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# VPN security
-A INPUT -p udp -m multiport --dports 53,443,500,4500,5005,8443,19998 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 53,80,443,853,3000,8443,19999 -j ACCEPT
-A INPUT ! -i lo -p udp -m multiport --dports 53,443,500,4500,5005,8443,19998 -m geoip ! --source-country RU  -j DROP
-A INPUT ! -i lo -p tcp -m multiport --dports 53,80,443,853,3000,8443,19999 -m geoip ! --source-country RU  -j DROP
-A INPUT -s hidden_OVH_IP -p tcp -m multiport --dports 8080,5182,10443 -j ACCEPT
COMMIT
# Completed on Fri Sep  9 11:16:43 2022



Вот так выглядит INPUT.

All Rules

# Generated by iptables-save v1.8.7 on Tue Mar 14 16:42:40 2023
*filter
:INPUT DROP [2159162:178737767]
:FORWARD ACCEPT [1:611]
:OUTPUT ACCEPT [6601987:3251308901]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "enable IN connections" -j ACCEPT
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 22 -m comment --comment "Allow SSH" -j ACCEPT
-A INPUT ! -i lo -p tcp -m tcp --dport 22 -m geoip ! --source-country RU  -j DROP
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -s hidden_ovh_ip/32 -p tcp -m multiport --dports 8080,5182,10443 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443,853,3000,8443,19999 -m geoip ! --source-country RU  -j ACCEPT
-A INPUT -p udp -m multiport --dports 443,500,4500,5005,8443,19998 -m geoip ! --source-country RU  -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9000 -j ACCEPT
-A DOCKER -d 172.17.0.4/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 51821 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 3000 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p udp -m udp --dport 9000 -j ACCEPT
-A DOCKER -d 172.17.0.4/32 ! -i docker0 -o docker0 -p udp -m udp --dport 51820 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 853 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p udp -m udp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 53 -j ACCEPT
-A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p udp -m udp --dport 53 -j ACCEPT
-A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p udp -m udp --dport 4500 -j ACCEPT
-A DOCKER -d 172.17.0.3/32 ! -i docker0 -o docker0 -p udp -m udp --dport 500 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Tue Mar 14 16:42:40 2023
# Generated by iptables-save v1.8.7 on Tue Mar 14 16:42:40 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p tcp -m tcp --dport 9000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.4/32 -d 172.17.0.4/32 -p tcp -m tcp --dport 51821 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 3000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p udp -m udp --dport 9000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.4/32 -d 172.17.0.4/32 -p udp -m udp --dport 51820 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 853 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p udp -m udp --dport 443 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 80 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 53 -j MASQUERADE
-A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p udp -m udp --dport 53 -j MASQUERADE
-A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p udp -m udp --dport 4500 -j MASQUERADE
-A POSTROUTING -s 172.17.0.3/32 -d 172.17.0.3/32 -p udp -m udp --dport 500 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 8443 -j DNAT --to-destination 172.17.0.2:9000
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 5182 -j DNAT --to-destination 172.17.0.4:51821
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 3000 -j DNAT --to-destination 172.17.0.5:3000
-A DOCKER ! -i docker0 -p udp -m udp --dport 8443 -j DNAT --to-destination 172.17.0.2:9000
-A DOCKER ! -i docker0 -p udp -m udp --dport 5005 -j DNAT --to-destination 172.17.0.4:51820
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 853 -j DNAT --to-destination 172.17.0.5:853
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.17.0.5:443
-A DOCKER ! -i docker0 -p udp -m udp --dport 443 -j DNAT --to-destination 172.17.0.5:443
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.5:80
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 172.17.0.5:53
-A DOCKER ! -i docker0 -p udp -m udp --dport 53 -j DNAT --to-destination 172.17.0.5:53
-A DOCKER ! -i docker0 -p udp -m udp --dport 4500 -j DNAT --to-destination 172.17.0.3:4500
-A DOCKER ! -i docker0 -p udp -m udp --dport 500 -j DNAT --to-destination 172.17.0.3:500
COMMIT
# Completed on Tue Mar 14 16:42:40 2023



А вот так правила с ништяками в докере.

ipv6 отсутствует на сервере.

Особо не ругайте, linux это мое хобби, изучал поверхностно, но этого хватает что бы создавать необходимые сервисы для себя любимого.
  • Вопрос задан
  • 179 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
INPUT - для входящего трафика на саму машинку. Если у вас ДНС крутится в докере - то там уже отрабатывает цепочка FORWARD
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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