і всі потрібні компоненти для роботи скрипта коректно працюють з нею. p align="justify"> Варто відзначити що скрипт, описаний в цій роботі, лише додаткова міра по захисту сервера від зовнішніх атак методом перебору, він лише сигналізує системного адміністратора про те, що на сервер йде/йшла атака з метою злому сервера телефонії або або зафлужіванія/перехоплення доступу по ssh.
На практиці це виглядає наступним чином. Розіб'ємо скрипт на 3 частини, по цілях його використання:
. Аналізування логу на предмет запису В«failed keyboard interectiveВ» в/var/log/auth.log
. Аналізування логу на предмет запису В»wrong passwordВ»/var/log/asterisk/full
. Аналізування стан локальних користувачів сервера телефонії
Розберемо кожен окремо.
5.3 Аналіз логу ssh
Всі ssh коннекти до сервера (будь то успішні чи ні) фіксуються (логіруются) в системному файлі auth.log. Відповідно нас цікавить неуспішні спроби конекту, які ми будемо розцінювати, як спробу перебору пароля. p align="justify"> Така спроба в балці виглядає наступним чином:
pam_unix (sshd: auth): authentication failure; logname = uid = 0 euid = 0 tty = ssh ruser = rhost = 176.67.48.163
Тут видно, що користувач, маючи зовнішній ip адресу 176.67.48.163 спробував зайти по ssh на поточний сервер і ввів неправильний логін і пароль. Нам цікава запис В«authentication failureВ», оскільки саме її шукає наш скрипт. p align="justify"> "exec" => "/ bin/cat/var/log/auth.log |/bin/grep sshd |/usr/bin/tail-n 30 |/bin/grep -c "Failed keyboard-interactive/pam for " "
"email" => "Attack off SSH. n On 30 lines on log file, {exec} contains @ Failed keyboard-interactive/pam @"
У цій частині видно, що ми шукаємо 30 останніх записів на предмет шуканого слова, після чого відправляється email, який буде виглядати наступним чином:
2011-07-26 21:00:07 off SSH.30 lines on log file, 8 contains @ Failed keyboard-interactive
Зрозуміло є ймовірність того, що це просто хтось, хто має справжні паролі на сервер, помиляється при введенні, тому ця частина скрипта носить лише застережливий характер.
Тут нам стане в нагоді програмний пакет fail2ban. Згідно заздалегідь приготовленого файлу конфігурації, а саме:
enabled = true = ssh = sshd = iptables [name = SSH] = xmpp [name = SSH] =/var/log/auth.log = 6
bantime = 259200
Розпишемо, що означає кожен параметр:
В· ignoreip - це розділений пробілами список ip-адрес, які не можуть бути блоковані fail2ban. Сюди можна занести свою локальну машину або комьютер, з якого будуть проводиться експерименти над сист...