Passa ai contenuti principali

pillole linux: un semplice firewall

Cos'e' un firewall ?


Un firewall in ambito informatico è un meccanismo che filtra in una rete le operazioni e comunicazioni ammesse o negate, in pratica cosa può passare o cosa deve fermarsi e non andare oltre.... le possibilità e le esigenze sono infinite, noi prenderemo un caso più che semplice come esempio, senza scendere in dettagli o configurazioni professionali.

Generalmente, o per uso domestico non ne abbiamo particolare bisogno, a meno che non abbiamo un pc collegato in rete con un indirizzo ip pubblico.

Cos'e' un indirizzo ip pubblico ?
vedete il discorso fatto in un post precedente : http://tecnocchio.blogspot.it/2012/03/il-mio-server-internet-personale-perte.html

Il nostro firewall che filtra per funzionare bene deve avere diverse interfacce di rete, una collegata ad una rete, tipo alla nostra rete dei pc e l'altra scheda che va verso internet. In lunux le interfacce di rete ethernet in genere si chiamano eth ed un numero, noi cominciamo ad immaginare che eth0 è la nostra rete interna ed eth1 e la scheda che guarda verso la rete esterna, e che vogliamo proteggerci da ogni eventuale  accesso dall'esterno non autorizzato.
Per il nostro scopo suggerisco una distribuzione linux minimale in cui non installiamo l'interfaccia grafica tipo ubuntu-server.
Innanzi tutto andiamo a definire quelli che sono gli indirizzi che hanno le nostre reti:
sudo nano -w /etc/network/interfaces

dovrebbe avere una configurazione simile, ma ovviamente con gli indirizzi adatti alle vostre esigenze

auto lo
iface lo inet loopback

# rete INTERNA

auto eth0
iface eth0 inet static
address 192.168.0.254
netmask 255.255.255.0

# rete ESTERNA 

auto eth1
iface eth1 inet static

# indirizzo ip casomai pubblico
address 200.153.19.59
netmask 255.255.255.248
gateway 200.153.19.57


# dopo aver configurato la rete lancia questo script :
post-up /etc/regole_firewall.sh


a questo punto dovremo solo configurare le regole di firewall

sudo nano -w /etc/regole_firewall.sh

#!/bin/bash


#    PER INIZIARE CANCELLIAMO TUTTE LE REGOLE ESISTENTI


for table in nat mangle filter
do
    /sbin/iptables -t $table -F
    /sbin/iptables -t $table -X
    /sbin/iptables -t $table -Z
done

#
# DOPO DI CHE CHIUDIAMO TUTTO
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#
# ABILITIAMO QUINDI L' IP Forwarding PER PERMETTERE CHE I DATI ATTRAVERSINO LE RETI
#
echo 1 > /proc/sys/net/ipv4/ip_forward

#
# IGNORA I PING DI BROADCAST
#
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#
# ABILITA rp_filter PER EVITARE IP SPOOFING
#
for a in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 > $a
done

# ACCETTA LE COMUNICAZIONE CHE SONO DELLE RISPOSTE A CONNESSIONI STABILITE

#

/sbin/iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# QUESTA RIGA PERMETTE DI FARE IL NAT TRA LE DUE RETI, IL NAT È QUELLO CHE IN GENERE FA IL ROUTER, Nat sta per network addres translation
#
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# PERMESSI IN INGRESSO:


# ABILITIAMO L'ACCESSO SSH DALLA RETE INTERNA


/sbin/iptables -t filter -A INPUT -i eth0 -p tcp --dport ssh -j ACCEPT

# PERMESSI IN USCITA :


# QUESTA RIGA PERMETTE AI COMPUTER DELLA RETE INTERNA DI USCIRE PER AGGIORNARE L'ORA
/sbin/iptables -t filter -A OUTPUT -o eth0  -p udp --dport ntp -j ACCEPT

# QUESTA RIGA PERMETTE AI COMPUTER DELLA RETE INTERNA DI ANDARE SULLA RETE ESTERNA SUI DNS DI GOOGLE PER RISOLVCERE I NOMI
/sbin/iptables -t filter -A OUTPUT -o eth1 -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -o eth1 -d 8.8.4.4 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -d 8.8.4.4 -p udp --dport 53 -j ACCEPT

# QUESTE RIGHE PERMETTONO AI PC DELLA RETE INTERNA DI ANDARE SULLE PORTE PIÙ COMUNI DELLA RETE ESTERNA, COME IL WEB, LA POSTA...

 
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 443 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 21 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 22 -j ACCEPT

/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 465 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 993 -j ACCEPT /sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 995 -j ACCEPT


sudo chmod +x /etc/regole_firewall.sh

Ora è sufficente riavviare e collegare le reti.

Commenti

Post popolari in questo blog

Blender e gli scacchi fatti in casa con una stampante 3d

Un giorno ho deciso di provare una stampante 3D, e per prepararmi ho scelto di imparare a usare Blender. Sembrerà ovvio, ma per me questa decisione era cruciale: non trovavo alcuna gioia nell'idea di stampare solo modelli creati da altre persone. Volevo essere autonomo. Se mi fosse servito un ingranaggio, un coperchietto o qualsiasi altro oggetto, volevo essere in grado di disegnarlo e poi stamparlo. Se un giorno deciderete di acquistare una stampante 3D, vi do lo stesso consiglio: imparate prima a usare un programma di disegno 3D. C'è molta più soddisfazione nel stampare qualcosa che avete creato voi stessi. Ho scelto Blender come strumento di apprendimento perché è un software open source. Non solo è gratuito, ma è aperto a contributi da parte di tutti, un grande vantaggio per chi cerca flessibilità e innovazione. Così, prima ancora di acquistare la stampante, ho scaricato Blender dal sito ufficiale www.blender.org , l'ho installato e ho iniziato con il mio primo tutorial...

Installazione application server wildfly

Wildfly è l'erede dell'application server JBOSS. poichi semplici passi da ricordare come guida minima di installazione... prerequisiti: JAVA è consigliato installare l'ambiente java di ORACLE # da root o sudo cd /opt # scaricate il wildfly che vi interessa: # http://wildfly.org/downloads/ # io farò riferimento alla versione wildfly-8.2.0.Final voi sostituitela con la vostra wget http://download.jboss.org/wildfly/8.2.0.Final/wildfly-8.2.0.Final.tar.gz tar xfvz wildfly-8.2.0.Final.tar.gz ln -s /opt/wildfly-8.2.0.Final /opt/wildfly # Copia ed edita il file init di configurazione cp /opt/wildfly/bin/init.d/wildfly.conf /etc/default/wildfly.conf nano /etc/default/wildfly.conf # modifica alcune configurazioni secondo le tue necessità ## Location of WildFly JBOSS_HOME="/opt/wildfly" ## The username who should own the process. JBOSS_USER=wildfly ## The mode WildFly should start, standalone or domain JBOSS_MODE=standalone ## Configuration...

Gnome cambia l'immagine di sfondo ogni tot minuti

Ci sono molti programmi wallpaper changer che promettono di cambiare lo sfondo di gnome o ubuntu, ma a me non funzionano. Cambiare lo sfondo selezionandolo a caso in una cartella delle immagini, sembra una cosa semplice, ed in effetti lo è :). Vediamo come svincolarci dal sistema operativo e dai tool grafici. Utilizzeremo gconf tool ,  python e crontab. nella nostra cartella home creiamo una cartella bin $ mkdir bin spostiamoci in bin e creiamo un file per cambiare lo sfondo $ cd bin $ gedit -w cambiaSfondo.sh con questo contenuto : PID=$(pgrep gnome-session) export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-) set DISPLAY=:0 set GSETTINGS_BACKEND=dconf /usr/bin/python /home/ NOMEUTENTE /bin/randomWall.py attenti a cambiare NOMEUTENTE con il vostro nome utente!!! dopo di che creiamo il file python che sorteggia lo sfondo e lo applica $ gedit randomWall.py con il seguente contenuto : #!/usr/bin/python import o...