aiuto configurazione firewall con script

Sicurezza del sistema: firewall, antispam, antivirus, ssh, patch, bug, eccetera.
Scrivi risposta
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

aiuto configurazione firewall con script

Messaggio da eclettric0 »

Ragazzi serve una mano:
Ho creato attraverso il wiki di ubuntu lo script adatto a dare a Iptables le indicazioni di configurazione delle CHAIN.

Codice: Seleziona tutto

#!/bin/bash

#blocca tutti i pacchetti in entrata
iptables -P INPUT  DROP

#Blocca tutti i pacchetti di passaggio FORWARD
iptables -P FORWARD  DROP

#Consente traffico all'interno del pc
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT 

#Autorizza tutto il traffico da noi richiesto
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Ho messo il codice nel file /etc/init.d (dopo aver messo i giusti permessi) e poi ho fatto il collegamento simbolico al file /etc/rc2.d/ con il comando:

Codice: Seleziona tutto

ln -s /etc/init.d/script /etc/rc2.d/SXXscript
però all'avvio Iptables non viene configurato a dovere ???

che cosa mi manca?
Carlin0
Rampante Reduce
Rampante Reduce
Messaggi: 7453
Iscrizione: lunedì 2 novembre 2009, 15:29
Desktop: Gnome 2.30.2
Distribuzione: Debian Squeeze
Località: Augusta Taurinorum

Re: aiuto configurazione firewall con script

Messaggio da Carlin0 »

ti consiglio un'interfaccia grafica tipo firestarter è moOOolto + semplice  :)
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

Si lo so anzi lo uso sul mio pc fisso che per fortuna non ha problemi  ;D

Il problema è sul netbook-remix che ad accensione mi provoca uno strano errore quando avvia firestarter all'avvio del pc. Quindi lo eliminato. E perciò ho deciso di imparare ad usare Iptables.

Non so potreste dirmi quindi come avviarlo al boot del pc?
Avatar utente
Pandafunk
Prode Principiante
Messaggi: 220
Iscrizione: martedì 15 aprile 2008, 19:03
Distribuzione: Ubuntu GNOME 14.04 LTS
Località: Licodia Eubea (CT)
Contatti:

Re: aiuto configurazione firewall con script

Messaggio da Pandafunk »

occhio che in /etc/init.d/ ci stanno gli script che prevedono gli argomenti {start|reload|restart|stop} etc etc... se glielo metti così come l'hai postato non credo che ti funzionerà mai... dovresti prendereuno script init.d esistente e lo modifichi (ad esempio che sotto start carichi le regole e sotto stop ripulisci le chains)...

io personalmente ho fatto uno script e l'ho messo in /etc/rc.firewall e poi glielo faccio caricare in rc.local (per l'avvio) ed ogni 10 minuti glielo faccio ricaricare con cron
L'esperto è colui che evitando tutti i piccoli errori punta dritto alla catastrofe (Arthur Bloch)
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

Scusa ripeto la cosa per vedere se ho capito: prendo uno degli script qualsiasi contenuto in init.d e aggiungo la mia regola di configurazione di Iptables?  ???

Non è forse meno rischioso creare uno prorpio e cercarlo di configurarlo col sistema?
Avatar utente
Pandafunk
Prode Principiante
Messaggi: 220
Iscrizione: martedì 15 aprile 2008, 19:03
Distribuzione: Ubuntu GNOME 14.04 LTS
Località: Licodia Eubea (CT)
Contatti:

Re: aiuto configurazione firewall con script

Messaggio da Pandafunk »

Si scusami, non sono stato chiarissimo... intendevo duplicarne uno e rinominarlo! O comunque sia prenderne uno gia fatto come modello di struttura e farti il tuo! Una cosa del genere http://boinc.berkeley.edu/dev/forum_thread.php?id=849

tra start) e ;; metteresti i vari comandi iptables, tra status) e ;; magari potresti mettere un iptables-save per avere un resoconto delle regole e tra stop) e ;; magari potresti fargli flushare tutte le chain...

