# iptables Script schreiben



## boss3D (28. Mai 2013)

Hi @ all!

Ich muss für folgende Firewall Policy ein iptables Script schreiben:




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Hier noch der zugehörige Netzplan:




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



^^ Ich habe für jedes System inkl. der Firewall selbst eine VM bekommen (insg. also 6), nur kann ich die jetzt nicht mehr zum Testen verwenden, weil mir mein Router zuhause und der VMware Player alles über den Haufen geschmissen haben. Jetzt stimmen die IPs nicht mehr und die LAN Segmente auch nicht. Ich darf das Script jetzt also quasi "blind" fertig schreiben ... 

Na ja, Hauptproblem sind für mich die DNS Queries und der eine gewünschte Ping in Regel #14. Da bräuchte ich bitte Hilfe. Und ich wäre auch sehr dankbar, wenn mir jemand über meine bereits erstellten Regeln drüber schauen könnte und mir sagen könnte, ob das so stimmt. Wie gesagt, testen ist ja leider nicht mehr möglich. Ich weiß z.B. nicht, ob ich nach --dport einfach den Dienst angeben darf, oder wirklich die Portnummer hinschreiben muss. Etc.

Hier mein bisheriges Ergebnis:

```
#!/bin/bash

### IPTABLES SCRIPT ###

# Load modules
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat

# activate port forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# anti-spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# activate TCP-SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# iptables
IPT=/sbin/iptables

# Firewall settings
# IPs
IP_FIREWALL=83.164.138.158
IP_FIREWALL_LAN=10.0.2.0
IP_FIREWALL_DMZ=10.0.1.0
# Interfaces
IF_INTERNET=eth0
IF_LAN=eth1
IF_DMZ=eth2

# LAN Network
# IPs
RANGE_LAN=10.0.2.0/24
IP_CLIENT=10.0.2.10
IP_NS2=10.0.2.254

# DMZ Network
# IPs
RANGE_DMZ=10.0.1.0/24
IP_NS1=10.0.1.30
IP_MAIL=10.0.1.20
IP_WWW=10.0.1.10

# Delete all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

### Filter ###

# 1
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_NS2 -p udp --dport 53 -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 443 -j ACCEPT

$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport ftp -j ACCEPT

# 2
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_NS1 --dport ssh -j ACCEPT

# 3
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport http -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p udp -s $IP_CLIENT -d $IP_WWW --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport ssh -j ACCEPT

# 4
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport smtp -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport pop3 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport imap -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport ssh -j ACCEPT

# 5
$IPT -A FORWARD -i $IF_LAN -o $IP_FIREWALL -p tcp -s $IP_CLIENT --dport ssh -j ACCEPT

# 6


# 7


# 8


# 9


# 10
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport http -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p udp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport ssh -j ACCEPT

# 11
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport smtp -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport ssh -j ACCEPT

# 12


# 13
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport http -j ACCEPT
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport https -j ACCEPT 

# 14
$IPT -A FORWARD -i $IF_INTERNET -o $IP_FIREWALL -p tcp --dport ssh -j ACCEPT


# 15
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport http -j ACCEPT
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport https -j ACCEPT

### NAT ###

$IPT -t nat -A POSTROUTING -o $IF_INTERNET -j MASQUERADE 

# Log all other packets
$IPT -A INPUT -j LOG --log-prefix "Bad INPUT packet"
$IPT -A OUTPUT -j LOG --log-prefix "Bad OUTPUT packet"
$IPT -A FORWARD -j LOG --log-prefix "Bad FORWARD packet"

# Default policies
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
```
BTW: VMware Workstation hätte ich zwar hier (da könnte man ja schön die LAN Segmente wieder richtig zuweisen), allerdings kann ich darin die VMs nicht starten und bekomme folgende Fehlermeldung: _"This virtual machine is configured for 64-bit guest operating systems. However, 64-bit operation is not possible.  __This host does not support Intel VT-x."_
^^ K. A. was der Mist soll. Ich habe hier Win7 x64 und einen i3 2120 der laut CPU-Z VT-x unterstützt! Und im Player kann ich die VMs ja auch ausführen ...

