Блок iptables, но затем разрешить к тому же месту назначения

350
pastic

У меня есть RaspberryPi в моей локальной сети с политиками по умолчанию DENY для входа / выхода / вперед. Я хочу открыть исходящие по четырем IP-адресам и разрешить ответы возвращаться, но не принимать новые подключения извне.

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

[Sat Nov 24 15:37:56 2018] IPTABLES:DROP: IN= OUT=eth0 SRC=10.0.0.40 DST=104.24.15.89 LEN=176 TOS=0x00 PREC=0x00 TTL=64 ID=3938 DF PROTO=TCP SPT=36512 DPT=80 WINDOW=115 RES=0x00 ACK PSH FIN URGP=0  [Sat Nov 24 15:38:03 2018] IPTABLES:ACCEPT:IN= OUT=eth0 SRC=10.0.0.40 DST=104.24.15.89 LEN=48 TOS=0x00 PREC=0x00 TTL=64 ID=34819 DF PROTO=TCP SPT=36708 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0  [Sat Nov 24 15:38:03 2018] IPTABLES:ACCEPT:IN=eth0 OUT= MAC=b8:27:eb:c2:4a:fc:a4:2b:8c:96:76:e5:08:00:45:00:00:30:00:00:40:00:38:06:c1:2f SRC=104.24.15.89 DST=10.0.0.40 LEN=48 TOS=0x00 PREC=0x00 TTL=56 ID=0 DF PROTO=TCP SPT=80 DPT=36708 WINDOW=29200 RES=0x00 ACK SYN URGP=0  [Sat Nov 24 15:38:03 2018] IPTABLES:DROP: IN= OUT=eth0 SRC=10.0.0.40 DST=104.24.15.89 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=34820 DF PROTO=TCP SPT=36708 DPT=80 WINDOW=115 RES=0x00 ACK URGP=0  [Sat Nov 24 15:38:03 2018] IPTABLES:DROP: IN= OUT=eth0 SRC=10.0.0.40 DST=104.24.15.89 LEN=176 TOS=0x00 PREC=0x00 TTL=64 ID=34821 DF PROTO=TCP SPT=36708 DPT=80 WINDOW=115 RES=0x00 ACK PSH URGP=0  

Вот как я создал правила:

iptables -I OUTPUT 4 -d 104.24.14.89 -m conntrack --ctstate NEW -j LOG_ACCEPT iptables -I OUTPUT 5 -d 104.24.15.89 -m conntrack --ctstate NEW -j LOG_ACCEPT iptables -I OUTPUT 6 -d 107.170.105.41 -m conntrack --ctstate NEW -j LOG_ACCEPT iptables -I OUTPUT 7 -d 64.30.224.206 -m conntrack --ctstate NEW -j LOG_ACCEPT iptables -I INPUT 4 -s 104.24.14.89 -m conntrack --ctstate ESTABLISHED -j LOG_ACCEPT iptables -I INPUT 5 -s 104.24.15.89 -m conntrack --ctstate ESTABLISHED -j LOG_ACCEPT iptables -I INPUT 6 -s 107.170.105.41 -m conntrack --ctstate ESTABLISHED -j LOG_ACCEPT iptables -I INPUT 7 -s 64.30.224.206 -m conntrack --ctstate ESTABLISHED -j LOG_ACCEPT 

Это все правила:

root@notremusique(rw):~# iptables -L --line-numbers Chain INPUT (policy DROP) num target prot opt source destination  1 ACCEPT all -- 10.0.0.0/24 anywhere  2 ACCEPT all -- localhost anywhere  3 ACCEPT udp -- anywhere anywhere udp spt:ntp 4 LOG_ACCEPT all -- 104.24.14.89 anywhere ctstate ESTABLISHED 5 LOG_ACCEPT all -- 104.24.15.89 anywhere ctstate ESTABLISHED 6 LOG_ACCEPT all -- 107.170.105.41 anywhere ctstate ESTABLISHED 7 LOG_ACCEPT all -- lastfm-api-vip1.phx1.cbsig.net anywhere ctstate ESTABLISHED 8 LOG_DROP all -- anywhere anywhere   Chain FORWARD (policy DROP) num target prot opt source destination   Chain OUTPUT (policy DROP) num target prot opt source destination  1 ACCEPT all -- anywhere 10.0.0.0/24  2 ACCEPT all -- anywhere localhost  3 ACCEPT udp -- anywhere anywhere udp dpt:ntp 4 LOG_ACCEPT all -- anywhere 104.24.14.89 ctstate NEW 5 LOG_ACCEPT all -- anywhere 104.24.15.89 ctstate NEW 6 LOG_ACCEPT all -- anywhere 107.170.105.41 ctstate NEW 7 LOG_ACCEPT all -- anywhere lastfm-api-vip1.phx1.cbsig.net ctstate NEW 8 LOG_ACCEPT all -- anywhere 134.25.4.0/24  9 LOG_DROP all -- anywhere anywhere   Chain LOG_ACCEPT (9 references) num target prot opt source destination  1 LOG all -- anywhere anywhere LOG level info prefix "IPTABLES:ACCEPT:" 2 ACCEPT all -- anywhere anywhere   Chain LOG_DROP (2 references) num target prot opt source destination  1 LOG all -- anywhere anywhere LOG level info prefix "IPTABLES:DROP: " 2 DROP all -- anywhere anywhere  root@notremusique(rw):~#  
-1

1 ответ на вопрос

1
RalfFriedl

В OUTPUT, вы позволяете Cstate NEW, но не ESTABLISHED.

Как следствие, начальный пакет соединения пройдет, но все остальные пакеты будут отброшены.