martedì 30 ottobre 2012

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.

domenica 28 ottobre 2012

appunti linux, personalizzare unity

Esistono delle simpaticissime librerie di icone, ve ne mostro un paio, anche se sarebbero per kde, a me piacciono molto, scaricabile da :
http://ftp11.tw.freebsd.org/FreeBSD/distfiles/RESTRICTED/KDE/noia-kde-icons-1.00.tgz
ed un altro simile sempre trovato su kde-look.org ma scaricabile da http://ftp11.tw.freebsd.org/FreeBSD/distfiles/RESTRICTED/KDE/noiawarmkde095.tar.gz
Nota bene, se volete personalizzare il vostro desktop su gnome-look.org / kde-look.org trovate un mare di materiale, dalle icone ai widget agli sfondi, tutto disponibile per voi... ma la domanda fatidica resta: come lo installo ?
Ora che abbiamo  scaricato i pacchetti li dobbiamo installare, purtroppo mentre kde ha una interfaccia che prende i file compressi e li installa, non ho trovato la corrispettiva interfaccia per gnome/unity, quindi:
il tar gz scaricato contiene una cartella che va scompattata e copiata sotto usr/share/icons.
Per fare questo in maniera semplice:
apriamo il terminale di linux ( potete cercarlo tra le applicazioni installate )
con ottima approssimazione vi troverete nella cartella /home/utente, e sempre con ottima approssimazione avrete scaricato il file in /home/nomeutente/Scaricati, quindi spostiamoci in questa directory

cd Scaricati

ora dobbiamo scompattare il file e lo facciamo con questo comando :

tar -xzvf noiawarmkde095.tar.gz

questo creerà una cartella di nome Noia Warm KDE 0.95

bene è ora di spostarla nel percorso corretto:

sudo mv Noia\ Warm\ KDE\ 0.95/ /usr/share/icons/

nota bene: i simboli \ in linux indicano uno spazio, probabilmente vi basta scrivere la prima parte del nome e poi premere tab per far completare il percorso alla shell, io ho preso ad esempio il secondo file che sta sopra, ma basta cambiare i nomi per l'altro file o altri file in generale.

per applicare il tema di icone invece:
installare i tweak tool di gnome

sudo apt-get install gnome-tweak-tool 

quindi andare sulla dash e cercare "impostazioni avanzate" o ricercarlo nelle lingua della propria installazione.
Una volta lanciato il programma andate su tema e potete scegliere il tema delle icone, dell'ambiente o delle finestre... insomma potete sbizarrirvi come volete.

Non finisce di certo qui, perchè ora potete scegliere se quando inserite una penna usb appare l'icona sul desktop, oppure se mostrare sul desktop il cestino o l'icona computer o cambiare i font usati dal sistema.

buona pesonalizzazione del vostro desktop !!




martedì 16 ottobre 2012

Appunti di linux, wins e chmod 4755

Problema comune usando linux in una rete (haimè) mista è che non riesco a risolvere i nomi delle macchine winzoz (windows) da linux senza usare un server dns.
Stiamo parlando i piccole reti o di macchine virtuali, ma la comodità di scrivere il nome macchina anzichè l'ip va preservata....
girovagando nel web spunta fuori la soluzione, " winbind ".
non sono sicuro che serva avere samba installato, ma è probabile, io l'avevo e mi è bastato inserire nel file
/etc/nsswitch.conf la parola "wins" in fondo alla riga hosts:

hosts:         files mdns4_minimal [NOTFOUND=return] dns wins

et voilà il gioco è fatto! ora

ping nomemacchinawinzoz funziona!
o rdesktop nomemacchinawinzoz !

problema 2
per comodità voglio poter usare alcuni comandi senza usare sudo, sono consapevole di abbassare molto il livello di sicurezza del sistema, ma la mia comodità ha la precedenza.... vediamo come funziona il set uid
esempio: ho una macchina linux virtuale, ogni volta che si avvia voglio che sincronizzi forzatamente l'orario con un server nazionale.
ci assicuriamo di avere ntpdate installato
sudo apt-get install ntpdate
dopo di che
chmod 4755 /usr/bin/ntpdate
quindi possiamo mettere il comando :
ntpdate ntp1.inrim.it
nell'elenco dei comandi che ubuntu lancia all'avvio o al logon, avendo così l'ora aggiornata.
altra possibilità è
chmod 4755 /sbin/shutdown
così che quando decidiamo di lanciare shutdown da shell non c'e' nessuno che lo mantenga, ne che ci rallenti.