dic
18

Iptables e Vps, messa in sicurezza

 

Perché proteggere una macchina virtuale? Siamo su una rete pubblica ed aperta ad attacchi di ogni tipo.
Le principali difese da attuare riguardano attacchi di tipo SYN e ping flood. Un attacco di ping flood richiederebbe un’ulteriore protezione di tipo hardware, ma qualora il nostro fornitore di Vps non ne fosse provvisto, il metodo più valido per difendersi è utilizzare Iptables.
Quale tipo di traffico necessita di protezione? Il traffico in entrata necessita di essere regolato per prevenire gli attacchi, il traffico in uscita richiede attenzione per evitare che un’eventuale compromissione della macchina possa replicare i suoi effetti sulla rete adiacente.

Supponendo di avere la necessità di protezione su una macchina dotata di server Web, Mail e Pop/Imap server, possiamo delineare gli obiettivi dello script :

consentire il traffico web sulle porte 80 e 443
consentire il traffico ssh sulla porta 22
consentire il traffico dns sulla porta 53
consentire il traffico mail sulle porte 25, 110, 143, 993 e 995
bloccare i ping e i tentativi di scanning

Lo script :

##BEGIN
#!/bin/bash

IPTABLES=/sbin/iptables
ALL_SOURCE=”1024:65535?
VPS_IP=”XXX.XXX.XXX.XXX”
LPBCK=”127.0.0.1?

## Svuotiamo tutte le catene

$IPTABLES -F

## Consente il traffico di loopback

$IPTABLES -A INPUT -i lo -s $LPBCK -j ACCEPT

## Consente le connessioni stabilite

$IPTABLES -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

## Respinge i pacchetti frammentati

$IPTABLES -A INPUT -f -j DROP

## Respinge i pacchetti di tipo XMAS e NULL

$IPTABLES -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
$IPTABLES -A INPUT -p tcp –tcp-flags ALL NONE -j DROP

## Blocca tutti i pacchetti provenienti da indirizzi di tipo privato

$IPTABLES -A INPUT -s 0.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s $LPBCK -j DROP
$IPTABLES -A INPUT -s 10.0.0.0/8 -j DROP
$IPTABLES -A INPUT -s 172.16.0.0/12 -j DROP
$IPTABLES -A INPUT -s 224.0.0.0/3 -j DROP
$IPTABLES -A INPUT -s 192.168.0.0/16 -j DROP

## Permette connessioni per il WWW in entrata ed in uscita

$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 80 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 443 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $VPS_IP –sport 80 -d 0/0 –dport $ALL_SOURCE -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $VPS_IP –sport 443 -d 0/0 –dport $ALL_SOURCE -j ACCEPT

## Permette connessioni per SSH in entrata ed in uscita

$IPTABLES -A INPUT -p tcp -s 0/0 –sport $ALL_SOURCE -d $VPS_IP –dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $VPS_IP –sport 22 -d 0/0 –dport $ALL_SOURCE -j ACCEPT

## Permette connessioni DNS in entrata ed in uscita

$IPTABLES -A INPUT -p udp -s 0/0 –sport $ALL_SOURCE -d $VPS_IP –dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p udp -s $VPS_IP –sport 53 -d 0/0 –dport $ALL_SOURCE -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 –sport $ALL_SOURCE -d $VPS_IP –dport 53 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $VPS_IP –sport 53 -d 0/0 –dport $ALL_SOURCE -j ACCEPT

## Permette il traffico SMTP, IMAP e POP

$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 110 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 143 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 993 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 995 -j ACCEPT
$IPTABLES -A INPUT -p tcp –sport $ALL_SOURCE -d $VPS_IP –dport 25 -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $VPS_IP –sport 25 -d 0/0 –dport $ALL_SOURCE -j ACCEPT

## Respinge tutto il traffico non diversamente indicato

$IPTABLES -A INPUT -s 0/0 -j DROP
$IPTABLES -A OUTPUT -s 0/0 -j DROP
##END

Lanciamo lo script da root per applicare le regole indicate :

# chmod +x iptables.sh
# ./iptables.sh

Articolo scritto per Valent Blog da Gagliardi Valentino.
Sistemista freelance, si occupa della gestione di piattaforme Unix/Linux su sistemi Red-Hat, Debian, FreeBsd.
Lo trovate su http://www.calabriaunix.org
http://twitter.com/calabriaunix

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

nov
18

Hardening Linux 3

 

Terza parte della guida sul potenziamento di un server o di un computer GNU/Linux. Nel resto dell’articolo si scoprirà come ci si può difendere da una grande parte degli attacchi dos, come si possono riconoscere eventuali rootkit e come funziona la “security through obscurity”.

Protezioni base contro attacchi DOS