Danke für baldige Antworten!


----------



## Leandros (29. Mai 2013)

Nach dport gehört eine Port number.

Zu deinem VM Problem: Geh mal ins BIOS / UEFI und kontrolliere ob Virtualisierung aktiviert ist.


----------



## boss3D (30. Mai 2013)

Ok, also muss ich statt jedem Dienst die Port-Nr. angeben?! Mache ich dann gleich ...

Bezgl. BIOS: Habe ich schon gecheckt. Virtualization ist aktiviert. Daneben gäb's noch irgendsoein VT-D Tech Zeugs, das ich nicht aktivieren kann. Ich habe aber ohnehin stark das Gefühl, dass das ganze Problem an der VMware Workstation liegt und nicht am BIOS, der CPU oder sonst was?! Im Player geht ja alles, also ist mit dem unterliegenden Host (meinem System) kompatibilitätsmäßig wohl alles in Ordnung. 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Auf jeden Fall bräuchte ich noch die ganzen DNS Query iptables. Aber bei denen weiß ich gar nicht wirklich, wie ich die angehen soll. Bei google findet man ja zig verschiedene Versionen und ich kann ja nicht "raten", welche für meine gegebene Policy am ehesten passen könnte. Auch habe ich gesehen, dass zumeist 2 iptables mit INPUT / OUTPUT verwendet werden, während ich hier die ganze Zeit mit FORWARD arbeite. Kann ich auch bei den Queries bei FORWARD bleiben?
Und dann kommt ja auch noch hinzu, dass ich tcp und udp erlauben muss, oder? Also so, oder so mind. 2 iptables pro Query?!


----------



## Jimini (31. Mai 2013)

boss3D schrieb:


> Auf jeden Fall bräuchte ich noch die ganzen DNS Query iptables. Aber bei denen weiß ich gar nicht wirklich, wie ich die angehen soll. Bei google findet man ja zig verschiedene Versionen und ich kann ja nicht "raten", welche für meine gegebene Policy am ehesten passen könnte. Auch habe ich gesehen, dass zumeist 2 iptables mit INPUT / OUTPUT verwendet werden, während ich hier die ganze Zeit mit FORWARD arbeite. Kann ich auch bei den Queries bei FORWARD bleiben?
> Und dann kommt ja auch noch hinzu, dass ich tcp und udp erlauben muss, oder? Also so, oder so mind. 2 iptables pro Query?!


 Muss das ganze denn unbedingt von Anfang an 100%ig funktionieren? Wenn nicht, dann mach' es so wie ich: erstmal nur SSH-Zugang erlauben und dann die gedroppten / rejecteten Pakete mit "tail -f /path/to/syslog | grep packet" heraussuchen. Danach dann alles, was benötigt wird, im Skript freischalten.

MfG Jimini


----------



## boss3D (31. Mai 2013)

Hm ... also bei _tail -f /var/log/syslog | grep packet_ bekomme ich jede Menge Pakete von irgendwelchen Source-IPs angezeigt, die zu irgendwelchen Geräten hier in meinem LAN gehören, aber sicher nicht zu den Geräten aus dem Setup, für das die Policy gilt und für das ich das Script schreiben muss. Ich habe ja die VMs dieser Geräte gar nicht laufen. Nur die Firewall VM. Und das Setup kann ich ja mit dem VMware Player nicht wieder aufbauen. Dazu bräuchte es die Workstation ...

Auf jeden Fall habe ich das Script jetzt mal "auf gut Glück" fertiggeschrieben, aber ich weiß eben nicht, ob das alles so stimmt. Nur 1 Zeile für z.B. die DNS Queries kommt mir doch ein Bisschen "wenig" vor, aber ich wüsste auch nicht, was ich sonst noch dazuschreiben sollte. So sieht's jetzt jedenfalls aus:


