IPTables szabályok

Fórumok

IPTables szabályok

Hozzászólások

iptables -t filter -A INPUT -j LOG --log-prefix "IN:"
Ettől nem lesz kicsit sok a log? Én is először használtam ilyet, gondolván tudjak mindenről, aztán meggondoltammagam és csak azt loggolom ami fontos. Pl ssh próbálkozások.

Üdvözletem mindenkinek!

Átnéztem a topic -okat és nem találtam ilyet, de ha mégis van, akkor előre is elnézést kérek.
Linux alatt csak mostanában kezdtem netezni (kellett egy kis idő, amíg rájöttem, hogy
kell életre kelteni a D-Link DWL 520+ -os WLAN kártyámat) és a fent említett témában
szeretném azt megkérdezni, hogy milyen tűzfal szabályokat javasoltok egy olyan géphez, ami
igazából csak mint kliens lesz használva.
HTTP, FTP, SSH, e-mail; ezekre lesz csak szükségem. Minden mást tiltanék.
Megnéztem néhány könyvet, körülnéztem a neten is, de többnyire szerverek védelméről volt szó
mindenhol.

Az is elég lenne, ha tudnátok írni egy két linket, ahol utána tudok nézni, hogy hogy kell biztonságos klienst csinálni egy linuxos gépből (az sem baj, ha nem magyar).
A disztrib Debian alapú, amit 3 éve építgetek forrásból.
Kernel: 2.6.12.5
IPTable: 1.3.3

Előre is köszönöm a segítséget!
Minden jót!

[quote:afd8eba346="smica"]
A disztrib Debian alapú, amit 3 éve építgetek forrásból.

Van türelmed..:))
Privatban küldtem egy kis scriptet.. kiindulásnak talán jó.
Fri

Hát, én valami ilyesmiből indulnék ki:
[code:1:cfd6dc3081]
#!/bin/bash

##############################################################################
###### CLEAN AND INITIALISE 'INPUT'
iptables -t filter -P INPUT DROP
iptables -t filter -F INPUT

# sanity check
iptables -t filter -A INPUT -m state --state INVALID -j DROP
iptables -t filter -A INPUT -s 127.0.0.0/8 -i ! lo -j DROP

# local traffic ok
iptables -t filter -A INPUT -s 127.0.0.0/8 -j ACCEPT

# we need no bootp and suchlike
iptables -t filter -A INPUT -d 255.255.255.255 -j DROP
iptables -t filter -A INPUT -d 224.0.0.0/8 -j DROP

# sorry, no identd here
iptables -t filter -A INPUT -p tcp --dport 113 -j REJECT

# established and related conns are ok
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# new incoming conns to http,https,ftp,ssh,smtp and postgres
###iptables -t filter -A INPUT -m state --state NEW -p tcp -m multiport --dports 80,21,22,25,443,5432,15432 -j ACCEPT

# otherwise log and drop
iptables -t filter -A INPUT -j LOG --log-prefix "IN:"

##############################################################################
###### CLEAN AND INITIALISE 'OUTPUT'
iptables -t filter -P OUTPUT DROP
iptables -t filter -F OUTPUT

# sanity check
iptables -t filter -A OUTPUT -m state --state INVALID -j DROP
iptables -t filter -A OUTPUT -d 127.0.0.0/8 -o ! lo -j DROP

# don't use ident - it has no ways inwards
iptables -t filter -A OUTPUT -p tcp --dport 113 -j REJECT

# local traffic ok
iptables -t filter -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
# we provide no bootp
iptables -t filter -A OUTPUT -d 255.255.255.255 -j DROP

# established conns are ok
iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# we may ping out (icmp refusals are already enabled by RELATED above...)
iptables -t filter -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

# new outgoing conns to http(s), ssh, (s)smtp, (s)pop3, imap/ssl, ident and squid
iptables -t filter -A OUTPUT -m state --state NEW -p tcp -m multiport --dports 80,443,22,25,465,110,995,993,113,3128 -j ACCEPT

# new outgoing conns to dns
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT

# otherwise log and reject
iptables -t filter -A OUTPUT -j LOG --log-prefix "OUT:"
iptables -t filter -A OUTPUT -j REJECT

##############################################################################
###### CLEAN AND INITIALISE 'FORWARD'
iptables -t filter -A FORWARD -j LOG --log-prefix "FWD:"
iptables -t filter -A FORWARD -j REJECT
[/code:1:cfd6dc3081]

Én meg javasolom hogy használd a "lokkit" nevû szabály beállítót, ami egy egyszerû megoldást hoz létre a kliens gépen.

