...co mě tak napadlo.

Linux a ukázkový skript iptables

Protože jsem marně hledal nějakou funkční ukázku, jak zprovoznit na linuxu firewall iptables, hodím sem aspoň ukázku funkčního skriptu, který se spouští po startu PC, čímž zajistí jak alespoň částečné zabezpečení a zároveň routování a maškarádu pro vnitřní síť.

Řádky jsou zalomené na 80 znaků, pokud je nějaký řádek delší, je jeho pokračování odsazené od kraje

#!/bin/bash
echo "Starting firewall ..."
######## eth1 - vnitrni sit
######## eth0 - internet

VEN=eth0
DOVNITR=eth1
SERVERIP=192.168.0.1
PCIP=192.168.0.2

#Smazeme pripadne predchozi nastaveni firewallu
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Zavedeme moduly pro nestandardni cile
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE

# Modul pro FTP prenosy
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

#Povoli IP forward
echo "1"> /proc/sys/net/ipv4/ip_forward

#Povoli DOS protection
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
iptables -N syn_flood
iptables -A INPUT -i $VEN -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 5 -j RETURN
iptables -A syn_flood -j DROP

#Zakaze Ping of death (povoli maximalne 5 pingu za vterinu)
iptables -A INPUT -p icmp --icmp-type echo-request -m limit
--limit 1/s --limit-burst 5 -j ACCEPT

#zakaz veskery provoz, ktery nebude dale upraveno
iptables -P INPUT DROP
iptables -P FORWARD DROP

#Zakaze pristup na router z $VEN z pseudolokalnich IP
#(tyto IP nemaji v internetu co delat)
iptables -t nat -A PREROUTING -i $VEN -s 192.168.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i $VEN -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i $VEN -s 10.0.0.0/8 -j DROP

#Zakaze AUTH (ident)
iptables -A INPUT -p tcp -i $VEN --dport 113 -j REJECT

#povoli vstup ICMP
iptables -A INPUT -p ICMP --icmp-type 0 -j ACCEPT #echo reply
iptables -A INPUT -p ICMP --icmp-type 3 -j ACCEPT #destination unreachable
iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT #Echo request
iptables -A INPUT -p ICMP --icmp-type 11 -j ACCEPT #time exceeded

#povoli veskery vstup z lo a eth1, vstup z eth0 je zakazany vyjma ICMP viz vyse
iptables -A INPUT -p ALL -i $DOVNITR -j ACCEPT
iptables -A INPUT -p ALL -i lo -j ACCEPT

#povoli vse z vnitrku smerujici na ven
iptables -A FORWARD -i $DOVNITR -o $VEN -j ACCEPT

#povoli vstup zvenci na loopback existujicich spojeni
iptables -A INPUT -i $VEN -m state --state ESTABLISHED,RELATED -j ACCEPT

#Zapne maskaradu
iptables -t nat -A POSTROUTING -o $VEN -j MASQUERADE

#####Povoleni jednotlivych portu
echo "Allowing ports..."

echo "FTP ve vnitrni siti..."
# FTP server
iptables -t nat -A PREROUTING -p tcp -i $VEN --dport 20 -j DNAT --to $PCIP:20
iptables -t nat -A PREROUTING -p tcp -i $VEN --dport 21 -j DNAT --to $PCIP:21
iptables -A FORWARD -i $VEN -p tcp -d $PCIP --dport 20
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $VEN -p tcp -d $PCIP --dport 21
-m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

echo "SSH..."
#Povoleni SSH
iptables -A INPUT -p tcp -i $VEN --dport 22 -j ACCEPT

echo "HTTP..."
#Povoleni pristupu na HTTP na router z venku
iptables -A INPUT -p tcp -i $VEN --dport 80 -j ACCEPT

echo "Another aplication..."
#Libovolna dalsi sluzba poslouchajici na vnitrnim PC na portu 3724
iptables -t nat -A PREROUTING -p tcp -i $VEN --dport 3724 -j DNAT --to $PCIP:3724
iptables -t nat -A PREROUTING -p udp -i $VEN --dport 3724 -j DNAT --to $PCIP:3724

#loguje pakety, ktere nebyly povolene
iptables -A INPUT -j LOG

: exit 0


Neříkám, že tato konfigurace je nejleší, ale každopádně je funkční, což je do začátku práce s iptables to nejdůležitější ;)

Napsal Yim || 14.08.2006, 00:24:42 || Trvalý odkaz
11.08.2008, 12:29:45
not bad(Informatik)
To není špatné :-) doma mám skript složitější, ale proč by to nešlo i jednoduše


Jméno:

E-Mail:

WWW:

Nadpis:

Dva plus dva (číslicí):

Vzkaz: