#!/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