Spoiler





```
#!/bin/bash

### IPTABLES SCRIPT ###

# Load modules
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat

# activate port forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# anti-spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# activate TCP-SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# iptables
IPT=/sbin/iptables

# Firewall settings
# IPs
IP_FIREWALL=83.164.138.158
IP_FIREWALL_LAN=10.0.2.0
IP_FIREWALL_DMZ=10.0.1.0
# Interfaces
IF_INTERNET=eth0
IF_LAN=eth1
IF_DMZ=eth2

# LAN Network
# IPs
RANGE_LAN=10.0.2.0/24
IP_CLIENT=10.0.2.10
IP_NS2=10.0.2.254

# DMZ Network
# IPs
RANGE_DMZ=10.0.1.0/24
IP_NS1=10.0.1.30
IP_MAIL=10.0.1.20
IP_WWW=10.0.1.10

# Delete all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

### Filter ###

# 1
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_NS2 -p udp --dport 53 -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 443 -j ACCEPT

$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p udp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 21 -j ACCEPT

# 2
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_NS1 --dport 22 -j ACCEPT

# 3
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p udp -s $IP_CLIENT -d $IP_WWW --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 22 -j ACCEPT

# 4
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 25 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 110 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 143 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 22 -j ACCEPT

# 5
$IPT -A FORWARD -i $IF_LAN -o $IP_FIREWALL -p tcp -s $IP_CLIENT --dport 22 -j ACCEPT

# 6
[COLOR=royalblue]$IPT -A FORWARD -i $IP_FIREWALL -o $IF_LAN -d $IP_NS2 -p udp --dport 53 -j ACCEPT
# 7
[COLOR=royalblue]$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -s $IP_NS2 -d $IP_NS1 -p udp --dport 53 -j ACCEPT
# 8
[COLOR=royalblue]$IPT -A FORWARD -i $IF_DMZ -o $IF_LAN -s $IP_NS1 -d $IP_NS2 -p udp --dport 53 -j ACCEPT
# 9
[COLOR=royalblue]$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_NS2 -p udp --dport 53 -j ACCEPT
# 10
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p udp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 22 -j ACCEPT

# 11
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport 25 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport 22 -j ACCEPT

# 12
[COLOR=royalblue]$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_NS1 -p udp --dport 53 -j ACCEPT
# 13
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport 443 -j ACCEPT 

# 14
$IPT -A FORWARD -i $IF_INTERNET -o $IP_FIREWALL -p tcp --dport 22 -j ACCEPT
[COLOR=royalblue]$IPT -A FORWARD -i $IP_INTERNET -o $IP_FIREWALL -p icmp -j ACCEPT
# 15
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport 443 -j ACCEPT

### NAT ###

$IPT -t nat -A POSTROUTING -o $IF_INTERNET -j MASQUERADE 

# Log all other packets
$IPT -A INPUT -j LOG --log-prefix "Bad INPUT packet"
$IPT -A OUTPUT -j LOG --log-prefix "Bad OUTPUT packet"
$IPT -A FORWARD -j LOG --log-prefix "Bad FORWARD packet"

# Default policies
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
```



^^ Vielleicht kann das ja mal jemand mit dem "Netzwerkplan" bzw. der Policy aus dem Startposting vergleichen und mir sagen, ob das so hinkommen könnte ... 

Bei den blauen Zeilen bin ich mir nicht sicher. Der Rest müsste schon hinkommen, oder?


----------



## boss3D (10. Juni 2013)

Habe gerade erfahren, dass ich die Regeln #5 und #15 anscheinend mit OUTPUT lösen muss und demnach dann wahrscheinlich #6 und #14 mit INPUT?!

