Požarni zid je mogoče uporabiti tudi za ostale Linux distribucije, saj temelji na iptables.
sudo gedit /etc/network/firewall.shV datoteko prekopirajte spodnjo kodo požarnega zidu. Sledijo ukazi:
sudo chmod 755 /etc/network/firewall.sh sudo chown root.root /etc/network/firewall.sh
sudo sh /etc/network/firewall.sh
Odpremo datoteko z opisom mrežnih nastavitev:
sudo gedit /etc/network/interfaces
Poiščemo naslednji del…
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.255.0
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
dns-search xxx.xxxxxxxxx.SI
…in na konec v novo vrstico dodamo tale ukaz:
up /etc/network/firewall.sh
Privzeto je požarni zid popolnoma zaprt. Nastavljanje požarnega zidu:
sudo gedit /etc/network/firewall.sh
Posamezni ukazi so opisani, treba je pozorno slediti navodilom. Na koncu datoteko shranimo in požarni zid ponovno zaženemo:
sudo sh /etc/network/firewall.sh
# Pozarni zid
# Opisani pozarni zid je predelava pozarnega zidu, ki je bil napisan 23. 9. 2003 in se nahaja na naslovu
# http://tnt.aufbix.org/linux/firewall/, (C) 2003 Jernej Horvat.
# Predelana in poslovenjena razlicica za Kubuntu Linux, (C) 2005 Matej Kovacic
#!/bin/bash
echo "POZARNI ZID (ZA KUBUNTU LINUX)"
echo "------------------------------------------------------------------"
echo "(GPL) 2003 Jernej Horvat, (GPL) 2005 Matej Kovacic"
echo "------------------------------------------------------------------"
echo "We must defend our own privacy if we expect to have any."
echo "..."
echo "People have been defending their own privacy for centuries with"
echo "whispers, darkness, envelopes, closed doors, secret handshakes,"
echo "and couriers."
echo "The technologies of the past did not allow for strong privacy, but"
echo "electronic technologies do."
echo "..."
echo "For privacy to be widespread it must be part of a social contract."
echo "People must come and together deploy these systems for the common"
echo "good."
echo " -- Eric Hughes, 1993."
# Pot do iptables in iproute2 datotek
IPTB="/sbin/iptables"
IP="/sbin/ip"
#############################
# NASTAVITEV MREZNIH KARTIC #
#############################
# Vnesite imena omreznih vmesnikov (kartic) za vas internet in intranet (lokalno omrezje), ce ga imate
# V Linuxu so mrezne kartice oznacene z eth in stevilko.
# "eth0" je prva mrezna kartica, "eth1" druga, itd.
# Navadno smo v internet prikljuceni z eth0.
# UPORABNIKI KABELSKEGA MODEMA ALI NEPOSREDNE OMREZNE POVEZAVE:
INTERNET="eth0"
INTRANET="eth1"
# ADSL UPORABNIKI IN UPORABNIKI KLICNEGA DOSTOPA (DIAL-UP):
# Ce imate ADSL ali klicni dostop, potem namesto INTERNET="eth0" zgoraj napisite INTERNET="ppp0"
# Ce imate kaksno drugacno oznako omreznega vmesnika, lahko seznam omreznih vmesnikov
# z njihovimi nastavitvami izpisete z ukazom sudo ifconfig.
# Kateri IP naslovi so uporabljeni v intranetu (primer za IP rang od 192.168.0.1 do 192.168.0.254):
LAN="192.168.0.0/24"
# IP prehoda (gateway)
# Ce imate staticni (fiksni) zunanji IP naslov in uporabljate NAT, ga vpisite spodaj:
GW_IP="xxx.xxx.xxx.xxx"
########################
# NASTAVITEV INTRANETA #
########################
# Ce imate intranet (lokalno omrezje), nastavite na 1, sicer pustite na 0:
WE_HAVE_INTRANET="0"
# NE SPREMINJAJ: Zacasno izkljucimo IP forward:
echo "0" > /proc/sys/net/ipv4/ip_forward
# NE SPREMINJAJ: najprej "resetiramo" iptabele
$IPTB -F
$IPTB -F INPUT
$IPTB -F FORWARD
$IPTB -F OUTPUT
$IPTB -t nat -F
# NE SPREMINJAJ: INPUT TABLE
# OPOZORILO: S tem ukazom zaklenete dostop do racunalnika. Ce boste v nadaljevanju
# slucajno prevec spreminjali kaksne nastavitve (za katere sicer pise, da se jih
# ne sme spreminjati), se lahko zgodi, da bo racunalnik ostal zaklenjen.
# V primeru, da delate na racunalniku, ki vam fizicno ni dostopen, lahko to pomeni
# tezave, saj boste racunalnik odklenili le, ce boste fizicno prisli do njega.
$IPTB -P INPUT DROP
# NE SPREMINJAJ: dovolimo ze vzpostavljene povezave
$IPTB -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Ce uporabljamo IPSEC odkomentiramo, sicer NE:
# $IPTB -A INPUT -i $INTERNET -p udp --sport 500 --dport 500 -j ACCEPT
# $IPTB -A INPUT -i $INTERNET -p 50 -j ACCEPT
# $IPTB -A INPUT -i $INTERNET -p 51 -j ACCEPT
###############################################################################
# NASTAVITEV VHODNIH POVEZAV IZ LOKALNEGA STREZNIKA (localhost, vmesnik "lo") #
###############################################################################
# Iz lokalnega streznika (localhost - "lo" vmesnik) dovolimo ves promet:
$IPTB -A INPUT -i lo -j ACCEPT
# NE SPREMINJAJ: Zavracanje "broadcast" in "multicast" paketov:
$IPTB -A INPUT -m pkttype --pkt-type broadcast -j DROP
$IPTB -A INPUT -m pkttype --pkt-type multicast -j DROP
####################################################################
# NASTAVITEV (ZAPORA) VHODNIH POVEZAV ZA VSE VMESNIKE (razen "lo") #
####################################################################
# Iskalnik najdi.si se ne drzi "net bontona" in nima dokumentiranega (delovanja) pajka.
# CE ZELITE (in ce imate spletno stran), lahko vkljucite blokado iskalnika najdi.si.
# Na enak nacin lahko vkljucite blokado kateregakoli IP naslova na katerokoli vrata (port).
# STARI IP NASLOVI ISKALNIKA: $IPTB -A INPUT -p tcp -s 193.189.169.64/25 --dport 80 -j DROP
# NOVI IP NASLOVI ISKALNIKA: $IPTB -A INPUT -p tcp -s 195.250.198.0/24 --dport 80 -j DROP
# Katere vhodne TCP povezave dovolimo:
# Primer: TCP_PORTS="22 53 139 445 80 443"
# Ce nimate ssh streznika, izbrisite vrata 22.
# Ce nimate vkljucenega brskanja po Windows omrezjih, izbrisite vrata 139 in 445.
# Ce nimate spletnega streznika, izbrisite vrata 80 (http), oz. 443 (hhtps).
# Vrata 53 (DNS) naj bodo vedno vkljucena, sicer vam internet ne bo deloval pravilno!
# POZOR: Ce zelite dolocena vrata zakleniti, da bodo dostopna le iz dolocenega IP naslova,
# jih tukaj ne navedite, pac pa jih skupaj z IP naslovom navedite v naslednji sekciji!
# Dovoljene vhodne TCP povezave (TCP vrata naj bodo locena s presledki!):
TCP_PORTS="53"
# Katere vhodne UDP povezave dovolimo (UDP vrata naj bodo locena samo z vejicami in ne presledki!):
UDP_PORTS="53"
# NE SPREMINJAJ: izvedi dovoljenja za vhodna TCP vrata, ki jih dovolimo iz interneta:
for i in $TCP_PORTS
do
$IPTB -A INPUT -p tcp -m state --syn --state NEW --dport $i -j ACCEPT
done
# NE SPREMINJAJ: izvedi dovoljenja za UDP vrata, ki jih dovolimo iz interneta:
$IPTB -A INPUT -p udp -m multiport --dport $UDP_PORTS -j ACCEPT
#####################################################################
# POSEBNA NASTAVITEV VHODNIH POVEZAV IZ intraneta (lokalno omrezje) #
#####################################################################
# POZOR! Ce zelimo dovoliti VES vhodni promet BREZ OMEJITEV iz LOKALNEGA omrezja (intranet),
# potem spodno vrstico odkomentirajte:
# $IPTB -A INPUT -i $INTRANET -j ACCEPT
########################################
# ZAKLEP VRAT IZ DOLOCENEGA IP NASLOVA #
########################################
# Ce zelimo dovoliti povezave na dolocena vrata iz samo dolocenih IP naslovov,
# to navedemo spodaj v obliki:
# $IPTB -A INPUT -p tcp -s (IP_naslov) -m state --syn --state NEW --dport (stevilka_vrat) -j ACCEPT
# IP naslov je lahko tudi iz lokalnega omrezja.
# Primer za ssh le iz dolocenih IP naslovov (lahko so zunanji ali iz lokalnega omrezja):
# $IPTB -A INPUT -p tcp -s 193.xxx.xxx.xxx -m state --syn --state NEW --dport 22 -j ACCEPT
# $IPTB -A INPUT -p tcp -s 192.168.0.5 -m state --syn --state NEW --dport 22 -j ACCEPT
# Windows Networking le iz dolocenih IP naslovov (za Windows networking je potrebno odpreti vrata 139 in 445):
# $IPTB -A INPUT -p tcp -s xxx.xxx.xxx.xxx -m state --syn --state NEW --dport 139 -j ACCEPT
# $IPTB -A INPUT -p tcp -s xxx.xxx.xxx.xxx -m state --syn --state NEW --dport 445 -j ACCEPT
# itd. ... ... ...
#######################
# CASOVNI ZAKLEP VRAT #
#######################
# Primer za casovno omejitev priklapljanja na vrata 22. Po treh poiskusih povezave iz istega IP naslova v eni minuti
# bo racunalnik postavil omejitev, da je mozna samo 1 povezava na minuto (iz tega IP naslova).
# Namesto omejitev na minuto (/minute), lahko uporabimo se /second, /hour ali /day.
# Stevilo povezav dolocamo z --limit-burst. Ce je nastavljen na 1, bo dovoljena samo 1 povezava na minuto,
# ce je nastavljen na 5, je najprej dovoljenih 5 povezav, nato pa 3 na minuto.
# Primer za casovno omejitev: 1x priklapljanje na vrata 22, po enem poiskusu omejitev 1 poiskus na minuto:
# $IPTB -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
# $IPTB -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP
# Primer za casovno omejitev: 1x priklapljanje na vrata 22 iz IP naslova 192.168.0.6, po treh poiskusih omejitev 1 poiskus na minuto:
# $IPTB -A INPUT -p tcp -s 192.168.0.6 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
# $IPTB -A INPUT -p tcp -s 192.168.0.6 -m state --syn --state NEW --dport 22 -j DROP
# NE SPREMINJAJ: obravnava identd zahtevkov:
$IPTB -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# NE SPREMINJAJ: obravnava traceroute:
$IPTB -A INPUT -p udp -m limit --limit 3/second --sport 32769:65535 --dport 33434:33523 -j ACCEPT
# NE SPREMINJAJ: zavrzenje (drop) ICMP fragmentov (ki se pogosto uporabljajo v DoS napadih):
$IPTB -A INPUT -i $INTERNET --fragment -p icmp -j DROP
# NE SPREMINJAJ: sprejemanje pravilnih/uporabnih ICMP paketov.
# (ICMP se NE SME popolnoma blokirati, sicer povezava v internet ne deluje):
$IPTB -A INPUT -p icmp --icmp-type 0 -m limit --limit 30/second -j ACCEPT
$IPTB -A INPUT -p icmp --icmp-type 3 -m limit --limit 30/second -j ACCEPT
$IPTB -A INPUT -p icmp --icmp-type 4 -m limit --limit 30/second -j ACCEPT
$IPTB -A INPUT -p icmp --icmp-type 11 -m limit --limit 30/second -j ACCEPT
$IPTB -A INPUT -p icmp --icmp-type 12 -m limit --limit 30/second -j ACCEPT
# NE SPREMINJAJ: obravnava icmp-traceroute:
$IPTB -A INPUT -p icmp --icmp-type 30 -m limit --limit 30/second -j ACCEPT
# NE SPREMINJAJ: obravnava echo-request:
$IPTB -A INPUT -p icmp --icmp-type 8 -m limit --limit 3/second -j ACCEPT
# NE SPREMINJAJ: vse ostalo zavrzemo (sicer je privzeta "politika" nastavljena na zavracanje, a vseeno):
$IPTB -A INPUT -m state --state NEW -j DROP
# NE SPREMINJAJ: FORWARD TABLE
$IPTB -P FORWARD DROP
####################################
# CE UPORABLJATE "port forwarding" #
####################################
# Katera vrata posredujemo ("forward") v nas intranet (primer za vrata 1214 in 6346):
# FWD_TCP_PORTS="1214,6346"
# $IPTB -A FORWARD -p tcp -i $INTERNET -m multiport --dport $FWD_TCP_PORTS -j ACCEPT
# Zacetek pravil za "port forwarding"
# Za vsaka posredovana vrata uporabite svojo vrstico.
# Primer za posredovanje vrat 1214 in 6346 na IP 192.168.1.10:
# $IPTB -t nat -A PREROUTING -p tcp -i $INTERNET --dport 1214 -j DNAT --to 192.168.1.10
# $IPTB -t nat -A PREROUTING -p tcp -i $INTERNET --dport 6346 -j DNAT --to 192.168.1.10
# Konec pravil za "port forwarding"
################################
# CE UPORABLATE NAT, VKLJUCITE #
################################
# Ce uporabljate NAT (deljenje internetne povezave), OBVEZNO vkljucite vse ukaze,
# ki so zakomentirani z dvema ograjicama "##"!
# NE SPREMINJAJ: zavracanje paketkov brez znane povezave
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -A FORWARD -m state --state INVALID -j DROP
# NE SPREMINJAJ: dovoli vracanje paketkov iz ze vzpostavljenih povezav (npr. DNS resolving):
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# NE SPREMINJAJ: zavracanje "broadcast" in "multicast" paketov:
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -A FORWARD -m pkttype --pkt-type broadcast -j DROP
##$IPTB -A FORWARD -m pkttype --pkt-type multicast -j DROP
# NASTAVITEV POSEBNIH PREPOVEDI
# =============================
# Ce zelimo onemogociti dostop do interneta/storitev samo enemu racunalniku v lokalnem omrezju!
# Primer: IP naslovu 192.168.1.100 v lokalnem omrezju dovolimo DNS resolving
# $IPTB -A FORWARD -d 192.168.1.100 -p udp --dport 53 -j ACCEPT
# $IPTB -A FORWARD -d 192.168.1.100 -p tcp --dport 53 -j ACCEPT
# $IPTB -A FORWARD -s 192.168.1.100 -p udp --dport 53 -j ACCEPT
# $IPTB -A FORWARD -s 192.168.1.100 -p tcp --dport 53 -j ACCEPT
# Primer: IP naslovu 192.168.1.100 v lokalnem omrezju dovolimo ntp
# $IPTB -A FORWARD -d 192.168.1.100 -p tcp --dport 123 -j ACCEPT
# $IPTB -A FORWARD -s 192.168.1.100 -p tcp --dport 123 -j ACCEPT
# $IPTB -A FORWARD -d 192.168.1.100 -p udp --dport 123 -j ACCEPT
# $IPTB -A FORWARD -s 192.168.1.100 -p udp --dport 123 -j ACCEPT
# IP naslovu 192.168.1.100 v lokalnem omrezju ne dovolimo nic (drugega)
# $IPTB -A FORWARD -d 192.168.1.100 -j DROP
# $IPTB -A FORWARD -s 192.168.1.100 -j DROP
# NASTAVITEV DOVOLJENJ (CE IMATE NAT, PREGLEJTE!)
# ===============================================
# Lokalnemu omrezju v celoti VEDNO dovolimo DNS resolving
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -A FORWARD -p udp --dport 53 -j ACCEPT
##$IPTB -A FORWARD -p tcp --dport 53 -j ACCEPT
# OPCIJA 1: Vkljucite, ce zelite:
# Lokalnemu omrezju dovolimo priklop na time server preko TIME in SNTP porta
# $IPTB -I FORWARD 1 -p udp --dport 37 -j ACCEPT
# $IPTB -I FORWARD 1 -p tcp --dport 37 -j ACCEPT
# $IPTB -I FORWARD 1 -p tcp --dport 123 -j ACCEPT
# $IPTB -I FORWARD 1 -p udp --dport 123 -j ACCEPT
# OPCIJA 2: Vkljucite, ce zelite:
# Lokalnemu omrezju dovolimo samo surfanje po dolocenih streznikih.
# Primer za streznik www.arnes.si (IP=193.2.1.87):
# $IPTB -A FORWARD -p tcp -d 193.2.1.87 -j ACCEPT
# OPCIJA 3: Vkljucite, ce zelite:
# Lokalnemu omrezju dovolimo priklop na katerokoli WEB stran (POZOR: samo http (vrata 80), ne pa tudi https (vrata 443)!):
##$IPTB -I FORWARD 1 -p tcp --dport 80 -j ACCEPT
# OPCIJA 4: Vkljucite, ce zelite:
# Lokalnemu omrezju dovolimo vzpostavljanje VSEH povezav
# $IPTB -A FORWARD -m state --state NEW -i ! $INTERNET -j ACCEPT
# NASTAVITEV NAT-a (ne spreminjaj!)
# =================================
# NE SPREMINJAJ: Gateway za priklop lokalnega omrezja na internet (POZOR! IP prehoda (gateway) mora biti vpisan v $GW_IP ZGORAJ!)
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -t nat -A POSTROUTING -o $INTERNET -s $LAN -j SNAT --to-source $GW_IP
# NE SPREMINJAJ: poskrbimo, da NAT dela optimalno (pomembno predvsem za ADSL uporabnike).
# Ce uporabljate NAT samo vkljucite, ne spreminjajte:
##$IPTB -A FORWARD --protocol tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# OMEJITEV DOSTOPA GLEDE NA MAC NASLOV
# ====================================
# Vkljucite, ce zelite, da imajo iz intraneta v internet dostop samo mrezne kartice (NIC) z dolocenimi MAC naslovi.
# Taksna omejitev je koristna, kadar zelite omejiti dostop do interneta samo avtoriziranim
# mreznim karticam (racunalnikom, oz. uporabnikom).
# Primer: ce imate lokalno omrezje z namiznimi racunalniki, in bi radi preprecili, da bi se vanj vkljucevali
# npr. uporabniki prenosnih racunalnikov, lahko omejite dostop glede na MAC naslove (serijske stevilke) mreznih kartic.
#
# MAC naslovi morajo biti vneseni v "/etc/network/valid-macs" datoteko.
# for mac in `cat /etc/network/valid-macs`; do $IPTB -I FORWARD -m mac --mac-source $mac -j fwfilter ; done
# Izpis iptables pravil na zaslon (vkljucite, ce zelite):
# $IPTB -L -v -n
# NE SPREMINJAJ: ce imamo intranet, vkljucimo IP forward, sicer ga pustimo izkljucenega:
echo $WE_HAVE_INTRANET > /proc/sys/net/ipv4/ip_forward