wytłumaczenie zasad firrewalla na serwerze
: 25 maja 2009, 08:37
Witam szanownych użytkowników, jako że jestem bardzo zielony to proszę o możliwe łopatologiczne wytłumaczenie mi serwera firewall jaki mam na zaliczenie. Chodzi mi głównie o przekierowanie portów np. poczta na eth 2 lub 3 itp. Najlepiej byłoby gdyby ktoś mógł mi pomóc rozszyfrować wszystko po kroku co się dzieje i jakie ma za zadanie komenda.
Dziękuje wszystkim za zainteresowanie i pomoc.
Dziękuje wszystkim za zainteresowanie i pomoc.
Kod: Zaznacz cały
#!/bin/bash
# sciezka do ECHO
ECHO="/bin/echo"
# sciezka do CLEAR
CZYSC="/usr/bin/clear"
# sciezka do MODPROBE
MODUL="/sbin/modprobe"
# sciezka do MODPROBE
DELMODUL="/sbin/rmmod"
# sciezka do IPTABLES
IPT="/usr/local/sbin/iptables"
# sciezka do skryptu HTB
HTB="/etc/siec/htb"
HTB_UP1="/etc/siec/up1"
HTB_UP2="/etc/siec/up2"
HTB_UP3="/etc/siec/up3"
PRZEKIEROWANIE="/etc/siec/przekierowanie"
# blokada wirusow
VIRUS="/etc/siec/rc.virus"
# ograniczenie polaczen
CONNLIMIT="/etc/siec/rc.connlimit"
# staty
STATY="/etc/siec/staty"
# ip_mack
IPMACK="/etc/siec/ip_mack"
# blokada portow p2p
P2P="/etc/siec/rc.p2p"
# zaplata miniserv
ZAPLATA="/etc/siec/zaplata"
# sciezka do IFCONFIG
IF="/sbin/ifconfig"
ILE=`arp | grep "eth0" | wc -l`
# -----=====[ Komunikat ekranowy ]=====-----
$CZYSC
$ECHO ""
$ECHO " ---=== Firewall version x===---"
$ECHO ""
$ECHO ""
# -----=====[ Interfejsy sieciowe ]=====-----
######## DSL1 #######
NET="eth2"
IPNET="87.105.20.238" # routowalny adres IP {od dostawcy}
#IPNET_0="83.16.38.163"
#IPNET_1="83.16.38.164"
#IPNET_2="83.16.38.165"
#IPNET_3="83.16.38.166"
NET_MASK="255.255.255.128"
LAN="eth0"
IPLAN="192.168.0.1"
IP_MASK="192.168.0.0/255.255.255.0"
######## DSL2 ######
NET2="eth1"
#IPNET2="83.17.62.226" # routowalny adres IP {od dostawcy)
IPNET2="87.105.158.201" # routowalny adres IP {od dostawcy)
#IPNET2="10.0.0.1" # routowalny adres IP {od dostawcy}
#IPNET2_0="83.17.62.227"
#IPNET2_1="83.17.62.228"
#IPNET2_2="83.17.211.109"
#IPNET2_3="83.17.211.110"
####### DSL3 ##########
NET3="eth3"
IPNET3="87.105.158.202"
# -----=====[ Hosty sieci Lan ]=====-----
HOST_01="192.168.0.1"
HOST_02="192.168.0.2"
HOST_03="192.168.0.3"
HOST_04="192.168.0.4"
HOST_05="192.168.0.5"
HOST_06="192.168.0.6"
HOST_07="192.168.0.7"
HOST_08="192.168.0.8"
HOST_09="192.168.0.9"
HOST_10="192.168.0.10"
HOST_11="192.168.0.11"
HOST_12="192.168.0.12"
HOST_13="192.168.0.13"
HOST_14="192.168.0.14"
HOST_15="192.168.0.15"
HOST_16="192.168.0.16"
HOST_17="192.168.0.17"
HOST_18="192.168.0.18"
HOST_19="192.168.0.19"
HOST_20="192.168.0.20"
HOST_21="192.168.0.21"
HOST_22="192.168.0.22"
HOST_23="192.168.0.23"
HOST_24="192.168.0.24"
HOST_25="192.168.0.25"
HOST_26="192.168.0.26"
HOST_27="192.168.0.27"
HOST_28="192.168.0.28"
HOST_29="192.168.0.29"
HOST_30="192.168.0.30"
HOST_31="192.168.0.31"
HOST_32="192.168.0.32"
HOST_33="192.168.0.33"
HOST_34="192.168.0.34"
HOST_35="192.168.0.35"
HOST_36="192.168.0.36"
HOST_37="192.168.0.37"
HOST_38="192.168.0.38"
HOST_39="192.168.0.39"
HOST_40="192.168.0.40"
HOST_41="192.168.0.41"
HOST_42="192.168.0.42"
HOST_43="192.168.0.43"
HOST_44="192.168.0.44"
HOST_45="192.168.0.45"
HOST_46="192.168.0.46"
HOST_47="192.168.0.47"
HOST_48="192.168.0.48"
HOST_49="192.168.0.49"
HOST_50="192.168.0.50"
HOST_51="192.168.0.51"
HOST_52="192.168.0.52"
HOST_53="192.168.0.53"
HOST_54="192.168.0.54"
HOST_55="192.168.0.55"
HOST_56="192.168.0.56"
HOST_57="192.168.0.57"
HOST_58="192.168.0.58"
HOST_59="192.168.0.59"
HOST_60="192.168.0.60"
HOST_61="192.168.0.61"
HOST_62="192.168.0.62"
HOST_63="192.168.0.63"
HOST_64="192.168.0.64"
HOST_65="192.168.0.65"
HOST_66="192.168.0.66"
HOST_67="192.168.0.67"
HOST_68="192.168.0.68"
HOST_69="192.168.0.69"
HOST_70="192.168.0.70"
HOST_71="192.168.0.71"
HOST_72="192.168.0.72"
HOST_73="192.168.0.73"
HOST_74="192.168.0.74"
HOST_75="192.168.0.75"
HOST_76="192.168.0.76"
HOST_77="192.168.0.77"
HOST_78="192.168.0.78"
HOST_79="192.168.0.79"
HOST_80="192.168.0.80"
HOST_81="192.168.0.81"
HOST_82="192.168.0.82"
HOST_83="192.168.0.83"
HOST_84="192.168.0.84"
HOST_85="192.168.0.85"
HOST_86="192.168.0.86"
HOST_87="192.168.0.87"
HOST_88="192.168.0.88"
HOST_89="192.168.0.89"
HOST_90="192.168.0.90"
HOST_91="192.168.0.91"
HOST_92="192.168.0.92"
HOST_93="192.168.0.93"
HOST_94="192.168.0.94"
HOST_95="192.168.0.95"
HOST_96="192.168.0.96"
HOST_97="192.168.0.97"
HOST_98="192.168.0.98"
HOST_99="192.168.0.99"
HOST_100="192.168.0.100"
HOST_101="192.168.0.101"
HOST_102="192.168.0.102"
HOST_103="192.168.0.103"
HOST_104="192.168.0.104"
HOST_105="192.168.0.105"
HOST_106="192.168.0.106"
HOST_107="192.168.0.107"
HOST_108="192.168.0.108"
HOST_109="192.168.0.109"
HOST_110="192.168.0.110"
#Blokada i przekierowanie dla Hosta za brak opłaty za internet
PORT_ALL="1:65535"
VIRTUALHOST_230="192.168.0.1:230"
# -----=====[ GG za Firewall ]=====-----
GG_PORT="1550"
##########################
case "$1" in
start)
##########################
#Komunikat ekranowy
$ECHO "Firewall odpalony"
#$IF eth1:1 $IPNET_0 netmask $NET_MASK
#$IF eth1:2 $IPNET_1 netmask $NET_MASK
#$IF eth1:3 $IPNET_2 netmask $NET_MASK
#$IF eth1:4 $IPNET_3 netmask $NET_MASK
#£adowanie modułów jeśli nie masz w tego jajku Linuksa
$MODUL ip_nat_ftp
$MODUL ip_nat_irc
$MODUL ip_conntrack
$MODUL ip_conntrack_irc
$MODUL ip_conntrack_ftp
$IPT -t mangle -I POSTROUTING -d $IP_MASK -j TTL --ttl-set 2
################### 2xDSL #################
#$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 83.16.38.162
#$IPT -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 83.17.62.226
$IPT -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 87.105.20.238
$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 87.105.158.202
$IPT -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 87.105.158.201
#$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 10.0.0.1
##########################
#PRZEKIEROWANIE USLUG DLA USEROW W SIECI#
##########################
# #
#$IPT -t nat -A PREROUTING -d 83.16.38.163 -j DNAT --to 192.168.0.202
#$IPT -t nat -A POSTROUTING -s 192.168.0.202 -j SNAT --to 83.16.38.163
#$IPT -t nat -A PREROUTING -d 83.16.38.164 -j DNAT --to 192.168.0.66
#$IPT -t nat -A POSTROUTING -s 192.168.0.66 -j SNAT --to 83.16.38.164
#$IPT -t nat -A PREROUTING -d 83.16.38.165 -j DNAT --to 192.168.0.32
#$IPT -t nat -A POSTROUTING -s 192.168.0.32 -j SNAT --to 83.16.38.165
# #
# #
##########END##########
# -----=====[ Czycimy łańcuchy ]=====-----
$IPT -t mangle -D FORWARD -i $LAN - STAT >/dev/null 2>&1
$IPT -t mangle -D FORWARD -o $LAN - STAT >/dev/null 2>&1
$IPT -t mangle -F STAT >/dev/null 2>&1
$IPT -t mangle -X STAT >/dev/null 2>&1
$IPT -F
$IPT -X
$IPT -Z
# -----=====[ Polityki domylne dla pakietów ]=====-----
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
##########################
# #
#ROUTING DSL #
# #
##########################
# www
$IPT -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 0x1111
$IPT -t mangle -A PREROUTING -p udp --dport 80 -j MARK --set-mark 0x1111
#$IPT -t mangle -A PREROUTING -m layer7 --l7proto http -j MARK --set-mark 0x2222
# www-szyfrowane
$IPT -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 0x2222
$IPT -t mangle -A PREROUTING -p udp --dport 443 -j MARK --set-mark 0x2222
# poczta
#$IPT -t mangle -A PREROUTING -p tcp --dport 25 -j MARK --set-mark 0x2222
#$IPT -t mangle -A PREROUTING -p udp --dport 25 -j MARK --set-mark 0x2222
#$IPT -t mangle -A PREROUTING -p tcp --dport 110 -j MARK --set-mark 0x2222
#$IPT -t mangle -A PREROUTING -p udp --dport 110 -j MARK --set-mark 0x2222
#$IPT -t mangle -A PREROUTING -p tcp --dport 995 -j MARK --set-mark 0x2222
#$IPT -t mangle -A PREROUTING -p udp --dport 995 -j MARK --set-mark 0x2222
# dns
$IPT -t mangle -A PREROUTING -p tcp --dport 53 -j MARK --set-mark 0x1111
$IPT -t mangle -A PREROUTING -p udp --dport 53 -j MARK --set-mark 0x1111
# Proxy
#$IPT -t mangle -A PREROUTING -p tcp --dport 9999 -j MARK --set-mark 0x1111
#$IPT -t mangle -A PREROUTING -p udp --dport 9999 -j MARK --set-mark 0x1111
# ssh
#$IPT -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 0x1111
#$IPT -t mangle -A PREROUTING -p udp --dport 22 -j MARK --set-mark 0x1111
# skype
$IPT -t mangle -A PREROUTING -p tcp --dport 18201:18500 -j MARK --set-mark 0x2222
$IPT -t mangle -A PREROUTING -p udp --dport 18201:18500 -j MARK --set-mark 0x2222
##########################
# #
#THE END ROUTING #
# #
##########################
# -----=====[ £adowanie opcji kernela ]=====-----
$ECHO "1" > /proc/sys/net/ipv4/ip_forward
$ECHO "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
$ECHO "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#$ECHO "0" > +proc/sys/net/ipv4/conf/all/accept_source_route
$ECHO "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
$ECHO "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
$ECHO "1" > /proc/sys/net/ipv4/conf/all/rp_filter
$ECHO "1" > /proc/sys/net/ipv4/conf/all/log_martians
# -----=====[ Limitowanie sesji TCP ]=====-----
$ECHO "30" > /proc/sys/net/ipv4/tcp_fin_timeout
$ECHO "2400" > /proc/sys/net/ipv4/tcp_keepalive_time
$ECHO "0" > /proc/sys/net/ipv4/tcp_window_scaling
$ECHO "0" > /proc/sys/net/ipv4/tcp_sack
$ECHO "36000" > /proc/sys/net/ipv4/ip_conntrack_max
$ECHO "20" > /proc/sys/net/ipv4/ipfrag_time
$ECHO "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
# -----=====[ Pełny ruch na interfejsie lo ]=====-----
# Wymagaja tege pewne programy servera
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPMACK
#$IPT -N TTL_check
# Caly forward z naszej sieci przechodzi przez TTL_check
# oprocz icmp - aby dzialalo traceroute... ale bedzie dzialac tez ping!
#$IPT -A FORWARD -p ! icmp -s $IP_MASK -j TTL_check
#$IPT -A TTL_check -m ttl --ttl-eq 255 -j RETURN
#$IPT -A TTL_check -m ttl --ttl-eq 127 -j RETURN
#$IPT -A TTL_check -m ttl --ttl-eq 63 -j RETURN
#$IPT -A TTL_check -j DROP
##########################
# -----=====[ TRANSPARENTNE PROXY ]=====----- #
##########################
#$IPT -t nat -A PREROUTING -s $IP_MASK -p tcp -d ! $IP_MASK --dport 80 -j DNAT --to-destination $IPLAN:9999
$PRZEKIEROWANIE
##########################
# #
# -----=====[ LANCUCH INPUT ]=====----- #
# #
##########################
# Musimy przepuscic niektore komunikaty ICMP z LAN i net
# Source Quench - tlumienie zrodla
$IPT -A INPUT -i $NET -p icmp --icmp-type 4 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 4 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 4 -d $IPLAN -j ACCEPT
# Parametr problem - problem z parametrem
$IPT -A INPUT -i $NET -p icmp --icmp-type 12 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 12 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 12 -d $IPLAN -j ACCEPT
# Destination Unrechable - nieosiagniety cel
$IPT -A INPUT -i $NET -p icmp --icmp-type 3 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 3 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 3 -d $IPLAN -j ACCEPT
# Time Exceeded - Przekroczony limit czasu
$IPT -A INPUT -i $NET -p icmp --icmp-type 11 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 11 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 11 -d $IPLAN -j ACCEPT
# Echo request - zadanie echa
# Aby wylaczyc odpowiedzi na pingi nalezy to zakomentowac i wyzej,
# wylaczyc je w opcjach kernela
$IPT -A INPUT -i $NET -p icmp --icmp-type 8 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 8 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 8 -d $IPLAN -j ACCEPT
# Echo reply - echo na zadanie
# Uruchamiamy gdy chcemy muc odebrac echo z komputera ktory pingujemy
$IPT -A INPUT -i $NET -p icmp --icmp-type 0 -d $IPNET -j ACCEPT
$IPT -A INPUT -i $NET2 -p icmp --icmp-type 0 -d $IPNET2 -j ACCEPT
$IPT -A INPUT -i $LAN -p icmp --icmp-type 0 -d $IPLAN -j ACCEPT
# Przepuszcza pakiety z flaga ESTABLISHED i RELATED
$IPT -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -A INPUT -m state --state RELATED -j ACCEPT
# -----=====[ FTP ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 21(ftp) tcp.
# Oraz dla otworzenia kanalu danych w aktiv port 20 tcp.
$IPT -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --dport 20 -m state --state NEW -j ACCEPT
# -----=====[ SSH ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 22(ssh).
# fajnie by bylo dodac "-s a.b.c.d" aby moc sie logowac tylko z jednego IP.
$IPT -A INPUT -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
# Tylko okreslony komputer moze sie zajac naszym komputerem
# $IPT -A INPUT -i $EXTDEV -m mac --mac-source xx:xx:xx:xx:xx:xx -s a.b.c.d -p tcp --sport 1024: --dport 22 -m state+--state NEW -j ACCEPT
# -----=====[ DNS ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 53(DNS) tcp i udp z sieci lokalnej.
# Transakcje serwer-klient
$IPT -A INPUT -i $LAN -p tcp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $LAN -p udp --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
# Transakcje serwer-serwer
#$IPT -A INPUT -i $LAN -p tcp --sport 53 --dport 53 -m state --state NEW -j ACCEPT
#$IPT -A INPUT -i $LAN -p udp --sport 53 --dport 53 -m state --state NEW -j ACCEPT
# -----=====[ DHCPD ]=====-----
# Akceptujemy pakiety NEW na naszym portach 67 i 68(dhcpd) tcp i udp.
#$IPT -A INPUT -i $LAN -p tcp --dport 67 -m state --state NEW -j ACCEPT
#$IPT -A INPUT -i $LAN -p udp --dport 67 -m state --state NEW -j ACCEPT
#$IPT -A INPUT -i $LAN -p tcp --dport 68 -m state --state NEW -j ACCEPT
#$IPT -A INPUT -i $LAN -p udp --dport 68 -m state --state NEW -j ACCEPT
# -----=====[ HTTP ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 80(www).
$IPT -A INPUT -p tcp --sport 1024: --dport 80 -m state --state NEW -j ACCEPT
# -----=====[ HTTPs ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 443(www).
$IPT -A INPUT -p tcp --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p udp --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
# -----=====[ PROXY ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 8080(proxy).
$IPT -A INPUT -i $LAN -p tcp --dport 9999 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $LAN -p udp --dport 9999 -m state --state NEW -j ACCEPT
# -----=====[ RPC ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 111(Portmap) tcp i udp z sieci lokalnej.
# $IPT -A INPUT -i $INTDEV -p tcp --dport 111 -m state --state NEW -j ACCEPT
# $IPT -A INPUT -i $INTDEV -p udp --dport 111 -m state --state NEW -j ACCEPT
# Akceptujemy pakiety NEW na naszym porcie 2049(NFS) udp z sieci lokalnej.
# $IPT -A INPUT -i $INTDEV -p udp --dport 2049 -m state --state NEW -j ACCEPT
# Akceptujemy pakiety NEW na naszym niestandartowym porcie 1026(mountd) tcp i udp z sieci lokalnej.
# $IPT -A INPUT -i $INTDEV -p udp --dport $(rpcinfo -p localhost | grep "mountd" | grep "udp" | head -n 1 | awk -F' ' {'print $4'} ) -m state --state NEW -j ACCEPT
# $IPT -A INPUT -i $INTDEV -p tcp --dport $(rpcinfo -p localhost | grep "mountd" | grep "tcp" | head -n 1 | awk -F' ' {'print $4'} ) -m state --state NEW -j ACCEPT
# -----=====[ SMTP ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 25(smtp) tcp i udp.
$IPT -A INPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --dport 465 -m state --state NEW -j ACCEPT
$IPT -A INPUT -p tcp --dport 113 -m state --state NEW -j ACCEPT
# -----=====[ POP-3 ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 110(pop) tcp i udp z sieci lokalnej.
$IPT -A INPUT -i $LAN -p tcp --dport 110 -m state --state NEW -j ACCEPT
# -----=====[ POP-3 over SSL ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 995(pop over SSL) tcp i udp z sieci lokalnej.
$IPT -A INPUT -i $LAN -p tcp --dport 995 -m state --state NEW -j ACCEPT
$IPT -A INPUT -i $LAN -p tcp --dport 993 -m state --state NEW -j ACCEPT
# -----=====[ SAMBA ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 139(smbd) tcp z sieci lokalnej.
#$IPT -A INPUT -i $LAN -p tcp --dport 139 -m state --state NEW -j ACCEPT
# Akceptujemy pakiety NEW na naszym porcie 137 i 138(nmbd) udp z sieci lokalnej.
#$IPT -A INPUT -i $LAN -p udp --dport 137 -m state --state NEW -j ACCEPT
#$IPT -A INPUT -i $LAN -p udp --dport 138 -m state --state NEW -j ACCEPT
# Tak tez mozna, ale jeszcze nie wspierane przez sambe...
# $IPT -A INPUT -i $LAN -p tcp --dport 445 -m state --state NEW -j ACCEPT
# -----=====[ MINISERV ]=====-----
# Akceptujemy miniserva na dzialanie na porcie 200
$IPT -A INPUT -i $LAN -p tcp --dport 200 -m state --state NEW -j ACCEPT
# -----=====[ VIRTUALHOST ]=====-----
# Akceptujemy naszemu miniserverowi na dzialanie na porcie 230
$IPT -A INPUT -i $LAN -p tcp --dport 230 -m state --state NEW -j ACCEPT
# -----=====[ SWAT ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 901(SWAT) tcp i udp z sieci lokalnej.
# $IPT -A INPUT -i $INTDEV -p tcp --dport 901 -m state --state NEW -j ACCEPT
# $IPT -A INPUT -i $INTDEV -p udp --dport 901 -m state --state NEW -j ACCEPT
# -----=====[ MYSQL ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 3360 tcp z sieci lokalnej.
#$IPT -A INPUT -i $LAN -p tcp --sport 1024: --dport 3306 -m state --state NEW -j ACCEPT
# -----=====[ SYSLOGD ]=====-----
# Akceptujemy pakiety NEW na naszym porcie 514(syslogd) udp z danych adresow.
# pozala nam to na odbieranie wiadomosci z serwerow syslogd.
# $IPT -A INPUT -s x.x.x.x -p udp --dport 514 -m state --state NEW -j ACCEPT
# -----=====[ INNE ]=====-----
# Wiesz co na jakim porcie siedzi i skad ma przyjmowac polaczenia...
# $IPT -A INPUT -p tcp -s z.z.z.z --dport 6666 -m state --state NEW -j ACCEPT
# wywala dziure dla uslugi na porcie 6666 tylko dla klienta z.z.z.z
# Odrzuca te pakiety-bez tego ftp by dluzej czekal na polaczenie
$IPT -A INPUT -p tcp --sport 1024: --dport 113 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
# -----=====[ LANCUCH OUTPUT ]=====-----
# Akceptacja wszystkiego co jest prawidlowe :-)
# Gdybys chcial blokady na OUTPUT to to masz zahashowac
$IPT -A OUTPUT -m state --state ! INVALID -j ACCEPT
# FILTRY NA RUCH WYCHODZACY
# Przepuszczamy podtrzymywanie polaczen przez nas na EXTDEV i INTDEV
# $IPT -A OUTPUT -o $INTDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
# $IPT -A OUTPUT -o $EXTDEV -m state --state ESTABLISHED,RELATED -j ACCEPT
# Tytaj ma byc rozszcegulnienie z jakich portow na jakie porty i z jakich komputerow
# wypuszczamy pakiety. Powinienes zdecydowac sie z jakoch uslog moga kozystac twoi userzy...
#**DNS
#$IPT -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#$IPT -A OUTPUT -o $EXTDEV -p udp -s $EXTIP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#jesli mamy w LAN taki serwer -czemu niet?
#$IPT -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#$IPT -A OUTPUT -o $INTDEV -p udp -s $INTIP --sport 1024: --dport 53 -m state --state NEW -j ACCEPT
#**AUTH
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 113 -m state --state NEW -j ACCEPT
#jesli mamy w LAN taki serwer to czemu niet?
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 113 -m state --state NEW -j ACCEPT
#**SMTP
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 25 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 25 -m state --state NEW -j ACCEPT
#**POP
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 110 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 110 -m state --state NEW -j ACCEPT
#**IMAP
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 143 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 143 -m state --state NEW -j ACCEPT
#**NNTP
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 119 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 119 -m state --state NEW -j ACCEPT
#**TELNET
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 23 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 23 -m state --state NEW -j ACCEPT
#**SSH
$IPT -A OUTPUT -o $NET2 -p tcp -s $IPNET2 --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -o $LAN -p tcp -s $IPLAN --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -o $NET -p tcp -s $IPNET --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
#Tylko okreslony komputer moze sie zajac naszym komputerem :]
#$IPTABLES -A OUTPUT -i $EXTDEV -m mac --mac-source xx:xx:xx:xx:xx:xx -s a.b.c.d -p tcp --sport 1024: --dport 22 -m state --state NEW -j ACCEPT
#**FTP
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 21 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 20 -m state --state NEW -j ACCEPT
#**HTTP
$IPT -A OUTPUT -o $NET -p tcp -s $IPNET --sport 1024: --dport 80 -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -o $LAN -p tcp -s $IPLAN --sport 1024: --dport 80 -m state --state NEW -j ACCEPT
#**HTTPS
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 443 -m state --state NEW -j ACCEPT
#**WHOIS
#$IPTABLES -A OUTPUT -o $EXTDEV -p tcp -s $EXTIP --sport 1024: --dport 43 -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $INTDEV -p tcp -s $INTIP --sport 1024: --dport 43 -m state --state NEW -j ACCEPT
# pozwalamy na wychodzenie komunikatow ICMP
# FIXME -zrobic rozszczegulnienie jakie ICMP moga wyjsc a jakie nie
#$IPTABLES -A OUTPUT -o $INTDEV -p icmp -m state --state NEW -j ACCEPT
#$IPTABLES -A OUTPUT -o $EXTDEV -p icmp -m state --state NEW -j ACCEPT
# -----=====[ LANCUCH FORWARD ]=====-----
# Ograniczenie iloci połaczeń do kazaa
##########################
# FORWARD DLA USERA #
##########################
#$IPT -t filter -A FORWARD -s 192.168.0.202/24 -d 0/0 -j ACCEPT
#$IPT -t filter -A FORWARD -s 0/0 -d 192.168.0.202/24 -j ACCEPT
#$IPT -t filter -A FORWARD -s 192.168.0.66/24 -d 0/0 -j ACCEPT
#$IPT -t filter -A FORWARD -s 0/0 -d 192.168.0.66/24 -j ACCEPT
#$IPT -t filter -A FORWARD -s 192.168.0.32/24 -d 0/0 -j ACCEPT
#$IPT -t filter -A FORWARD -s 0/0 -d 192.168.0.32/24 -j ACCEPT
#END FORWARD DLA USERA #
# Pozwalamy na nawiazywanie i utrzymanie polaczenia z sieci lokalnej
$IPT -A FORWARD -i $LAN -p tcp -s $IP_MASK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $LAN -p udp -s $IP_MASK -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Przepuszczamy pakiety do sieci lokalnej
$IPT -A FORWARD -o $LAN -p tcp -d $IP_MASK -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -o $LAN -p udp -d $IP_MASK -m state --state ESTABLISHED,RELATED -j ACCEPT
# Przepuszczamy caly poprawny ruch ICMP
$IPT -A FORWARD -p icmp -m state --state ! INVALID -j ACCEPT
# -----=====[ TOS ]=====-----
# TOS(type of service) -pozwala nadac rozny piorytet pakietom.
# niestety nie wszystkie routery obslugoja ta funkcje wiec
# nie spodziewajcie sie cudow, ale nie zaszkodzi sprobowac.
#
# Czy ktos przeprowadzil jekiekolwiek testy wydajnosci
# sla roznych TOS?
#
# Parametry zgodne z RFC 1060/1349
#
# typ dec hex
# Minimalize-delay 16 0x10
# Maximalize-throughput 8 0x08
# Maxymalize-Reliability 4 0x04
# Minimalize-cost 2 0x02
# Normal-service 0 0x00
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 20 -j TOS --set-tos 0x04 #ftp
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 21 -j TOS --set-tos 0x04 #ftp
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 22 -j TOS --set-tos 0x10 #ssh
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 23 -j TOS --set-tos 0x10 #telnet
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 25 -j TOS --set-tos 0x08 #smtp
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 53 -j TOS --set-tos 0x10 #dns
$IPT -t mangle -A POSTROUTING -p udp -o $NET --dport 53 -j TOS --set-tos 0x10 #dns
$IPT -t mangle -A POSTROUTING -p tcp -o $NET --dport 80 -j TOS --set-tos 0x08 #http
# -----=====[ Co robimy z reszta pakietow ]=====-----
# Reszte pakietow logujemy i usuwamy ( lancuch INPUT )
# $IPT -A INPUT -j LOG --log-prefix "IPT INPUT: "
$IPT -A INPUT -j DROP
# Logujemy i kasujemy reszte ( lancuch FORWARD )
# $IPT -A FORWARD -j LOG --log-prefix "IPT FORWARD: "
$IPT -A FORWARD -j DROP
# Reszte logujemy i wyrzucamy ( lancuch OUTPUT )
# $IPT -A OUTPUT -j LOG --log-prefix "IPT OUTPUT: "
$IPT -A OUTPUT -j DROP
##########################
##########################
##########################
$HTB_UP1 start
$HTB_UP2 start
$HTB_UP3 start
$VIRUS
$P2P start
$ZAPLATA
$CONNLIMIT
$STATY
echo ""
echo " $ILE - Aktualnie komputerow czynnych"
$ECHO ""
$ECHO "Zrobione!"
$ECHO ""
##########################
;;
stop)
##########################
# -----=====[ Komunikat ekranowy ]=====-----
$ECHO "Firewall zatrzymany"
# -----=====[ Czycimy łańcuchy ]=====-----
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT -Z
# -----=====[ Polityki domylne ]=====-----
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
# -----=====[ Wyłaczenie internetu w LAN ]=====-----
$ECHO "0" > /proc/sys/net/ipv4/ip_forward
# -----=====[ Usuwamy moduły z pamięci ]=====-----
$DELMODUL ip_nat_ftp
$DELMODUL ip_nat_irc
$DELMODUL ip_conntrack_irc
$DELMODUL ip_conntrack_ftp
# -----=====[ Komunikat ekranowy ]=====-----
$ECHO ""
$HTB stop
$HTB_UP1 stop
$HTB_UP2 stop
$HTB_UP3 stop
#$VIRUS
#$P2P stop
#$ZAPLATA
#$CONNLIMIT
#$STATY
##########################
;;
status0)
##########################
# -----=====[ Komunikat ekranowy ]=====-----
$CZYSC
$ECHO ""
$ECHO $"-------------------[ Table: filter ]-------------------"
$ECHO ""
# -----=====[ Status IPTABLES filter ]=====-----
$IPT -L -v
# -----=====[ Komunikat ekranowy ]=====-----
$ECHO ""
echo " $ILE - Aktualnie komputerow czynnych"
$ECHO "Zrobione!"
$ECHO ""
##########################
;;
status1)
##########################
# -----=====[ Komunikat ekranowy ]=====-----
$CZYSC
$ECHO ""
$ECHO $"-------------------[ Table: nat ]-------------------"
$ECHO ""
# -----=====[ Status IPTABLES nat ]=====-----
$IPT -t nat -L -v
# -----=====[ Komunikat ekranowy ]=====-----
$ECHO ""
echo " $ILE - Aktualnie komputerow czynnych"
$ECHO "Zrobione!"
$ECHO ""
##########################
;;
status2)
##########################
# -----=====[ Komunikat ekranowy ]=====-----
$CZYSC
$ECHO ""
$ECHO $"-------------------[ Table: mangle ]-------------------"
$ECHO ""
# -----=====[ Status IPTABLES mangle ]=====-----
$IPT -t mangle -L -v
# -----=====[ Komunikat ekranowy ]=====-----
$ECHO ""
echo " $ILE - Aktualnie komputerow czynnych"
$ECHO "Zrobione!"
$ECHO ""
##########################
;;
restart)
$0 stop
$0 start
;;
*)
$ECHO ""
$ECHO "Użycie: Firewall [start|stop|restart|status0|status1|status2]"
$ECHO ""
exit 2
esac
exit 0
##########################