#!/bin/bash -x FW='iptables' IF='eth0' #RESET $FW -X $FW -F $FW -t nat -F $FW -t mangle -F $FW -t raw -F #DEFAULT $FW -P INPUT DROP $FW -P OUTPUT DROP $FW -P FORWARD DROP $FW -t mangle -P INPUT ACCEPT $FW -t mangle -P OUTPUT ACCEPT $FW -t mangle -P FORWARD ACCEPT $FW -A INPUT -i lo -j ACCEPT $FW -A OUTPUT -o lo -j ACCEPT #DNS $FW -A INPUT -i $IF -p udp --sport 53 --dport 1024: -j ACCEPT $FW -A OUTPUT -o $IF -p udp --sport 1024: --dport 53 -j ACCEPT #ICMP $FW -A INPUT -i $IF -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT $FW -A OUTPUT -o $IF -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT #PORT ALLOWED TCP_PORT_ALLOWED="20 21 22 53 80 8001 5222 587 443 1863 995 7777" for port in $TCP_PORT_ALLOWED ; do $FW -A INPUT -i $IF -p tcp --sport $port --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT $FW -A OUTPUT -o $IF -p tcp --sport 1024: --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT done UDP_PORT_ALLOWED="" for port in $UDP_PORT_ALLOWED ; do $FW -A INPUT -i $IF -p tcp --sport $port --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT $FW -A OUTPUT -o $IF -p tcp --sport 1024: --dport $port -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT done #CAS PAR CAS FILE='/etc/iptables/scripts/allowed.txt' if [ -f $FILE ] ; then IFS=' ' for ligne in `cat $FILE` ; do host=`echo $ligne | cut -d' ' -f 1` if echo $host | grep -G '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$' ; then ip=$host else ip=`host $host | grep 'has address' | cut -d' ' -f 4` fi port=`echo $ligne | cut -d' ' -f 2` proto=`echo $ligne | cut -d' ' -f 3` $FW -A INPUT -i $IF -p $proto --sport $port --dport 1024: --source $ip -m state --state RELATED,ESTABLISHED -j ACCEPT $FW -A OUTPUT -o $IF -p $proto --sport 1024: --dport $port --destination $ip -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT done fi #LOG $FW -A INPUT -i $IF -j LOG $FW -A OUTPUT -o $IF -j LOG