OVH Community, your new community space.

[ SSH attack - Brute force ] mitigation


Ego-Ale-Sum
12.03.2009, 19.46
in questo caso, però, bisogna modificare lo script (altrimenti si crea un nuovo processo ogni volta che resta in esecuzione e non termina mai!)

a proposito di crontab...
se guardate nel file log e vedete tante righe simili a:
Codice:
Mar 11 06:30:01 ns356985 CRON[6351]: (pam_unix) session opened for user root by (uid=0)
Mar 11 06:30:01 ns356985 CRON[6352]: (pam_unix) session opened for user www-data by (uid=0)
Mar 11 06:30:01 ns356985 CRON[6356]: (pam_unix) session opened for user root by (uid=0)
Mar 11 06:30:01 ns356985 CRON[6352]: (pam_unix) session closed for user www-data
Mar 11 06:30:01 ns356985 CRON[6356]: (pam_unix) session closed for user root
Mar 11 06:30:06 ns356985 CRON[6351]: (pam_unix) session closed for user root
Mar 11 06:31:01 ns356985 CRON[6406]: (pam_unix) session opened for user root by (uid=0)
Mar 11 06:31:01 ns356985 CRON[6405]: (pam_unix) session opened for user root by (uid=0)
Mar 11 06:31:01 ns356985 CRON[6406]: (pam_unix) session closed for user root
Mar 11 06:31:06 ns356985 CRON[6405]: (pam_unix) session closed for user root
state pure tranquilli!
sono solamente i login che fa cron per eseguire i vari compiti
(lo scrivo qui perchè appena li ho visto, subito ho preso paura )

natran
12.03.2009, 13.53
[Per chi non lo sapesse, crontab è il comando utilizzato per installare, disinstallare o l'elenco delle tabelle utilizzate per guidare il demone Vixie Cron. Ogni utente può avere il proprio crontab, che si trovano in /var/spool/cron/crontab; non possono essere modificati direttamente, ma è necessario utilizzare il comando crontab per la modifica o la creazione di nuove sessioni di lavoro.

Per editare il vostro file crontab scrivete

Codice:
crontab -e
La sintassi del crontab è la seguente:

1 2 3 4 5 /directory/al/comando/da/eseguire arg1 arg2

Dove:

1: Minuti (0-59)
2: Ore (0-23)
3: Giorni (0-31)
4: Mesi (0-12 [12 == Dicembre])
5: Giorno della settimana (0-7 [7 or 0 == domenica])
/directory/al/comando/- Script o comando da eseguire

Esempio
Se desiderate avere quello script chiamato /root/ssh-attack.sh funzionante tutti i giorni alle 3 di notte, il dato da inserire in crontab sarà il seguente (premesso lo script .sh appunto):

1) Installate cronjob
Codice:
crontab -e
2) Inserite la seguente linea
Codice:
0 3 * * * /root/ssh-attack.sh

natran
12.03.2009, 13.35
Citazione Originariamente Scritto da Ego-Ale-Sum
uhm... perchè lasciarlo in esecuzione continuamente con un sleep? non sarebbe più semplice uno script da eseguire con crontab?
Volendo, si potrebbe aggiungere a crontab

Ego-Ale-Sum
12.03.2009, 13.34
uhm... perchè lasciarlo in esecuzione continuamente con un sleep? non sarebbe più semplice uno script da eseguire con crontab?

natran
12.03.2009, 09.33
Citazione Originariamente Scritto da gio01
funge pure su ubuntu ?
Non ho mai usato Ubuntu sinceramente e pertanto non so rispondere al tuo quesito. Basterebbe comunque fare una prova "violando" la regola impostata dallo script, sarebbe il modo per vedere se funziona.

gio01
12.03.2009, 09.17
funge pure su ubuntu ?

natran
12.03.2009, 08.45
Grazie a questo piccolo script shell, possiamo bloccare eventuali attacchi ssh provenienti da internet verso la nostra macchina linux e notificarlo via email.
Questo script controlla i logs sul file "/var/log/auth.log" ogni 60 secondi, se un utente prova quindi ad effettuare un login sulla macchina servendosi di una username inesistente, sicuramente si tratta di un brute-force attack, per cui lo script rilevando il tentativo login fallito aggiungerà l'ip address dell'host remoto all'interno de file "/etc/hosts.deny" gestito dal tcp wrapper che provvederà a bloccare qualsiasi comunicazione da e verso quell'host.

Progettato per:
Fedora/RedHat/CentOS

Testato su:
CentOS

Codice:
#!/bin/sh
#
while :
do
sleep 60
varcat=`cat /var/log/auth.log |grep Illegal | awk '{print $10}' |head -1 | awk '{split($0,Array,":"); print Array[4]}'`
vardate=`date`
if [ -z $varcat ]
then
# "nothing to do..."
echo "" > /var/spool/mail/root
echo "" > /var/mail/root
else
# "Block host"
echo "sshd: $varcat" >> /etc/hosts.deny
sleep 2
cat /var/log/auth.log |grep Illegal > /var/log/auth.temp
sleep 2
# echo send report via email - don't miss to change "your_account@example.com"
mail your_account@example.com -s "SSH Illegal user $vardate" < /var/log/auth.temp
sleep 1
cat /var/log/auth.temp >> /var/log/auth-backup.log
sleep 1
echo "" > /var/log/auth.log
sleep 1
rm /var/log/auth.temp
fi
done
Autorun:
Per avviare lo script al boot della macchina:
1) Copia & Incolla lo script in file chiamato ssh-attack.sh dentro "/usr/local/bin"
2) # chmod 500 /usr/local/bin/ssh-attack.sh
3) infine aggiungi la sottostante riga al file "/etc/rc.local:
# sh /usr/local/bin/ssh-attack.sh