Prevenire attacchi di tipo Denial Of Service o Distribuited Denial Of Service richiede un dispendio di risorse ed energie notevole, e fa parte delle politiche di sicurezza che dovrebbero esser create a monte.

Tuttavia in questo articolo ci sono alcuni utili suggerimenti per una prevenzione di base.

Il sistema syn cookies è l’unica difesa efficace contro il Syn Flooding , per implementarla sotto Linux è necessario abilitare le seguenti opzioni nel file /etc/sysctl.conf:

# Enable TCP SYN Cookie Protection 
net.ipv4.tcp_syncookies = 1

Sempre nello stesso file è possibile abilitare una protezione contro l’IP Spoofing attraverso il controllo dell’IP mittente , abilitare la seguente opzione:

	net.ipv4.conf.all.rp_filter = 1 

Mod_dosevasive è un modulo per Apache che permette di controllare le richieste HTTP verso determinate risorse( Vhost, pagine dinamiche ecc..) , e mettere in blacklist gli IP da cui provengono più pacchetti del dovuto in un lasso di tempo prestabilito.

E’ utile installarlo se il server ospiterà molti siti web.

Una semplice ed efficace configurazione del modulo è la seguente:

<IfModule mod_dosevasive.c> 
DOSHashTableSize 3097 

DOSPageCount 2 

DOSSiteCount 50 

DOSPageInterval 1 

DOSSiteInterval 1 

DOSBlockingPeriod 10 
</IfModule> 

Rootkit Detection

Ci sono alcuni software opensource leggeri e molto utili per determinare se i file del nostro SO sono stati compromessi e se vi è presenza di rootkit.

TripWire, che conserva un database dei file di sistema con varie informazioni(dimensioni, nome, hashing ecc..) e lo confronta periodicamente per controllare eventuali manomissioni.

Rkhunter, uno “scanner di rootkit”, vediamo come installarlo.

#wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.3.4/rkhunter-1.3.4.tar.gz
# tar -zxvf rkhunter-1.3.4.tar.gz
# cd rkhunter
# ./installer.sh

Per effettuare una prima scansione locale:

# /usr/local/bin/rkhunter -c

Avremo subito un quadro completo del Sistema con un elenco degli eventuali file compromessi, rootkit, warning.

Security through obscurity

Ogni servizio in genere lascia moltissime informazioni ai client circa il nome del software, la versione attuale , eventuali patch e moduli installati.

Sono indizzi che non devono essere lasciati.

Vediamo come rimuovere queste informazioni dai servizi in genere più utlizzati:

Apache: nel file di configurazione cambiare/aggiungere queste righe:

ServerTokens ProductOnly
ServerSignature Off

LightHttpd: In lighthttpd.conf :

server.tag = "Versione Nascosta."

Postfix: In Main.cf:

smtpd_banner = “Versione Nascosta.”

Bind: In named.conf.options :

Version "Versione Nascosta";

Conclusione

Questa è una breve e pratica guida all’hardening di base di un sistema GNU/Linux, sono passi fondamentali da muovere, tuttavia l’argomento non è stato coperto nella sua interezza, essendo il campo dell’ IT Security vasto e dinamico l’invito è ad un approfondimento, aggiornamento e ricerca costante.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

nov
16

Hardening Linux 2

 

Questa è la seconda parte della guida Hardening Linux che spiega passo per passo come mettere in sicurezza il proprio server o computer al riparo di molti attacchi che si possono verificare quando si è connessi ad Internet per parecchio tempo.

Aggiornare i pacchetti

Come è stato già detto, nelle installazioni più comuni di sistemi Gnu/Linux viene installato molto software che può risultare nella maggior parte dei casi inutile per i propri scopi.
Ogni servizio in ascolto può soffrire di bachi di sicurezza, più servizi in ascolto ci sono, più si è esposti al rischio di un attacco, per questo motivo è necessario rimuovere i pacchetti superflui ed aggiornare il sistema per mantenersi in linea con l’ultimo rilascio stabile della propria distribuzione.

Quest’ ultima operazione è, generalmente, gestibile tramite il package manager di default, ma un buon amministratore dovrebbe prevedere degli aggiornamenti periodici per il software più a rischio.
Per individuare in modo rapido servizi che sono attualmente in ascolto su qualche porta del nostro S.O. possiamo fornirci dell’ottimo tool netstat nel modo seguente:
# netstat –tcp –udp –listening –programs
Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 *:imaps *:* LISTEN 2870/dovecot

tcp 0 0 *:51234 *:* LISTEN 20669/teamspeak-ser

tcp 0 0 *:pop3s *:* LISTEN 2870/dovecot

tcp 0 0 *:31337 *:* LISTEN 2466/sshd

tcp 0 0 *:9000 *:* LISTEN 3290/vmware-authdla

tcp 0 0 *:mysql *:* LISTEN 2550/mysqld

tcp 0 0 *:8333 *:* LISTEN 3441/vmware-hostd

ecc.ecc.

In questo modo avremo il PID , la porta su cui è in ascolto e il nome del servizio.

Rimuovere tutti i servizi che non sono in linea con la funzione del server.

Sicurezza in SSH

Nella maggior parte dei server la scelta primaria ( e corretta ) per l’accesso remoto al S.O , ricade su SSH, e questo viene installato di default con una configurazione non troppo corretta per un sistema sicuro.

L’accesso root non deve MAI essere permesso per alcun utente ed i SysAdmin devono avere i propri account da dove guadagneranno i privilegi di root.

Per impedire il login come root cambiare la seguente linea nella configurazione di SSH (generalmente in /etc/ssh/sshd_config):
PermitRootLogin no
La porta standard del servizio è la 22, che è automaticamente la più esposta ad attacchi di tipo bruteforce e DOS , nonché appunto nota a chiunque.

E’ importante mettere in ascolto SSH su porte che non vadano in conflitto con altri demoni.

Per fare ciò cambiare la seguente linea nella configurazione di SSH:
Port 31337
Disabilitare l’autenticazione senza password ( NESSUN UTENTE OPERATIVO dovrebbe avere un account senza password) cambiando la seguente linea nella configurazione di SSH:
PermitEmptyPasswords no
Disabilitare infine sftp se non necessario commentando la suguente linea:
#Subsystem sftp /usr/lib/openssh/sftp-server

La parte successiva di questa guida verrà pubblicata tra qualche giorno…..

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

nov
09

Hardening Linux

 

Nel corso dell’articolo impareremo ad applicare i concetti relativi all’Hardening di un sistema operativo generalmente *nix like, in particolare si opererà cercando di aumentare passo dopo passo il livello di sicurezza di una distribuzione GNU/Linux generica.

La sicurezza informatica è da sempre uno dei temi più importanti , ma allo stesso tempo, delicati da affrontare , ma specialmente da concretizzare.
E’ un must del settore la celebre frase: “Nessun computer può essere sicuro al 100%”, un dogma imprescindibile.
Eppure la necessità di aumentare i livelli di sicurezza di un sistema è sempre più grande, e la progettazione di un ambiente sicuro porta a ridurre drasticamente l’usabilità del sistema stesso.
Per questo motivo è nato il processo di Hardening di un sistema operativo, che punta a rendere maggiormente sicuro un ambiente esistente e facilmente utilizzabile.
L’installazione di default di una distribuzione GNU/Linux tende ad essere molto ricca di feature e software,e ragionevolmente, per questo motivo, insicura, perché espone all’esterno servizi con configurazioni standard , spesso inutili per i nostri scopi.

Partizionamento

La prima operazione da compiere, è sicuramente quella di rivedere l’intero partizionamento dei dischi.
Questo sia per una questione di scalabilità, che per prevenire danni da attacchi DOS sul filesystem che tentano di riempire lo spazio disponibile sul disco rendendo il sistema inutilizzabile .

L’organizzazione di un filesystem UNIX prevede alcune directory standard che sono comunemente le più esposte a svariati tipi di attacchi a causa della loro funzione all’interno del S.O:
/var : in cui una generazione “anomala” di logs in poco tempo può saturare lo spazio della partizione.
/tmp. : che essendo adibita a contenere file temporanei gode spesso di privilegi troppo alti. Rootkit ed exploit vengono spesso lanciati proprio da questa directory.
La prima cosa da fare è controllare il file: /etc/fstab e dare un occhiata ai processi che collegano le partizioni ai relativi punti di mount al boot:
# cat /etc/fstab

/dev/md0     none     swap     sw         0     0

/dev/md1     /boot     ext3     defaults     0     0

/dev/md2     /     ext3     defaults     0     0

In questo esempio abbiamo una partizione di swap , una dedicata a /boot ed un unica partizione di root.
Come è stato detto prima , a seconda del tipo di FS e di partizionamento(RAID, LVM, dev ecc..) utilizzati , dobbiamo assicurarci di arrivare ad una soluzione che comprenda almeno una partizione per /var ed una per /tmp , seguendo questo scenario arrivare ad un punto simile:

#cat /etc/fstab

/dev/md0     none     swap     sw         0     0
/dev/md1     /boot     ext3     defaults     0     0
/dev/md2     /     ext3     defaults     0     0
/dev/md3    /var    ext3    defaults        0    0
/dev/md4    /tmp    ext3    defaults        0    0

Per ripartizionare i dischi si possono usare tool come Fdisk , parted o quelli disponibili nella suite di LVM.
*Attenzione, se non si usa LVM,  la / deve essere smontata per effettuare il resize e il partizionamento.

Nei prossimi giorni la seconda parte delle guida Hardening Linux…

Scritta da Emiliano Mancini per Valent-blog.eu

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

