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.

top