All pastes #812108 Raw Edit

Untitled

public text v1 · immutable
·published 2007-12-11 14:47 UTC
rendered paste body
#!/bin/bash

########################
## Defining Variables ##
########################

# Path to IPTABLES executable
IPT="/sbin/iptables"

# Interface Card Connected to Local Network
NETWORK="eth0"

# Interface Card Connected to Internet
INTERNET="eth1"

# Loopback Interface
LOOPBACK="lo"

# IP Addreses of Server
SERVER_IP="10.10.1.2"

# Local Network IP Range / Subnet
LOC_IP="10.0.0.0/8"

# INTERNAL Broadcast
LOC_BCAST=10.255.255.255

# IP On The Internet Interface
NET_IP="192.168.1.45"

# SSH Port
SSH_PORT="22"

# FTP on the Network
FTP_IP="10.10.1.2"

# FTP Port
FTP_PORT="21"

# Primiry DNS Server
P_DNS="203.135.0.70"

# Alternate DNS Server
A_DNS="203.135.1.117"

# PATH To Directory Containing PORT and MAC Files
DIR="/files"

# PATH to FILE Containing List of PORTs
PORT="/files/port"

# Path to File Containing List of MAC Addresses
MAC="/files/macs"

#########################
### Flushing IPTABLES ###
#########################

$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

#########################
### Loading Modules   ###
#########################

modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_state
modprobe ipt_tos
modprobe iptable_mangle

########################################
### Setting Default Policies to Drop ###
########################################

$IPT -P INPUT DROP
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

echo Default Policies Set To Drop

####################################
### Setting Needed PROC Settings ###
####################################

#echo 1 > /proc/sys/net/ipv4/ip_forward

####################################
### MAC & IP Addresses Filtering ###
####################################

rm -f $DIR/mac.addresses
cat $MAC | awk '{ print $1 }' >> $DIR/mac1
cat $DIR/mac1 | sed "s/#.*//" > $DIR/mac2
cat $DIR/mac2 | sed "/^ /d;/^$/d;" > $DIR/mac.addresses
rm -f $DIR/mac1
rm -f $DIR/mac2

rm -f $DIR/port.lst
cat $PORT | awk '{ print $1 }' >> $DIR/port1
cat $DIR/port1 | sed "s/#.*//" > $DIR/port2
cat $DIR/port2 | sed "/^ /d;/^$/d;" > $DIR/port.lst
rm -f $DIR/port1
rm -f $DIR/port2

##############################
### Setting IPTABLES Rules ###
##############################

for MACS in `cat $DIR/mac.addresses`
do
MACSS=`echo $MACS |cut -d"|" -f1`
IP=`echo $MACS |cut -d"|" -f2`
    for PORTS in `cat $DIR/port.lst`
    do

     $IPT -A INPUT -s $IP -p tcp --dport $PORTS -m mac --mac-source $MACSS -j ACCEPT
     $IPT -A INPUT -s $IP -p udp --dport $PORTS -m mac --mac-source $MACSS -j ACCEPT
     $IPT -A FORWARD -s $IP -p tcp --dport $PORTS -m mac --mac-source $MACSS -j ACCEPT
     $IPT -A FORWARD -s $IP -p udp --dport $PORTS -m mac --mac-source $MACSS -j ACCEPT

    done
done

echo -----------------------------------------------
echo ---- MAC and IP Address Filtering Complete ----
echo -----------------------------------------------

###############################
### Rules for ICMP Protocol ###
###############################

$IPT -A INPUT -i $NETWORK -s $LOC_IP -d $P_DNS -p icmp -j ACCEPT
$IPT -A INPUT -i $NETWORK -s $LOC_IP -d $A_DNS -p icmp -j ACCEPT
$IPT -A INPUT -i $NETWORK -s $LOC_IP -d $SERVER_IP -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A INPUT -i $NETWORK -s $LOC_IP -d ! $LOC_IP -p icmp --icmp-type echo-request -j DROP
$IPT -A INPUT -i $NETWORK -d $SERVER_IP -p icmp --icmp-type echo-request -j REJECT --reject-with icmp-host-unreachable
$IPT -A INPUT -p icmp -s $LOC_IP -d $LOC_BCAST -j DROP

