Linux è sicuro? Forse.
Ma se facciamo qualcosa per renderlo ancora più sicuro, è meglio.
Vediamo quindi di migliorare la nostra linux box coniugando flessibilità e sicurezza.
Questo tutorial è pensato per un PC con 2 interfacce di rete, una ethernet, e una wireless.
E’ un PC client, quindi non fa da gateway verso altri pc, e si connette ad internet attraverso una delle suddette interfacce.
Permettere l’accesso tramite shell SSH
SSH è un protocollo che permette di accedere (previa autenticazione) alla linea di comando di un pc. Quindi io posso, da un qualsiasi posto (si, ok, quasi), accedere al mio computer, che si può trovare anche dall’altra parte del mondo, e svolgere operazioni, come lanciare programmi, leggere/modificare/creare files… Tutto da linea di comando.
Capite che è una figata, ma “regala” l’accesso a tutto quanto, se configurato male.
Cominciamo con l’installare il server:
sudo apt-get install openssh-server
Ora modifichiamo il file di configurazione, per renderlo un po’ più sicuro:
sudo gedit /etc/ssh/sshd_config
Cambiamo la riga in cui c’è PermitRootLogin, decommentiamola (togliendo il #) e modifichiamola in:
PermitRootLogin no
Aggiungiamo anche la riga:
AllowUsers vostroutente
Impostare un firewall
Mi sono scritto uno script che utilizzo come firewall, e che condivido con voi.
Questo firewall vi protegge da attacchi di spoofing, pacchetti malformati, servizi in ingresso non consentiti, brute force attacks sul servizio SSH, e altre amenità.
Le policy che utilizzo sono:
– verso l’esterno consenti tutto, in modo da darmi flessibilità ogni volta che mi serve un servizio diverso;
– verso l’ingresso blocca tutto, eccetto quello che specifico esplicitamente (vedi file)
Il file da scaricare è iptables.conf ed è abbastanza commentato, quindi risulterà semplice modificarlo ed adattarlo per le proprie esigenze.
Una volta scaricato, spostiamolo nel percorso corretto:
sudo mv /percorso/per/il/file/iptables.conf /etc/
Diamogli i giusti permessi:
sudo chmod 700 /etc/iptables.conf
Ora scarichiamo questo script per il relativo caricamento: iptables.sh, e diamo:
sudo mv /percorso/per/il/file/iptables.sh /etc/init.d/iptables
Diamogli i giusti permessi:
sudo chmod 766 /etc/init.d/iptables
Ora è giunto il momento di dargli una sistemata:
Si presuppone una conoscenza base di concetti come indirizzi IP, maschere di rete, gateway, porte.
sudo gedit /etc/iptables.conf
Una volta adattato alle nostre esigenze, facciamo in modo che si carichi automaticamente anche all’avvio:
sudo update-rc.d iptables defaults
Da ora in poi sarà possibile attivare o disattivare il firewall con un:
sudo /etc/init.d/iptables start
oppure
sudo /etc/init.d/iptables stop
(o ancora, restart, per riavviarlo, tipo quando fate delle modifiche al file di configurazione)
Se avete problemi, o non capite come adattarlo alle vostre esigenze, basta un fischio 🙂
5 risposte su “Rendere sicura una linux box con Ubuntu”
Ho seguito tutti i consigli della tua preziosa guida, ma la mia password utente e quella di root è “a”. Va bene uguale?
[…] un po’ troppo permissive o siete maniaci della sicurezza, potete leggere qualche nota che ho scritto tempo fa a […]
Ciao,
scusa, sto configurando iptables, utilizzando il pacchetto che hai messo a disposizione (iptables.conf), molto ben fatto; vorrei alcuni chiarimenti, su certe impostazioni; premetto che ho Ubuntu 8.04, e navigo dietro un router Netgear dg834g, a cui son connessi 2 pc: il mio e quello di mio padre; tutti e 2 i pc sono connessi tramite cavo, quindi non wireless; A questo punto, vorrei chiederti:
– I valori fra virgolette, in caratteri viola, devono esser modificati, adattandoli ai miei, e lasciandoli poi comunque fra le virgolette?
– Nella sezione “configurazione”, il valore “lan_cidr”, cos’è? Io, della connessione via router, sapevo che esistevano ind. ip del pc, subnet mask, gateway, e server dns, questo valore non l’ho mai sentito.
– I valori scritti in celestino chiaro vanno “modifcati” tutti? Perché se così fosse, dovresti (per pietà) spiegarmi cosa significano i valori preceduti, sempre in celestino chiaro, dal simbolo $ (a parte $wlan, che fin lì ci arrivo anch’io), ma soprattutto come interpretarli, per adattarli alla mia configurazione;
Scusa, ma, girando su internet per trovare una buona configurazione di iptables, questa mi è sembrata la migliore, ma non vorrei combinar casini…meglio aver le idee chiare, prima.
Grazie eventualmente per i chiarimenti.
Riccardo.
ciao
ho una linuxbox xubuntu con 3 schede di rete.
eth0 collegata a modem ( non router ) adsl
eth1 collegata a pc winzozz
wlan0 per far collegare il laptop
xubuntu sempre acceso e connesso su eth0 gli altri due pc si collegano e navigano tramite xubuntu.
per fare ciò nel mio script di config delle iptables ho dovuto usare il comando MASQUERADE. da una rapida occhiata al tuo codice invece non ne trovo traccia.
Mi sorge il sospetto che ci sia un altro modo per gestire il reindirizzamento dei pacchetti( e che non ho ancora capito ) nel tuo script.
Comincio a modificare il tuo script per aggiungere la terza interfaccia, tuttavia se mi potessi chiarire questa storia del masquerade te ne sarei grato. Magari appena finisco ( e se funziona ) posto la versione a tre schede di rete qui…
saluti e complimenti.
Pix
@pix:
Ciao! 🙂
Grazie al tuo commento mi è venuta voglia di scrivere un articolo sul NAT e masquerading.
Se ti va leggilo per capire un po’ qualche concetto che può sembrare un po’ ostico.
Nel tuo caso, la tua xubuntu sta agendo da router, e deve nattare la tua rete interna, e quindi è *necessario* il masquerading.
Il mio script invece è destinato a client che devono semplicemente accedere alla rete (e bloccare le connessioni in ingresso che non ci piacciono!), e non ad un server che rediriga il traffico.
Nel tuo caso, una macchina server come la tua dovrebbe fare queste cose:
– permettere le connessioni in uscita, dirette dalla macchina stessa (vedi aggiornamenti della distro.. etc), quindi devi agire sulla catena OUTPUT
– permettere *alcune* (il meno possibile) connessioni in ingresso, sia dall’esterno che dall’interno (mai sottovalutare questa cosa, non essere troppo permissivo nei confronti della tua rete lan), quindi agire sulla catena INPUT
– permettere il traffico rigirato e nattato, dalla rete interna all’esterna (e viceversa se per caso devi redirigere delle porte, tipo per emule/torrent/webservers che girano su pc della tua lan), quindi agire sulla catena FORWARD, facendogli un MASQUERADE per nattare il tutto.
Se hai bisogno di una mano, vedo di ripassarmi un po’ iptables 🙂