un firewall minimale

Forum dedicato agli studenti del corso linux e a tutti gli amanti del pinguino!

Moderatore: matteo

un firewall minimale

Messaggioda matteo » sab feb 09, 2008 1:26 pm

A lezione stamani, tra una cosa e l'altra è uscito fuori lo script per un piccolo firewallino completo.

Codice: Seleziona tutto
#!/bin/bash
case $1 in
        "start")
                iptables -P INPUT DROP
                iptables -F
                iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
                iptables -A INPUT -i lo -j ACCEPT
                echo "Firewall Attivato"
                ;;
        "stop")
                iptables -P INPUT ACCEPT
                iptables -F
                echo "Firewall Disabilitato"
                ;;
        "status")
                iptables -L -n -v
                ;;
        "restart")
                $0 stop
                $0 start
                ;;
        *)
                echo "Usage $0 start | stop | restart | status"
                ;;
esac


salvatelo in un file e ricordate di dare chmod +x nomefile
poi lanciate come root:
# ./nomefile start

Questa configurazione effettua un blocco totale degli accessi in ingresso. Ottimo per chi va su internet con un modem anzichè un router.

Per metterlo in avvio automatico con slackware, salvatelo come /etc/rc.d/rc.firewall.
editate /etc/rc.d/rc.local e aggiungeteci:
Codice: Seleziona tutto
if [ -x /etc/rc.d/rc.firewall ]; then
  . /etc/rc.d/rc.firewall
fi


mi raccomando chmod +x /etc/rc.d/rc.firewall

Matteo

Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Messaggioda retola » sab feb 16, 2008 2:24 pm

A lezione abbiamo creato uno script per il firewall che blocca alcuni servizi e alcuni indirizzi ip per esercizio:

in particolare abbiamo creato firewall.sh:
Codice: Seleziona tutto
#!/bin/bash
iptables -P INPUT ACCEPT
iptables -F

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp ! --dport 22 -j LOG --log-prefix altro:
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix logssh:
iptables -A INPUT -s 192.168.3.103 -j DROP

iptables -A INPUT -p tcp --dport 139 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -p udp  --dport 137:138 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -s 192.168.3.101 -j DROP

iptables -A INPUT -p icmp -j ACCEPT


iptables -A INPUT -p tcp --dport 22 -s 192.168.3.104 -j REJECT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -P INPUT DROP
iptables -L -n


poi per fare in modo che sia caricato all'avvio abbiamo fatto

cp firewall /etc/rc.d
vi /etc/rc.d/rc.local
nel quale va scritto:/etc/rc.d/firewall.sh
retola
 
Messaggi: 9
Iscritto il: sab nov 10, 2007 4:34 pm

Messaggioda matteo » dom feb 17, 2008 12:49 am

ci metto qualche commento:

Codice: Seleziona tutto
#!/bin/bash
iptables -P INPUT ACCEPT
iptables -F

pulisci la tabella (elimina regole e policy)

Codice: Seleziona tutto
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

accetta il loopback e consenti le risposte dei propri pacchetti (altrimenti non esco)

Codice: Seleziona tutto
iptables -A INPUT -p tcp ! --dport 22 -j LOG --log-prefix altro:
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix logssh:

logga tutto il tcp. se è ssh ci mette il prefisso 'logssh:' altrimenti ci mette 'altro:'

Codice: Seleziona tutto
iptables -A INPUT -s 192.168.3.103 -j DROP

questa macchina non saprà nemmeno della mia esistenza

Codice: Seleziona tutto
iptables -A INPUT -p tcp --dport 139 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -p udp  --dport 137:138 -s 192.168.3.101 -j ACCEPT
iptables -A INPUT -s 192.168.3.101 -j DROP

a questa macchina invece consento di accedermi solo in samba; per il resto io non esisto nemmeno al ping.

Codice: Seleziona tutto
iptables -A INPUT -p icmp -j ACCEPT

tolte le due macchine di cui sopra saro visibile almeno col ping


Codice: Seleziona tutto
iptables -A INPUT -p tcp --dport 22 -s 192.168.3.104 -j REJECT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

abilita l'ssh per tutti tranne che per questa macchina che vedrà come se la porta fosse chiusa.

Codice: Seleziona tutto
iptables -A INPUT -p udp --dport 53 -j ACCEPT

abilita il dns (questo è il server dns che abbiamo configurato)

Codice: Seleziona tutto
iptables -P INPUT DROP
iptables -L -n

Blocca tutto il resto e mostra le regole.


Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am


Torna a Unix, Linux & reti

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron