Skriven av o21storm 2004-07-01 10:10 url:
Kanske kan ge någon nått tips iaf :) Lite brandväggsscript...
#
# FW Script skrivet av Tom Johansson(o21storm), 2003
# Använd hur du vill, jag tar inget ansvar :)
#
#!/bin/sh
clear
# MAIN
IPTABLES=/usr/sbin/iptables
SMTPSERVER=192.168.0.2
SMTPPORT=25
POP3SERVER=192.168.0.3
POP3PORT=110
MORESSHIP=192.168.0.11
MORESSHPORT=21
#Interfaces
EXTERNAL=eth1
INTERNAL=eth0
# Programvariable
PROGG="BGE Firewall 1.0"
#Remote connection
REMOTE="10.10.10.1"
DMZ="Not configured"
SQUID="Yes"
# Firewall rules
echo $PROGG
echo ""
echo "Current settings"
echo ""
echo "------------------------------"
echo "iptables: $IPTABLES"
echo "::PORT ROUTING::"
echo "smtp-server: $SMTPSERVER"
echo "pop3-server: $POP3SERVER"
echo ""
echo "::INTERFACE SETTINGS::"
echo "External(WAN) interface: $EXTERNAL"
echo "DMZ Internface: $DMZ"
echo "Internal(LAN) interface: $INTERNAL"
echo ""
echo "::PROXY SETTINGS"
echo "Squid transparent proxy: $SQUID"
echo ""
echo "::MISC SETTINGS::"
echo "Remote IP Access: $REMOTE"
echo "------------------------------"
echo ""
if [ "$1" = "" ]; then
echo ""
echo "Starta med $0 start"
exit
fi;
# Sätt upp standardregler
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT
# Rensa bort gamla brandväggsregler
$IPTABLES -F
$IPTABLES -t nat -F
# Rensa bort gamla kedjor
$IPTABLES -X
# eth1 utsida
# eth0 insida
# Om maskeringen är kompilerad som modul
# aktivera raden nedan (genom att ta bort # i början på raden)
#modprobe iptable_nat
# Slå på routing
echo "1" > /proc/sys/net/ipv4/ip_forward
# Firewall rules
# IP Adress på eth1 (yttre interface)
MEeth1=`/sbin/ifconfig eth1 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`
# Broadcastadress på eth1
MYBROADCASTeth1=`/sbin/ifconfig eth1 |sed -n '/inet/s/^.*Bcast:\([0-9.]*\).*/\1/p'`
# IP Adress på eth0 (inre interface)
MEeth0=`/sbin/ifconfig eth0 |sed -n '/inet/s/^[ ]*inet addr:\([0-9.]*\).*/\1/p'`
# Broadcastadress på eth0
MYBROADCASTeth0=`/sbin/ifconfig eth0 |sed -n '/inet/s/^.*Bcast:\([0-9.]*\).*/\1/p'`
# Skapa kedjan logdrop som loggar och kastar trafiken
$IPTABLES -N logdrop
$IPTABLES -A logdrop -j LOG
$IPTABLES -A logdrop -j DROP
# Logga och kasta nya TCP-paket som inte är SYN-paket
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW NOT SYN "
$IPTABLES -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "NEW NOT SYN "
$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
# FORWARDREGLER
# Spärra trafik som kommer till broadcastadressen
$IPTABLES -A FORWARD --in-interface eth1 --destination $MYBROADCASTeth0/32 -j logdrop
$IPTABLES -A FORWARD --in-interface eth0 --destination $MYBROADCASTeth1/32 -j logdrop
# Släpp ut trafik från interna nätet, och släpp in svarstrafik
$IPTABLES -A FORWARD --in-interface eth0 -j ACCEPT
$IPTABLES -A FORWARD --in-interface eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Lägg på maskering på utgående trafik som ska ut till Internet så att
# det ser ut som att det är brandväggens utsida som surfar
$IPTABLES -t nat -A POSTROUTING -o eth1 -j SNAT --to $MEeth1
# Tillåt att prata med sig själv
$IPTABLES -A INPUT --in-interface lo --source 127.0.0.0/8 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Tillåt ssh till server ifrån LAN
$IPTABLES -A INPUT -i eth0 -m state --state NEW -p tcp --syn --destination-port 22 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --destination-port 22 -j ACCEPT
# Tillåt inkomande proxy anslutningar
$IPTABLES -A INPUT -i eth0 -m state --state NEW -p tcp --syn --destination-port 3128 -j ACCEPT
$IPTABLES -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -p tcp --destination-port 3128 -j ACCEPT
# Tillåt www till server
$IPTABLES -A INPUT -m state --state NEW -p tcp --syn --destination-port 80 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 80 -j ACCEPT
# Tillå ssl till server
$IPTABLES -A INPUT -m state --state NEW -p tcp --syn --destination-port 443 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --destination-port 443 -j ACCEPT
# Routa till transparent proxy
if [ "$SQUID" == "Yes" ]; then
$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -d ! 192.168.0.1 --dport 80 -j REDIRECT --to-port 3128
fi;
# Routa trafik till pop3 server
$IPTABLES --table nat -A PREROUTING -p tcp --in-interface $EXTERNAL --dport $POP3PORT -j DNAT --to $POP3SERVER:$POP3PORT
$IPTABLES -A FORWARD -p tcp --destination-port $POP3PORT -j ACCEPT
# Routa trafik till smtp server
$IPTABLES --table nat -A PREROUTING -p tcp --in-interface $EXTERNAL --dport $SMTPPORT -j DNAT --to $SMTPSERVER:$SMTPPORT
$IPTABLES -A FORWARD -p tcp --destination-port $SMTPPORT -j ACCEPT
#Routa trafik till Terminal servern
$IPTABLES --table nat -A PREROUTING -p tcp --in-interface $EXTERNAL --source $REMOTE --dport 3389 -j DNAT --to 192.168.0.5:33$
$IPTABLES -A FORWARD -p tcp --destination-port 3389 -j ACCEPT
# Routa trafik till citrix servern
$IPTABLES --table nat -A PREROUTING -p tcp --in-interface $EXTERNAL --dport 433 -j DNAT --to 192.168.0.4:1494
$IPTABLES -A FORWARD -p tcp --destination-port 1494 -j ACCEPT
# Logga och spärra resten
$IPTABLES -A INPUT -j logdrop
$IPTABLES -A FORWARD -j logdrop
echo "$PROGG startad"