Pagina 1 di 2

Problema Nmap - Risolto

Inviato: mer 14 mar 2007, 15:06
da Vito
Allora ho da poco ricompilato il kernel e oggi andando a scannare un ip con nmap mi ha restituito un milione di volte questo messaggio
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-03-14 16:02 CET
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.10.28.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.10.28.224, 16) => Operation not permitted
Ho provato a vedere se era l'ip ma è evidente che è un problema mio.ho provato a cercare su google ma non sono riuscito a trovare niente di esauriente.Mi affido alle vostre mani....Ho scoperto che è un problema del firewall ma non so cosa disabilirare di preciso.... fatemi sapere!!Grazie di tutto

Inviato: mer 14 mar 2007, 23:57
da mordecai
Hai provato ad immeterti come root?

Inviato: gio 15 mar 2007, 8:03
da mauro
In base a quali dati dici che e' un problema del firewall? (se prima della ricompilata riuscivi a nmappare e dopo no, e nel frattempo non hai modficato le regole del firewall non vedo perche' dovrebbe essere colpa sua)

Inviato: gio 15 mar 2007, 14:25
da Vito
beh ..... non ho detto hce non riesco ad nmappare ,il bello che mi nmappa perfettamente solo che mi restituisce questo messaggio.Il fatto che è dovuto al firewall lo ho scoperto perchè se disattivo il firewall va tutto alla perfezione senza nessun messaggio strano ;P fatemi sapere....

Inviato: gio 15 mar 2007, 17:19
da mauro
ehm, boh...
a me non e' mai successo, ma prova a postare il tuo rc.firewall, magari da li facciamo un po di prove e troviamo cos'e' che non piace a nmap.

Inviato: gio 15 mar 2007, 20:37
da Vito
#!/bin/bash
# [Guarddog2]
# DO NOT EDIT!
# This firewall script was generated by "Guarddog" by Simon Edwards
# http://www.simonzone.com/software/guarddog/ This script requires Linux
# kernel version 2.2.x and ipchains OR Linux kernel 2.4.x and iptables.
#
# [Description]
#
# [Config]
# LOCALPORTRANGESTART=1024
# LOCALPORTRANGEEND=5999
# DISABLED=0
# LOGREJECT=1
# LOGDROP=1
# LOGABORTEDTCP=1
# LOGIPOPTIONS=1
# LOGTCPOPTIONS=1
# LOGTCPSEQUENCE=1
# LOGLEVEL=4
# LOGRATELIMIT=1
# LOGRATE=1
# LOGRATEUNIT=0
# LOGRATEBURST=10
# LOGWARNLIMIT=1
# LOGWARNRATE=2
# LOGWARNRATEUNIT=1
# DHCPC=1
# DHCPCINTERFACENAME=eth0
# DHCPD=1
# DHCPDINTERFACENAME=eth0
# ALLOWTCPTIMESTAMPS=1
# [UserDefinedProtocol]
# ID=1
# NAME=Bnc
# TYPE=TCP
# PORT=31335:31337
# BIDIRECTIONAL=1
# [ServerZone] Internet
# [ClientZone] Locale
# CONNECTED=1
# PROTOCOL=distcc
# PROTOCOL=cvspserver
# PROTOCOL=irc
# PROTOCOL=gnutella
# PROTOCOL=bt-peer
# PROTOCOL=redirect
# PROTOCOL=cddb
# PROTOCOL=pop3s
# PROTOCOL=ping
# PROTOCOL=mysql
# PROTOCOL=directconnect
# PROTOCOL=bt-tracker
# PROTOCOL=pgpkeyserver
# PROTOCOL=postgresql
# PROTOCOL=quench
# PROTOCOL=ftp
# PROTOCOL=smtps
# PROTOCOL=dict
# PROTOCOL=userdefined1
# PROTOCOL=domain
# PROTOCOL=smtp
# PROTOCOL=freedb
# PROTOCOL=rsync
# PROTOCOL=time
# PROTOCOL=vj-traceroute
# PROTOCOL=msnmessenger
# PROTOCOL=ldap-ssl
# PROTOCOL=blubster
# PROTOCOL=https
# PROTOCOL=finger
# PROTOCOL=nicname
# PROTOCOL=ssh
# PROTOCOL=svnserve
# PROTOCOL=edonkey2000
# PROTOCOL=pop3
# PROTOCOL=ldap
# PROTOCOL=http
# REJECT=jabber
# REJECT=directplay
# REJECT=powwow
# REJECT=netmeeting
# REJECT=halflife
# REJECT=aim
# REJECT=diablo2
# REJECT=ymessenger
# REJECT=quake
# REJECT=everquest
# REJECT=yahoogames
# REJECT=quake2
# REJECT=icq
# [ServerZone] Locale
# [ClientZone] Internet
# CONNECTED=1
# PROTOCOL=bt-peer
# PROTOCOL=redirect
# PROTOCOL=pop3s
# PROTOCOL=ping
# PROTOCOL=directconnect
# PROTOCOL=bt-tracker
# PROTOCOL=pgpkeyserver
# PROTOCOL=quench
# PROTOCOL=ftp
# PROTOCOL=smtps
# PROTOCOL=domain
# PROTOCOL=smtp
# PROTOCOL=vj-traceroute
# PROTOCOL=msnmessenger
# PROTOCOL=nicname
# PROTOCOL=auth
# PROTOCOL=edonkey2000
# PROTOCOL=pop3
# PROTOCOL=icq
# [End]

# Real code starts here
# If you change the line below then also change the # DISABLED line above.
DISABLE_GUARDDOG=0
if test -z $GUARDDOG_VERBOSE; then
GUARDDOG_VERBOSE=0
fi;
if [ $DISABLE_GUARDDOG -eq 0 ]; then
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin
# Detect which filter command we should use.
FILTERSYS=0
# 0 = unknown, 1 = ipchains, 2 = iptables
# Check for ipchains.
if [ -e /sbin/ipchains ]; then
FILTERSYS=1
fi;
if [ -e /usr/sbin/ipchains ]; then
FILTERSYS=1
fi;
if [ -e /usr/local/sbin/ipchains ]; then
FILTERSYS=1
fi;
# Check for iptables support.
if [ -e /proc/sys/kernel/osrelease ]; then
KERNEL_VERSION=`sed "s/^\([0-9][0-9]*\.[0-9][0-9]*\).*\$/\1/" < /proc/sys/kernel/osrelease`
if [ $KERNEL_VERSION == "2.6" ]; then
KERNEL_VERSION="2.4"
fi;
if [ $KERNEL_VERSION == "2.5" ]; then
KERNEL_VERSION="2.4"
fi;
if [ $KERNEL_VERSION == "2.4" ]; then
if [ -e /sbin/iptables ]; then
FILTERSYS=2
fi;
if [ -e /usr/sbin/iptables ]; then
FILTERSYS=2
fi;
if [ -e /usr/local/sbin/iptables ]; then
FILTERSYS=2
fi;
fi;
fi;
if [ $FILTERSYS -eq 0 ]; then
logger -p auth.info -t guarddog "ERROR Can't determine the firewall command! (Is ipchains or iptables installed?)"
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "ERRORE: non riesco a determinare il comando di firewall! (E' installato ipchains o iptables?)"
false
fi;
if [ $FILTERSYS -eq 1 ]; then
###############################
###### ipchains ###############
###############################
logger -p auth.info -t guarddog Configuring ipchains firewall now.
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Uso ipchains."
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Reimposto le regole del firewall."
# Shut down all traffic
ipchains -P forward DENY
ipchains -P input DENY
ipchains -P output DENY

# Delete any existing chains
ipchains -F
ipchains -X

[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Imposto i parametri del kernel."
# Turn on kernel IP spoof protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
# Set the up TCP timestamps config
echo 1 > /proc/sys/net/ipv4/tcp_timestamps 2> /dev/null
# Enable TCP SYN Cookie Protection
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 2> /dev/null
# Log truly weird packets.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians 2> /dev/null
# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
# Set kernel rp_filter. NICs used for IPSEC should not have rp_fitler turned on.
# Find the IPs of any ipsecX NICs
IPSEC_IPS="`ifconfig | gawk '/^ipsec\w/ { grabip = 1}
/inet addr:[[:digit:]\\.]+/ { if(grabip==1) printf \"%s \",gensub(/^.*inet addr:([[:digit:]\\.]+).*$/,\"\\\\1\",\"g\",$0)
grabip = 0}'`"
# Build a list of NIC names and metching IPs
IP_NIC_PAIRS="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",$1)}
/inet addr:.*/ {match($0,/inet addr:[[:digit:]\.]+/)
ip=substr($0,RSTART+10,RLENGTH-10)
printf \"%s_%s\\n\",nic,ip }'`"

# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL

# Activate rp_filter for each NIC, except for NICs that are using
# an IP that is involved with IPSEC.
for X in $IP_NIC_PAIRS ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
IP="`echo \"$X\" | cut -f 2 -d _`"
RPF="1"
for SEC_IP in $IPSEC_IPS ; do
if [[ $SEC_IP == $IP ]]; then
RPF="0"
fi
done
echo $RPF > /proc/sys/net/ipv4/conf/$NIC/rp_filter 2> /dev/null
done

echo "1024 5999" > /proc/sys/net/ipv4/ip_local_port_range 2> /dev/null

[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Configuro le regole del firewall."
# Allow loopback traffic.
ipchains -A input -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT

# Allow DHCP clients.
ipchains -A input -i eth0 -p udp --dport 68 --sport 67 -j ACCEPT
ipchains -A output -i eth0 -p udp --dport 67 --sport 68 -j ACCEPT

# Allow DHCP servers.
ipchains -A input -i eth0 -p udp --dport 67 --sport 68 -j ACCEPT
ipchains -A output -i eth0 -p udp --dport 68 --sport 67 -j ACCEPT

# Accept broadcasts from ourself.
# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
IP_BCAST_PAIRS="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",$1)}
/inet addr:.*Bcast/ {match($0,/inet addr:[[:digit:]\\.]+/)
ip=substr($0,RSTART+10,RLENGTH-10)
match($0,/Bcast:[[:digit:]\\.]+/)
bcast = substr($0,RSTART+6,RLENGTH-6)
printf \"%s_%s_%s\\n\",nic,ip,bcast }'`"
# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL
for X in $IP_BCAST_PAIRS ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
IP="`echo \"$X\" | cut -f 2 -d _`"
BCAST="`echo \"$X\" | cut -f 3 -d _`"
ipchains -A input -i $NIC -s $IP -d $BCAST -j ACCEPT
done

# Allow certain critical ICMP types
ipchains -A input -p icmp --sport 3 -j ACCEPT # Dest unreachable
ipchains -A output -p icmp --sport 3 -j ACCEPT # Dest unreachable
ipchains -A forward -p icmp --sport 3 -j ACCEPT &> /dev/null # Dest unreachable
ipchains -A input -p icmp --sport 11 -j ACCEPT # Time exceeded
ipchains -A output -p icmp --sport 11 -j ACCEPT # Time exceeded
ipchains -A forward -p icmp --sport 11 -j ACCEPT &> /dev/null # Time exceeded
ipchains -A input -p icmp --sport 12 -j ACCEPT # Parameter Problem
ipchains -A output -p icmp --sport 12 -j ACCEPT # Parameter Problem
ipchains -A forward -p icmp --sport 12 -j ACCEPT &> /dev/null # Parameter Problem
# Work out our local IPs.
# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
NIC_IP="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",\$1)}
/inet addr:/ { match(\$0,/inet addr:[[:digit:]\\.]+/)
printf \"%s_%s\\n\",nic,substr(\$0,RSTART+10,RLENGTH-10) }
/Bcast/ { match(\$0,/Bcast:[[:digit:]\\.]+/)
printf \"%s_%s\\n\",nic,substr(\$0,RSTART+6,RLENGTH-6) }'`"
# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL
# Create the nicfilt chain
ipchains -N nicfilt
GOT_LO=0
NIC_COUNT=0
for X in $NIC_IP ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
IP="`echo \"$X\" | cut -f 2 -d _`"
ipchains -A nicfilt -i $NIC -j RETURN
# We also take this opportunity to see if we only have a lo interface.
if [ $NIC == "lo" ]; then
GOT_LO=1
fi
let NIC_COUNT=$NIC_COUNT+1
done
IPS="`echo \"$NIC_IP\" | cut -f 2 -d _`"
# Do we have just a lo interface?
if [ $GOT_LO -eq 1 ] && [ $NIC_COUNT -eq 1 ] ; then
MIN_MODE=1
else
MIN_MODE=0
fi
# Are there *any* interfaces?
if [ $NIC_COUNT -eq 0 ] ; then
MIN_MODE=1
fi
# If we only have a lo interface or no interfaces then we assume that DNS
# is not going to work and just skip any iptables calls that need DNS.
ipchains -A nicfilt -l -j DENY

# Create the filter chains
# Create chain to filter traffic going from 'Internet' to 'Locale'
ipchains -N f0to1
# Create chain to filter traffic going from 'Locale' to 'Internet'
ipchains -N f1to0
# Add rules to the filter chains

# Traffic from 'Internet' to 'Locale'
# Allow 'bt-peer'
# Peer BitTorrent
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 6881:6889 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 6881:6889 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 6881:6889 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 6881:6889 --dport 1024:5999 -j ACCEPT
# Allow 'redirect'
ipchains -A f1to0 -p icmp --sport 5 -j ACCEPT
# Allow 'pop3s'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 995:995 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 995:995 --dport 1024:65535 -j ACCEPT
# Allow 'ping'
# Richiesta di risposta (Echo Request)
ipchains -A f0to1 -p icmp --sport 8 -j ACCEPT
# Replica di risposta (Echo Reply)
ipchains -A f1to0 -p icmp --sport 0 -j ACCEPT
# Allow 'directconnect'
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 411:415 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 411:415 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 1411:1415 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1411:1415 --dport 1024:65535 -j ACCEPT
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 411:415 -j ACCEPT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f0to1 -p tcp --sport 1411:1415 --dport 0:65535 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f0to1 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 1411:1415 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC Attiva: utilizzabile da un utente non privilegiato.
ipchains -A f1to0 -p udp --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Allow 'bt-tracker'
# Tracker BitTorrent
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 6969:6969 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 6969:6969 --dport 1024:65535 -j ACCEPT
# Allow 'pgpkeyserver'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 11371:11371 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 11371:11371 --dport 1024:65535 -j ACCEPT
# Allow 'quench'
ipchains -A f0to1 -p icmp --sport 4 -j ACCEPT
# Allow 'ftp'
# Controllo connessione
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 21:21 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 21:21 --dport 1024:65535 -j ACCEPT
# Connessione dati
ipchains -A f1to0 -p tcp --sport 20:20 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1024:65535 --dport 20:20 -j ACCEPT
# Modo passivo della connessione dati
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -j ACCEPT
# Allow 'smtps'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 465:465 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 465:465 --dport 1024:65535 -j ACCEPT
# Allow 'domain'
ipchains -A f0to1 -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 53:53 --dport 0:65535 -j ACCEPT
ipchains -A f0to1 -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A f1to0 -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
# Allow 'smtp'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 25:25 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 25:25 --dport 1024:65535 -j ACCEPT
# Allow 'vj-traceroute'
ipchains -A f0to1 -p udp --sport 0:65535 --dport 33434:33600 -j ACCEPT
# Allow 'msnmessenger'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 1863:1863 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1863:1863 --dport 1024:65535 -j ACCEPT
# Allow 'nicname'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 43:43 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 43:43 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p udp --sport 0:65535 --dport 43:43 -j ACCEPT
# Allow 'auth'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 113:113 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 113:113 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p udp --sport 0:65535 --dport 113:113 -j ACCEPT
ipchains -A f1to0 -p udp --sport 113:113 --dport 0:65535 -j ACCEPT
# Allow 'edonkey2000'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 4661:4661 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 4661:4661 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 4662:4662 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 4662:4662 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 4662:4662 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 4662:4662 --dport 1024:5999 -j ACCEPT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 4665:4665 -j ACCEPT
ipchains -A f1to0 -p udp --sport 4665:4665 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 4666:4666 -j ACCEPT
ipchains -A f1to0 -p udp --sport 4666:4666 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 4666:4666 -j ACCEPT
ipchains -A f0to1 -p udp --sport 4666:4666 --dport 1024:5999 -j ACCEPT
# Allow 'pop3'
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 110:110 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 110:110 --dport 1024:65535 -j ACCEPT
# Allow 'icq'
ipchains -A f0to1 -p udp --sport 0:65535 --dport 5190:5190 -j ACCEPT
ipchains -A f1to0 -p udp --sport 5190:5190 --dport 0:65535 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:65535 --dport 3900:3999 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 3900:3999 --dport 1024:65535 -j ACCEPT

# Rejected traffic from 'Internet' to 'Locale'

# Traffic from 'Locale' to 'Internet'
# Allow 'distcc'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 3632:3632 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 3632:3632 --dport 1024:5999 -j ACCEPT
# Allow 'cvspserver'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 2401:2401 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 2401:2401 --dport 1024:5999 -j ACCEPT
# Allow 'irc'
# Server connection
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 6660:6669 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 6660:6669 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -j ACCEPT
# Allow 'gnutella'
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 6346:6346 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 6346:6346 --dport 0:65535 -j ACCEPT
# Allow 'bt-peer'
# Peer BitTorrent
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 6881:6889 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 6881:6889 --dport 1024:5999 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 6881:6889 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 6881:6889 --dport 1024:65535 -j ACCEPT
# Allow 'redirect'
ipchains -A f0to1 -p icmp --sport 5 -j ACCEPT
# Allow 'cddb'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 888:888 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 888:888 --dport 1024:5999 -j ACCEPT
# Allow 'pop3s'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 995:995 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 995:995 --dport 1024:5999 -j ACCEPT
# Allow 'ping'
# Richiesta di risposta (Echo Request)
ipchains -A f1to0 -p icmp --sport 8 -j ACCEPT
# Replica di risposta (Echo Reply)
ipchains -A f0to1 -p icmp --sport 0 -j ACCEPT
# Allow 'mysql'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 3306:3306 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 3306:3306 --dport 1024:5999 -j ACCEPT
# Allow 'directconnect'
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 411:415 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 411:415 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 1411:1415 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1411:1415 --dport 1024:5999 -j ACCEPT
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 411:415 -j ACCEPT
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f1to0 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
ipchains -A f0to1 -p tcp --sport 0:65535 --dport 1411:1415 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC Attiva: utilizzabile da un utente non privilegiato.
ipchains -A f0to1 -p udp --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Allow 'bt-tracker'
# Tracker BitTorrent
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 6969:6969 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 6969:6969 --dport 1024:5999 -j ACCEPT
# Allow 'pgpkeyserver'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 11371:11371 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 11371:11371 --dport 1024:5999 -j ACCEPT
# Allow 'postgresql'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5432:5432 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 5432:5432 --dport 1024:5999 -j ACCEPT
# Allow 'quench'
ipchains -A f1to0 -p icmp --sport 4 -j ACCEPT
# Allow 'ftp'
# Controllo connessione
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 21:21 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 21:21 --dport 1024:5999 -j ACCEPT
# Connessione dati
ipchains -A f0to1 -p tcp --sport 20:20 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 1024:65535 --dport 20:20 -j ACCEPT
# Modo passivo della connessione dati
ipchains -A f1to0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -j ACCEPT
# Allow 'smtps'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 465:465 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 465:465 --dport 1024:5999 -j ACCEPT
# Allow 'dict'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 2628:2628 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 2628:2628 --dport 1024:5999 -j ACCEPT
# Allow 'userdefined1'
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 31335:31337 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 31335:31337 --dport 0:65535 -j ACCEPT
# Allow 'domain'
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 53:53 --dport 0:65535 -j ACCEPT
ipchains -A f1to0 -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A f0to1 -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
# Allow 'smtp'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 25:25 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 25:25 --dport 1024:5999 -j ACCEPT
# Allow 'freedb'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 8880:8880 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 8880:8880 --dport 1024:5999 -j ACCEPT
# Allow 'rsync'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 873:873 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 873:873 --dport 1024:5999 -j ACCEPT
# Allow 'time'
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 37:37 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 37:37 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 37:37 --dport 1024:5999 -j ACCEPT
# Allow 'vj-traceroute'
ipchains -A f1to0 -p udp --sport 0:65535 --dport 33434:33600 -j ACCEPT
# Allow 'msnmessenger'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 1863:1863 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 1863:1863 --dport 1024:5999 -j ACCEPT
# Allow 'ldap-ssl'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 636:636 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 636:636 --dport 1024:5999 -j ACCEPT
# Allow 'blubster'
# Ricezione dati
ipchains -A f1to0 -p udp --sport 1024:65535 --dport 41170:41170 -j ACCEPT
# Invio dati
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 41170:41170 -j ACCEPT
# Allow 'https'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 443:443 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 443:443 --dport 1024:5999 -j ACCEPT
# Allow 'finger'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 79:79 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 79:79 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p udp --sport 0:65535 --dport 79:79 -j ACCEPT
# Allow 'nicname'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 43:43 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 43:43 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p udp --sport 0:65535 --dport 43:43 -j ACCEPT
# Allow 'ssh'
# Connessione normale
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 22:22 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 22:22 --dport 1024:5999 -j ACCEPT
# Porta sorgente privilegiata (rhosts compatibile.)
ipchains -A f1to0 -p tcp --sport 0:1023 --dport 22:22 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 22:22 --dport 0:1023 -j ACCEPT
# Allow 'svnserve'
# Request connection.
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 3690:3690 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 3690:3690 --dport 1024:5999 -j ACCEPT
# Allow 'edonkey2000'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 4661:4661 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 4661:4661 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 4662:4662 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 4662:4662 --dport 1024:5999 -j ACCEPT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 4662:4662 -j ACCEPT
ipchains -A f1to0 -p tcp ! -y --sport 4662:4662 --dport 1024:65535 -j ACCEPT
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 4665:4665 -j ACCEPT
ipchains -A f0to1 -p udp --sport 4665:4665 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 4666:4666 -j ACCEPT
ipchains -A f0to1 -p udp --sport 4666:4666 --dport 1024:5999 -j ACCEPT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 4666:4666 -j ACCEPT
ipchains -A f1to0 -p udp --sport 4666:4666 --dport 1024:65535 -j ACCEPT
# Allow 'pop3'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 110:110 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 110:110 --dport 1024:5999 -j ACCEPT
# Allow 'ldap'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 389:389 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 389:389 --dport 1024:5999 -j ACCEPT
# Allow 'http'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 80:80 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 80:80 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 8080:8080 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 8080:8080 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 8008:8008 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 8008:8008 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 8000:8000 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 8000:8000 --dport 1024:5999 -j ACCEPT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 8888:8888 -j ACCEPT
ipchains -A f0to1 -p tcp ! -y --sport 8888:8888 --dport 1024:5999 -j ACCEPT

# Rejected traffic from 'Locale' to 'Internet'
# Reject 'jabber'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5222:5222 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 5222:5222 --dport 1024:5999 -l -j REJECT
# Jabber over Secure Socket Layer
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5223:5223 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 5223:5223 --dport 1024:5999 -l -j REJECT
# Reject 'directplay'
# Connessione primaria
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 47624:47624 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 47624:47624 --dport 1024:5999 -l -j REJECT
# Connessione di gioco
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 2300:2400 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 2300:2400 --dport 1024:5999 -l -j REJECT
# Connessione di gioco
ipchains -A f1to0 -p udp --sport 1024:65535 --dport 2300:2400 -l -j REJECT
ipchains -A f0to1 -p udp --sport 2300:2400 --dport 1024:65535 -l -j REJECT
# Connessione di gioco
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 2300:2400 -l -j REJECT
ipchains -A f1to0 -p udp --sport 2300:2400 --dport 1024:65535 -l -j REJECT
# Reject 'powwow'
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 13223:13223 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 13223:13223 --dport 0:65535 -l -j REJECT
ipchains -A f1to0 -p udp --sport 0:65535 --dport 13223:13223 -l -j REJECT
# Reject 'netmeeting'
# Internet Locator Service (ILS)
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 389:389 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 389:389 --dport 0:65535 -l -j REJECT
# Internet Location Service (ILS)
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 522:522 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 522:522 --dport 0:65535 -l -j REJECT
# T.120
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 1503:1503 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 1503:1503 --dport 0:65535 -l -j REJECT
# Impostazione di chiamata H.323
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 1720:1720 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 1720:1720 --dport 0:65535 -l -j REJECT
# Controllo di chiamata audio
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 1731:1731 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 1731:1731 --dport 0:65535 -l -j REJECT
# Controllo di chiamata H.323
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 1024:65535 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 1024:65535 --dport 1024:5999 -l -j REJECT
# Lettura in transito (streaming) H.323
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 1024:65535 -l -j REJECT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 1024:5999 -l -j REJECT
# Reject 'halflife'
# Porta di autenticazione ottenuta
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 7002:7002 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 7002:7002 --dport 1024:5999 -l -j REJECT
# Lista dei server
ipchains -A f1to0 -p udp --sport 1024:65535 --dport 27010:27010 -l -j REJECT
ipchains -A f0to1 -p udp --sport 27010:27010 --dport 1024:65535 -l -j REJECT
# Connessione principale di gioco
ipchains -A f1to0 -p udp --sport 1024:65535 --dport 27005:27050 -l -j REJECT
ipchains -A f0to1 -p udp --sport 27005:27050 --dport 1024:65535 -l -j REJECT
# Reject 'aim'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5190:5193 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 5190:5193 --dport 1024:5999 -l -j REJECT
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 5190:5193 -l -j REJECT
# Reject 'diablo2'
# Server Battlenet
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 6112:6112 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 6112:6112 --dport 0:65535 -l -j REJECT
# Dati di gioco
ipchains -A f1to0 -p tcp --sport 0:65535 --dport 4000:4000 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 4000:4000 --dport 0:65535 -l -j REJECT
# Reject 'ymessenger'
# Accesso alla rete
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5050:5050 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 5050:5050 --dport 1024:5999 -l -j REJECT
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 23:23 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 23:23 --dport 1024:5999 -l -j REJECT
# Conferenza
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 5000:5001 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 5000:5001 --dport 1024:5999 -l -j REJECT
# Conferenza
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 5000:5000 -l -j REJECT
# Reject 'quake'
ipchains -A f1to0 -p udp --sport 0:65535 --dport 26000:26000 -l -j REJECT
ipchains -A f0to1 -p udp --sport 26000:26000 --dport 0:65535 -l -j REJECT
# Reject 'everquest'
# Server Patch EQ
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 7000:7000 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 7000:7000 --dport 1024:5999 -l -j REJECT
# Protocollo dei dati di gioco EQ
ipchains -A f1to0 -p udp --sport 1024:5999 --dport 1024:65535 -l -j REJECT
ipchains -A f0to1 -p udp --sport 1024:65535 --dport 1024:5999 -l -j REJECT
# Reject 'yahoogames'
ipchains -A f1to0 -p tcp --sport 1024:5999 --dport 11999:11999 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 11999:11999 --dport 1024:5999 -l -j REJECT
# Reject 'quake2'
ipchains -A f1to0 -p udp --sport 0:65535 --dport 27910:27910 -l -j REJECT
ipchains -A f0to1 -p udp --sport 27910:27910 --dport 0:65535 -l -j REJECT
# Reject 'icq'
ipchains -A f1to0 -p udp --sport 0:65535 --dport 5190:5190 -l -j REJECT
ipchains -A f0to1 -p udp --sport 5190:5190 --dport 0:65535 -l -j REJECT
ipchains -A f1to0 -p tcp --sport 1024:65535 --dport 1024:65535 -l -j REJECT
ipchains -A f0to1 -p tcp ! -y --sport 1024:65535 --dport 1024:65535 -l -j REJECT
ipchains -A f0to1 -p tcp --sport 1024:65535 --dport 3900:3999 -l -j REJECT
ipchains -A f1to0 -p tcp ! -y --sport 3900:3999 --dport 1024:65535 -l -j REJECT

# Place DENY and log rules at the end of our filter chains.
# Failing all the rules above, we DENY and maybe log the packet.
ipchains -A f0to1 -l -j DENY
# Failing all the rules above, we DENY and maybe log the packet.
ipchains -A f1to0 -l -j DENY

# Add some temp DNS accept rules to the input and output chains.
# This is so that we can pass domain names to ipchains and have ipchains be
# able to look it up without being blocked by the our half-complete firewall.
if [ $MIN_MODE -eq 0 ] ; then
ipchains -A output -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A input -p tcp ! -y --sport 53:53 --dport 0:65535 -j ACCEPT
ipchains -A output -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -A input -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
fi

# Chain to split traffic coming from zone 'Internet' by dest zone
ipchains -N s0
for X in $IPS ; do
ipchains -A s0 -d $X -j f0to1
done
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has a least something in it.
fi
ipchains -A s0 -l -j DENY

# Chain to split traffic coming from zone 'Locale' by dest zone
ipchains -N s1
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has a least something in it.
fi
ipchains -A s1 -j f1to0
# Create the srcfilt chain
ipchains -N srcfilt
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has a least something in it.
fi
# Assume internet default rule
ipchains -A srcfilt -j s0

# Remove the temp DNS accept rules
if [ $MIN_MODE -eq 0 ] ; then
ipchains -D output -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -D input -p tcp ! -y --sport 53:53 --dport 0:65535 -j ACCEPT
ipchains -D output -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
ipchains -D input -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
fi

# The output chain is quite simple. We diverge and filter any traffic from
# the local machine and accept the rest. The rest should have come via the
# forward chain, and hence is already filtered.
ipchains -A output -j nicfilt
for X in $IPS ; do
ipchains -A output -s $X -j s1
done
ipchains -A output -j ACCEPT

ipchains -A input -j nicfilt
# Direct local bound traffic on the input chain to the srcfilt chain
for X in $IPS ; do
ipchains -A input -d $X -j srcfilt
done
ipchains -A input -j ACCEPT

# All traffic on the forward chains goes to the srcfilt chain.
ipchains -A forward -j nicfilt &> /dev/null
ipchains -A forward -j srcfilt &> /dev/null

logger -p auth.info -t guarddog Finished configuring firewall
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Finito."
fi;
if [ $FILTERSYS -eq 2 ]; then
###############################
###### iptables firewall ######
###############################
logger -p auth.info -t guarddog Configuring iptables firewall now.
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Uso iptables."
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Reimposto le regole del firewall."
# Shut down all traffic
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# Delete any existing chains
iptables -F
iptables -X

# Load any special kernel modules.
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Carico i moduli del kernel."
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc

[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Imposto i parametri del kernel."
# Turn on kernel IP spoof protection
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
# Set the TCP timestamps config
echo 1 > /proc/sys/net/ipv4/tcp_timestamps 2> /dev/null
# Enable TCP SYN Cookie Protection if available
test -e /proc/sys/net/ipv4/tcp_syncookies && echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 2> /dev/null
echo 0 > /proc/sys/net/ipv4/conf/default/accept_source_route 2> /dev/null
# Log truly weird packets.
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians 2> /dev/null
echo 1 > /proc/sys/net/ipv4/conf/default/log_martians 2> /dev/null
# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
# Set kernel rp_filter. NICs used for IPSEC should not have rp_fitler turned on.
# Find the IPs of any ipsecX NICs
IPSEC_IPS="`ifconfig | gawk '/^ipsec\w/ { grabip = 1}
/inet addr:[[:digit:]\\.]+/ { if(grabip==1) printf \"%s \",gensub(/^.*inet addr:([[:digit:]\\.]+).*$/,\"\\\\1\",\"g\",$0)
grabip = 0}'`"
# Build a list of NIC names and metching IPs
IP_NIC_PAIRS="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",$1)}
/inet addr:.*/ {match($0,/inet addr:[[:digit:]\.]+/)
ip=substr($0,RSTART+10,RLENGTH-10)
printf \"%s_%s\\n\",nic,ip }'`"

# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL

# Activate rp_filter for each NIC, except for NICs that are using
# an IP that is involved with IPSEC.
for X in $IP_NIC_PAIRS ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
IP="`echo \"$X\" | cut -f 2 -d _`"
RPF="1"
for SEC_IP in $IPSEC_IPS ; do
if [[ $SEC_IP == $IP ]]; then
RPF="0"
fi
done
echo $RPF > /proc/sys/net/ipv4/conf/$NIC/rp_filter 2> /dev/null
done

echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter 2> /dev/null
echo "1024 5999" > /proc/sys/net/ipv4/ip_local_port_range 2> /dev/null

[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Configuro le regole del firewall."
# Set up our logging and packet 'executing' chains
iptables -N logdrop2
iptables -A logdrop2 -j LOG --log-prefix "DROPPED " --log-level 4 --log-ip-options --log-tcp-options --log-tcp-sequence
iptables -A logdrop2 -j DROP
iptables -N logdrop
iptables -A logdrop -m limit --limit 1/second --limit-burst 10 -j logdrop2
iptables -A logdrop -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "LIMITED " --log-level 4
iptables -A logdrop -j DROP
iptables -N logreject2
iptables -A logreject2 -j LOG --log-prefix "REJECTED " --log-level 4 --log-ip-options --log-tcp-options --log-tcp-sequence
iptables -A logreject2 -p tcp -j REJECT --reject-with tcp-reset
iptables -A logreject2 -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A logreject2 -j DROP
iptables -N logreject
iptables -A logreject -m limit --limit 1/second --limit-burst 10 -j logreject2
iptables -A logreject -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "LIMITED " --log-level 4
iptables -A logreject -p tcp -j REJECT --reject-with tcp-reset
iptables -A logreject -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A logreject -j DROP
iptables -N logaborted2
iptables -A logaborted2 -j LOG --log-prefix "ABORTED " --log-level 4 --log-ip-options --log-tcp-options --log-tcp-sequence
iptables -A logaborted2 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -N logaborted
iptables -A logaborted -m limit --limit 1/second --limit-burst 10 -j logaborted2
iptables -A logaborted -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "LIMITED " --log-level 4

# Allow loopback traffic.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow DHCP clients.
iptables -A INPUT -i eth0 -p udp --dport 68 --sport 67 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 67 --sport 68 -j ACCEPT

# Allow DHCP servers.
iptables -A INPUT -i eth0 -p udp --dport 67 --sport 68 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp --dport 68 --sport 67 -j ACCEPT

# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
# Accept broadcasts from ourself.
IP_BCAST_PAIRS="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",$1)}
/inet addr:.*Bcast/ {match($0,/inet addr:[[:digit:]\\.]+/)
ip=substr($0,RSTART+10,RLENGTH-10)
match($0,/Bcast:[[:digit:]\\.]+/)
bcast = substr($0,RSTART+6,RLENGTH-6)
printf \"%s_%s_%s\\n\",nic,ip,bcast }'`"
# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL
for X in $IP_BCAST_PAIRS ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
IP="`echo \"$X\" | cut -f 2 -d _`"
BCAST="`echo \"$X\" | cut -f 3 -d _`"
iptables -A INPUT -i $NIC -s $IP -d $BCAST -j ACCEPT
done

# Detect aborted TCP connections.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -p tcp --tcp-flags RST RST -j logaborted
# Quickly allow anything that belongs to an already established connection.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow certain critical ICMP types
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT # Dest unreachable
iptables -A OUTPUT -p icmp --icmp-type destination-unreachable -j ACCEPT # Dest unreachable
iptables -A FORWARD -p icmp --icmp-type destination-unreachable -j ACCEPT &> /dev/null # Dest unreachable
iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT # Time exceeded
iptables -A OUTPUT -p icmp --icmp-type time-exceeded -j ACCEPT # Time exceeded
iptables -A FORWARD -p icmp --icmp-type time-exceeded -j ACCEPT &> /dev/null # Time exceeded
iptables -A INPUT -p icmp --icmp-type parameter-problem -j ACCEPT # Parameter Problem
iptables -A OUTPUT -p icmp --icmp-type parameter-problem -j ACCEPT # Parameter Problem
iptables -A FORWARD -p icmp --icmp-type parameter-problem -j ACCEPT &> /dev/null # Parameter Problem

# Switch the current language for a moment
GUARDDOG_BACKUP_LANG=$LANG
GUARDDOG_BACKUP_LC_ALL=$LC_ALL
LANG=US
LC_ALL=US
export LANG
export LC_ALL
# Work out our local IPs.
NIC_IP="`ifconfig | gawk '/^\w/ { nic = gensub(/^(.*):.*/,\"\\\\1\",\"g\",\$1)}
/inet addr:/ { match(\$0,/inet addr:[[:digit:]\\.]+/)
printf \"%s_%s\\n\",nic,substr(\$0,RSTART+10,RLENGTH-10) }
/Bcast/ { match(\$0,/Bcast:[[:digit:]\\.]+/)
printf \"%s_%s\\n\",nic,substr(\$0,RSTART+6,RLENGTH-6) }'`"
# Restore the language setting
LANG=$GUARDDOG_BACKUP_LANG
LC_ALL=$GUARDDOG_BACKUP_LC_ALL
export LANG
export LC_ALL
# Create the nicfilt chain
iptables -N nicfilt
GOT_LO=0
NIC_COUNT=0
for X in $NIC_IP ; do
NIC="`echo \"$X\" | cut -f 1 -d _`"
iptables -A nicfilt -i $NIC -j RETURN
# We also take this opportunity to see if we only have a lo interface.
if [ $NIC == "lo" ]; then
GOT_LO=1
fi
let NIC_COUNT=$NIC_COUNT+1
done
IPS="`echo \"$NIC_IP\" | cut -f 2 -d _`"
iptables -A nicfilt -j logdrop
# Do we have just a lo interface?
if [ $GOT_LO -eq 1 ] && [ $NIC_COUNT -eq 1 ] ; then
MIN_MODE=1
else
MIN_MODE=0
fi
# Are there *any* interfaces?
if [ $NIC_COUNT -eq 0 ] ; then
MIN_MODE=1
fi
# If we only have a lo interface or no interfaces then we assume that DNS
# is not going to work and just skip any iptables calls that need DNS.

# Create the filter chains
# Create chain to filter traffic going from 'Internet' to 'Locale'
iptables -N f0to1
# Create chain to filter traffic going from 'Locale' to 'Internet'
iptables -N f1to0
# Add rules to the filter chains

# Traffic from 'Internet' to 'Locale'
# Allow 'bt-peer'
# Peer BitTorrent
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 6881:6889 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 6881:6889 -m state --state NEW -j ACCEPT
# Allow 'redirect'
iptables -A f1to0 -p icmp --icmp-type redirect -j ACCEPT
# Allow 'pop3s'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 995:995 -m state --state NEW -j ACCEPT
# Allow 'ping'
# Richiesta di risposta (Echo Request)
iptables -A f0to1 -p icmp --icmp-type echo-request -j ACCEPT
# Replica di risposta (Echo Reply)
iptables -A f1to0 -p icmp --icmp-type echo-reply -j ACCEPT
# Allow 'directconnect'
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 411:415 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 1411:1415 -m state --state NEW -j ACCEPT
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
iptables -A f0to1 -p udp --sport 1024:65535 --dport 411:415 -j ACCEPT
iptables -A f0to1 -p udp --sport 1024:65535 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f0to1 -p tcp --sport 1411:1415 --dport 0:65535 -m state --state NEW -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f0to1 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f1to0 -p tcp --sport 0:65535 --dport 1411:1415 -m state --state NEW -j ACCEPT
# Modalità DC Attiva: utilizzabile da un utente non privilegiato.
iptables -A f1to0 -p udp --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Allow 'bt-tracker'
# Tracker BitTorrent
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 6969:6969 -m state --state NEW -j ACCEPT
# Allow 'pgpkeyserver'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 11371:11371 -m state --state NEW -j ACCEPT
# Allow 'quench'
iptables -A f0to1 -p icmp --icmp-type source-quench -j ACCEPT
# Allow 'ftp'
# Controllo connessione
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 21:21 -m state --state NEW -j ACCEPT
# Connessione dati
# - Handled by netfilter state tracking
# Modo passivo della connessione dati
# - Handled by netfilter state tracking
# Allow 'smtps'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 465:465 -m state --state NEW -j ACCEPT
# Allow 'domain'
iptables -A f0to1 -p tcp --sport 0:65535 --dport 53:53 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
# Allow 'smtp'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 25:25 -m state --state NEW -j ACCEPT
# Allow 'vj-traceroute'
iptables -A f0to1 -p udp --sport 0:65535 --dport 33434:33600 -j ACCEPT
# Allow 'msnmessenger'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 1863:1863 -m state --state NEW -j ACCEPT
# Allow 'nicname'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 43:43 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p udp --sport 0:65535 --dport 43:43 -j ACCEPT
# Allow 'auth'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 113:113 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p udp --sport 0:65535 --dport 113:113 -j ACCEPT
# Allow 'edonkey2000'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 4661:4661 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 4662:4662 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 4662:4662 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p udp --sport 1024:65535 --dport 4665:4665 -j ACCEPT
iptables -A f0to1 -p udp --sport 1024:65535 --dport 4666:4666 -j ACCEPT
iptables -A f1to0 -p udp --sport 1024:5999 --dport 4666:4666 -j ACCEPT
# Allow 'pop3'
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 110:110 -m state --state NEW -j ACCEPT
# Allow 'icq'
iptables -A f0to1 -p udp --sport 0:65535 --dport 5190:5190 -j ACCEPT
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:65535 --dport 3900:3999 -m state --state NEW -j ACCEPT

# Rejected traffic from 'Internet' to 'Locale'

# Traffic from 'Locale' to 'Internet'
# Allow 'distcc'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 3632:3632 -m state --state NEW -j ACCEPT
# Allow 'cvspserver'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 2401:2401 -m state --state NEW -j ACCEPT
# Allow 'irc'
# Server connection
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 6660:6669 -m state --state NEW -j ACCEPT
# - Handled by netfilter state tracking
# Allow 'gnutella'
iptables -A f1to0 -p tcp --sport 0:65535 --dport 6346:6346 -m state --state NEW -j ACCEPT
# Allow 'bt-peer'
# Peer BitTorrent
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 6881:6889 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 6881:6889 -m state --state NEW -j ACCEPT
# Allow 'redirect'
iptables -A f0to1 -p icmp --icmp-type redirect -j ACCEPT
# Allow 'cddb'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 888:888 -m state --state NEW -j ACCEPT
# Allow 'pop3s'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 995:995 -m state --state NEW -j ACCEPT
# Allow 'ping'
# Richiesta di risposta (Echo Request)
iptables -A f1to0 -p icmp --icmp-type echo-request -j ACCEPT
# Replica di risposta (Echo Reply)
iptables -A f0to1 -p icmp --icmp-type echo-reply -j ACCEPT
# Allow 'mysql'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 3306:3306 -m state --state NEW -j ACCEPT
# Allow 'directconnect'
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 411:415 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 1411:1415 -m state --state NEW -j ACCEPT
# Questo protocollo è usato per connettersi a degli hub e ad altri utenti.
iptables -A f1to0 -p udp --sport 1024:5999 --dport 411:415 -j ACCEPT
iptables -A f1to0 -p udp --sport 1024:5999 --dport 1411:1415 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -m state --state NEW -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f1to0 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
# Modalità DC attiva: è utilizzabile da un utente non privilegiato.
iptables -A f0to1 -p tcp --sport 0:65535 --dport 1411:1415 -m state --state NEW -j ACCEPT
# Modalità DC Attiva: utilizzabile da un utente non privilegiato.
iptables -A f0to1 -p udp --sport 0:65535 --dport 1411:1415 -j ACCEPT
# Allow 'bt-tracker'
# Tracker BitTorrent
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 6969:6969 -m state --state NEW -j ACCEPT
# Allow 'pgpkeyserver'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 11371:11371 -m state --state NEW -j ACCEPT
# Allow 'postgresql'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5432:5432 -m state --state NEW -j ACCEPT
# Allow 'quench'
iptables -A f1to0 -p icmp --icmp-type source-quench -j ACCEPT
# Allow 'ftp'
# Controllo connessione
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 21:21 -m state --state NEW -j ACCEPT
# Connessione dati
# - Handled by netfilter state tracking
# Modo passivo della connessione dati
# - Handled by netfilter state tracking
# Allow 'smtps'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 465:465 -m state --state NEW -j ACCEPT
# Allow 'dict'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 2628:2628 -m state --state NEW -j ACCEPT
# Allow 'userdefined1'
iptables -A f1to0 -p tcp --sport 0:65535 --dport 31335:31337 -m state --state NEW -j ACCEPT
# Allow 'domain'
iptables -A f1to0 -p tcp --sport 0:65535 --dport 53:53 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
# Allow 'smtp'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 25:25 -m state --state NEW -j ACCEPT
# Allow 'freedb'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 8880:8880 -m state --state NEW -j ACCEPT
# Allow 'rsync'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 873:873 -m state --state NEW -j ACCEPT
# Allow 'time'
iptables -A f1to0 -p udp --sport 1024:5999 --dport 37:37 -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 37:37 -m state --state NEW -j ACCEPT
# Allow 'vj-traceroute'
iptables -A f1to0 -p udp --sport 0:65535 --dport 33434:33600 -j ACCEPT
# Allow 'msnmessenger'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 1863:1863 -m state --state NEW -j ACCEPT
# Allow 'ldap-ssl'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 636:636 -m state --state NEW -j ACCEPT
# Allow 'blubster'
# Ricezione dati
iptables -A f1to0 -p udp --sport 1024:65535 --dport 41170:41170 -j ACCEPT
# Invio dati
iptables -A f0to1 -p udp --sport 1024:65535 --dport 41170:41170 -j ACCEPT
# Allow 'https'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 443:443 -m state --state NEW -j ACCEPT
# Allow 'finger'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 79:79 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 0:65535 --dport 79:79 -j ACCEPT
# Allow 'nicname'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 43:43 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 0:65535 --dport 43:43 -j ACCEPT
# Allow 'ssh'
# Connessione normale
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 22:22 -m state --state NEW -j ACCEPT
# Porta sorgente privilegiata (rhosts compatibile.)
iptables -A f1to0 -p tcp --sport 0:1023 --dport 22:22 -m state --state NEW -j ACCEPT
# Allow 'svnserve'
# Request connection.
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 3690:3690 -m state --state NEW -j ACCEPT
# Allow 'edonkey2000'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 4661:4661 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 4662:4662 -m state --state NEW -j ACCEPT
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 4662:4662 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 1024:5999 --dport 4665:4665 -j ACCEPT
iptables -A f1to0 -p udp --sport 1024:5999 --dport 4666:4666 -j ACCEPT
iptables -A f0to1 -p udp --sport 1024:65535 --dport 4666:4666 -j ACCEPT
# Allow 'pop3'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 110:110 -m state --state NEW -j ACCEPT
# Allow 'ldap'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 389:389 -m state --state NEW -j ACCEPT
# Allow 'http'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 80:80 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 8080:8080 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 8008:8008 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 8000:8000 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 8888:8888 -m state --state NEW -j ACCEPT

# Rejected traffic from 'Locale' to 'Internet'
# Reject 'jabber'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5222:5222 -m state --state NEW -j logreject
# Jabber over Secure Socket Layer
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5223:5223 -m state --state NEW -j logreject
# Reject 'directplay'
# Connessione primaria
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 47624:47624 -m state --state NEW -j logreject
# Connessione di gioco
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 2300:2400 -m state --state NEW -j logreject
# Connessione di gioco
iptables -A f1to0 -p udp --sport 1024:65535 --dport 2300:2400 -j logreject
# Connessione di gioco
iptables -A f0to1 -p udp --sport 1024:65535 --dport 2300:2400 -j logreject
# Reject 'powwow'
iptables -A f1to0 -p tcp --sport 0:65535 --dport 13223:13223 -m state --state NEW -j logreject
iptables -A f1to0 -p udp --sport 0:65535 --dport 13223:13223 -j logreject
# Reject 'netmeeting'
# Internet Locator Service (ILS)
iptables -A f1to0 -p tcp --sport 0:65535 --dport 389:389 -m state --state NEW -j logreject
# Internet Location Service (ILS)
iptables -A f1to0 -p tcp --sport 0:65535 --dport 522:522 -m state --state NEW -j logreject
# T.120
iptables -A f1to0 -p tcp --sport 0:65535 --dport 1503:1503 -m state --state NEW -j logreject
# Impostazione di chiamata H.323
iptables -A f1to0 -p tcp --sport 0:65535 --dport 1720:1720 -m state --state NEW -j logreject
# Controllo di chiamata audio
iptables -A f1to0 -p tcp --sport 0:65535 --dport 1731:1731 -m state --state NEW -j logreject
# Controllo di chiamata H.323
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 1024:65535 -m state --state NEW -j logreject
# Lettura in transito (streaming) H.323
iptables -A f1to0 -p udp --sport 1024:5999 --dport 1024:65535 -j logreject
# Reject 'halflife'
# Porta di autenticazione ottenuta
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 7002:7002 -m state --state NEW -j logreject
# Lista dei server
iptables -A f1to0 -p udp --sport 1024:65535 --dport 27010:27010 -j logreject
# Connessione principale di gioco
iptables -A f1to0 -p udp --sport 1024:65535 --dport 27005:27050 -j logreject
# Reject 'aim'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5190:5193 -m state --state NEW -j logreject
iptables -A f1to0 -p udp --sport 1024:5999 --dport 5190:5193 -j logreject
# Reject 'diablo2'
# Server Battlenet
iptables -A f1to0 -p tcp --sport 0:65535 --dport 6112:6112 -m state --state NEW -j logreject
# Dati di gioco
iptables -A f1to0 -p tcp --sport 0:65535 --dport 4000:4000 -m state --state NEW -j logreject
# Reject 'ymessenger'
# Accesso alla rete
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5050:5050 -m state --state NEW -j logreject
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 23:23 -m state --state NEW -j logreject
# Conferenza
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 5000:5001 -m state --state NEW -j logreject
# Conferenza
iptables -A f1to0 -p udp --sport 1024:5999 --dport 5000:5000 -j logreject
# Reject 'quake'
iptables -A f1to0 -p udp --sport 0:65535 --dport 26000:26000 -j logreject
# Reject 'everquest'
# Server Patch EQ
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 7000:7000 -m state --state NEW -j logreject
# Protocollo dei dati di gioco EQ
iptables -A f1to0 -p udp --sport 1024:5999 --dport 1024:65535 -j logreject
# Reject 'yahoogames'
iptables -A f1to0 -p tcp --sport 1024:5999 --dport 11999:11999 -m state --state NEW -j logreject
# Reject 'quake2'
iptables -A f1to0 -p udp --sport 0:65535 --dport 27910:27910 -j logreject
# Reject 'icq'
iptables -A f1to0 -p udp --sport 0:65535 --dport 5190:5190 -j logreject
iptables -A f1to0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j logreject
iptables -A f0to1 -p tcp --sport 1024:65535 --dport 3900:3999 -m state --state NEW -j logreject

# Place DROP and log rules at the end of our filter chains.
# Failing all the rules above, we log and DROP the packet.
iptables -A f0to1 -j logdrop
# Failing all the rules above, we log and DROP the packet.
iptables -A f1to0 -j logdrop

# Add some temp DNS accept rules to the input and output chains.
# This is so that we can pass domain names to ipchains and have iptables be
# able to look it up without being blocked by the our half-complete firewall.
if [ $MIN_MODE -eq 0 ] ; then
iptables -A OUTPUT -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
iptables -A INPUT -p tcp ! --syn --sport 53:53 --dport 0:65535 -j ACCEPT
iptables -A OUTPUT -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
iptables -A INPUT -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
fi

# Chain to split traffic coming from zone 'Internet' by dest zone
iptables -N s0
for X in $IPS ; do
iptables -A s0 -d $X -j f0to1
done
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has at least something in it.
fi
iptables -A s0 -j logdrop

# Chain to split traffic coming from zone 'Locale' by dest zone
iptables -N s1
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has at least something in it.
fi
iptables -A s1 -j f1to0
# Create the srcfilt chain
iptables -N srcfilt
if [ $MIN_MODE -eq 0 ] ; then
true # make sure this if [] has at least something in it.
fi
# Assume internet default rule
iptables -A srcfilt -j s0

if [ $MIN_MODE -eq 0 ] ; then
# Remove the temp DNS accept rules
iptables -D OUTPUT -p tcp --sport 0:65535 --dport 53:53 -j ACCEPT
iptables -D INPUT -p tcp ! --syn --sport 53:53 --dport 0:65535 -j ACCEPT
iptables -D OUTPUT -p udp --sport 0:65535 --dport 53:53 -j ACCEPT
iptables -D INPUT -p udp --sport 53:53 --dport 0:65535 -j ACCEPT
fi

# The output chain is very simple. We direct everything to the
# 'source is local' split chain.
iptables -A OUTPUT -j s1

iptables -A INPUT -j nicfilt
iptables -A INPUT -j srcfilt

# All traffic on the forward chains goes to the srcfilt chain.
iptables -A FORWARD -j srcfilt &> /dev/null

logger -p auth.info -t guarddog Finished configuring firewall
[ $GUARDDOG_VERBOSE -eq 1 ] && echo "Finito."
fi;
fi;
true

Inviato: gio 15 mar 2007, 22:51
da mauro
estica... :)
pensavo che sarebbe stato qualcosa di un po piu' corto... Ci mettero' un po' a leggerlo tutto...

intanto, giusto per fare una prova, se dai i comandi

iptables -P OUTPUT ALLOW
iptables -F OUTPUT

nmap ti da ancora l'errore di prima?

[edit1] no, come non detto, ho finito di dargli una lettura veloce: prova a guardare i log, tutte le connessioni rifiutate dovrebbero essere loggate, di conseguenza nei log dovresti trovare su quali porte nmap viene bloccato[/edit1]

[edit2]cio' che ho scritto in edit1 ripensandoci e' abbastanza una vaccata dato che le porte su cui viene bloccato dal fw si deducono gia' da rc.firewall, e quelle segnalate nel log saranno una infinita'... [/edit2]

Inviato: gio 15 mar 2007, 23:28
da mauro

Inviato: sab 17 mar 2007, 15:52
da mauro
Allora, mi sono riletto con un po' piu' di calma le regole del tuo fw:

tutto quanto esce dal tuo pc viene fatto passare nella catena f1to0, che tra le altre regole contiene anche

Codice: Seleziona tutto

iptables -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
quindi se dici a nmap di uscire dalle porte dalla 1411 alla 1415 ( nmap --source-port 1411 xx.xx.xx.xx ) non dovresti avere piu' errori.

Inviato: mar 20 mar 2007, 11:27
da Vito
mauro ha scritto:Allora, mi sono riletto con un po' piu' di calma le regole del tuo fw:

tutto quanto esce dal tuo pc viene fatto passare nella catena f1to0, che tra le altre regole contiene anche

Codice: Seleziona tutto

iptables -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -m state --state NEW -j ACCEPT
iptables -A f1to0 -p udp --sport 1411:1415 --dport 0:65535 -j ACCEPT
quindi se dici a nmap di uscire dalle porte dalla 1411 alla 1415 ( nmap --source-port 1411 xx.xx.xx.xx ) non dovresti avere piu' errori.
grazie ora l'unica cortesia che ti chiedo è quella di incollarmi il codice preciso che devo inserire,,,,,il firewall l'ho creato con guarddog proprio perchè non ero capace di creare il file manualmente .... GRAZIE!!!! ::)

Inviato: mar 20 mar 2007, 12:11
da mauro
mah, se ho "decifrato" correttamente il tuo firewall, senza che tu debba modificare nulla usando nmap con l'opzione qui sotto:

Codice: Seleziona tutto

nmap --source-port 1411 unQualsiasiIP 
dovresti nmappare senza ricevere errori.

Fammi sapere!

P.S. se vuoi giocare un po' con iptables (oltre ai vari articoli nella documentazione di slacky) prova a guardare qui http://danieldegraaf.afraid.org/info/iptables/examples

Inviato: mar 20 mar 2007, 13:38
da Vito
bash-3.1# nmap --source-port 1411 -P0 87.11.92.224

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-03-20 14:26 CET
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
sendto in send_ip_packet: sendto(5, packet, 44, 0, 87.11.92.224, 16) => Operation not permitted
stesso erroer :(

Inviato: mar 20 mar 2007, 13:57
da mauro
Ok, mi saro' perso qualche regola x strada. Facciamo un'altra prova.

da root dai:

Codice: Seleziona tutto

iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
poi riprova e vediamo se nmap si lamenta ancora.

P.S. l'errore te lo da lo stesso anche senza il -P0?

Inviato: gio 22 mar 2007, 8:22
da mauro
mi hai gia' risposto ieri in chat (ovvero funziona solo se imposti la policy di accept ad output e ne flushi le regole), quindi proviamo cosi':

edita l'rc.firewall e modifica la linea

Codice: Seleziona tutto

iptables -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -m state --state NEW -j ACCEPT
in

Codice: Seleziona tutto

iptables -A f1to0 -p tcp --sport 1411:1415 --dport 0:65535 -j ACCEPT
Fai ripartire il firewall e riprova con

Codice: Seleziona tutto

nmap --source-port 1411 -P0 unQualsiasiIP

Inviato: gio 22 mar 2007, 14:05
da Vito
FUNZIONA !!!ora però dovro usare sempre l'opzione --source-port 1411 ???comunque Grazie Davvero!!!