Sziasztok!
Szeretném egy Ubuntu szerveren megoldani, hogy a hozzá kapcsolódó kliens gépek kizárólag a szervert kérdezhessék DNS ügyben, tehát ne tudjanak névfeloldást csinálni pl a google szerverével.
Odáig meg van oldva a dolog, hogy a szerver ellátja a névfeloldást (a forwarders ebben az esetben az OpenDNS ingyenes 208.67.220.123-as szervere, ami a felnőtt tartalmakat szűri), de nem tudtam megoldani, hogy kikerülhetetlen legyen.
A tűzfal beállító script így néz ki:
#!/bin/sh
IPTABLES=/sbin/iptables
$IPTABLES --flush
$IPTABLES --delete-chain
$IPTABLES -t nat --delete-chain
$IPTABLES -t nat --delete-chain
$IPTABLES --policy INPUT DROP
$IPTABLES --policy FORWARD DROP
$IPTABLES --policy OUTPUT DROP
#localhost forgalom engedélyezése
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
#bejövő kérések szabályai
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -s 192.168.10.0/24 -p icmp -j DROP #ping tiltása külső hálóró
$IPTABLES -A INPUT -s 192.168.56.0/24 -p icmp -j ACCEPT #ping engedélyezése belső hálóról
$IPTABLES -A INPUT -p tcp -m multiport --ports 22 -j ACCEPT #ssh engedélyezése
$IPTABLES -A INPUT -p udp -m multiport --ports 53 -j ACCEPT #dns kérés engedélyezése
$IPTABLES -A INPUT -p udp -m multiport --ports 137,138,17500,67 -j DROP
#átmenő forgalom szabályai
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
#kimenő forgalom szabályai
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --ports 53 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport --ports 80,443 -j ACCEPT
#logolás beállítása
$IPTABLES -A INPUT -j LOG --log-prefix "bejovo tuzfal " --log-level 7
$IPTABLES -A FORWARD -j LOG --log-prefix "atmeno tuzfal " --log-level 7
$IPTABLES -A OUTPUT -j LOG --log-prefix "kimeno tuzfal " --log-level 7
###NAT
$IPTABLES -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 192.168.10.185
Ez eddig jól működik. De ha hozzáadom a következő sort:
$IPTABLES -A FORWARD -p udp -m multiport --ports 53 -j DROP #DNS kérés elutasítása
akkor nem tud a szerver sem feloldani.
Mit rontok el? Hogyan kellene csinálnom?
Gábor
- 1154 megtekintés
Hozzászólások
Ne minden IP-re engedd, csak amin figyel a DNS:
$IPTABLES -A OUTPUT -p udp -m multiport -d 192.168.1.1 --ports 53 -j ACCEPT
IP cím értelemszerűen a szervered címe.
- A hozzászóláshoz be kell jelentkezni
Nem segít, de az én értelmezésem szerint ez nem is jó. Az OUTPUT lánc az már a feldolgozás után van, nem? Ott meg már nem jó a destination.
Próbáltam ezt beállítani az INPUT láncon, de ez sem működött.
- A hozzászóláshoz be kell jelentkezni
A cím elolvasása megzavart, úgy értettem a klienseken akarod az iptables-t beállítani.
Ez esetben valami ilyesmivel probálkozál már?
-A PREROUTING -p udp --dport 53 -j DNAT --to-destination $DNSIPCIME:53
-A PREROUTING -p tcp --dport 53 -j DNAT --to-destination $DNSIPCIME:53
- A hozzászóláshoz be kell jelentkezni
Elnézést, javítanom kell a hozzászólásom.
Szóval az input láncra megadva ezt, úgy tűnik, működik
A jó beállítás:
#!/bin/sh
IPTABLES=/sbin/iptables
$IPTABLES --flush
$IPTABLES --delete-chain
$IPTABLES -t nat --delete-chain
$IPTABLES -t nat --delete-chain
$IPTABLES --policy INPUT DROP
$IPTABLES --policy FORWARD DROP
$IPTABLES --policy OUTPUT DROP
#localhost forgalom engedélyezése
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
#bejövő kérések szabályai
# udp 137,138:windows
# udp 17500: DropBox
# udp 67
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -s 192.168.10.0/24 -p icmp -j DROP #ping tiltása külső hálóró
$IPTABLES -A INPUT -s 192.168.56.0/24 -p icmp -j ACCEPT #ping engedélyezése belső hálóról
$IPTABLES -A INPUT -p tcp -m multiport --ports 22 -j ACCEPT #ssh engedélyezése
$IPTABLES -A INPUT -p udp -m multiport --ports 53 -d 192.168.56.185 -j ACCEPT #dns kérés engedélyezése kizárólag akkor, ha ez a szerver a cél
$IPTABLES -A INPUT -p udp -m multiport --ports 137,138,17500,67 -j DROP
#átmenő forgalom szabályai
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p udp -m multiport --ports 53 -j DROP #DNS kérés elutasítása
$IPTABLES -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
#kimenő forgalom szabályai
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p udp -m multiport --ports 53 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -m multiport --ports 80,443 -j ACCEPT
#logolás beállítása
$IPTABLES -A INPUT -j LOG --log-prefix "bejovo tuzfal " --log-level 7
$IPTABLES -A FORWARD -j LOG --log-prefix "atmeno tuzfal " --log-level 7
$IPTABLES -A OUTPUT -j LOG --log-prefix "kimeno tuzfal " --log-level 7
###NAT
$IPTABLES -t nat -A POSTROUTING -o enp0s3 -j SNAT --to-source 192.168.10.185
- A hozzászóláshoz be kell jelentkezni
Tök jó, két probléma sakkozik egymással, az egyiket időközben sikerült megoldanom.
Az előző megoldás tesztelésénél első körben azért kaptam hibás eredményt, mert a bind9 beállításai között (named.conf.options) a következő szerepelt:
forwarders {
208.67.222.123;
208.67.220.123;
};
Ez valami miatt nem működik így (egyébként ez az OpenDNS FamilyShield névszervere). Ha a google DNS-ét teszem be, akkor jó:
forwarders {
8.8.8.8;
};
Mi lehet a baj? Az OpenDNS beállítás esetén lokálisan fel tudja oldani a címet, a kliens viszont nem. A google DNS-ét használva mindkét helyről megy.
Gábor
- A hozzászóláshoz be kell jelentkezni
Ha az udp mellett a tcp 53-at engedélyezed a tűzfalon, akkor is?
szerk: a tcpdump szerintem sokat segítene.
- A hozzászóláshoz be kell jelentkezni
Nem segít.
Ha ez lenne a baj, akkor a google DNS szervere (8.8.8.8) se menne, de ha azt rakom be, működik.
- A hozzászóláshoz be kell jelentkezni
Nem egyertelmu, mit is csinalsz... Hogyan ellenorzod a nevfeloldast? Ha olyan eszkozzel, ami a libc resolver-jet hasznalja, akkor az /etc/resolv.conf is jatszik, plusz barmi mas, ami az nsswitch.conf-ban van. Az nslookup, dig ezzel szemben kizarolag DNS-t hasznal.
- A hozzászóláshoz be kell jelentkezni
Ellenőrzésre egy win7-et használok, ami a szerver belső lábán csücsül és ping-elek domain neveket.
- A hozzászóláshoz be kell jelentkezni
A lenti hozzászólásodban látom, hogy végülis a dnssec-validation kikapcsolása megoldotta. Ezért kérdeztem a TCP-t:
"From a network perspective, DNS and DNSSEC packets are very similar, DNSSEC packets are just bigger, which means DNS is more likely to use TCP. "
https://users.isc.org/~jreed/dnssec-guide/dnssec-guide.html
- A hozzászóláshoz be kell jelentkezni
Megvan a megoldás.
A named.conf.options állományban a dnssec-validation auto beállítása nem volt jó, áttettem no-ra, így most működik.
Gábor
- A hozzászóláshoz be kell jelentkezni