|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Finalmente ho finito: Axl's Firewall ScRiPt 2.0
Dopo mesi (non scherzo,sono partito da zero!) di continue modifiche ho finito il mio script iptables!!!!!
Esperti di linux datemi dei consigli se c'è qualcosa da correggere/migliorare o aggiungere....mi sto appassionando ai firewall e ne voglio uno davvero potente! Codice:
#Making variables IPTABLES="/usr/local/sbin/iptables" NETWORK_IP="192.168.0.0/24" ETH_LAN="eth1" ETH_NET="eth0" PPP="ppp0" DNS1="62.211.69.150" DNS2="212.48.4.15" DNS3="85.37.17.12" #Flushing all rules,chains,tables,policies. $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT #Reset the default policies in the nat table. $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT #Reset the default policies in the mangle table. $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT #Flush all the rules in the filter and nat tables. $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F #Erase all chains that's not default in filter and nat table. $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X #Erase all chains and the rules of all tables. for table in nat mangle filter do $IPTABLES -t $table -F $IPTABLES -t $table -X done #----------------------------------------------------------------------------- #Close all the traffic $IPTABLES -P INPUT DROP $IPTABLES -P OUTPUT DROP $IPTABLES -P FORWARD DROP #----------------------------------------------------------------------------- #filter bugous ips $IPTABLES -A INPUT -i $PPP -s 127.0.0.1 -j DROP $IPTABLES -A INPUT -i $PPP -s 192.168.0.0/16 -j DROP #------------------------------------------------------------------------------ #kernel's protections echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses for a in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $a done echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 0 > /proc/sys/net/ipv4/tcp_ecn #Fragmented packets management echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh echo 25 > /proc/sys/net/ipv4/ipfrag_time #Permit fpt active mode into clients modprobe ip_conntrack_ftp modprobe ip_nat_ftp #----------------------------------------------------------------------------- #MASQUERADE echo "1" > /proc/sys/net/ipv4/ip_forward modprobe ip_tables modprobe ip_conntrack modprobe iptable_nat modprobe ipt_MASQUERADE $IPTABLES -t nat -A POSTROUTING -s $NETWORK_IP -j MASQUERADE $IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #----------------------------------------------------------------------------- #Accept all lan traffic $IPTABLES -A INPUT -i $ETH_LAN -j ACCEPT $IPTABLES -A OUTPUT -o $ETH_LAN -j ACCEPT #----------------------------------------------------------------------------- #Permit loopback connections $IPTABLES -A INPUT -i lo -j ACCEPT $IPTABLES -A OUTPUT -d 127.0.0.1 -j ACCEPT #----------------------------------------------------------------------------- # Drop Invalid packets $IPTABLES -A INPUT -m state --state INVALID -j DROP $IPTABLES -A FORWARD -m state --state INVALID -j DROP #----------------------------------------------------------------------------- #Portscanners protections # Drop (NMAP) scan packets $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP $IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP # Drop packets with bad tcp flags $IPTABLES -A INPUT -p tcp --tcp-option 64 -j DROP $IPTABLES -A INPUT -p tcp --tcp-option 128 -j DROP $IPTABLES -A INPUT -p tcp --dport 0 -j DROP $IPTABLES -A INPUT -p udp --dport 0 -j DROP $IPTABLES -A INPUT -p tcp --sport 0 -j DROP $IPTABLES -A INPUT -p udp --sport 0 -j DROP #++++++++++++++++++++++++++++++ #Ports opening + #++++++++++++++++++++++++++++++ #++++++++ #FORWARD+ #++++++++ #----------------- #Entering packets- #----------------- $IPTABLES -N netlan #ppp0(internet) ------> ethX(lan) $IPTABLES -A FORWARD -i $PPP -o $ETH_LAN -j netlan #Dns $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS1 -j ACCEPT $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS2 -j ACCEPT $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS1 -j ACCEPT $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS2 -j ACCEPT $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS3 -j ACCEPT $IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS3 -j ACCEPT # Http,https,8080 $IPTABLES -A netlan -m tcp -p tcp -m multiport --sports 80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT # POP3 $IPTABLES -A netlan -m tcp -p tcp -m multiport --sports 110,995 -m state --state ESTABLISHED,RELATED -j ACCEPT # SMTP $IPTABLES -A netlan -m tcp -p tcp -m multiport --sports 25,587 -m state --state ESTABLISHED,RELATED -j ACCEPT # FTP $IPTABLES -A netlan -m tcp -p tcp --sport 20:21 -m state --state ESTABLISHED,RELATED -j ACCEPT # KAZAA $IPTABLES -A netlan -p tcp --sport 1214 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #Shareaza $IPTABLES -A netlan -p tcp --dport 6346 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p udp --dport 6346 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #Soulseek $IPTABLES -A netlan -p tcp --sport 2234:2240 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p tcp --sport 29093 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p tcp --dport 29093 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p tcp --dport 2234:2240 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p tcp --sport 5534 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A netlan -p tcp --dport 5534 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #IRC #$IPTABLES -A netlan -p tcp --sport 6667 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A netlan -p tcp --sport 113 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p udp --sport 53 -j ACCEPT #$IPTABLES -A netlan -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -j ACCEPT #----------------- #Outgoing packets- #----------------- $IPTABLES -N lannet #ethX(lan) ----> ppp0(internet) $IPTABLES -A FORWARD -i $ETH_LAN -o $PPP -j lannet #$IPTABLES -A lannet -j ACCEPT #Dns $IPTABLES -A lannet -p udp --dport 53 -d $DNS1 -j ACCEPT $IPTABLES -A lannet -p udp --dport 53 -d $DNS2 -j ACCEPT $IPTABLES -A lannet -p udp --dport 53 -d $DNS3 -j ACCEPT $IPTABLES -A lannet -p tcp --dport 53 -d $DNS1 -j ACCEPT $IPTABLES -A lannet -p tcp --dport 53 -d $DNS2 -j ACCEPT $IPTABLES -A lannet -p tcp --dport 53 -d $DNS3 -j ACCEPT #Http and https $IPTABLES -A lannet -p tcp -m multiport --dport 80,8080,443 -j ACCEPT #Pop3 $IPTABLES -A lannet -p tcp -m multiport --dport 110,995 -j ACCEPT #Smtp $IPTABLES -A lannet -p tcp -m multiport --dport 587,25 -j ACCEPT #Shareaza $IPTABLES -A lannet -p tcp --dport 6346 -j ACCEPT $IPTABLES -A lannet -p udp --dport 6346 -j ACCEPT #$IPTABLES -A lannet -p tcp --sport 6346 -j ACCEPT #$IPTABLES -A lannet -p udp --sport 6346 -j ACCEPT #Kazaa $IPTABLES -A lannet -p tcp --dport 1214 -j ACCEPT #Soulseek $IPTABLES -A lannet -p tcp --dport 2234:2240 -j ACCEPT $IPTABLES -A lannet -p tcp --dport 29093 -j ACCEPT $IPTABLES -A lannet -p tcp --sport 29093 -j ACCEPT $IPTABLES -A lannet -p tcp --sport 2234:2240 -j ACCEPT $IPTABLES -A lannet -p tcp --dport 5534 -j ACCEPT $IPTABLES -A lannet -p tcp --sport 5534 -j ACCEPT #IRC #$IPTABLES -A lannet -p tcp --dport 6667 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A lannet -p tcp --dport 113 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT #$IPTABLES -A lannet -p udp --dport 53 -j ACCEPT #$IPTABLES -A lannet -p tcp --dport 53 -j ACCEPT #++++++++ #INPUT + #++++++++ #Dns $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS1 -j ACCEPT $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS2 -j ACCEPT $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p udp --sport 53 -s $DNS3 -j ACCEPT $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS1 -j ACCEPT $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS2 -j ACCEPT $IPTABLES -A INPUT -i $PPP -m state --state ESTABLISHED,RELATED -p tcp --sport 53 -s $DNS3 -j ACCEPT #http e https $IPTABLES -A INPUT -i $PPP -p tcp -m multiport --sports 80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT #pop3 $IPTABLES -A INPUT -i $PPP -p tcp -m multiport --sports 110,995 -m state --state ESTABLISHED,RELATED -m limit --limit 60/min -j ACCEPT #smtp $IPTABLES -A INPUT -i $PPP -p tcp -m multiport --sport 25,587 -m state --state ESTABLISHED,RELATED -m limit --limit 50/min -j ACCEPT #aMule INPUT $IPTABLES -A INPUT -i $PPP -p tcp --dport 4662 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i $PPP -p udp --dport 4672 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -i $PPP -p udp --dport 4665 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A INPUT -m layer7 --l7proto edonkey -j ACCEPT #++++++++ #OUTPUT + #++++++++ #Dns $IPTABLES -A OUTPUT -p udp --dport 53 -d $DNS1 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 53 -d $DNS2 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 53 -d $DNS3 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 53 -d $DNS1 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 53 -d $DNS2 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 53 -d $DNS3 -j ACCEPT #Http and https $IPTABLES -A OUTPUT -p tcp -m multiport --dport 80,8080,443 -j ACCEPT #aMule OUTPUT $IPTABLES -A OUTPUT -p tcp --dport 4662 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 4672 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 4665 -j ACCEPT $IPTABLES -A OUTPUT -p tcp --dport 4661 -j ACCEPT $IPTABLES -A OUTPUT -m layer7 --l7proto edonkey -j ACCEPT #Pop3 $IPTABLES -A OUTPUT -p tcp -m multiport --dport 110,995 -j ACCEPT #Smtp $IPTABLES -A OUTPUT -p tcp -m multiport --dport 587,25 -j ACCEPT #Rsync (needed by urpmi) $IPTABLES -A OUTPUT -p tcp --dport 873 -j ACCEPT $IPTABLES -A OUTPUT -p udp --dport 873 -j ACCEPT #----------------------------------------------------------------------------- #Ftp management (Thanks to MonMotha) $IPTABLES -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $PPP -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT # The data connection in active mode $IPTABLES -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A OUTPUT -o $PPP -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT # The data connection in passive mode $IPTABLES -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A OUTPUT -o $PPP -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT # Ftp forward $IPTABLES -A netlan -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A lannet -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT # The data connection in active mode $IPTABLES -A netlan -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A lannet -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT # The data connection in passive mode $IPTABLES -A netlan -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED -j ACCEPT $IPTABLES -A lannet -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT #----------------------------------------------------------------------------- #Icmp management #Accet 3 incoming and outcoming icmp packets/min,drop the others (all the ping are blocked at script's begin) $IPTABLES -A OUTPUT -p icmp -m limit --limit 3/min -j ACCEPT $IPTABLES -A OUTPUT -p icmp -j DROP $IPTABLES -A INPUT -p icmp -m limit --limit 3/min -j ACCEPT $IPTABLES -A INPUT -p icmp -j DROP #Da http://gentoo-wiki.com/HOWTO_Packet_Shaping #adattato per regole firewall # Constants LOCALNET="192.168.0.0/255.255.255.0" MARKPRIO1="1" MARKPRIO2="2" MARKPRIO3="3" MARKPRIO4="4" MARKPRIO5="5" MARKPRIO6="6" MARKPRIO7="7" MARKPRIO8="8" MARKPRIO9="9" #Flushing mangle tables $IPTABLES -t mangle -F OUTPUT $IPTABLES -t mangle -F FORWARD # Setting priority marks # Prio 1 #dns $IPTABLES -t mangle -A OUTPUT -p tcp --dport 53 -j MARK --set-mark $MARKPRIO1 $IPTABLES -t mangle -A OUTPUT -p udp --dport 53 -j MARK --set-mark $MARKPRIO1 # icmp $IPTABLES -t mangle -A FORWARD -p icmp -j MARK --set-mark $MARKPRIO1 $IPTABLES -t mangle -A OUTPUT -p icmp -j MARK --set-mark $MARKPRIO1 #skype $IPTABLES -t mangle -A FORWARD -m layer7 --l7proto skypeout -j MARK --set-mark $MARKPRIO1 $IPTABLES -t mangle -A FORWARD -m layer7 --l7proto skypetoskype -j MARK --set-mark $MARKPRIO1 # http $IPTABLES -t mangle -A FORWARD -p tcp --dport 80 -j MARK --set-mark $MARKPRIO1 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark $MARKPRIO1 # https $IPTABLES -t mangle -A FORWARD -p tcp --dport 443 -j MARK --set-mark $MARKPRIO1 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark $MARKPRIO1 # Prio 2 # non tcp $IPTABLES -t mangle -A FORWARD -p ! tcp -j MARK --set-mark $MARKPRIO2 $IPTABLES -t mangle -A OUTPUT -p ! tcp -j MARK --set-mark $MARKPRIO2 #Prio 3 # ssh $IPTABLES -t mangle -A FORWARD -p tcp --dport 22 -j MARK --set-mark $MARKPRIO3 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark $MARKPRIO3 # ftp (control) $IPTABLES -t mangle -A FORWARD -p tcp --dport 21 -j MARK --set-mark $MARKPRIO3 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark $MARKPRIO3 # smtp $IPTABLES -t mangle -A FORWARD -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3 $IPTABLES -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3 # Prio 4 # packets > 1024 bytes $IPTABLES -t mangle -A FORWARD -p tcp -m length --length 1024: -j MARK --set-mark $MARKPRIO4 $IPTABLES -t mangle -A OUTPUT -p tcp -m length --length 1024: -j MARK --set-mark $MARKPRIO4 # Prio 9 #emule $IPTABLES -t mangle -A OUTPUT -m layer7 --l7proto edonkey -j MARK --set-mark $MARKPRIO9 #----------------------------------------------------------- #Constants # Interface you want to do shaping on # eth2, eth1 for direct connection; ppp0 or so for dsl # and other dialup connections (check ifconfig) IFACE=ppp0 # Priority marks MARKPRIO1="1" MARKPRIO2="2" MARKPRIO3="3" MARKPRIO4="4" MARKPRIO5="5" MARKPRIO6="6" MARKPRIO7="7" MARKPRIO8="8" MARKPRIO9="9" # Rates UPRATE="240kbit" #P2PRATE=$UPRATE #P2PRATE="128kbit" PRIORATE1="240kbit" PRIORATE2="80kbit" PRIORATE3="40kbit" PRIORATE4="20kbit" PRIORATE5="10kbit" PRIORATE6="1kbit" PRIORATE7="5kbit" PRIORATE8="5kbit" PRIORATE9="5kbit" # Quantum QUANTUM1="12187" QUANTUM2="8625" QUANTUM3="5062" QUANTUM4="1500" QUANTUM5="1000" QUANTUM6="800" QUANTUM7="500" QUANTUM8="300" QUANTUM9="100" # Burst BURST1="6k" BURST2="4k" BURST3="2k" BURST4="2k" BURST5="2k" BURST6="2k" BURST7="1k" BURST8="1k" BURST9="1k" CBURST1="3k" CBURST2="2k" CBURST3="1k" CBURST4="128" CBURST5="128" CBURST6="128" CBURST7="64" CBURST8="64" CBURST9="64" #reset queues tc qdisc del dev ppp0 root # Set queue length for IFACE ifconfig $IFACE txqueuelen 16 # Specify queue discipline tc qdisc add dev $IFACE root handle 1:0 htb default 103 r2q 1 # Set root class tc class add dev $IFACE parent 1:0 classid 1:1 htb rate $UPRATE burst $BURST1 cburst $CBURST1 # Specify sub classes tc class add dev $IFACE parent 1:1 classid 1:101 htb rate $PRIORATE1 ceil $UPRATE quantum $QUANTUM1 burst $BURST1 cburst $CBURST1 prio 0 tc class add dev $IFACE parent 1:1 classid 1:102 htb rate $PRIORATE2 ceil $UPRATE quantum $QUANTUM2 burst $BURST2 cburst $CBURST2 prio 1 tc class add dev $IFACE parent 1:1 classid 1:103 htb rate $PRIORATE3 ceil $UPRATE quantum $QUANTUM3 burst $BURST3 cburst $CBURST3 prio 2 tc class add dev $IFACE parent 1:1 classid 1:104 htb rate $PRIORATE4 ceil $UPRATE quantum $QUANTUM4 burst $BURST4 cburst $CBURST4 prio 3 tc class add dev $IFACE parent 1:1 classid 1:105 htb rate $PRIORATE5 ceil $UPRATE quantum $QUANTUM5 burst $BURST5 cburst $CBURST5 prio 4 tc class add dev $IFACE parent 1:1 classid 1:106 htb rate $PRIORATE6 ceil $UPRATE quantum $QUANTUM6 burst $BURST6 cburst $CBURST6 prio 5 tc class add dev $IFACE parent 1:1 classid 1:107 htb rate $PRIORATE7 ceil $UPRATE quantum $QUANTUM7 burst $BURST7 cburst $CBURST7 prio 6 tc class add dev $IFACE parent 1:1 classid 1:108 htb rate $PRIORATE8 ceil $UPRATE quantum $QUANTUM8 burst $BURST8 cburst $CBURST8 prio 7 tc class add dev $IFACE parent 1:1 classid 1:109 htb rate $PRIORATE9 ceil $UPRATE quantum $QUANTUM9 burst $BURST9 cburst $CBURST9 prio 8 # Filter packets tc filter add dev $IFACE parent 1:0 protocol ip prio 0 handle $MARKPRIO1 fw classid 1:101 tc filter add dev $IFACE parent 1:0 protocol ip prio 1 handle $MARKPRIO2 fw classid 1:102 tc filter add dev $IFACE parent 1:0 protocol ip prio 2 handle $MARKPRIO3 fw classid 1:103 tc filter add dev $IFACE parent 1:0 protocol ip prio 3 handle $MARKPRIO4 fw classid 1:104 tc filter add dev $IFACE parent 1:0 protocol ip prio 4 handle $MARKPRIO5 fw classid 1:105 tc filter add dev $IFACE parent 1:0 protocol ip prio 5 handle $MARKPRIO6 fw classid 1:106 tc filter add dev $IFACE parent 1:0 protocol ip prio 6 handle $MARKPRIO7 fw classid 1:107 tc filter add dev $IFACE parent 1:0 protocol ip prio 7 handle $MARKPRIO8 fw classid 1:108 tc filter add dev $IFACE parent 1:0 protocol ip prio 8 handle $MARKPRIO9 fw classid 1:109 # Add queuing disciplines tc qdisc add dev $IFACE parent 1:101 sfq perturb 16 quantum $QUANTUM1 tc qdisc add dev $IFACE parent 1:102 sfq perturb 16 quantum $QUANTUM2 tc qdisc add dev $IFACE parent 1:103 sfq perturb 16 quantum $QUANTUM3 tc qdisc add dev $IFACE parent 1:104 sfq perturb 16 quantum $QUANTUM4 tc qdisc add dev $IFACE parent 1:105 sfq perturb 16 quantum $QUANTUM5 tc qdisc add dev $IFACE parent 1:106 sfq perturb 16 quantum $QUANTUM6 tc qdisc add dev $IFACE parent 1:107 sfq perturb 16 quantum $QUANTUM7 tc qdisc add dev $IFACE parent 1:108 sfq perturb 16 quantum $QUANTUM8 tc qdisc add dev $IFACE parent 1:109 sfq perturb 16 quantum $QUANTUM9 #------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------ #Final REJECT rules for non specificated outgoing packets $IPTABLES -A lannet -j REJECT $IPTABLES -A OUTPUT -j REJECT Il prossimo passo sarà quello di aprire una alla volta le porte che mi servono in FORWARD! Attendo commentii!!! EDIT: Script aggiornato con le modiche suggerite dagli utenti intervenuti in questo post! Aggiornato al 25/12/05 aggiunto il traffic shaping!!!!
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 Ultima modifica di Axl_Mas : 01-01-2006 alle 17:51. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2003
Città: La Spezia
Messaggi: 962
|
bel lavoro!!!
appena posso ti d ho un paio di consigli ciao
__________________
Gigabyte ga-p55-ud6 | Intel i7 860 | 2x2gb Corsair xms3 | Adaptec 2410sa | raid1 barracuda 500gb 7200.12 | Intel x25-m 80gb G2 | ATI radeon 4890 | tutto in downclock (non ho parenti all'enel) |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Quote:
Lo sai che ci tengo ai tuoi consigli.... _YTS_ mi ha aiutato parecchio per la realizzazione di questo script!
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2003
Messaggi: 207
|
Era da tanto che cercavo un thread cosi'.
Secondo la maggior parte di chi usa linuc nemmeno sa che può aver un firewall meglio del Norton Comunque se posso farti un appunto stilisticoSarebbe meglio che le interfaccie e i dns fossero $WAN, $LAN $DNS1 e$DNS2, e non "hardcoded" (magari c'è un modo per prendere i dns da /etc/resolv.conf) Poi non capisco se quelle regole proteggono o no la rete interna, sembra che lasci passare tutto (ma forse mi sbaglio). Io per vedere certi siti ho dovuto aggiungere: Codice:
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu Io sono riuscito a fare anche traffic shaping e sembra funzionare bene (con p2p a manetta ping google è passato da due secondi a 150ms, considerando che a vuoto è circa 100ms)
__________________
------------------------------------- Fletto i muscoli e sono nel vuoto ------------------------------------ |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Quote:
La rete interna ancora non è protetta....sarà il prossimo passo del mio firewall! Ho letto l'articolo,francamente non ho avuto problemi con nessun sito ma se dovessero capitarmi saprò come risolvere, grazie!! Questo traffic shaping cosa è???? Sono interessantissimo, odio dover abbassare l'upload di amule ogni volta che devo fare una chiamata su skype (se non abbasso l'upload ho un ritardo mostruoso!!!)
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Quote:
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Ho fatto qualche modifica (commentata nello script ad inizio pagina con #***)!
Intanto ho ristretto la subnetmask della mia rete interna a 192.168.0.0/24 (ho solo ip 192.168.0.x) Poi ho iniziato a proteggere la rete interna permettendo tutte le connessioni in uscita limitando però le connessioni in entrata a quelle gia stabilite o collegate (tramite -m state --state ESTABLISHED,RELATED). Dai raga construiamo insieme un firewall con i controcaxxi che serva come base per tutti gli appassionati linux di questo forum!!!! Aspetto consigli!!!
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE #***PRIMA AVEVO "-d !"AL POSTO DI "-s" E NON CAPENDO IL SIGNIFICATO HO MODIFICATO COSI CHE MI SEMBRA MOLTO PIù CORRETTO
Ho modificato un altro comando! Prima sul masquerande avevo: iptables -t nat -A POSTROUTING -d ! 192.168.0.0/24 -j MASQUERADE ma non capendo il significato di questa regola nagativa l'ho sostituita con iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE che mi sembra molto più corretta!
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
#9 | |
|
Member
Iscritto dal: Jul 2003
Messaggi: 207
|
Quote:
Il problema dipende anche dal tipo di connessione che uno ha. (il link mi sembra lo spieghi bene). Per quanto riguarda il traffic shaping ho usato la guide del wiki gentoo (ma credo vada bene per tutte le distro). Stasera posto i miei script, anche se probabilmente sono da correggere.
__________________
------------------------------------- Fletto i muscoli e sono nel vuoto ------------------------------------ |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Perugia
Messaggi: 1988
|
Quote:
Cmq sono ansioso di vedere i tuoi script,altro che misero firewall qui stiamo scrivendo uno script di gestione di un megaserver!!! Ho aggiornato lo script in prima pagina con le ultime modifiche che ho apportato!!Ho stabilito l'uso di variabili e la funzione di logging penso di inserirla per domani! (prima voglio essere sicuro che funzioni!)
__________________
Ho concluso affari con: schumyFast,marcuspe@,MENTIRA,melu,Markap,One1ros,bottoni, Entropi@,DARIO-GT,unavocelontana ,tigre652,prodigy,V4n{}u|sH,blackmagic61,DDA,giugeo, sancelli,Franx1508,stemanca,agostino333, ReiserDarkside,hornet75,ibanez,K4d4sh,wolf3,pctillo,Zontar, aristippo,assembly,jeki75,]Rik`[,Caballus,Elfebo1,Haraiki, TexV,unlocked,No Mercy,antoniousa11 |
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jul 2003
Messaggi: 207
|
Questo marca i pacchetti con iptables:
Codice:
#Da http://gentoo-wiki.com/HOWTO_Packet_Shaping #adattato per regole firewall # Constants LOCALNET="192.168.0.0/255.255.255.0" MARKPRIO1="1" MARKPRIO2="2" MARKPRIO3="3" MARKPRIO4="4" MARKPRIO5="5" MARKPRIO6="6" MARKPRIO7="7" MARKPRIO8="8" MARKPRIO9="9" #Flushing tables iptables -t mangle -F OUTPUT iptables -t mangle -F FORWARD # Setting priority marks # Prio 1 # icmp iptables -t mangle -A FORWARD -p icmp -j MARK --set-mark $MARKPRIO1 iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark $MARKPRIO1 # ssh iptables -t mangle -A FORWARD -p tcp --dport 22 -j MARK --set-mark $MARKPRIO1 iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark $MARKPRIO1 # ftp (control) iptables -t mangle -A FORWARD -p tcp --dport 21 -j MARK --set-mark $MARKPRIO1 iptables -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark $MARKPRIO1 # non tcp iptables -t mangle -A FORWARD -p ! tcp -j MARK --set-mark $MARKPRIO1 iptables -t mangle -A OUTPUT -p ! tcp -j MARK --set-mark $MARKPRIO1 # Prio 2 #Libero #Prio 3 # http iptables -t mangle -A FORWARD -p tcp --dport 80 -j MARK --set-mark $MARKPRIO3 iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark $MARKPRIO3 # https iptables -t mangle -A FORWARD -p tcp --dport 443 -j MARK --set-mark $MARKPRIO3 iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark $MARKPRIO3 # smtp iptables -t mangle -A FORWARD -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3 iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3 # Prio 4 # packets > 1024 bytes iptables -t mangle -A FORWARD -p tcp -m length --length 1024: -j MARK --set-mark $MARKPRIO4 # bittorrent (port number) #iptables -t mangle -A FORWARD -i eth0 -p tcp --sport 6881:6889 -j MARK --set-mark $MARKPRIO3 #iptables -t mangle -A FORWARD -i eth0 -p tcp --dport 6881:6889 -j MARK --set-mark $MARKPRIO3 # bittorrent (layer 7) iptables -t mangle -A FORWARD -m layer7 --l7proto bittorrent -j MARK --set-mark $MARKPRIO4 # Prio 5 #emule iptables -t mangle -A FORWARD -m layer7 --l7proto edonkey -j MARK --set-mark $MARKPRIO5 # Prio 6 # Remaining packets are marked according to TOS iptables -t mangle -A FORWARD -p tcp -m tos --tos Minimize-Delay -m mark --mark 0 -j MARK --set-mark $MARKPRIO1 iptables -t mangle -A FORWARD -p tcp -m tos --tos Maximize-Throughput -m mark --mark 0 -j MARK --set-mark $MARKPRIO3 iptables -t mangle -A FORWARD -p tcp -m tos --tos Minimize-Cost -m mark --mark 0 -j MARK --set-mark $MARKPRIO5 Codice:
Constants # Interface you want to do shaping on # eth2, eth1 for direct connection; ppp0 or so for dsl # and other dialup connections (check ifconfig) IFACE=ppp0 # Priority marks MARKPRIO1="1" MARKPRIO2="2" MARKPRIO3="3" MARKPRIO4="4" MARKPRIO5="5" MARKPRIO6="6" MARKPRIO7="7" MARKPRIO8="8" MARKPRIO9="9" # Rates UPRATE="240kbit" #P2PRATE=$UPRATE #P2PRATE="128kbit" PRIORATE1="120kbit" PRIORATE2="80kbit" PRIORATE3="40kbit" PRIORATE4="20kbit" PRIORATE5="10kbit" PRIORATE6="5kbit" PRIORATE7="5kbit" PRIORATE8="5kbit" PRIORATE9="5kbit" # Quantum QUANTUM1="12187" QUANTUM2="8625" QUANTUM3="5062" QUANTUM4="1500" QUANTUM5="1000" QUANTUM6="800" QUANTUM7="500" QUANTUM8="300" QUANTUM9="100" # Burst BURST1="6k" BURST2="4k" BURST3="2k" BURST4="2k" BURST5="2k" BURST6="2k" BURST7="1k" BURST8="1k" BURST9="1k" CBURST1="3k" CBURST2="2k" CBURST3="1k" CBURST4="128" CBURST5="128" CBURST6="128" CBURST7="64" CBURST8="64" CBURST9="64" #reset queues tc qdisc del dev ppp0 root # Set queue length for IFACE ifconfig $IFACE txqueuelen 16 # Specify queue discipline tc qdisc add dev $IFACE root handle 1:0 htb default 103 r2q 1 # Set root class tc class add dev $IFACE parent 1:0 classid 1:1 htb rate $UPRATE burst $BURST1 cburst $CBURST1 # Specify sub classes tc class add dev $IFACE parent 1:1 classid 1:101 htb rate $PRIORATE1 ceil $UPRATE quantum $QUANTUM1 burst $BURST1 cburst $CBURST1 prio 0 tc class add dev $IFACE parent 1:1 classid 1:102 htb rate $PRIORATE2 ceil $UPRATE quantum $QUANTUM2 burst $BURST2 cburst $CBURST2 prio 1 tc class add dev $IFACE parent 1:1 classid 1:103 htb rate $PRIORATE3 ceil $UPRATE quantum $QUANTUM3 burst $BURST3 cburst $CBURST3 prio 2 tc class add dev $IFACE parent 1:1 classid 1:104 htb rate $PRIORATE4 ceil $UPRATE quantum $QUANTUM4 burst $BURST4 cburst $CBURST4 prio 3 tc class add dev $IFACE parent 1:1 classid 1:105 htb rate $PRIORATE5 ceil $UPRATE quantum $QUANTUM5 burst $BURST5 cburst $CBURST5 prio 4 tc class add dev $IFACE parent 1:1 classid 1:106 htb rate $PRIORATE6 ceil $UPRATE quantum $QUANTUM6 burst $BURST6 cburst $CBURST6 prio 5 tc class add dev $IFACE parent 1:1 classid 1:107 htb rate $PRIORATE7 ceil $UPRATE quantum $QUANTUM7 burst $BURST7 cburst $CBURST7 prio 6 tc class add dev $IFACE parent 1:1 classid 1:108 htb rate $PRIORATE8 ceil $UPRATE quantum $QUANTUM8 burst $BURST8 cburst $CBURST8 prio 7 tc class add dev $IFACE parent 1:1 classid 1:109 htb rate $PRIORATE9 ceil $UPRATE quantum $QUANTUM9 burst $BURST9 cburst $CBURST9 prio 8 # Filter packets tc filter add dev $IFACE parent 1:0 protocol ip prio 0 handle $MARKPRIO1 fw classid 1:101 tc filter add dev $IFACE parent 1:0 protocol ip prio 1 handle $MARKPRIO2 fw classid 1:102 tc filter add dev $IFACE parent 1:0 protocol ip prio 2 handle $MARKPRIO3 fw classid 1:103 tc filter add dev $IFACE parent 1:0 protocol ip prio 3 handle $MARKPRIO4 fw classid 1:104 tc filter add dev $IFACE parent 1:0 protocol ip prio 4 handle $MARKPRIO5 fw classid 1:105 tc filter add dev $IFACE parent 1:0 protocol ip prio 5 handle $MARKPRIO6 fw classid 1:106 tc filter add dev $IFACE parent 1:0 protocol ip prio 6 handle $MARKPRIO7 fw classid 1:107 tc filter add dev $IFACE parent 1:0 protocol ip prio 7 handle $MARKPRIO8 fw classid 1:108 tc filter add dev $IFACE parent 1:0 protocol ip prio 8 handle $MARKPRIO9 fw classid 1:109 # Add queuing disciplines tc qdisc add dev $IFACE parent 1:101 sfq perturb 16 quantum $QUANTUM1 tc qdisc add dev $IFACE parent 1:102 sfq perturb 16 quantum $QUANTUM2 tc qdisc add dev $IFACE parent 1:103 sfq perturb 16 quantum $QUANTUM3 tc qdisc add dev $IFACE parent 1:104 sfq perturb 16 quantum $QUANTUM4 tc qdisc add dev $IFACE parent 1:105 sfq perturb 16 quantum $QUANTUM5 tc qdisc add dev $IFACE parent 1:106 sfq perturb 16 quantum $QUANTUM6 tc qdisc add dev $IFACE parent 1:107 sfq perturb 16 quantum $QUANTUM7 tc qdisc add dev $IFACE parent 1:108 sfq perturb 16 quantum $QUANTUM8 tc qdisc add dev $IFACE parent 1:109 sfq perturb 16 quantum $QUANTUM9 Spero si riescano a leggere. Rispetto al wiki ho fatto le seguenti modifiche: Portato le classi da 5 a 9, molte sono vuote, così è più semplice aggiungere una classe in mezzo ad altro due (esempio bittorrent sopra edonkey). Purtroppo non c'ho capito abbastanza dei parametri quantum, burst e cburst e li ho messi un po' a [c,n]aso. Inoltre il file shaper resetta le classi all'inizio, altrimenti eseguendolo due volte la seconda dà errore. Inoltre ho patchato il kernel con l7-filter per il riconoscimento dei protocolli (piuttosto sono che sulle porte/indirizzi). Tutto ciò è abbastanza semplice con gentoo (spam-spam). La prima volta ho provato con il kernel 2.6.12 ma non funzionava. Ne ho approffittato per aggiornare al 2.6.13 ed è andato a posto. Sono abbastanza sicuro che non fosse un problema di configurazione. Il ping di www.google.it passa da circa 2000 ms senza shaping a 150 ms con shaping. E' possibile navigare tranquillamente, senza la necessità di limitare amule o simili. Lo svantaggio è che si deve limitare la banda in uscita a circa il 90% della teorica.
__________________
------------------------------------- Fletto i muscoli e sono nel vuoto ------------------------------------ |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: May 2004
Messaggi: 140
|
Vediamo se riesco a dare il mio contributo sperando di non scrivere fesserie.
tutto questo blocco: Codice:
#Flushing all rules,chains,tables,policies. $IPTABLES -P INPUT ACCEPT $IPTABLES -P FORWARD ACCEPT $IPTABLES -P OUTPUT ACCEPT #Reset the default policies in the nat table. $IPTABLES -t nat -P PREROUTING ACCEPT $IPTABLES -t nat -P POSTROUTING ACCEPT $IPTABLES -t nat -P OUTPUT ACCEPT #Reset the default policies in the mangle table. $IPTABLES -t mangle -P PREROUTING ACCEPT $IPTABLES -t mangle -P OUTPUT ACCEPT #Flush all the rules in the filter and nat tables. $IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F #Erase all chains that's not default in filter and nat table. $IPTABLES -X $IPTABLES -t nat -X $IPTABLES -t mangle -X #Erase all chains and the rules of all tables. for table in nat mangle filter do $IPTABLES -t $table -F $IPTABLES -t $table -X done Codice:
$IPTABLES -F $IPTABLES -t nat -F $IPTABLES -t mangle -F Codice:
--flush -F [chain] Delete all rules in chain or all chains Codice:
#MASQUERADE echo "1" > /proc/sys/net/ipv4/ip_forward Codice:
if test `cat /proc/sys/net/ipv4/ip_forward` -ne 1
then
echo 1 > /proc/sys/net/ipv4/ip_forward
if [ $? -ne 0 ] ; then
exit 1
#io ho messo che esca, solo per fare un esempio, ma si può mettere qualcos'altro
fi
fi
cosa significa "marca i pacchetti con iptables"? Giuliano |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Jul 2003
Messaggi: 207
|
Significa che ogni pacchetto è "marchiato" (-J MARK --set-mark) da iptables secondo le regole definite.
Poi tc smista i pacchetti nelle classi a seconda di come sono marchiati (parte finale del secondo script, l'iniziale crea le classi). Ovviamente c'è una classe di default per i pacchetti non marchiati. La "marchiatura" avviene (penso) scrivendo in un'apposita area dell'header del pacchetto.
__________________
------------------------------------- Fletto i muscoli e sono nel vuoto ------------------------------------ |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Potenza
Messaggi: 1137
|
Interessante discussione
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 10106
|
Quote:
peccato solo che non ci capisco molto, in ogni caso i miei complimenti!
__________________
"Most people think that skydivers like to jump because we love the adrenaline rush.
That's not at all. We love to jump because WE LOVE TO FLY!" |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
ecco qua lo scriptino del mio server casalingo... nato quando non sapevo nemmeno cos'era iptables e pian pianino e' cresciuto fino a diventare il ce**o.. ehm lo script attuale!
Codice:
IPT="/sbin/iptables" INT="eth1" #cancella tutto! $IPT -F $IPT -F INPUT $IPT -F OUTPUT $IPT -F FORWARD $IPT -F -t mangle $IPT -F -t nat $IPT -X #imposta le policy di default (considero la mia rete interna sicura) $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT #abilito l'ip_forward... echo 1 > /proc/sys/net/ipv4/ip_forward #...visto che mi serve per nattare $IPT -t nat -A POSTROUTING -o $INT -j MASQUERADE -s 192.168.1.0/24 -d 0/0 #scarto i pacchetti invalidi $IPT -A FORWARD -i $INT -m state --state INVALID -j DROP #redirigo la porta 2000 sulla 22 del mio computer interno alla LAN $IPT -t nat -A PREROUTING -p tcp --dport 2000 -i eth1 -j DNAT --to 192.168.1.1:22 #creo la catena firewall che logga e poi droppa $IPT -N firewall $IPT -A firewall -m limit --limit 5/minute -j LOG --log-prefix Firewall: $IPT -A firewall -j DROP #idem per la catena badflags $IPT -N badflags $IPT -A badflags -m limit --limit 5/minute -j LOG --log-prefix Badflags: $IPT -A badflags -j DROP #infine creo la catena silent che droppa senza loggare $IPT -N silent $IPT -A silent -j DROP #accetto in IMPUT tutto quello che arriva da lo dalla mia rete locale $IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -i eth0 -s 192.168.1.0/255.255.255.0 -d 192.168.1.254 -p all -j ACCEPT #loggo e droppo se qualche computer interno vuole attaccarsi ad un smtp server (ho un smtp sul server e quindi bisogna usarlo!) $IPT -A FORWARD -s 192.168.1.0/255.255.255.0 -d 0/0 -p tcp --dport 25 -j LOG --log-prefix Virus: $IPT -A FORWARD -s 192.168.1.0/255.255.255.0 -d 0/0 -p tcp --dport 25 -j DROP @mando alla catena badflags tutti i pacchetti che hanno flag strambe $IPT -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j badflags $IPT -A INPUT -p tcp --tcp-flags ALL ALL -j badflags $IPT -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j badflags $IPT -A INPUT -p tcp --tcp-flags ALL NONE -j badflags $IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j badflags $IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j badflags #accetto alcuni icmp, anche i ping... ma fino ad un certo punto! $IPT -A INPUT -p icmp --icmp-type 0 -j ACCEPT $IPT -A INPUT -p icmp --icmp-type 3 -j ACCEPT $IPT -A INPUT -p icmp --icmp-type 11 -j ACCEPT $IPT -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/second -j ACCEPT #gli altri vengono loggati e droppati $IPT -A INPUT -p icmp -j firewall #questi sono necessari se usate openvpn! $IPT -A INPUT -i tun+ -j ACCEPT $IPT -A FORWARD -i tun+ -j ACCEPT $IPT -A INPUT -i tap+ -j ACCEPT $IPT -A FORWARD -i tap+ -j ACCEPT #accetto traffico su un casino di porte (http, https, pops, imaps, smtp, emule, bittorrent, una per openvpn ecc.) $IPT -A INPUT -i $INT -s 0/0 -p udp --dport 8767 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 443 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 993 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 995 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 25 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 6969 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 15497 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 6881 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p udp --dport 6881 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p tcp --dport 7662:7664 -j ACCEPT $IPT -A INPUT -i $INT -s 0/0 -p udp --dport 7672 -j ACCEPT #accetto anche le connessioni gia iniziate! $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #mando direttamente nell'oblio i pacchetti sulle porte usate da netbios $IPT -A INPUT -p udp --sport 137:138 --dport 137:138 -j silent
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Jan 2002
Città: Prov di Pesaro
Messaggi: 154
|
Ragazzi la discussione e' interessante, veramente, pero' dico un mio parere, non si parla mai di CONNESSIONI.
A volte il problema del mulo oltre a saturare la banda e' che se non configurato bene, genera un sacco di connessioni che a volte bloccano o rallentano di molto le attivita' a qualsiasi livello di internet. Non si riesce ad implemenatre una gestione delle connessioni? droppaggio delle connessioni, numero connessioni attive ecc., non ne ho mai visto parlare su discussioni di firewall anche se mi sembra di aver letto che il kernel in qualche maniera le supporti come gestione. Il mio e' uno spunto .......... per migliorare cio' che avete fatto..almeno spero. Roxy74
__________________
Epox 8RDA+ /XP 2500+ /2 HD MAXTOR 80 GB ATA133 /Hercules 8500LE 64MB /DVD PIONEER 3520A/Xaser II Thermaltake /LiteOn 52x24x52 |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Jul 2003
Messaggi: 207
|
Con tutti i client edonkey che ho visto puoi settare il numero massimo di connessioni. Comunque se fai lo shaping del traffico hai comunque una banda garantita per il traffico a più alta priorità.
__________________
------------------------------------- Fletto i muscoli e sono nel vuoto ------------------------------------ |
|
|
|
|
|
#19 | |
|
Member
Iscritto dal: Jan 2002
Città: Prov di Pesaro
Messaggi: 154
|
Quote:
E' vero che neghi le porte con IPTABLES, pero' e' sempre un servizio in piu'.
__________________
Epox 8RDA+ /XP 2500+ /2 HD MAXTOR 80 GB ATA133 /Hercules 8500LE 64MB /DVD PIONEER 3520A/Xaser II Thermaltake /LiteOn 52x24x52 |
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Oct 2003
Città: La Spezia
Messaggi: 962
|
ciao axl!!
allora sono tornato ora da una trasferta sono mezzo disintegrato... cmq ti d ho un paio di consigli che reputo utili ed uso ovviamente in produzione... per una migliore intellegibilità del firewall e l'uso delle regole ti consiglio di dividere il piu possibile le catene, es: iptables -N manif #manutenzione lato remoto ipt -N lanif #man lato lan ipt -N p2p ipt -N ssh ipt -N ftp ipt -N quello che vuoi poi appendi le regole ad ogni catena che ti sei fatto... la cosa interessante e loggare tutti gli scarti che hai in una catena.. almeno se rejetti qualcosa sai il perche e da dove lo scarti, altrimenti vai a caso... ipt -A ssh -m state --state RELATED,ESTABLISHED -j ACCEPT ipt -A ssh regolechevuoi j ACCEPT ipt -A ssh -j LOG --log-prefix "[scarti ssh]" ipt -A ssh -j REJECT cosi diventa molto facile capire cosa c e che non va... il reject è diverso dal drop... dai una letta in giro e poi capisci il perche.. ti consiglio di usare il -m multiport quando per uno stesso indirizzo devi specificare piu porte... questo migliora il parsing e la velocità di iptables. ti puoi divertire usando il controllo del TTL per avere pacchetti su misura... l'uso dei flags mi pare che tu l'abbia imparato.. bene. il traffic shaping è essenziale per una corretta gestione della banda, gli script che ha postato .r mi sembrano carini. bhe che altro dire... se non usi tunnel e proto4 e cose strane direi che va bene cosi.. oltre iptables non puo fare, puoi volendo usare dei moduli e catene per droppare virus e worm e stringhe malevole ecc... puoi fare quello che vuoi.. e senza dubbio inoltre utile integrare nel firewall una gestione start stop status molto comoda e utile per flushing improvvisi. ciao!!
__________________
Gigabyte ga-p55-ud6 | Intel i7 860 | 2x2gb Corsair xms3 | Adaptec 2410sa | raid1 barracuda 500gb 7200.12 | Intel x25-m 80gb G2 | ATI radeon 4890 | tutto in downclock (non ho parenti all'enel) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:18.




















