Portál AbcLinuxu, 15. července 2025 15:49


Dotaz: ip6tables outgoing accept port 53 (dns)

22.3.2012 09:33 Smíšek
ip6tables outgoing accept port 53 (dns)
Přečteno: 412×
Odpovědět | Admin

Dobrý den,

snažím se na serveru s ip6tables v1.4.9 povolit odchozí dns port, tak abych se mohl připojit na veřejný dns server. Jde o funkčnost dig a bind pod ipv6. Nyní je v ip6tables povolená jen icmp.

Zkouším zadávat:

ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT

ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT

ale bez odezvy, otestoval jsem ip6tables -F && ip6tables -X ,tudíž bez pravidel vše funguje, jak to ale zařídit s pravidly? Musím uznat, že se v iptables moc nevyznám a neovládám jej, poradíte? :-)

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all      *      *       ::/0                 ::/0                rt type:0 
   11   880 ACCEPT     icmpv6    *      *       ::/0                 ::/0                ipv6-icmp !type 128 
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0                
   24  2010 ACCEPT     all      br0    *       ::/0                 ::/0                
    0     0 ACCEPT     all      *      *       fe80::/10            ::/0                
    0     0 ACCEPT     all      *      *       ff00::/8             ::/0                
    0     0 ACCEPT     icmpv6    *      *       ::/0                 ::/0                ipv6-icmp type 128 
    0     0 ACCEPT     udp      *      *       ::/0                 ::/0                udp dpts:33434:33534 
  194  103K DROP       all      *      *       ::/0                 ::/0                

