@buda01
Prihvatam potpuno tvoje mišljene.
GUI za zaštitni zid su samo šminka i unose ponekad greške, na primer:
Portovi su propušteni ali ne rade, mada u skripti postoje, provereno. Daju lažnu sigurnost da je sve moguće urađeno, a postoji toliko mnogo mogućnosti koje oni ne poznaju. Uključuju opcije koje se ne vide u GUI a uopšte ne trebaju.
Pogledao sam malo /usr/src kod mene i na drugoj strani i shvatio sam da je sve počelo od Kernel verzije 2.6.24.4.
Normanlo imam ja uvek nekoliko verzija Kernela pa i od 2.6.24.3. Alii tek sa verzijom 2.6.24.4 sam prešao potpuno na SATA i SCSI protokol i promenio /etc/fstab pa sad pravim novi Kernel.
Startao sam 2.6.24.3-5 kod mene i na drugoj strani i SSH veza ne radi opet.
Sad sam počeo da od nule pravim skriptu za iptables pravila (rc.firewall).
#/etc/rc.firewall
#!/bin/sh
# Varijable
IP_RANGE="192.168.1.1/24" # IP Opseg u mrezi
Tu su i varijable za portove, koji se mogu menjati, na primer
SSH_PORT="xxxx" # SSH xxxx TCP (originalno 22)
# Osnovna pravila
# Zabrana za sve, posle dodavati šta je stvarno potrebno, tako da su i nove nepoznate greške pokrivene!
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Ne brisati Kernel-ov sistemski firewall
iptables -F
# Brise table
# iptables -X
Milslim da će se ostali automatski podignuti. Treba li još koji?
# Podizanje modula
modprobe nf_conntrack
modprobe ip_conntrack_ftp
# Ova pravila odbacuju sve kao NEW prepoznate TCP pakete, koji ne pokusavaju da uspostave novu vezu.
# Bez tih pravila mora se kod TCP pri opciji
# -m state --state NEW uvek dodati i opcija --syn
# Novi paketi koji ne uspostavljaju vezu, logirati i odbaciti
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j LOG
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j LOG
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
# Lukavo je koristiti upotrebu jednog posebnog modula za nadzor stanja veze.
# Ako to uradimo Linux firewall pamti sve postojece veze. Cim naidje jedan paket, on proverava, da li pripada nekoj
# poznatoj vezi i propusta ga bez ikakvih daljih pitanja. ! --syn pravilo ne mozemo koristiti.
# Svi paketi se prihvataju, koji su ili deo jedne postojece veze ili se propoznaju kao "slicni" paketi.
# "Slicni" paketu su ICMP javljanja o greskama ili posebni kanali od FTP sesije.
# State module aktivirati za sve uspostavljene veze.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Lokalna mreza
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Sigurnost
iptables -N bad_packets
iptables -A bad_packets -p ALL -m state --state INVALID -j DROP # lose pakete baciti
iptables -A bad_packets -p tcp -s $IP_RANGE -j REJECT --reject-with tcp-reset # Antispoofing
iptables -A bad_packets -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Ping Of Death, odgovor samo jednom u sekundi (s
iptables -A bad_packets -p tcp --dport $SSH_PORT -m limit --limit 1/sec -m state --state NEW -j ACCEPT # Samo jedan pokusaj SSH veze u se
iptables -A bad_packets -p ALL -j RETURN # vraca kontrolu nazad
iptables -N service_sec
iptables -A service_sec -p tcp --syn -m limit --limit 1/s -j ACCEPT # SYN-Flood napadi
iptables -A service_sec -p tcp ! --syn -m state --state NEW -j DROP # TCP-SYN pakete bez statusa NEW baciti
iptables -A service_sec -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT # Portscaner iskljuciti
iptables -A service_sec -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT # Portscaner iskljiciti
iptables -A service_sec -p ALL -j RETURN # vraca kontrolu nazad
Koja od ovih pravila su bolja i sigurnija za otvaranje portova? Da li je ispravna sintaksa:
1. primer:
# Da se mogu slati TCP paketi Server-ima
iptables -A OUTPUT -p tcp --sport 1024: --dport 80 -j ACCEPT
# Da se primaju TCP paketi, ali da se ne mogu novi paketi uspostaviti, ako vec ne pripadaju nekoj postojecoj vezi.
# Znaci mi mozemo uspostaviti vezu a strani kompjuteri ne mogu.
iptables -A INPUT -p tcp --sport 80 --dport 1024: ! --syn -j ACCEPT
2. primer:
# Umesto dve komande moze samo jedna. Svi paketi spolja su dozvoljeni dok god ne zatraze novu vezu, bilo koji Port da su.
# Ali tako dolazi vise paketa nego sto nam treba.
iptables -A INPUT -p tcp --dport 1024: ! --syn -j ACCEPT
3. primer:
iptables -A OUTPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
4. primer:
Da li je svrsishodno navesti ovaj opseg? Mislim da to nije sigurrno.
iptables -A OUTPUT -p tcp --sport 1024:5999 --dport 80:80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:5999 --dport 80:80 -m state --state NEW -j ACCEPT
5. primer:
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Da li je ispravna sintaksa i najveća moguća sigurnost za 53 AUTH port?
# Jedini izuzetak su paketi za Auth port:
# Oni trebaju naprimer FTP, Mail serverima za legitimnu identifikaciju.
# To ne dozvoljavamo, ali necemo dugo da cekamo dok strani racunar ne odustane
#
http://serversupportforum.de/f...r4you-iptables-venet0-0-a.html
# Ako se FTP, Mail klijenti nalazi iza Router-a, bez logovanja
iptables -A INPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A OUTPUT -p tcp --dport auth -j REJECT --reject-with tcp-reset
iptables -A FORWARD -p tcp --dport auth -j REJECT --reject-with tcp-reset
# iptables -A INPUT -j DROP
#Sve ostalo se ne propusta
echo -e " - iskljuciti ostatak mreze"
# block out all other Internet access on $EXTIF
iptables -A INPUT -m state --state NEW,INVALID -j DROP
iptables -A OUTPUT -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -m state --state NEW,INVALID -j DROP
# Logovanje svega što nije dozvoljeno
iptables -A INPUT -j LOG
iptables -A OUTPUT -j LOG
iptables -A FORWARD -j LOG
# Podesavanje Kernel-a, nije normalno podesavanje Iptables, ali dobro pase ovde
# Ukljucuje Kernel-ovu IP zastitu, ne odgovarati na Broadcast Ping
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Otezava Syn napade, koji salju pogresne prijave
echo 1 >/proc/sys/net/ipv4/tcp_syncookies
# Da se spolja ne vidi koliko dugo vec Linux radi
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
Opseg može da se navede i u komandi, ovako je elegantnije.
# Koji su portovi dopusteni bez pravila
echo "1024 5999" > /proc/sys/net/ipv4/ip_local_port_range
#
http://www.ip-phone-forum.de/showthread.php?t=159575
echo 1 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_be_liberal
# Prekida lazne ICMP poruke
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Odbija ceo IP Spoofing shit
# (Ukljuciti proveru izvora (Source))
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# Odrediti standardnu TTL na 61 (Standardno je u Linux-u 64)
echo 61 > /proc/sys/net/ipv4/ip_default_ttl
# Posalji RST pakete kad je Buffer pun
echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
# Cekaj najvise 30 sekundi na FIN/ACK
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Prekini uspostavljanje veze posle 3 SYN paketa (Standardo je 6)
echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
# Prekini uspostavljanje veze posle 3 SYN/ACK paketa (Standardo je 6)
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
# Da se mogu slati paketi na druge racunare, mora biti zadnja komanda
echo 1 >/proc/sys/net/ipv4/ip_forward
Da li je sve ovo potrebno i svrsishodno? Treba li još nešto? Da li je dobra sintaksa i raspored komandi?
Ja želim što veću sigurnost, po mogućnosti maksimalnu , koju može jedan firewall da da, ali koja ne usporava osetno saobraćaj.
Da li je bolje ovo ili Arno's Projects (arno-iptables-firewall)?
Hvala na svakom komentaru.
Pozdrav nemysis
[Ovu poruku je menjao nemysis dana 19.04.2008. u 04:16 GMT+1]