in modo che con /etc/init.d/firewall start caricheresti le regole (il parametro 'start' gli viene passato automaticamente all'avvio, per questo è necessario)
L'esperto è colui che evitando tutti i piccoli errori punta dritto alla catastrofe (Arthur Bloch)
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

Non sono pratico di queste cose.

Se dovessi usare il codice che mi hai dato come struttura per costruire il mio codice Iptables, dovrei usare gli argomenti start|stop con le ;; per scrivere il mio codice, cancellando ovviamente tutte le altri componenti dello script?
Avatar utente
Pandafunk
Prode Principiante
Messaggi: 220
Iscrizione: martedì 15 aprile 2008, 19:03
Distribuzione: Ubuntu GNOME 14.04 LTS
Località: Licodia Eubea (CT)
Contatti:

Re: aiuto configurazione firewall con script

Messaggio da Pandafunk »

Guarda... sinceramente non l'avevo mai fatto, ma mi hai messo curiosità e visto che ho il piede ingessato e non posso fare niente di meglio...  (b2b)

Ti posto il mio adattato con le tue regole (occhio che ho testato con altre regole, lo script funziona ma le tue regole non so)

Codice: Seleziona tutto

#!/bin/sh -e

### BEGIN INIT INFO
# Provides:          pandawall
# Required-Start:    networking
# Required-Stop:     
# Default-Start:     S
# Default-Stop:      
# Short-Description: start custom firewall
### END INIT INFO

PATH="/sbin:/bin:/usr/sbin:/usr/bin"

. /lib/lsb/init-functions

case "$1" in
start)
    #blocca tutti i pacchetti in entrata
    iptables -P INPUT DROP

    #Blocca tutti i pacchetti di passaggio FORWARD
    iptables -P FORWARD DROP

    #Consente traffico all'interno del pc
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT 

    #Autorizza tutto il traffico da noi richiesto
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    exit 0
    ;;
stop)
    iptables -F
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    exit 0
    ;;
status)
    iptables-save
    exit 0
    ;;
*)
    echo "Usage: /etc/init.d/pandawall {start|stop|status}"
    exit 1
    ;;
esac

exit 0
ho modificato ufw rinominato in pandawall  e tolto alcune righe che non servivano. Se vedi in testa su Required-Start ho specificato 'networking' in modo che possa partire solo dopo aver tirato su la rete e non prima. Per il runlevel mi sono fidato di ufw e l'ho lasciato uguale. Occhio che l'indentazione è 4 spazi e non un tab.

Nel blocco start ci sono le tue regole, nel blocco status un iptables-save per vedere le regole attuali (anche se è inutile) e nel blocco stop vengono flushate tutte le regole.

NB: nel blocco stop ho resettato le POLICY modificate nel blocco start in ACCEPT perchè le policy sono indipendenti, una volta settate restano così... quindi per riportare effettivamente il firewall all'accetta-tutto (se le hai modificate) devi risettarle necessariamente a mano, non basta un iptables -F.

per attivarlo al boot

Codice: Seleziona tutto

update-rc.d pandawall defaults
e per disattivarlo

Codice: Seleziona tutto

update-rc.d -f pandawall remove
Sinceramente però non mi fido troppo perchè non conosco a fondo come funziona l'init di ubuntu anche se dubito che possa fare mai danni al sistema. Mi sono tolto lo sfizio ma credo che continuerò ad utilizzare il mio /etc/rc.firewall... anche perchè tanto vale imparare come funziona ufw che sembra avere pure una sintassi semplice!

Smanettaci su un po' ;)
L'esperto è colui che evitando tutti i piccoli errori punta dritto alla catastrofe (Arthur Bloch)
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

Oddio! Non volevo farti spendere tempo davvero!

Ste cose mi mettono imbarazzo  :-[

Non so che dire Pandafunk e soprattutto come ringraziarti!
Sta sicuro che attraverso questo script ci lavoro su perchè mi serviva davvero una base su cui imparare un pò di comandi per script.
Dopo questa il minimo che posso fare è aggiungerti come amico!  (b2b)

PS Guarisci presto  ;D
Avatar utente
Pandafunk
Prode Principiante
Messaggi: 220
Iscrizione: martedì 15 aprile 2008, 19:03
Distribuzione: Ubuntu GNOME 14.04 LTS
Località: Licodia Eubea (CT)
Contatti:

Re: aiuto configurazione firewall con script

Messaggio da Pandafunk »

'mbare tranquillo  (good)

piuttosto, dicci se ti fuNONzia :D
L'esperto è colui che evitando tutti i piccoli errori punta dritto alla catastrofe (Arthur Bloch)
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

sorry dammi un altro pò di tempo e ti faccio sapere ;)
Kerbero
Prode Principiante
Messaggi: 126
Iscrizione: mercoledì 11 febbraio 2009, 20:51

Re: aiuto configurazione firewall con script

Messaggio da Kerbero »