ELaci

Kiindulásnak, aztán ezt tudod tovább faragni :

#Mindent tiltunk
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#Lo interface mehet
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

#Bejöhetnek az uj kapcsolatok
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

#Ki mehet ami kell
iptables -A OUTPUT -p tcp --dport ftp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport ftp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport ftp-data -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport ftp-data -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport dns -m state --state NEW,RELATED -j ACCEPT #dns
iptables -A OUTPUT -p tcp --dport http -m state --state NEW,RELATED -j ACCEPT #http
iptables -A OUTPUT -p udp --dport http -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport smtp -m state --state NEW,RELATED -j ACCEPT #ntp
iptables -A OUTPUT -p tcp --dport smtp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport https -m state --state NEW,RELATED -j ACCEPT #https
iptables -A OUTPUT -p udp --dport https -m state --state NEW,RELATED -j ACCEPT

...
Egyáltalán nem teljes, de mire az lesz meg is érted/tanulod.

Linkek (de a wikin is biztos van még böven)
http://easyfwgen.morizot.net/gen/
http://www.iptables.org/documentation/index.html#documentation-howto
http://pcforum.hu/cikkek/?pg=1&aid=111

Üdv.MZ.

Nagyon szépen köszönöm mindenkinek!

Már csak egy (lamer)kérdésem van: Ezek a beállítások megmaradnak reboot után is, vagy
be kell állítani ezt script -ben valahol?

Előre is köszönöm!

[quote:cb447be339="morvaiz"]
#Ki mehet ami kell
iptables -A OUTPUT -p tcp --dport ftp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport ftp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport ftp-data -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport ftp-data -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport dns -m state --state NEW,RELATED -j ACCEPT #dns
iptables -A OUTPUT -p tcp --dport http -m state --state NEW,RELATED -j ACCEPT #http
iptables -A OUTPUT -p udp --dport http -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport smtp -m state --state NEW,RELATED -j ACCEPT #ntp
iptables -A OUTPUT -p tcp --dport smtp -m state --state NEW,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport https -m state --state NEW,RELATED -j ACCEPT #https
iptables -A OUTPUT -p udp --dport https -m state --state NEW,RELATED -j ACCEPT

Ez arra nagyonjó példa, amikor ész nélkül húzunk fel szabályokat, csak hogy bonyolultabbnak nézzen ki ;)
ftp, http, smtp, https portokon gyakran bonyolitasz UDP forgalmat? ;)

Hello smica!

Rebootnal elvesznek sajnos a tuzfal szabalyok, de ha csinalsz egy bash scriptet, ami elinditja a tuzfalat, akkor mar csak be kell raknod a rc.1-*-be
es onnan fog automatikusan indulni minden inditasnal.

Mindig net inditas utan rakd a scriptet, nehogy a tuzfal miatt ne induljon a ppp kapcsolat.

Sok sikert!

Bye dozen

[quote:2d097c99c7="dozen"]Mindig net inditas utan rakd a scriptet, nehogy a tuzfal miatt ne induljon a ppp kapcsolat.

hát ez jó nagy baromság....
először legyen tűzfal, utánna net.
ezen esetben (és nem csak elméleti síkon) nem fog bejönni senki abban az időrésben amikor a net már él, de a tűzfalszabályok még nincsenek bent...

[quote:c3b60f4403="dozen"].. de ha csinalsz egy bash scriptet, ami elinditja a tuzfalat, akkor mar csak be kell raknod a rc.1-*-be es onnan fog automatikusan indulni minden inditasnal.

A legjobban akkor jársz, ha csinálsz magadnak egy könyvtárat, abban
meg leképzed a root-ot.
*/etc
*/etc/init.d
*/etc/rc2.d
..
A szükséges helyre belerakod a fájlokat.
Utána megismerkedsz a stow parancsal.. ami nagyon egyszerű, de nagyon hasznos.
Kicsit persze bonyolultabb ez, mint ha belerakod ide-oda a fájlokat, de ha ujrahuzod
a géped, vagy több géped van.. vagy jobban át akarod látni mit tettél bele és hova
érdemes használnod.
Ha kell átküldöm egy email cimre a könyvtáram..
Fri

[quote:71317b3928="mrbond"][quote:71317b3928="dozen"]Mindig net inditas utan rakd a scriptet, nehogy a tuzfal miatt ne induljon a ppp kapcsolat.

hát ez jó nagy baromság....
először legyen tűzfal, utánna net.
ezen esetben (és nem csak elméleti síkon) nem fog bejönni senki abban az időrésben amikor a net már él, de a tűzfalszabályok még nincsenek bent...

Előbb legyen egy alap tűzfal, majd net, majd a kezdetben beállított szabályokat törölve induljon a rendes tűzfal. Ez jobban hangzik, mert akkor lehet már a ppp kapcsolat IP címe alapján is szűrni (pl érvénytelen ip cím jön onnan. Ez elvileg nem lehetséges, de az ördög nem alszik... (ha már max biztonság a cél :) )

Üdv!

Szerveren nem tudom beállítani az smtp elérést! Kifelé nem mennek a levelek, az nmap nem jelzi, hogy nyitva lenne a 25-ös port, pedig már engedélyeztem (szerintem). Exim4-et használok. Elvileg jól beállítva.

A script a következő:
#!/bin/bash

echo "Start firewall input and output filter..."

# szukseges modul betoltese
modprobe ip_conntrack_ftp

# lancok alaphelyzetbe allitasa
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -F
iptables -X
iptables -N in_attack
iptables -N drop_icmp

#---------------------------INPUT-------------------------------
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -i eth1 -p icmp -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j drop_icmp
iptables -A INPUT -p icmp --icmp-type echo-request -m state --state NEW -j drop_icmp

iptables -A INPUT -d 255.255.255.0 -j DROP
iptables -A INPUT -d 224.0.0.0/8 -j DROP

# samba engedese
iptables -A INPUT -i eth1 -p udp --sport 137 --dport 137 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --sport 138 --dport 138 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 139 -j ACCEPT

# LAN felol a 80-as port engedese
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT

# gyanus csomagok eldobasa
iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 172.16.0.0/16 -j in_attack
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j in_attack
iptables -A INPUT -i eth1 -s ! 192.168.0.0/24 -j in_attack

# ssh beengedese es loggolasa
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "ssh_befele: "
iptables -A INPUT -p tcp --dport 22 -m limit --limit 1/hour --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "3_sikertelen_probalkozas: "

# minden mas eldobasa elotte loggolasa
iptables -A INPUT -m limit --limit 3/min --limit-burst 1 -j LOG --log-prefix "tiltott_bejovo_kapcsolat: "
iptables -A INPUT -j DROP

#-------------------------OUTPUT--------------------------------
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A OUTPUT -d 255.255.255.0 -j DROP
iptables -A OUTPUT -d 224.0.0.0/8 -j DROP

iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# gaim(1863),novell-zen(2544),irc(6667)
iptables -A OUTPUT -m state --state NEW -p tcp -m multiport --dport 20,21,22,25,80,8080,110,443,1863,2544,6667 -j ACCEPT
iptables -A OUTPUT -m state --state NEW -p udp --dport 21 -j ACCEPT
# dns
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

# minden mas loggolva lesz
iptables -A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "DROP_OUT_PACK: "
iptables -A OUTPUT -j DROP

#--------------------in_attack-------------------------------

iptables -A in_attack -j LOG --log-prefix "in_attack: "
iptables -A in_attack -j DROP

#--------------------accept_icmp---------------------------------
iptables -A drop_icmp -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "kitiltott_ping: "
iptables -A drop_icmp -j DROP

#------------------------------------------------------------
#----ezek akkor lesznek érvényesek ha lesz belső hálózat-----
#------------------------------------------------------------
# NAT letrehozasa
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTRUOTING -o eth0 -j MASQUERADE

# Syn-flood vedelem:
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
# Alattomos portscan elleni vedelem:
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# A halál pingje elleni vedelem:
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# forgalom beállítása
iptables -A FORWARD -i eth1 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT

# minden mas loggolva lesz
iptables -A FORWARD -m limit --limit 3/min -j LOG --log-prefix "DROP_forward_PACK: "
iptables -A FORWARD -j DROP

Tehat ha a belso halorol akarsz kuldeni levelet akkor el kel erjed a szerver 25-os portjat, ami azt jelenti hogy neki (a szervernek) ez egy bejovo (INPUT) keres nem pedig o akar kimenni (OUTPUT). Ezert nem latja az nmap sem mert ha kivulrol akarod elerni a 25-os portot, az nincs megnyitva.

Igy hat kivulrol (a belso halodbol) csak akkor fogod latni a 25-os portot ha azt az INPUT lancban megnyitod.