Chain FORWARD (policy ACCEPT 3 packets, 196 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all      *      *       ::/0                 ::/0                rt type:0 
    0     0 ACCEPT     all      br0    br0     ::/0                 ::/0                
    0     0 ACCEPT     all      *      *       ff00::/8             ::/0                
   12   772 ACCEPT     icmpv6    *      *       ::/0                 ::/0                
    0     0 ACCEPT     all      *      *       fe80::/10            ::/0                
    0     0 DROP       all      !br0   six0    ::/0                 ::/0                
    0     0 DROP       all      !br0   ppp0    ::/0                 ::/0                
    0     0 DROP       all      !br0   vlan1   ::/0                 ::/0                

Chain OUTPUT (policy ACCEPT 222 packets, 24793 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all      *      *       ::/0                 ::/0                rt type:0 

Chain SECURITY (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     tcp      *      *       ::/0                 ::/0                tcp flags:0x16/0x02 limit: avg 1/sec burst 5 
    0     0 RETURN     tcp      *      *       ::/0                 ::/0                tcp flags:0x17/0x04 limit: avg 1/sec burst 5 
    0     0 RETURN     udp      *      *       ::/0                 ::/0                limit: avg 5/sec burst 5 
    0     0 RETURN     icmp     *      *       ::/0                 ::/0                limit: avg 5/sec burst 5 
    0     0 DROP       all      *      *       ::/0                 ::/0                

Chain logaccept (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all      *      *       ::/0                 ::/0                LOG flags 7 level 4 prefix `ACCEPT ' 
    0     0 ACCEPT     all      *      *       ::/0                 ::/0                

Chain logdrop (0 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        all      *      *       ::/0                 ::/0                LOG flags 7 level 4 prefix `DROP ' 
    0     0 DROP       all      *      *       ::/0                 ::/0         
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:SECURITY - [0:0]
:logaccept - [0:0]
:logdrop - [0:0]
-A SECURITY -p tcp --syn -m limit --limit 1/s -j RETURN
-A SECURITY -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
-A SECURITY -p udp -m limit --limit 5/s -j RETURN
-A SECURITY -p icmp -m limit --limit 5/s -j RETURN
-A SECURITY -j DROP
-A INPUT -m rt --rt-type 0 -j DROP
-A INPUT -p ipv6-icmp --icmpv6-type ! echo-request -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -s fe80::/10 -j ACCEPT
-A INPUT -s ff00::/8 -j ACCEPT
-A INPUT -p ipv6-icmp --icmpv6-type echo-request -j ACCEPT
-A INPUT -p udp -m udp --dport 33434:33534 -j ACCEPT
-A INPUT -j DROP
-A FORWARD -m rt --rt-type 0 -j DROP
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -s ff00::/8 -j ACCEPT
-A FORWARD -p ipv6-icmp -j ACCEPT
-A FORWARD -s fe80::/10 -j ACCEPT
-A FORWARD -o six0 ! -i br0 -j DROP
-A FORWARD -o ppp0 ! -i br0 -j DROP
-A FORWARD -o vlan1 ! -i br0 -j DROP
-A OUTPUT -m rt --rt-type 0 -j DROP
-A logaccept -j LOG --log-prefix "ACCEPT " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logaccept -j ACCEPT
-A logdrop -j LOG --log-prefix "DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logdrop -j DROP
COMMIT
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.3.2012 10:33 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
Odpovědět | | Sbalit | Link | Blokovat | Admin
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT
Tímhle povolíte dotaz, potřebujete povolit ještě odpověď – v řetězci INPUT také na cílový port 53. V řetězcích OUTPUT a INPUT řešíte jen komunikaci daného počítače, pokud byste to nastavoval na routeru a chtěl omezovat komunikaci ostatníhc počítačů, které přes router komunikují, musíte použít řetězec FORWARD.
22.3.2012 10:59 Smíšek
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
Díky za odpověď, vyzkoušel jsem, problém přetrvává, bojím se toho, že to bude chtít větší rozsah povolených portů. Ano jde mi o to zprovoznit to jen na jednom zařízení, není třeba FORWARD.
22.3.2012 11:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
Omlouvám se, zamotal jsem se v těch směrech. DNS odpověď má zdrojový port 53, cílový port je shodný s portem, ze kterého odešel dotaz. V pravidlech firewallu pro INPUT tedy musí být test jen na zdrojový port 53.
22.3.2012 11:42 Smíšek
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
No je potřeba zajistit příjem udp portu od 1024 do 65535. V ipv6 je to řešeno takto:
SERVER_IP="202.54.10.20"
DNS_SERVER="202.54.1.5 202.54.1.6"
for ip in $DNS_SERVER
do
iptables -A OUTPUT -p udp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT-p tcp -s $SERVER_IP --sport 1024:65535 -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s $ip --sport 53 -d $SERVER_IP --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
done
Ovšem problém bude s -m state ,jelikož není podporování mým ip6tables, nebo se používá trochu jinak.
22.3.2012 11:43 Smíšek
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
Překlep: V ipv4 je to řešeno takto:
22.3.2012 12:04 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
To -m state bych klidně vynechal, pokud přijde DNS odpověď na neexistující dotaz, jádro si s tím poradí a není potřeba ho před tím odstiňovat. Tu kontrolu na port 1024–65535 bych tam také nedával, podle mne nikde v DNS standardu není řečeno nic o zdrojovém portu dotazu, takže dotazy s odchozím portem menším než 1024 jsou přípustné.
22.3.2012 14:43 p.forty
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
pokud jste dodal pravidla:
ip6tables -A INPUT -p tcp --sport 53 -j ACCEPT
ip6tables -A INPUT -p udp --sport 53 -j ACCEPT
tak se pravděpodobně zařadila za DROP pravidlo. A tím pádem už nic nepovolí.

Na chainy SECURITY,logaccept,logdrop není odkazováno v žádném z hlavních chainů INPUT,OUTPUT,FORWARD takže tam jsou zbytečně.

Tip na ladění pokud není na serveru velký provoz:
# vynulování počítadel packetů
ip6tables -Z INPUT
ip6tables -Z OUTPUT
detailnější výpis pravidel, aby se dalo podívat, kde packet prošel
ip6tables -L -vn
pokud nemáte zapnutý stavový firewall tohle základní nastavení by mělo stačit
ip6tables -A INPUT -p tcp --sport 53 -j ACCEPT
ip6tables -A INPUT -p udp --sport 53 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT
ip6tables -A OUTPUT -p udp --dsport 53 -j ACCEPT
Pro inspiraci: http://www.cyberciti.biz/faq/ip6tables-ipv6-firewall-for-linux/ http://tldp.org/HOWTO/html_single/Linux+IPv6-HOWTO/#AEN2228 ~
22.3.2012 18:19 Smíšek
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)

Bezva, funguje to dobře, ostatní pravidla si ještě projdu :-) Všem tedy děkuju za rady, :-) holt musím se podívat iptables na zoubek a porozumět mu.

pavlix avatar 22.3.2012 22:44 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: ip6tables outgoing accept port 53 (dns)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Když vidím, jak někteří bojují s iptables, tak se docela těším, až se rozšíří firewalld. to je projekt který má IMO v takovémtom jednoduchém firewallování velkou budoucnost.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.