Io personalmente ho creato un file contenente le regole tipo questo:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m pkttype --pkt-type ! broadcast -j LOG --log-prefix "FORWARD DROP: "
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 192.168.1.0/24 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -m owner --uid-owner 1000 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -m owner --uid-owner 0 -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -p tcp --dport 1863 -j ACCEPT
-A OUTPUT -m pkttype --pkt-type ! broadcast -j LOG --log-prefix "OUTPUT DROP: "
COMMIT


poi in /etc/init.d ho creato un semplicissimo script bash che carica queste regole su iptables, usando il comando iptables-restore

iptables-restore /percorsofiledelleregole

per ultimo ho messo il link simbolico a questo miniscript in /etc/rc2.d (in questo modo vengono caricate all'avvio)

Per verificare che iptables lavori con le regole da te create ti basta dare sudo iptables -L -v

P.S. ovviamente x file delle regole e script creali come root e dagli permessi di esecuzione.

L'interfaccia grafica è sicuramente + comoda, ma studiando bene iptables (cosa che nn ho fatto e mi piacerebbe fare con un pò di tempo), si possono creare regole molto personalizzate ed accurate.
eclettric0
Prode Principiante
Messaggi: 144
Iscrizione: giovedì 25 dicembre 2008, 14:04

Re: aiuto configurazione firewall con script

Messaggio da eclettric0 »

scusate ma questi giorni il lavoro è duro e non sono spesso al pc.

Comunque credo che sia mancato solo il comando per attivare lo script di Pandafunk.

Se magari Kerbero scrive (anche con i commenti del codice #) il funzionamento di ogni porzione di codice....Può essere sempre utile a qualcuno che la prima volta fa qualche script (come me) (b2b)

PS: questo pomeriggio vi dico se andato buon fine lo script di Pandafunk
Avatar utente
fortran77
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1385
Iscrizione: sabato 29 dicembre 2007, 9:44
Desktop: Xfce, iconoclasta
Distribuzione: Gentoo o Xubuntu, dipende
Località: Firenze (collina)

Re: aiuto configurazione firewall con script

Messaggio da fortran77 »

Questo è un esempio di script di configurazione autonomo, da aggiungere magari in /etc/rc.local
Si usa con i seguenti parametri "default block forward status stop", ma è facilmente estensibile. Se sei interessato a fare qualcosa di un po' più pulito del tuo script iniziale magari puoi prenderci ispirazione.

Codice: Seleziona tutto

#!/bin/sh

#Interfacce
IFACE=wlan0 #Interfaccia esterna ethernet
LFACE=eth0 #Interfaccia interna

#Nameservers
NAMESERVER_1=208.67.222.222
NAMESERVER_2=208.67.220.220

#Default gateway
GATEWAY=192.168.0.1

#Group to ban from net access
BAN_GROUP=nonet
#IP to ban from net access (list separated with spaces)
BAN_IP=""
#BAN_IP="192.168.0.200-192.168.0.255 206.53.62.206"
#IP to log if connection is detected
LOG_IP=""
#LOG_IP="192.168.0.200-192.168.0.255"

#Definizioni delle porte
SSH_PORT=22
P_PORTS=0:1023
UP_PORTS=1024:65535
BITTORRENT_PORTS=6881:6889 
BITTORRENT_TRACKER_PORT=6969 
TRANSMISSION_PORT=51413
ICQ_PORT=5190
JABBER_PORT=5222 
SKYPE_PORT=2424 
EKIGA_PORTS=5000:5100

#Defininco la posizione degli eseguibili di iptables
IPTABLES=/sbin/iptables
IPTABLESSAVE=/sbin/iptables-save
IPTABLESRESTORE=/sbin/iptables-restore

##########################################################################
#Definisco i set di regole da caricare
##########################################################################
#Queste regole sono definite come funzioni da chiamare al momento di 
#applicare le catene. Ogni funzione definisce le funzioni input, output e
#forward da applicare rispettivamente a INPUT, OUTPUT e FORWARD.
#A seconda dei parametri passati da riga di comando posso chiamare diversi 
#set di regole. Se non specifico niente chiama il set di default.
#Ricordarsi sempre di aggiornare la lista dei parametri accettati.
#Le funzioni devono avere lo stesso nome dei parametri corrispondenti.
LISTA_PARAMETRI="default block forward status stop"

#Lista catene (solo per comodita'): 
# bittorrent_in connessioni_avviate dns_query fasttrack_in ftp_in gnutella2_in
# http_out icmp_in icmp_out ml_bittorrent_in mldonkey_gui mldonkey_in portscan
# rsync_in samba_in smtp_in ssh_in ssh_out syn_flood telnet_in

default() {
  input() {
    echo "Carico set di regole 'default'"
    $IPTABLES -A INPUT -j ssh_in
    $IPTABLES -A INPUT -j transmission_in
    return 0
  }
  output() {
#    $IPTABLES -A OUTPUT -d 127.0.0.1 -j ACCEPT
#    $IPTABLES -A OUTPUT -d 10.0.2.2 -j ACCEPT
    $IPTABLES -A OUTPUT -j ban_group
    $IPTABLES -A OUTPUT -d 10.0.2.2 -j ACCEPT
    return 0
  }
  forward() {
    return 0
  }
}

forward() {
  input() {
    $IPTABLES -A INPUT -j ssh_in
    return 0
  }
  output() {
    $IPTABLES -A OUTPUT -j ban_group
    return 0
  }
  forward() {
    echo "Forwarding dalla porta $LFACE a $GATEWAY"
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o $LFACE -j SNAT --to $GATEWAY
    return 0
  }
}

status() {
  echo "-------------- RULES STATUS : --------------"
  echo ""
  $IPTABLES -L -n --line-numbers
  echo ""
  echo "--------------- NAT STATUS : ---------------"
  echo ""
  $IPTABLES -L -n --line-numbers -t nat
  exit 0
}

stop() {
  echo "Arresto del firewall (tutte le regole su ACCEPT)"
  #Clear all chains in all tables
  $IPTABLES -F
  $IPTABLES -F -t mangle
  $IPTABLES -F -t nat
  $IPTABLES -X
  $IPTABLES -X -t mangle
  $IPTABLES -X -t nat
  #Set Defaults to ACCEPT
  $IPTABLES -P INPUT ACCEPT
  $IPTABLES -P OUTPUT ACCEPT
  $IPTABLES -P FORWARD ACCEPT
  exit 0
}

block() {
  echo "blocking all network trafic 'in' and 'out'"
  $IPTABLES -F
  $IPTABLES -F -t mangle
  $IPTABLES -F -t nat
  $IPTABLES -X
  $IPTABLES -X -t mangle
  $IPTABLES -X -t nat
  $IPTABLES -P FORWARD DROP
  $IPTABLES -P INPUT   DROP
  $IPTABLES -P OUTPUT  DROP
  $IPTABLES -A INPUT -i lo -j ACCEPT
  $IPTABLES -A OUTPUT -o lo -j ACCEPT
  exit 0
}

#Definisco quanto specificato da parametro.
if [ ${#@} -gt 0 ]; then
  if [ `echo $LISTA_PARAMETRI|grep -e $1|wc -l` -gt 0 ]; then
    $1
  else
    echo "parametro '$1' sconosciuto"
    echo "Lista dei parametri accettati:"
    echo $LISTA_PARAMETRI
    exit 0
  fi
else
  default
fi

##########################################################################
#Pulisco tutte le regole e ripristino quelle di default (ACCEPT)
##########################################################################
$IPTABLES -F
$IPTABLES -F -t mangle
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -X -t mangle
$IPTABLES -X -t nat
#Set Defaults to ACCEPT
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

##########################################################################
#Definisco la policy di default
##########################################################################
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

##########################################################################
#Definisco le catene per i vari tipi di paccehtti
##########################################################################
#Catena per le connessioni gia' avviate (da mettere in fondo alle regole)
 $IPTABLES -N connessioni_avviate
 $IPTABLES -F connessioni_avviate
 $IPTABLES -A connessioni_avviate -m state --state ESTABLISHED,RELATED -j ACCEPT
# $IPTABLES -A connessioni_avviate -i $IFACE -m limit -j LOG --log-prefix "FW:Bad packet from ${IFACE}:"
 $IPTABLES -A connessioni_avviate -j DROP

#Catena per il ban di un determinato gruppo di utenti dalla rete.
 $IPTABLES -N ban_group
 $IPTABLES -F ban_group
 $IPTABLES -A ban_group -m owner --gid-owner $BAN_GROUP -j LOG --log-prefix "FW:BAN_GROUP:"
 $IPTABLES -A ban_group -m owner --gid-owner $BAN_GROUP -j DROP

#Catena per bloccare uno specifico ip
 $IPTABLES -N ban_ip
 $IPTABLES -F ban_ip
 for i in $BAN_IP; do
     if [ `echo $i|grep "-"|wc -l` -gt 0 ]; then
         $IPTABLES -A ban_ip -m iprange --src-range $i -j DROP
     else
         $IPTABLES -A ban_ip -s $i -j DROP
    fi
 done

#Catena per loggare uno specifico ip
 $IPTABLES -N log_ip
 $IPTABLES -F log_ip
 for i in $LOG_IP; do
     if [ `echo $i|grep "-"|wc -l` -gt 0 ]; then
         $IPTABLES -A log_ip -m iprange --src-range $i -m limit -j LOG --log-prefix "FW:LOG_IP: "
     else
         $IPTABLES -A log_ip -s $i -m limit -j LOG --log-prefix "FW:LOG_IP: "
     fi
 done

#Catena per il traffico ICMP in entrata
#ICMP (in entrata) Solo se fanno parte di connessioni preesistenti, cioe' si tratta di una risposta ad un 
#pacchetto inviato dalla nostra rete
 $IPTABLES -N icmp_in
 $IPTABLES -F icmp_in
 $IPTABLES -A icmp_in -p icmp --icmp-type time-exceeded -j ACCEPT
 $IPTABLES -A icmp_in -p icmp --icmp-type destination-unreachable -j ACCEPT
#protezione dai PING-FLOOD
 $IPTABLES -A icmp_in -p icmp --icmp-type ping -m limit --limit 1/s -j ACCEPT
 $IPTABLES -A icmp_in -p icmp -j LOG --log-prefix "FW:Bad ICMP traffic:"

#Protezione dai SYN-FLOOD
# $IPTABLES -N syn_flood
# $IPTABLES -F syn_flood
# $IPTABLES -A syn_flood -p tcp --syn -m limit --limit 1/s --limit-burst 4 -j ACCEPT
# $IPTABLES -A syn_flood -p tcp --syn -j DROP

#Catena per il traffico ICMP in uscita
#ICMP (in uscita) Tutti gli icmp
 $IPTABLES -N icmp_out
 $IPTABLES -F icmp_out
 $IPTABLES -A icmp_out -o $IFACE -p icmp -j ACCEPT

#Catena per il DNS query
#DNS (client -> server) Vengono abilitate le query in uscita ai DNS servers
 $IPTABLES -N dns_query
 $IPTABLES -F dns_query
 $IPTABLES -A dns_query -o $IFACE -p udp -s $NAMESERVER_1 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPTABLES -A dns_query -o $IFACE -p udp -s $NAMESERVER_2 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per SSH in entrata
#SSH (in entrata) In entrata abilitato il traffico per la porta $SSH_PORT
#Limtati i pacchetti RST FIN e SYN a 1/second
 $IPTABLES -N ssh_in
 $IPTABLES -F ssh_in
 $IPTABLES -A ssh_in -i $IFACE -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport $SSH_PORT -j ACCEPT
 $IPTABLES -A ssh_in -i $IFACE -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport $SSH_PORT -j ACCEPT
 $IPTABLES -A ssh_in -i $IFACE -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport $SSH_PORT -j ACCEPT
 $IPTABLES -A ssh_in -i $IFACE -p tcp --dport $SSH_PORT -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per SSH in uscita abilita le connessioni ssh alla porta $SSH_PORT e a quella di default (22)
 $IPTABLES -N ssh_out
 $IPTABLES -F ssh_out
 $IPTABLES -A ssh_out -o $IFACE -p tcp --dport $SSH_PORT -m state --state NEW,ESTABLISHED -j ACCEPT  
 $IPTABLES -A ssh_out -o $IFACE -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per il traffico HTTP e HTTPS in uscita
 $IPTABLES -N http_out
 $IPTABLES -F http_out
 $IPTABLES -A http_out -o $IFACE -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPTABLES -A http_out -o $IFACE -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per SAMBA in entrata
 $IPTABLES -N samba_in
 $IPTABLES -F samba_in
 $IPTABLES -A samba_in -i $IFACE -p udp --dport 137 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPTABLES -A samba_in -i $IFACE -p udp --dport 138 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPTABLES -A samba_in -i $IFACE -p tcp --dport 139 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPTABLES -A samba_in -i $IFACE -p tcp --dport 445 -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per FTP in entrata
 $IPTABLES -N ftp_in
 $IPTABLES -F ftp_in
 $IPTABLES -A ftp_in -i $IFACE -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per RSYNC in entrata
 $IPTABLES -N rsync_in
 $IPTABLES -F rsync_in
 $IPTABLES -A rsync_in -i $IFACE -p tcp --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT
 
#Catena per BITTORRENT in entrata
 $IPTABLES -N bittorrent_in
 $IPTABLES -F bittorrent_in
 $IPTABLES -A bittorrent_in -i $IFACE -p tcp --dport $BITTORRENT_PORTS -m state --state NEW,ESTABLISHED -j ACCEPT

#Catena per TRANSMISSION in entrata
 $IPTABLES -N transmission_in
 $IPTABLES -F transmission_in
 $IPTABLES -A transmission_in -i $IFACE -p tcp --dport $TRANSMISSION_PORT -m state --state NEW,ESTABLISHED -j ACCEPT

##########################################################################
#Definisco la catene per intercettare i portscan
##########################################################################
#Catena per loggare i portscan
 $IPTABLES -N portscan
 $IPTABLES -F portscan
 
 #NMAP-XMAS
 $IPTABLES -A portscan -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 5/minute -j LOG --log-level alert --log-prefix "FW:SCAN:NMAP-XMAS:"
 $IPTABLES -A portscan -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
 
 #XMAS
 $IPTABLES -A portscan -p tcp --tcp-flags ALL ALL -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "FW:SCAN:XMAS:"
 $IPTABLES -A portscan -p tcp --tcp-flags ALL ALL -j DROP

 #XMAS-PSH
 $IPTABLES -A portscan -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "FW:SCAN:XMAS-PSH:"
 $IPTABLES -A portscan -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

 #NULL_SCAN 
 $IPTABLES -A portscan -p tcp --tcp-flags ALL NONE -m limit --limit 5/minute -j LOG --log-level 1 --log-prefix "FW:SCAN:NULL_SCAN:"
 $IPTABLES -A portscan -p tcp --tcp-flags ALL NONE -j DROP

 #SYN/RST
 $IPTABLES -A portscan -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "FW:SCAN:SYN/RST:"
 $IPTABLES -A portscan -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

 #SYN/FIN
 $IPTABLES -A portscan -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 5/minute -j LOG --log-level 5 --log-prefix "FW:SCAN:SYN/FIN:"
 $IPTABLES -A portscan -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

##########################################################################
#Variabili SYS-CTL 
##########################################################################
#Abilita o disabilita l'IP FORWARDING
#echo "1" > /proc/sys/net/ipv4/ip_forward
/bin/echo "0" > /proc/sys/net/ipv4/ip_forward

#DYNAMIC ADDRESSING (utile per il forwarding)
#/bin/echo "1" > /proc/sys/net/ipv4/ip_dynaddr

#Disabilita l'IP Spoofing
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

#Non rispondere ai PING
#/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

#Non rispondere agli ICMP BROADCAST (attacchi smurf)
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#Disabilita l'accettazione dei REDIRECT
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/secure_redirects

#Protezione verso i messaggi di errore ICMP malformati
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#Disabilita i pacchetti source routed (previene dal guardare attraverso il NAT)
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

#Abilita LOG_MARTIANS (effettua il log dei pacchetti strani)
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

#Abilita il  REVERSE PATH FILTERING
for i in /proc/sys/net/ipv4/conf/*; do
  /bin/echo "1" > $i/rp_filter
done

##########################################################################
#Applico le catene a INPUT, OUTPUT e FORWARD
#Scarto i pacchetti INVALID
##########################################################################
#Applico le catene a INPUT
  $IPTABLES -A INPUT -j portscan
  $IPTABLES -A INPUT -m state --state INVALID -j DROP
  $IPTABLES -A INPUT -j log_ip
  $IPTABLES -A INPUT -j ban_ip
  $IPTABLES -A INPUT -j icmp_in
  $IPTABLES -A INPUT -i lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  input
  $IPTABLES -A INPUT -j connessioni_avviate

#Applico le catene a OUTPUT
#  $IPTABLES -A OUTPUT -m state --state INVALID -j DROP 
  $IPTABLES -A OUTPUT -d 127.0.0.1 -j ACCEPT
  output

#Applico le catene a FORWARD
  $IPTABLES -A FORWARD -m state --state INVALID -j DROP
  $IPTABLES -A FORWARD -o lo -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  forward
  $IPTABLES -A FORWARD -j connessioni_avviate
any man's death diminishes me, because I am involved in mankind, and therefore never send to know for whom the bell tolls; it tolls for thee.    --- John Donne
Scrivi risposta

Ritorna a “Sicurezza”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite