Portál AbcLinuxu, 24. dubna 2024 14:23
#!/bin/sh ############### mini firewall ############### ############################################## IPT="/sbin/iptables" NET_IFACE="eth2" NET_ADDRESS="XXX.XXX.XXX.XXX" LAN_IFACE="vlan0" LAN_IP="10.10.0.10" LAN_NET="10.10.0.0/24" LAN_BCAST="10.10.0.255" LOC_IFACE="lo" LOC_IP="127.0.0.1" echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/tcp_syncookies echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects ############################################## #################### Reset defaultni potitiky ############################################## $IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -F $IPT -X ############################################## ##################### Zakaze co dal nepovolim ############################################## $IPT -A INPUT -i $NET_IFACE -j DROP ############################################## ####################### Povoleni ICMP provozu ############################################## $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 8 -j ACCEPT $IPT -A INPUT -p ICMP --icmp-type 11 -j ACCEPT ############################################## ########## Povolení provozu na LAN a pravidla ############################################## $IPT -A INPUT -p ALL -i $LAN_IFACE -s $LAN_NET -j ACCEPT $IPT -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST -j ACCEPT $IPT -A INPUT -p UDP -i $LAN_IFACE --source-port 68 --destination-port 67 -j ACCEPT ############################################## ############# Povolení provozu na LAN a LOCAL ############################################## $IPT -A INPUT -p ALL -i $LAN_IFACE -j ACCEPT $IPT -A INPUT -p ALL -i $LOC_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LAN_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -s $LOC_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LOC_IFACE -j ACCEPT ############################################## ############### Povolení provozu z LAN do NET ############################################## $IPT -A FORWARD -i $LAN_IFACE -o $NET_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -o $NET_IFACE -j ACCEPT ############################################## ####### Povolení forward z NET+vstup na LOCAL ############################################## $IPT -A FORWARD -i $NET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -i $NET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT ############################################## ######################## Uzivatelska pravidla ############################################## ## vstup na firewall, protokol SSH (port 22) $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 22 -j ACCEPT ## vstup na firewall, protokol SIP (port 5060:5061 + 7070:7080) $IPT -A udp_inbound -p UDP -s 0/0 --destination-port 5060:5061 -j ACCEPT $IPT -A udp_inbound -p UDP -s 0/0 --destination-port 7070:7080 -j ACCEPT ## SIP komunikuje primo z hardware 10.10.0.200 $IPT -A FORWARD -p udp -i $NET_IFACE --destination-port 5060:5061 --destination 10.10.0.200 -j ACCEPT $IPT -A FORWARD -p udp -i $NET_IFACE --destination-port 7070:7080 --destination 10.10.0.200 -j ACCEPT $IPT -t nat -A PREROUTING -p udp -i $NET_IFACE --destination-port 5060:5061 -j DNAT --to-destination 10.10.0.200 $IPT -t nat -A PREROUTING -p udp -i $LAN_IFACE --destination-port 5060:5061 --destination $NET_ADDRESS -j DNAT --to-destination 10.10.0.200 ############################################## ############################ zprovozneni SNAT ############################################## $IPT -t nat -A POSTROUTING -o $NET_IFACE -j SNAT --to-source $NET_ADDRESS $IPT -t nat -A POSTROUTING -o $LAN_IFACE -j SNAT --to-source $NET_ADDRESSMa to vubec potencial fungovat?
Pokud hned na začátku všechno zahodíte a pak teprve začnete něco povolovat, pakety se nemají k těm dalším paketům jak dostat.
Mimochodem, jaký je smysl podmínek typu '-p ALL
' nebo '-s 0/0
'?
$IPT -A INPUT -i $NET_IFACE -j DROPmá být až na konci, tomu rozumím a je to chyba. Stejně tak můžu defultně nastavit místo:
$IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -F $IPT -Xna zakázanou:
$IPT -F $IPT -X $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT DROPSmysl "-p ALL" a "-s 0/0" mě to pomáhá zpřehledňovat, asi je to ale k ničemu.
Ma to vubec potencial fungovat?Tak to vyzkoušejte, ne?
iptables-save
a nakonfigurovanim cronu alebo pomocou prikazu at
, aby o nejaky cas spustil iptables-restore
s povodnym (funkcnym) nastavenim.
etc/rc.d/rc.firewall start; sleep 20; /etc/rc.d/rc.firewall stop
kde "stop" je implementovane ako
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
############################################## #################### Reset defaultni potitiky ############################################## $IPT -F $IPT -X $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT DROP ############################################## ####################### Povoleni ICMP provozu ############################################## $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 8 -j ACCEPT $IPT -A INPUT -p ICMP --icmp-type 11 -j ACCEPT $IPT -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT ############################################## ######################## Omezení AUTH provozu ############################################## $IPT -A INPUT -i $NET_IFACE -p TCP --destination-port 113 -j REJECT ############################################## ###################### SPOOFING & SYN FLOODING ############################################## $IPT -N spoofing $IPT -A spoofing -s 192.168.0.0/16 -j DROP $IPT -A spoofing -s 172.16.0.0/12 -j DROP $IPT -A spoofing -s 10.0.0.0/8 -j DROP $IPT -A INPUT -i $NET_IFACE -j spoofing $IPT -A FORWARD -i $NET_IFACE -j spoofing $IPT -N syn_flood $IPT -A INPUT -i $NET_IFACE -p tcp --syn -j syn_flood $IPT -A syn_flood -m limit --limit 1/s --limit-burst 5 -j RETURN $IPT -A syn_flood -j DROP ############################################## ########## Povolení provozu na LAN a pravidla ############################################## $IPT -A INPUT -p ALL -i $LAN_IFACE -s $LAN_NET -j ACCEPT $IPT -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BCAST -j ACCEPT $IPT -A INPUT -p UDP -i $LAN_IFACE --source-port 68 --destination-port 67 -j ACCEPT ############################################## ############# Povolení provozu na LAN a LOCAL ############################################## $IPT -A INPUT -p ALL -i $LAN_IFACE -j ACCEPT $IPT -A INPUT -p ALL -i $LOC_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LAN_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -s $LOC_IP -j ACCEPT $IPT -A OUTPUT -p ALL -o $LOC_IFACE -j ACCEPT ############################################## ############### Povolení provozu z LAN do NET ############################################## $IPT -A FORWARD -i $LAN_IFACE -o $NET_IFACE -j ACCEPT $IPT -A OUTPUT -p ALL -o $NET_IFACE -j ACCEPT ############################################## ####### Povolení forward z NET+vstup na LOCAL ############################################## $IPT -A FORWARD -i $NET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -i $NET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT ############################################## ######################## Uzivatelska pravidla ############################################## ## vstup na firewall, protokol SSH (port 22) $IPT -A tcp_inbound -p TCP -s 0/0 --destination-port 22 -j ACCEPT ## vstup na firewall, protokol SIP (port 5060:5061 + 7070:7080) $IPT -A udp_inbound -p UDP -s 0/0 --destination-port 5060:5061 -j ACCEPT $IPT -A udp_inbound -p UDP -s 0/0 --destination-port 7070:7080 -j ACCEPT ## SIP komunikuje primo z hardware 10.10.0.200 $IPT -A FORWARD -p udp -i $NET_IFACE --destination-port 5060:5061 --destination 10.10.0.200 -j ACCEPT $IPT -A FORWARD -p udp -i $NET_IFACE --destination-port 7070:7080 --destination 10.10.0.200 -j ACCEPT $IPT -t nat -A PREROUTING -p udp -i $NET_IFACE --destination-port 5060:5061 -j DNAT --to-destination 10.10.0.200 $IPT -t nat -A PREROUTING -p udp -i $LAN_IFACE --destination-port 5060:5061 --destination $NET_ADDRESS -j DNAT --to-destination 10.10.0.200 ############################################## ############################ zprovozneni SNAT ############################################## $IPT -t nat -A POSTROUTING -o $NET_IFACE -j SNAT --to-source $NET_ADDRESS $IPT -t nat -A POSTROUTING -o $LAN_IFACE -j SNAT --to-source $NET_ADDRESS ############################################## ############### Zakaze co proslo z NET az sem ############################################## $IPT -A INPUT -i $NET_IFACE -j DROP
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.