Wie genau würde das denn dann ausschauen? Ich kann ja nicht einfach FORWARD durch INPUT bzw. OUTPUT ersetzen?! Da muss ja sicher in den jeweiligen Zeilen auch sonst noch was angepasst werden?! 
Kann mir bitte jemand das System mit diesen Chains erklären? Wann brauche ich denn jetzt was? FORWARD von System zu System "hinter" der Firewall?! INPUT vom Internet herein über die Firewall?! Und OUTPUT von "hinter" der Firewall nach draußen ins Internet?! ... 

Hier nochmal meine derzeitige Lsg.:


Spoiler





```
#!/bin/bash

### IPTABLES SCRIPT ###

# Load modules
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat

# activate port forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# anti-spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
# activate TCP-SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# iptables
IPT=/sbin/iptables

# Firewall settings
# IPs
IP_FIREWALL=83.164.138.158
IP_FIREWALL_LAN=10.0.2.0
IP_FIREWALL_DMZ=10.0.1.0
# Interfaces
IF_INTERNET=eth0
IF_LAN=eth1
IF_DMZ=eth2

# LAN Network
# IPs
RANGE_LAN=10.0.2.0/24
IP_CLIENT=10.0.2.10
IP_NS2=10.0.2.254

# DMZ Network
# IPs
RANGE_DMZ=10.0.1.0/24
IP_NS1=10.0.1.30
IP_MAIL=10.0.1.20
IP_WWW=10.0.1.10

# Delete all rules
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

### Filter ###

# 1
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_NS2 -p udp --dport 53 -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 443 -j ACCEPT

$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p udp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_CLIENT -p tcp --dport 21 -j ACCEPT

# 2
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_NS1 --dport 22 -j ACCEPT

# 3
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p udp -s $IP_CLIENT -d $IP_WWW --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_WWW --dport 22 -j ACCEPT

# 4
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 25 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 110 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 143 -j ACCEPT
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -p tcp -s $IP_CLIENT -d $IP_MAIL --dport 22 -j ACCEPT

# 5
$IPT -A FORWARD -i $IF_LAN -o $IP_FIREWALL -p tcp -s $IP_CLIENT --dport 22 -j ACCEPT

# 6
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_LAN -d $IP_NS2 -p udp --dport 53 -j ACCEPT

# 7
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -s $IP_NS2 -d $IP_NS1 -p udp --dport 53 -j ACCEPT

# 8
$IPT -A FORWARD -i $IF_DMZ -o $IF_LAN -s $IP_NS1 -d $IP_NS2 -p udp --dport 53 -j ACCEPT

# 9
$IPT -A FORWARD -i $IF_LAN -o $IF_INTERNET -s $IP_NS2 -p udp --dport 53 -j ACCEPT

# 10
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p udp --dport 20 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 21 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_WWW -p tcp --dport 22 -j ACCEPT

# 11
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport 25 -j ACCEPT
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_MAIL -p tcp --dport 22 -j ACCEPT

# 12
$IPT -A FORWARD -i $IF_INTERNET -o $IF_DMZ -d $IP_NS1 -p udp --dport 53 -j ACCEPT

# 13
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IF_DMZ -o $IF_INTERNET -p tcp --dport 443 -j ACCEPT 

# 14
$IPT -A FORWARD -i $IF_INTERNET -o $IP_FIREWALL -p tcp --dport 22 -j ACCEPT
$IPT -A FORWARD -i $IP_INTERNET -o $IP_FIREWALL -p icmp -j ACCEPT

# 15
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -i $IP_FIREWALL -o $IF_INTERNET -p tcp --dport 443 -j ACCEPT

### NAT ###

$IPT -t nat -A POSTROUTING -o $IF_INTERNET -j MASQUERADE 

# Log all other packets
$IPT -A INPUT -j LOG --log-prefix "Bad INPUT packet"
$IPT -A OUTPUT -j LOG --log-prefix "Bad OUTPUT packet"
$IPT -A FORWARD -j LOG --log-prefix "Bad FORWARD packet"

# Default policies
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
```


----------

