Proteggere il proprio server dagli attacchi brute force con APF e BFD
Usare password lunghe e complesse spesso non è sufficiente a proteggere il proprio server da eventuali intrusioni, per questo oggi spieghiamo come proteggerlo da attacchi di tipo brute force utilizzando due semplici software che sfruttano il firewall iptables.
Questi due software vengono distribuiti gratuitamente dal sito http://www.rfxn.com/, ora andiamo a vedere nel dettaglio cosa fanno e come configurarli.

Partiamo da APF (advanced policy firewall), questo software è una sorta di configuratore per iptables, che ci permette di configurare in modo semplice e rapido le regole base di iptables come ad esempio le porte da aprire in base ai servizi che utilizziamo, il tutto a partire da un semplice file di configurazione molto dettagliato e con ogni opzione ben commentata.
Per installarlo basta scaricare il pacchetto http://www.rfxn.com/downloads/apf-current.tar.gz e decomprimerlo
wget http://www.rfxn.com/downloads/apf-current.tar.gz
tar zxf apf-current.tar.gz
ora entriamo nella directory appena estratta e installare APF
cd apf-9.7-1/
./install.sh
Installing APF 9.7-1: Completed. Installation Details: Install path: /etc/apf/ Config path: /etc/apf/conf.apf Executable path: /usr/local/sbin/apf Other Details: Listening TCP ports: 21,22,80,631,3306,5900,15749,17500 Listening UDP ports: 5353,15749,17500,38366 Note: These ports are not auto-configured; they are simply presented for information purposes. You must manually configure all port options.
ora andiamo a modificare il file di configurazione /etc/apf/conf.apf
DEVEL_MODE="1"
questo parametro indica se apf è in modalità sviluppo (e quindi non applica le regole) o in modalità produzione e quindi rende effettive le regole del firewall, prima di impostarlo a 0 per renderlo attivo modifichiamo il resto delle regole altrimenti rischiamo di chiuderci fuori dal server
Impostiamo le porte in ascolto modificando il paramentro IG_TCP_CPORTS
# Common inbound (ingress) TCP ports IG_TCP_CPORTS="22,21,20,80,25,53,110,143,443,2222,587,953,993,995,4949"
io utilizzo queste impostazioni che sono per i servizi ssh,ftp,web,mail (pop/imap/smtp),directadmin e munin
e queste sono le impostazioni per le porte in uscita
# Common outbound (egress) TCP ports EG_TCP_CPORTS="21,25,80,443,43"
e poi più sotto impostiamo a “1″ le seguenti variabili che ci permettono di scaricare delle liste di ip conosciuti malevoli in modo da filtrare a priori il loro traffico
DLIST_PHP="1" DLIST_SPAMHAUS="1" DLIST_DSHIELD="1" DLIST_RESERVED="1"
salviamo ed avviamo apf con
apf -s
Ora passiamo a BFD (brute force detection), che è un software che analizzando i log rileva tentativi di intrusione alla macchina con metodologia Brute Force, ciò significa che se qualcuno tenta di accedere alla nostra macchina per bucarla nei log di sistema BFD troverà traccia dei vari tentativi, e se questi superano una soglia che possiamo impostare, banna gli ip tramite APF.
Procediamo con il download (http://www.rfxn.com/downloads/bfd-current.tar.gz) e l’installazione
wget http://www.rfxn.com/downloads/bfd-current.tar.gz tar zxf bfd-current.tar.gz cd bfd-1.4/ ./install.sh
a differenza di apf, bfd viene installato in /usr/local/bfd, procediamo ora alla modifica del fine di configurazione /usr/local/bfd/conf.bfd
# how many failure events must an address have before being blocked? # you can override this on a per rule basis in /usr/local/bfd/rules/ TRIG="15" # send email alerts for all events [0 = off; 1 = on] EMAIL_ALERTS="1" # local user or email address alerts are sent to (separate multiple with comma) EMAIL_ADDRESS="tafaz@codelime.net" # subject of email alerts EMAIL_SUBJECT="Brute Force Warning for $HOSTNAME"
la prima variabile indica il numero di eventi che devono esser trovati nei file di log per scatenare il ban, questa impostazione può essere modificata successivamente servizio per servizio mentre EMAIL_ALERTS,EMAIL_ADDRESS e EMAIL_SUBJECT servono per ricevere una copia via email dei vari attacchi rilevati e delle azioni intraprese da bfd per bloccare eventuali nuovi attacchi dall’host.
# syslog auth log path AUTH_LOG_PATH="/var/log/auth.log"
verificate anche che questo file punti correttamente al vostro auth log (di default nell’installazione bfd punta a /var/log/secure)
e come ultima cosa modificate il file /etc/cron.d/bfd e rimuovete le seguenti righe altrimenti il cron non funzionerà
MAILTO= SHELL=/bin/bash
a questo punto anche bfd è installato e funzionante, non è necessario avviarlo come servizio in quanto gira da crontab ogni 3 minuti e analizza i log in automatico.
Una piccola aggiunta che ho fatto al mio sistema, visto che le regole per exim difficilmente bannavano gli host degli spammer, ho greato una regola aggiuntiva nella directory /usr/local/bfd/rules e l’ho chiamata exim-blacklist, di seguito riporto il contenuto del file
# failed logins from a single address before ban # uncomment to override conf.bfd trig value TRIG="1" BAN_COMMAND="/sbin/ip route add unreachable $ATTACK_HOST" # file must exist for rule to be active REQ="/usr/sbin/exim" if [ -f "$REQ" ]; then LP="/var/log/exim/rejectlog" TLOG_TF="exim" ## EXIM dictionary attacks ARG_VAL=`$TLOG_PATH $LP $TLOG_TF | grep "Email blocked by" | grep -iw "rejected RCPT" | grep -E '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | tr -d '<>:' | sed -n -e '/rejected RCPT/s/.*\[\(.*\)] F=\(.*\) rejected RCPT \([^ ]*\).*/\1:\3/p'`
questa regola specifica come trigger dell’evento 1 quindi ad ogni occorrenza trovata nel file di log bannerà l’ip utilizzando il comando
/sbin/ip route add unreachable $ATTACK_HOST
e come criterio di match ho utilizzato la stringa “Email blocked by” che è ciò che viene scritto nei log di exim quando una mail viene rifiutata da una blacklist (es Spamhaus)
In questo caso per bannare l’host non utilizzo apf bensì /sbin/ip per motivi di praticità, visto che il numero di host segnati dalle blacklist è elevato da far gestire ad apf, e quindi ad iptables, per evitare appesantimenti è meglio utilizzare ip
Related Posts
| Stampa l'articolo | Questo articolo è stato pubblicato da admin il 24 ottobre 2011 alle 19:24, ed è archiviato come Linux, SysAdmin. Puoi seguire i commenti a questo post attraverso RSS 2.0. Puoi pubblicare un commento o segnalare un trackback dal tuo sito. |










www.Limegator.it