#!/bin/bash
#
TH="192.168.0.65" # Trusted hosts
IPT="/sbin/iptables"
EXT_IF="eth0"
#
INT_IF1="eth1"
INT_IF2="eth2"
INT_IF3="eth3"
#
NET_WAN="192.168.0.0/24"
#
NET_LAN1="192.168.1.0/24"
NET_LAN2="192.168.2.0/24"
NET_LAN3="192.168.3.0/24"
#
squid3="3128"
EXT_RDP="3333,3335,3336,5555,6666"
INT_RDP="3389"
escom="8080"
#
#
echo "[+] Flashing all usr rules..."
$IPT -t mangle -F && $IPT -t filter -F && $IPT -t nat -F && $IPT -F && $IPT -X
echo "[+] Enabling ipv4 routing feauture..."
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "[+] Seting global policy to DROP ALL..."
$IPT -P INPUT DROP && $IPT -P OUTPUT DROP && $IPT -P FORWARD DROP
# -----------------------------------------------------------------------------
###### INPUT chain ######
echo "[+] Setting up INPUT chain..."
### state tracking rules
$IPT -A INPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID INPUT PKT " --log-ip-options --log-tcp-options
$IPT -A INPUT -m conntrack --ctstate INVALID -j DROP
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
### anti-spoofing rules
$IPT -A INPUT -i $INT_IF1 ! -s $NET_LAN1 -j LOG --log-prefix "DROP SPOOFED INPUT[1] PKT " # FG company
$IPT -A INPUT -i $INT_IF1 ! -s $NET_LAN1 -j DROP
$IPT -A INPUT -i $INT_IF2 ! -s $NET_LAN2 -j LOG --log-prefix "DROP SPOOFED INPUT[2] PKT " # AF company
$IPT -A INPUT -i $INT_IF2 ! -s $NET_LAN2 -j DROP
$IPT -A INPUT -i $INT_IF3 ! -s $NET_LAN3 -j LOG --log-prefix "DROP SPOOFED INPUT[3] PKT " # free company
$IPT -A INPUT -i $INT_IF3 ! -s $NET_LAN3 -j DROP
### ACCEPT rules [ssh,www,erdp,escom,ping]
$IPT -A INPUT -i $INT_IF1 -p tcp --dport $squid3 -m conntrack --ctstate NEW -j ACCEPT # allow to connetc to proxy from LAN1
$IPT -A INPUT -i $INT_IF2 -p tcp --dport $squid3 -m conntrack --ctstate NEW -j ACCEPT # allow to connetc to proxy from LAN2
$IPT -A INPUT -i $INT_IF3 -p tcp --dport $squid3 -m conntrack --ctstate NEW -j ACCEPT # allow to connetc to proxy from LAN3
#
$IPT -A INPUT -i $EXT_IF -s $TH -p tcp -m multiport --dport ssh,www,$EXT_RDP,$escom -m tcp --syn -m conntrack --ctstate NEW -j ACCEPT # allow tr-ed in-g.
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
### default INPUT LOG rule
$IPT -A INPUT ! -i lo -j LOG --log-prefix "DROP NO-LOOPBACK INPUT PKT " --log-ip-options --log-tcp-options
### make sure that loopback traffic is accepted
$IPT -A INPUT -i lo -j ACCEPT
# -----------------------------------------------------------------------------
###### OUTPUT chain ######
echo "[+] Setting up OUTPUT chain..."
### state tracking rules
$IPT -A OUTPUT -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID OUTPUT PKT " --log-ip-options --log-tcp-options
$IPT -A OUTPUT -m conntrack --ctstate INVALID -j DROP
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
### ACCEPT rules for allowing connections out [ftp,ssh,smtp,www,ntp,pop3,https,rdp,icq,escom]
$IPT -A OUTPUT -o $EXT_IF -p tcp -m multiport --dport ftp,ssh,smtp,www,ntp,pop3,https,$INT_RDP,aol,$escom -m conntrack --ctstate NEW -j ACCEPT
$IPT -A OUTPUT -o $EXT_IF -p udp -m multiport --dport ssh,www,ntp,pop3,https,$INT_RDP,aol,$escom -m conntrack --ctstate NEW -j ACCEPT
#
$IPT -A OUTPUT -o $EXT_IF -p tcp --dport domain -m conntrack --ctstate NEW -j ACCEPT # DNS tcp/udp
$IPT -A OUTPUT -o $EXT_IF -p udp --dport domain -m conntrack --ctstate NEW -j ACCEPT
$IPT -A OUTPUT -o $EXT_IF -p icmp --icmp-type echo-request -j ACCEPT
### default OUTPUT LOG rule
$IPT -A OUTPUT ! -o lo -j LOG --log-prefix "DROP NO-LOOPBACK OUTPUT PKT " --log-ip-options --log-tcp-options
### make sure that loopback traffic is accepted
$IPT -A OUTPUT -o lo -j ACCEPT
# -----------------------------------------------------------------------------
###### FORWARD chain ######
#
echo "[+] Setting up FORWARD chain..."
### state tracking rules
$IPT -A FORWARD -m conntrack --ctstate INVALID -j LOG --log-prefix "DROP INVALID FORWARD PKT " --log-ip-options --log-tcp-options
$IPT -A FORWARD -m conntrack --ctstate INVALID -j DROP
$IPT -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
### anti-spoofing rules
$IPT -A FORWARD -i $INT_IF1 ! -s $NET_LAN1 -j LOG --log-prefix "DROP SPOOFED FORWARD[1] PKT " # FG
$IPT -A FORWARD -i $INT_IF1 ! -s $NET_LAN1 -j DROP
$IPT -A FORWARD -i $INT_IF2 ! -s $NET_LAN2 -j LOG --log-prefix "DROP SPOOFED FORWARD[2] PKT " # AF
$IPT -A FORWARD -i $INT_IF2 ! -s $NET_LAN2 -j DROP
$IPT -A FORWARD -i $INT_IF3 ! -s $NET_LAN3 -j LOG --log-prefix "DROP SPOOFED FORWARD[3] PKT " # free
$IPT -A FORWARD -i $INT_IF3 ! -s $NET_LAN3 -j DROP
$IPT -A FORWARD -p tcp --dport domain -m conntrack --ctstate NEW -j ACCEPT # DNS tcp/udp
$IPT -A FORWARD -p udp --dport domain -m conntrack --ctstate NEW -j ACCEPT
$IPT -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT
### default LOG rule
$IPT -A FORWARD ! -i lo -j LOG --log-prefix "DROP LOOPBACK FORWARD PKT " --log-ip-options --log-tcp-options
# -----------------------------------------------------------------------------
###### NAT rules ######
#
echo "[+] Setting up NAT rules..."
$IPT -t nat -A PREROUTING -p tcp --dport 3333 -i $EXT_IF -j DNAT --to 192.168.1.250:$INT_RDP
$IPT -t nat -A PREROUTING -p tcp --dport 3335 -i $EXT_IF -j DNAT --to 192.168.1.4:$INT_RDP
$IPT -t nat -A PREROUTING -p tcp --dport 3336 -i $EXT_IF -j DNAT --to 192.168.1.2:$INT_RDP # ADDC name: RDC1
$IPT -t nat -A PREROUTING -p tcp --dport 5555 -i $EXT_IF -j DNAT --to 192.168.1.232:$INT_RDP
$IPT -t nat -A PREROUTING -p tcp --dport 6666 -i $EXT_IF -j DNAT --to 192.168.1.2:$escom # escom remote mycompany -> enemy1
#
$IPT -t nat -A PREROUTING -s $NET_LAN1,$NET_LAN2,$NET_LAN3 -p tcp -m tcp --dport www -j REDIRECT --to-ports $squid3
# -----------------------------------------------------------------------------
echo "[+] Mascarade require traffic..."
$IPT -t nat -A POSTROUTING -s $NET_LAN1,$NET_LAN2,$NET_LAN3 -o $EXT_IF -j MASQUERADE
#