####################################
###     Droping All Packets      ###
####################################

$IPT -A FORWARD -i $NETWORK -j DROP
$IPT -A INPUT -i $NETWORK -j DROP

#########################################
### MAC Addresses Filtering Completed ###
#########################################

$IPT -t nat -A PREROUTING -i $INTERNET -p tcp --dport 20:21 -j DNAT --to-destination $FTP_IP:$FTP_PORT

#####################
### Rules for FTP ###
#####################

$IPT -A INPUT -i $NETWORK -s 0.0.0.0 -d 0.0.0.0 -p tcp --dport 20:21 -j ACCEPT
$IPT -A INPUT -i $NETWORK -s 0.0.0.0 -d 0.0.0.0 -p tcp --dport 1024:65535 -j ACCEPT
$IPT -A INPUT -i $NETWORK -p tcp -s 0/0 -d $LOC_IP --dport 20:21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i $NETWORK -p tcp -s 0/0 -d $LOC_IP --dport 20:21 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $NETWORK -p tcp -s 0/0 -d $LOC_IP --dport 1024:65535 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i $NETWORK -p tcp -s 0/0 -d $LOC_IP --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $NETWORK -s 0.0.0.0 -d $LOC_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t nat -A POSTROUTING -o $INTERNET -p tcp --dport 21 -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $INTERNET -p tcp --dport 20 -j MASQUERADE

#########################
### SSH From Internet ###
#########################

$IPT -A INPUT -i $INTERNET -p tcp --dport $SSH_PORT -j ACCEPT
$IPT -A INPUT -i $INTERNET -p udp --dport $SSH_PORT -j ACCEPT

########################################################
### Redirecting HTTP Traffic to Squid Proxy Server.  ###
########################################################

$IPT -t nat -A PREROUTING -i $NETWORK -s $LOC_IP -p tcp --dport 80 -j REDIRECT --to-port 8080
$IPT -t nat -A PREROUTING -i $NETWORK -s $LOC_IP -p udp --dport 80 -j REDIRECT --to-port 8080

#################################################
###  MASQUERADE All packets that are Marked.  ###
#################################################

$IPT -t nat -A POSTROUTING -p all -s $LOC_IP -o $INTERNET -j MASQUERADE

###############################################
###  No Restriction for Loopback Interface  ###
###############################################

$IPT -A INPUT -i $LOOPBACK -j ACCEPT
$IPT -A OUTPUT -o $LOOPBACK -j ACCEPT

########################################################################
### Droping Packets coming from internet claming to be from Network  ###
########################################################################

$IPT -A INPUT -i $INTERNET -s 172.16.0.8/16 -d 172.16.0.1/16 -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -i $INTERNET -s 172.16.0.8/16 -d 172.16.0.1/16 -p udp --dport 10000 -j ACCEPT
$IPT -A INPUT -i $INTERNET -s $LOC_IP -j DROP
$IPT -A INPUT -i $INTERNET -d 127.0.0.0/8 -j DROP

#######################################################
###  Accepting Extablished and Related Connections  ###
#######################################################

$IPT -I INPUT -i $NETWORK -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -o $NETWORK -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -i $INTERNET -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o $INTERNET -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

############################################
### Droping Invalid and Unknown Packets  ###
############################################

$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i $INTERNET -m state --state INVALID -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags ACK,FIN FIN -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags ACK,PSH PSH -j DROP
$IPT -A INPUT -i $INTERNET -p tcp --tcp-flags ACK,URG URG -j DROP
$IPT -t nat -A PREROUTING -i $NETWORK -p tcp --syn -s $LOC_IP --dport 80 -j DROP

echo
echo -----------------------------------------------
echo ---------- Firewall Up And Running ------------
echo -----------------------------------------------

#############################################
###        End Of Firewall                ###
#############################################