Sziasztok,
Olvasgattam a topicot, de ezek szerint csak én vagyok láma :-)
Elég sok Linux-ot raktam fel az elmúlt 10 évben, de mostanában az iptables "divatbajöttétől" kezdve (ez nem is tegnap volt) nem boldogulok egy dologgal. (és mindig csak ez az egy fog ki rajtam)
Van egy debian tűzfal mögötte a LAN, előtte az internet.
DMZ-ben van egy két szokásos szerver (http, smtp..) a debianon PAT ezekre a gépekre.
A gondom, hogy bentről tudnak szépen net-ezni, kintről elérhetők ezek a DMZ-s gépek rendesen, DE ha LAN-ról vki a DMZ-s gépek profi címével keresi őket (pl. nem a 192.168.23.1, hanem www.jozsika.hu amit ugye a DNS felold 195.228.244.1-re mondjuk) akkor így nem érhető el.
Máshogy megfogalmazva: kimegy a LAN-os csomag lesz egy SNAT, és kint visszafordul, és jönne be mint PAT, és ez a hurok nem megy.
Mit hagyok ki a tűzfal szabályokból??
Előre is köszi a segítséget!

ps. a vicces, hogy van otthon egy Linux-os routerem is (Asus WL500g) gyári Linux-al megy ez a dolog, ha én rakok rá openwrt-t (másik Linux) akkor azzal már nem :-(

...most dobom el magam...
ha Linux-ból bngészek, LAN-ról, akkor megy a belső hálóról is jól.. ha winbigyóból csinálom ue-t akkor nem..
ezt eddig vmiért nem vettem észre.. bizonyára azért nem, mert mikor kísérleteztem vele, akkor épp winbigyóból nyomultam, és amint láttam, hogy nem megy minden a routeren, akkor FW downgrade lett (gyárira) és így nem tűnt fel.
Mit csinálhat másképp a Linux a winbigyóhoz képes?
Másképp küldi a tcp kérést? Ki lehet az RFC incompátibilis?

Sziasztok!

Bocsi, ha már volt.
A http://easyfwgen.morizot.net/gen/index.php oldalon generáltam az otthoni Debian szerveremre egy tűzfalscriptet.
Ezzel kapcsolatban lenne két kérdésem:
1. Sajnos nem tiltja a port scant a tűzfal. Mit és hova írjak, hogy tiltva legyen?
2. Szeretném szöveges fájlban tárolni a bannolt IPket, melyekről minden bejövő kapcsolat tiltott lenne. Ehhez mit/hova írjak a tűzfal scriptbe?
Nagyon kezdő vagyok az iptablesben, vagy még az se :)

Előre is köszönöm mindenkinek a segítséget!

'Everybody loves LEDs'

mármint melyik port scant?

Itt egy lista a szabályokra, hogy (az általam ismerteket) kivédje + logolja (eredeti):


#Portscan & PoD loggols
#echo 'pod & scan'
$IPT -A security -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix "FW: Xmas-tree scan (!!) "  --log-tcp-options --log-ip-options
$IPT -A security -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A security -p tcp --tcp-flags ALL NONE -j LOG --log-prefix "FW: Null scan (!!) "  --log-tcp-options --log-ip-options
$IPT -A security -p tcp --tcp-flags ALL NONE -j DROP
# tul sok hamis tallatot eredm)nyez, gyakoraltilag minden data packet illeszkedik
# VEGEN!!! KELL lennie
$IPT -A security -p icmp --icmp-type echo-request -m limit --limit 1/s -j RETURN
$IPT -A security -p icmp --icmp-type echo-request -m limit --limit $LOG_LIMIT -j LOG --log-prefix "FW: PingofDeath attack (?) "  --log-tcp-options --log-ip-options
$IPT -A security -p icmp --icmp-type echo-request -j DROP

valamint


$IPT -A INPUT -p tcp ! --syn -m state --state NEW -m limit --limit $LOG_LIMIT -j LOG --log-prefix 'FW-HIDDEN-SCAN? ' --log-tcp-options --log-ip-options
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

Doksi: http://iptables-tutorial.frozentux.net/

Hi all
nem akartam uj topikot nyitni ezert az egy kerdesert.
Az INPUT lancba mindenkepp kell ez a sor?
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

masik kerdes
az iptables hova logol?

Alapértelmezetten a syslogot használja. Ezt pl syslog-ng-vel nagyon jól lehet szűrni, hogy a tűzfal logok a megfelelő fájlba kerüljenek. De ott van még az ulogd is, ami ugyancsak ezt a célt szolgálja, csak ilyenkor fut egy extra daemonod is. Ekkor a -j LOG helyett a -j ULOG -ot kell használni.