iptables, átnéznétek?

Fórumok

Sziasztok!

Elkezdtem foglalkozni alapszintű iptables beállítássokkal.
Amit szeretnék elérni: először is mindent tiltani, majd a pár szolgáltatásomat engedni kifelé-befelé.
(web[80], ssh[22], openvpn[1194])

A scriptemet több létező scriptből ollóztam össze, szabilinux és társai, és bizonyára a hozzáértő szem elsőre kiszúrja, mi nem jó. Természetesen távolról elindítottam... ki is dobott azon nyomban az ssh-ról és a vpn-ről is :)

Tudnátok segíteni, hogy mit javítsak rajta, hogy jó legyen?
(Van benne egy pár sor, amivel alapszinten blokkolok pár próbálkozót. Legalábbis ezt is szeretném elérni a felsoroltak mellett.)

http://pastebin.com/6raeFMrP

Köszönöm!

Hozzászólások

Első ránézésre: DNS se ki, se be?

FORWARD-ba biztos nem kell semmi és minden átmehet?

szerk.: kifelé miért csak azt a néhány portot engeded?
Egy tipp: ha kézzel indítod a scriptet (nem boot-kor indul), akkor a tűzfal beállítása után várjon 10 másodpercet, ami alatt le tudod Ctrl-C-zni. Ha nem lövöd le, akkor állítson be egy olyan tűzfalat, ami csak az ssh-t engedi be, hogy ne tudd kizárni magad ;-) (és ha módosítod a script-et, akkor ehhez a végéhez ne nyúlj)

A célom, hogy egy nagyon alap szervervédelem fusson. A fent megjelölt szolgáltatásokat szeretném csak engedni / használni, és hogy felesleges támadási felületet ne adjak a szervernek. Pl vpn-en rendeznék mindent, amivel éppen bajlódom. A három számomra alapvető szolgáltatásnak mindig mennie kell (web, ssh, vpn). A többi meg had csússzon át VPN-en. Ha megtanulom, hogy hogyan kell kinyitni és elzárni a csapokat, akkor már a vpn-nel is el fogok boldogulni. A későbbiekben szeretnék magamnak egy multimédia szervert is csinálni, de azt is szigorúan vpn alatt. Tanítási célokat szolgál, s mindig jó, ha kéznél van.

Én valahogy így csinálnám:


iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

iptables -P INPUT DROP
iptables -P INPUT FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
# az összes többi bejövő csomag DROP-olva lesz, a -P INPU DROP miatt

Még nem teljesen világos, hogy a tun0-ról mit akarsz elérni és hogyan.

Ha akarsz NAT/PAT -ot, akkor

iptables -t nat -A POSTROUTING -o internet_fele_nezo_iface -j MASQUERADE
echo 1 > /proc/....../ip_forward

És ilyenkor az átmenő forgalmat is szabályoznod kell (a tun0-ról mondjuk az eth0-felé engedsz mindent de vissza nem):


iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT

Nem árt, ha a lo -ról engedsz:


iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Starting Nmap 5.00 ( http://nmap.org ) at 2012-02-23 23:35 CET
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 993 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
3306/tcp open mysql
5900/tcp open vnc

VNC-t is csak vpn-en keresztül használom, kézzel indítom, amikor szükséges, s rögtön le is állítom. Mondjuk, nem tudom, miért van akkor most nyitva. Vagy ha jól sejtem, ezek az alapjában ellenőrzött portok az nmap által?

1. Elején vannak szabályok, majd törlöd őket.
2. Először az adott portot ACCEPT aztán DROP
pl.:

# MYSQL
iptables -A INPUT -s localhost -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s xx.xx.xx.xx -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp --dport 3306 -j DROP

Akkor ezeket a sorokat betehetem az elejére?

echo "Leállítom a tűzfalat, kiürítek minden szabályt..."

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Így jó?

echo "Leállítom a tűzfalat, kiürítek minden szabályt..."

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

echo "Létre hozom a szabályokat..."
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# MYSQL
iptables -A INPUT -s localhost -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s xx.xx.xx.xx -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp --dport 3306 -j DROP

# SSH
iptables -A INPUT -s localhost -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s xx.xx.xx.xx -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp --dport 22 -j DROP

Szerintem rakj fel egy arno-iptables-firewall-t és egy fail2ban-t, azokkal kezdőként egyszerűbb boldogulni!

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds