Eccomi qua dopo svariati giorni di assenza!! (ma non posso fare le ferie io??!
)
Tornato al lavoro ho deciso di scaricare e provare (a casa) Endian Firewall 2.1 Community Edition, ovvero una buonissima distribuzione italiana dedicata al funzionamento di firewall, content filter, svariati tipi di proxy e molto altro ancora!
Inizialmente questa distribuzione è nata come un fork di IPCop, ma IMHO questa Endian Firewall è assolutamente superiore, sia nella cura (dall’installazione, alla configurazione tramite GUI, sia per i servizi che offre).
Inoltre se rileva 2 dischi in fase di installazione può essere impostato in modo automatico un RAID 1.
Altra cosa molto interessante, tutte le interfacce ethernet rilevate inzialmente vengono configurate in bridge, questo magari per un utente normale non ha interesse, ma lo è se ad esempio vogliamo facilmente creare un mini switch lato lan!
Anche la parte firewall è notevolemente curata, ma ciò che mi piace molto è la sezione proxy (HTTP,POP3,SMTP,SIP,FTP,DNS), inoltre mai visto un interfaccia grafica decente come questa per Dansguardian.
Ho aperto una categoria apposita per questa distribuzione e da oggi via via posterò sui pregi e sui difetti che troverò nell’uso quotidiano di questo “firewall”, ma ad occhio credo che adotterò questa distro al posto di Trustix per questi compiti!!(su Trustix devo fare tutto a mano, in certi casi il tempo è denarooooo!!!)
In ogni caso è possibile fare modifiche al livello di files conf tramite la console ssh (da attivare che non lo è di default), inoltre il sistema può essere accessibile via console tramite porta seriale ![]()
Che dire, bravi italiani!!!
Uno dei principali usi del nostro amato GNU/Linux è sicuramente quello del firewall.
Potente, economico, versatile e facile da configurare…bhe non sempre!!!
Rispetto ad ipchains, il vecchio firewall che stava nei kenrnel 2.0, Iptables/Netfilter ha reso la sintassi meno contorta, ma per creare regole elaborate può essere sempre una pratica ostica.
Inoltre le appliances firewall commerciali più conosciute, permettono di considerare il traffico entrante ed uscente non in schede di rete, ma in visione più ampia, in zone.
Ogni zona può “gestire” anche più schede di rete, e le interazioni tra zone saranno governate da policy di default che potranno essere “superate” da regole specifiche, ma andiamo con calma!!
Il files fondamentali che troverete in /etc/shorewall sono i seguenti
Ovviamente i nomi sono esplicativi, definizione delle zone, delle interfacce per ogni zona, delle policy di default tra zone e le specifiche regole.
Adesso vi riporterò una configurazione tipica con due schede di rete, con regole che bloccano il traffico di ingresso se non verso determinati ip, blocco totale del traffico in uscita (nattato) escluso determinate porte ed inoltre dei redirect per l’interazione con Dansguardian/Squid e p3scan, ovviamente il nome delle zone sono indicativi
/etc/shorewall/zones
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
verde ipv4
rossa ipv4
#LAST LINE – ADD YOUR ENTRIES ABOVE THIS ONE – DO NOT REMOVE
/etc/shorewall/interfaces
#ZONE INTERFACE BROADCAST OPTIONS
verde eth0
rossa eth1 - routeback
#LAST LINE — ADD YOUR ENTRIES BEFORE THIS ONE — DO NOT REMOVE
/etc/shorewall/policy
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
rossa fw DROP
rossa verde DROP
verde fw ACCEPT
verde rossa DROP
fw verde ACCEPT
fw rossa ACCEPT
#LAST LINE — DO NOT REMOVE
/etc/shorewall/rules
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/
# PORT(S) PORT(S) DEST LIMIT GROUP
#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
LOG:info verde fw tcp 22
LOG:info verde fw tcp 10000
ACCEPT rossa:XX.XX.XX.XX $FW tcp 22
ACCEPT rossa:XX.XX.XX.XX $FW tcp 10000
DNAT rossa:XX.XX.XX.XX verde:192.168.0.113 tcp 3389
REDIRECT verde 8110 tcp 110
REDIRECT verde 8080 tcp 80
ACCEPT verde rossa tcp 13,17,21,22,23,25,43,53,80,81,110,113,119,143,443
ACCEPT verde rossa tcp 465,993,995,1352,1755,1863,2003,2345,3389,4711
ACCEPT verde rossa tcp 2082,2401,4800,4899,5190,5900,7070,8080,8081,8443,8827,8775,10000
ACCEPT verde rossa tcp 50022,50080
ACCEPT verde rossa tcp 6665:6669
ACCEPT verde rossa tcp 1001:1010
ACCEPT verde rossa tcp 65120:65122
ACCEPT verde rossa tcp 60000:60010
ACCEPT verde rossa tcp 31443
ACCEPT verde rossa udp 37,53,123,3052,4569
Due breve righe su casi particolari (messi per esempio)
ACCEPT rossa:XX.XX.XX.XX $FW tcp 22 (accetta collegamenti ssh da un determinato ip)
ACCEPT rossa:XX.XX.XX.XX $FW tcp 10000 (accetta collegamenti sulla porta webmin)
DNAT rossa:XX.XX.XX.XX verde:192.168.0.113 tcp 3389 (port forwarding su un server windows 2003 interno. sempre solo da un determinato ip esterno)
REDIRECT verde 8110 tcp 110 (per il check del traffico da parte di p3scan)
REDIRECT verde 8080 tcp 80 (per il controllo dei contenuti da parte di Dansguardian)
Questa serie di regole dovrebbero permettervi una navigazione tranquilla degli utenti, ma anche una certa sicurezza (ad esempio impedire il peer to peer)
Maggiori info sulla sintassi le trovate nella documentazione ufficiale.
Inoltre le distro più adatte per questo uso, IMHO sono Debian e Trustix.
A presto con nuovi articoli sul tema!
Ah dimenticavo, un ottimo frontend per Shorewall è l’onnipresente Webmin!
Molte volte può essere utile connettersi a dei dekstop remoti, ad esempio per assistere i propri clienti, ma spesso i pc stanno dietro firewall o semplicemente dei router con NAT.
Il problema è quindi raggiungere questi client, non sempre è possibile effettuare port forwarding, soprattutto se i client sono tanti o non c’è personale tecnico per farlo!
Niente paura, è possibile usare una tecnica chiamata vnc reverso, ovvero la connessione viene inziata dal pc di cui vogliamo controllare il desktop, in altre parole sarà il nostro client ad essere “in ascolto”.
Unico requisito è che ovviamente il nostro client dovrà essere raggiungibile dall’esterno, ma la nostra infrastruttura IT sarà in grado di fare un port forwarding! (o no?!) ![]()
Innanzittutto dobbiamo forwardare dal nostro router (se non abbiamo un ip pubblico) la porta tcp 5500, ovvero la porta in cui sarà in ascolto il demone vnc client (Listening VNC viewer).
Nel computer remoto dovrà essere installato vnc con una password qualsiasi ed eseguito il server (come servizio o manuale), a questo punto cliccare con il tasto destro sull’icona del VNC server e scegliere Add New Client…
In questo modo il server (pc remoto) si connetterà al client (nostro pc) e noi potremmo controllare la sessione desktop di quel pc, senza preoccuparsi di altri NAT
Gli animali in questione sono i vari spyware, worms e virus che popolano sempre più spesso i pc dei poveri utenti.
Dai miei clienti devo fare spesso delle “bonifiche” e scovare queste scomode presenze, ma fortunatamente esiste un mix di programmi che ne facilitano l’eliminazione!
Infatti raramente ci sarà necessità di formattare la macchina, a me non è mai capitato, infatti come questi “oggetti” si installano possono essere rimossi, solo ci vuole tempo e “fiuto” per farlo.
Innanzittutto l’ideale sarebbe avere un firewall (Linux o no), impendendo l’uscita su internet al pc infetto (o altrimenti togliete il cavo di rete!!).
NOTA 1: Nei firewall sarebbe buona norma permettere il collegamento alla porta 25/tcp solo verso il server di posta del VOSTRO provider, e negarlo verso qualsiasi altra destinazione.
Infatti gran parte dei worms si replicano per posta, o inviano spam, hanno un server di posta interno che usano per collegarsi direttamente con gli altri server smtp.
In questo modo il worm non può spammare e/o replicarsi, ma soprattutto la vostra banda internet non sarà saturata!
I tools base per eliminare questi fastidi sono due, Hijackthis e KillBox, il primo permette di vedere tutto quello che c’è in avvio di Windows (sul registro) e di eliminare questi voci…
OCCHIO che il programma NON controlla nulla in automatico, dovete essere voi, a mano, a trovare le voci sospette ed eliminarle, quindi non è un programma da tutti!
Però potete salvare il log e farlo analizzare online su questo sito www.hijackthis.de, che vi farà un report sulle voci del vostro registro, mostrando a video se un file è sicuro o sospetto.
Potete inoltre fare l’upload dei file sospetti, che saranno analizzati da tre antivirus diversi!
Inoltre una volta eliminati questi elementi dal registro, andranno eliminati fisicamente anche dal disco fisso, cosa che spesso non è possibile fare a mano.
KillBox permette di “marcare” un file per la cancellazione al riavvio successivo se non fosse possibile farlo nella sessione corrente, e per quando riguarda le dll è possibile un-registrale e cancellarle.
In definitiva qualsiasi minaccia, una volta scovata può essere sdradicata!
Inoltre sta formandosi anche su Windows un fenomeno finora ad appannaggio del mondo Linux, ovvero i rootkit, programmi che si nascondono in un sistema e permettono di “accedervi” da remoto senza lasciar traccia dei cracker (o quasi ![]()
Per eliminare i rootkits, Sophos, ha rilasciato questo tools gratuito.
Inoltre su Google basterà scrivere “online antivirus scan” per la possibilità di controllare il vostro sistema senza installare niente sul pc.
Buona caccia!!!
Continuerò questa serie di post su Trustix con un altra applicazione utile, che uso a casa ed al lavoro, ovvero la centralizzazione della scansione antivirus per la posta POP3.
Indubbiamente tutti i pc hanno l’antivirus,ma quante volte per negligenza dell’utente non sono aggiornati?
Quindi meglio installarlo sul server direttamente, ed anche per Linux esistono decine di antivirus, ma il più famoso è sicuramente ClamAV.
Ma in questo mio post, volevo parlare di qualcosa di diverso che il classico server di posta linux, ma di un qualcosa che faccia la scansione dei messaggi provenienti da qualsiasi server Internet in realtime, prima che arrivino alla casella dell’utente..
Praticamente un Proxy POP3 trasparente all’utente, installato nella macchine firewall.
Intanto maggiori informazioni su http://p3scan.sourceforge.net
Pacchetti necessari da installare con swup sono openssl-devel e pcre-devel
Scaricate il sorgente e scompattatelo
editare prima di tutto il Makefile, sicuramente su Trustix 3.0.5 va cambiata la directory man8 da MANDIR=$(PREFIX)/man/man8 a MANDIR=$(PREFIX)/share/man/man8
Inoltre nei file sorgenti dovrete cambiare dove trovate l’include #include <pcre.h> in #include <pcre/pcre.h>
A questo punto con make e make install il programma dovrebbe essere installato.
Adesso in /etc/p3scan/p3scan.conf troverete la configurazione; una base e funzionante è questa
pidfile = /var/run/p3scan/p3scan.pid
maxchilds = 10
ip = 0.0.0.0
port = 8110
user = amavis
notifydir = /var/spool/p3scan/notify
virusdir = /var/spool/p3scan
template = /etc/p3scan/p3scan-it.mail
subject = Subject: “[Virus] Trovato virus in questa email:”
scannertype = basic
scanner = /usr/bin/clamscan –no-summary
virusregexp = .*: (.*) FOUND
Vi rimando al sito o al file p3scan.conf.sample per le spiegazioni ![]()
OCCHIO l’utente deve essere lo stesso del demone clamd, in questo caso amavis.
Inoltre queste directory /var/spool/p3scan /var/run/p3scan/ /etc/p3scan devono essere di proprietà del solito user.
Adesso non rimane che ridirezionare le connessioni verso la porta 110
iptables –t nat –A PREROUTING –p tcp –i eth0 –dport 110 –j REDIRECT –-to-port 8110
Dove eth0 si intende l’interfaccia lato lan.
Per far partire il servizio service p3scan start
E se tutto vi va bene troverete questo in /var/log/messages
Sep 2 06:32:43 trustix p3scan[2875]: P3Scan Version 2.3.2
Sep 2 06:32:43 trustix p3scan[2875]: Selected scannertype: basic (Basic file invocation scanner)
Sep 2 06:32:43 trustix p3scan[2875]: Listen now on 192.168.100.1:8110
Sep 2 06:32:43 trustix p3scan[2876]: Changing uid (we are root)
Sep 2 06:32:43 trustix p3scan[2876]: Running as user: amavis
Adesso siete protetti! ![]()
Inoltre è possibile integrare p3scan con l’anti spam Spamassassin.
Su questo interessante (e complesso) programma, tornerò in un successivo post, ma intanto per usarlo con p3scan basta aggiungere queste due righe al file di configurazione
checkspam
spamcheck = /usr/bin/spamc
dove il percorso di spamc può variare a seconda della distribuzione.
Trustix è una distribuzione Linux prettamente indirizzata alla configurazione di server, quindi niente X ed applicazioni
inutili, come calcolatrici, giochini e altre amenità (fino a non molto tempo fa usavo CentOS per i server e firewall, ma
devo dire che Trustix è decisamente molto meglio, basti vedere /etc/rc3.d in cui niente (nemmeno sshd!) è attivo per default
e ci sono solo i servizi voluti.
Si possono però creare proxy/content filter, firewall e qualsiasi server con relativa facilità, c’è una grande community
e sul sito uno wiki decisamente ben fatto..vi rimando a www.trustix.org
In questo post vi spiego brevemente come creare un server OpenVPN, incentrato soprattutto sul collegamento many to one, ad
esempio lavoratori che hanno un notebook con il quale collegarsi alla lan.
Particolarità di OpenVPN, che può funzionare anche in udp e quindi con un firewall dietro NAT, basta che dall’esterno sia
raggiungibile la porta dove il server è in ascolto.
Addirittura in laboratorio ho testato l’attraversamento di ben 3 NAT internet–>FIREWALL–>altro firewall perimetrale–>server vpn di una piccola VLAN…
Dall’esterno potevo fare tutto sulla VLAN di destinazione.
C’è da tenere conto che OpenVPN supporta periferiche virtuali quali TUN e TAP.
TUn lavora con pacchetti IP, TAP con frame TAP; questo vuole dire che per creare delle cose come lan virtuali, trasferimento dati da file server remoti o cose simili, dobbiamo usare TAP, che in pratica è un driver Ethernet virtuale (layer 2).
TUN è per tunnel ip (layer 3), ora però da quel che so tun integra il 95% di codice di tap e tap dovrebbe essere integrateo in tun, in ogni caso sempre meglio specificare! ![]()
Per prima cosa cercare su Google un server mirror di Trustix dove scaricare dal contrib i pacchetti di OpenVPN, LZO, OpenSSL e PAM.
Una volta installati c’è da eseguire questa serie di comandi
cd /etc/openvpn
cp -a /usr/share/doc/openvpn-/easy-rsa .
cd easy-rsa
vi vars
. vars
mkdir keys
touch keys/index.txt
echo “01″ > serial
./build-dh
./build-ca
./build-key-server server
./build-key client
questo crearà il certificato e chiave privata server, il certificato e chiave per un client, il certificato di Certification Authority ed i parametri Diffie Helmann.
NOTE: potete creare più di un client, ad esempio client1 client2 client3 e così via, a patto che ognuno abbia un nome unico da dare alla richiesta Common Name.
Inoltre se volete che i vostri clients debbano collegarsi tramite l’ausilio di una password usate ./build-key-pass come script.
A questo punto una configurazione tipo per il server è questa (DEVICE TAP)
port 7000
proto udp
dev tap
tls-server
mode serverdh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/testsrv.crt
key /etc/openvpn/easy-rsa/keys/testsrv.keyifconfig 10.0.1.1 255.255.255.0
ifconfig-pool 10.0.1.100 10.0.1.200
push “route 192.168.1.0 255.255.255.0 10.0.1.1″
push “route 192.168.0.0 255.255.255.0 10.0.1.1″
push “dhcp-option DNS 192.168.0.30″
push “dhcp-option WINS 192.168.0.30″keepalive 10 120
max-clients 100comp-lzo
persist-key
persist-tunverb 4
;mute 20
log /var/log/openvpn/dynamic
status /var/log/openvpn/status
mentre per il client
cert client.crt
key client.key# Wireless networks often produce a lot
# of duplicate packets. Set this flag
# to silence duplicate packet warnings.
;mute-replay-warnings# These settings are shared by all clients
client
ns-cert-type server
user nobody
group nobody
remote xxx.xxx.xxx.xxx 7000
ca ca.crt
tls-client
dev tap
proto udp
resolv-retry infinite
nobind
persist-tun
persist-key
comp-lzo
verb 3
Per i client Windows vi consiglio questo sito openvpn.se, una GUI molto carina per gestire graficamente il client! ![]()
Questo è tutto, buone VPNs!
Ciao a tutti, oggi sono in ferie ma dato che volevo controllare una cosa su un server di un nostro cliente, stavo pensando a come poter fare a collegarmici, dato che l’accesso via Terminal Server è possibile solo uscendo dalla nostra adsl con ip fisso, per ovvie ragioni di sicurezza.
Quindi mi è venuto in mente di fare una bounce connection con netcat!
Non starò qui a tediarvi sulle caratteristiche di nc, vi rimando al sito http://netcat.sourceforge.net/…
La logica è questa
CASA MIA—>1234 tcp port—>MIO FIREWALL LAVORO—>3389/tcp—>SERVER CLIENTE
In questo modo il server del cliente vede come ip sorgente quello del nostro firewall permettendo la connessione, mentre io sono comodamente seduto in casa ![]()
Per fare in modo che netcat rimanga in ascolto su una porta tcp/ip basta usare inetd o xinted, io userò quest’ultimo.
Per prima cosa create una nuova riga su /etc/services, una cosa del tipo
bounce 9833/tcp
poi andate su /etc/xinetd.d/ e create un file di nome bounce con dentro questo testo
service bounce
{
flags = REUSE
disable = yes
socket_type = stream
protocol = tcp
user = nobody
wait = no
server = /usr/bin/nc
server_args = -w 2 x.x.x.x 3389
}
poi un bel /etc/init.d/xinetd start (o restart se lo avete già in esecuzione!)
In questo modo tutte le connessioni sono ridirezionate e posso lavorare!! ![]()
PS.
Come in una ricetta potete aggiungere a piacere elementi di sicurezza, dall’uso di regole sul firewall che limitano l’accesso alla porta, o all’uso del netcat in combinazione con una vpn, ad esempio OpenVPN!

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 