Разное → shhit — защищаем SSH от брутфорса

22.03.2010

Если ваш /var/log/auth.log пухнет от записей вида

Mar 22 10:56:50 username sshd[24818]: Invalid user adiaz from 58.221.34.18
Mar 22 10:56:54 username sshd[24928]: Invalid user capacita from 58.221.34.18
Mar 22 10:56:58 username sshd[25065]: Invalid user manuel from 58.221.34.18
Mar 22 10:57:02 username sshd[25164]: Invalid user silvia from 58.221.34.18
Mar 22 10:57:06 username sshd[25294]: Invalid user adriano from 58.221.34.18
Mar 22 10:57:10 username sshd[25393]: Invalid user rfonseca from 58.221.34.18

то пора принимать меры :) Один из вариантов защиты от подбора паролей к ssh, это установка sshit.

sshit — это перловый скрипт, который анализирует данные от syslogd в поисках брутфорс атак. Если количество неудачных попыток достигает определённого числа, то ip атакующего блокируется с помощью фаервола ipfw, ipfw2 или pf (на выбор).

Установка

  1. В ISPManager, в разделе Настройки сервераВозможности, включаем Брэндмауэр ipfw (как установить ipfw без ISPManager).

  2. Ставим из портов sshit:

    # cd /usr/ports/security/sshit
    # make install clean

    В конце установки будет дана инструкция по дальнейшей настройке:

    ===>  CONFIGURATION NOTE:
    
      Configuration of sshit is done via main configuration file
      located at /usr/local/etc/sshit.conf
    
      To run the script, add a line in /etc/syslog.conf:
    
    auth.info;authpriv.info                         |exec /usr/local/sbin/sshit
    
      and restart syslogd.
    
      If you want to use pf as the firewall, you should add a table and the
      corresponding deny rule. For example,
      (In /etc/pf.conf)
    
    table <badhosts> persist
    block on $extdev from <badhosts> to any
    
      and reload the pf rules.
    
      If you want to use ipfw2 (with table) as the firewall, you should add a
      table and the corresponding deny rule. For example,
    
    # ipfw add deny ip from table(0) to any
  3. Следуя инструкции открываем файл /etc/syslog.conf и после

    auth.info;authpriv.info				/var/log/auth.log

    добавляем:

    auth.info;authpriv.info				|exec /usr/local/sbin/sshit
  4. Перезапускаем syslogd:

    # /etc/rc.d/syslogd restart
  5. Настраиваем sshit, файл /usr/local/etc/sshit.conf:

    # тип фаервола, я использую ipfw2
    FIREWALL_TYPE	= ipfw2
    
    # Количество попыток, после которых ip будет заблокирован
    MAX_COUNT	= 3 
    
    # Время в секундах, за которое считаются неудачные попытки
    WITHIN_TIME	= 300
    
    # Время в секундах, на которое будет заблокирован ip
    RESET_IP	= 3600
    
    ... остальные настройки ...
  6. В конец файла /etc/rc.firewall добавляем правило для блокировки:

    ${fwcmd} add deny all from "table(0)" to any
  7. Перезагружаем сервер

  8. Проверяем список правил фаервола:

    # ipfw show
    00100 247446 699254233 allow ip from any to any via lo0
    00200      0         0 deny ip from any to 127.0.0.0/8
    00300      0         0 deny ip from 127.0.0.0/8 to any
    00400     22      1436 deny ip from table(0) to any

    Цифры перед последним правилом означают: 00400 — номер правила, 22 — число пакетов попавших под правило, 1436 — число байт попавших под правило. Эти цифры будут меняться по ходу работы фаервола.

    Посмотреть таблицу 0, в которой хранятся адреса атакующих, можно с помощью команды

    # ipfw table 0 list
    141.164.71.71/32 0

Результат работы sshit в файле /var/log/auth.log:

Mar 23 00:00:19 username sshd[88589]: Invalid user admin from 141.164.71.71
Mar 23 00:00:21 username sshd[89495]: Invalid user test from 141.164.71.71
Mar 23 00:00:23 username sshd[89892]: Invalid user guest from 141.164.71.71
Mar 23 00:00:24 username sshit: BLOCKING 141.164.71.71 with ipfw2 

По материалам:
Защита ssh от брутфорс атак.
sshit - защита от подбора паролей ssh/ftp
Sshit - защищаем сервер от перебора паролей

Написанное актуально для
FreeBSD 8

Комментарии

Гость
04.01.2011, 03:43

Замечательная инструкция!!! Спасибо большое, все сделал по шагам - работает!
Смущает только при редактировании некоторых файлов сообщение file has hard-links detach before saving, что это за hard-links не подскажите?

Добавить комментарий