mar
16

Grsecurity sistema di sicurezza per Linux kernel

 

lock Grsecurity è una soluzione di sicurezza, distribuita sotto forma di  una patch per il kernel Linux che permette di effettuare molteplici controlli e verifiche in modo attivo nel nostro sistema. Questi funzionalità passano dal livello di protezione del funzionamento del kernel, dal controllo di esecuzione dei job nello stack, dal controllo delle attività degli utenti, dai permessi di esecuzione in alcune aree del sistema, agli ulteriori controlli di sicurezza imposti da chroot e molto altro. Ecco una descrizione di ogni opzione che offre questa soluzione; la traduzione delle varie sezioni è manutenuta il più possibile vicina ai testi originali. Sono lasciati i titoli originali per agevolare la loro corretta identificazione.

Grsecurity

La configurazione e l’attivazione di queste opzioni può essere fatta nel menu di configurazione (ossia quando si lancia il comando make menuconfig).

Per usare la patch di sicurezza andare in Security options > Grsecurity e selezionare Grsecurity.

kernel2
L’attivazione di questa opzione consente di attivare il sistema grsecurity, che ha una vasta gamma di opzioni che possono essere configurate in modo da migliorare la sicurezza del sistema. Si consiglia vivamente di attivarla e le aiuti ci porteranno a scoprire quali sono le opzioni più interessanti.

kernel3

  • Low additional security

L’attivazione di questa opzione abilita una serie di opzioni di grsecurity per raggiungere un elevato livello di tutela del sistema nei confronti di un gran numero di attacchi, da usare per evitare che ci siano problemi coll’intero sistema in caso di problemi. Se si sta utilizzando alcuni software particolare o se si riscontrano problemi di prestazioni con i più elevati livelli di sicurezza, questo potrebbe essere l’opzione migliore.
Con questa opzione permetterà le seguenti caratteristiche di grsecurity:

linking restrictions

fifo restrictions

random pids enforcing nproc on execve()

restricted dmesg

random ip ids

enforced chdir(”/”) on chroot

  • Medium additional security

Con l’attivazione di questa opzione, diverse caratteristiche di grsecurity oltre a quelle del livello basso saranno abilitate. Queste funzionalità forniscono una maggiore sicurezza al sistema, tuttavia, ci possono essere programmi (spesso molto vecchi) che sono incompatibili con questo livello di sicurezza.

Se hai intenzione di attivare questa opzione, assicurarsi in anticipo che il servizio di autenticazione (identd) è in esecuzione con gid 10 (di solito il gruppo wheel).

Questo livello di sicurezza si attivano le seguenti funzioni in aggiunta a quelle previste per il basso livello di sicurezza:

random tcp source ports
failed fork logging
time change logging
signal logging
deny mounts in chroot
deny double chrooting
deny sysctl writes in chroot
deny mknod in chroot
deny access to abstract AF_UNIX sockets out of chroot
deny pivot_root in chroot
denied writes of /dev/kmem, /dev/mem, and /dev/port
/proc restrictions with special gid set to 10 (generalmente wheel)
address space layout randomization
removal of addresses from /proc//[maps|stat]

  • High additional security

Mediante l’attivazione di questa opzione, tante funzioni di grsecurity verranno attivate cosicché il sistema sarà protetto da numerosi attacchi.

L’aumento della sicurezza, però, incrementa anche il numero di incompatibilità con certi software installati nel sistema.

Questo livello permette l’uso del sistema PaX; si consiglia di leggere i documenti del progetto (http://pax.grsecurity.net). Scaricare chpax dal sito web ed eseguire nei i file binari che potrebbero generare problemi di incompatibilità con PaX.

Inoltre dobbiamo ricordare che se sono attive restrizioni su /proc, si deve esegue identd con privilegio del gruppo whell (GID 10).

Questo livello di sicurezza attiva protezioni in aggiunta le seguenti attività nel medio e basso livello:

additional /proc restrictions
chmod restrictions in chroot
no signals, ptrace, or viewing processes outside of chroot capability restrictions in chroot

deny fchdir out of chroot
priority restrictions in chroot
segmentation-based implementation of PaX
mprotect restrictions
kernel stack randomization
mount/unmount/remount logging
kernel symbol hiding

  • Customized additional security

Attraverso l’attivazione di questa opzione Grsecurity può essere configurato in maniera personalizzata, ciò consente di abilitare altre funzioni che non sono contemplate nell’installazione base dei livelli di sicurezza. Queste caratteristiche aggiuntive includono: TPE, socket restriction, e sysctl.

Si consiglia di leggere la guida d’aiuto al fine di valutare se l’utilità di queste funzioni aggiuntive.

In prossimi articoli, il resto della guida.

Popularity: 1% [?]



Puoi visualizzare il post originale qui.

top