Цикл небольших заметок по настройке серверов

Тема в разделе "Администрирование серверов", создана пользователем kenny, 6 июл 2011.

  1. kenny

    kenny Гость

    Исторически сложилось так что я на дух не переношу все что связано с Ms,моя любовь к unix-подобным системам в том что настроек ровно столько сколько у тебя знаний ну и конечно в гибкости операционной системы.
    Сегодня мы поговорим о защите от брутфорса ssh на примере программы BruteBlock.
    Ниже будет приведена установка,настройка в ос freebsd.
    Приступим:)
    !!!! Обновите порты !!!!
    Установка
    Ищим самы программу

    Код:
    test# whereis bruteblock
    bruteblock: /usr/ports/security/bruteblock
    
    
    Переходим и устанавливаем
    Код:
    cd /usr/ports/security/bruteblock && make install clean && rehash
    Следующее что сделаем это приступим к настройки
    Код:
    ee /usr/local/etc/bruteblock/ssh.conf
    
    Видим внутри примерно следующее
    Код:
    # Sample configuration file for the OpenSSH daemon
    
    # regexp rule. Please rember that you MUST specify only one match for
    # ip address to block
    #
    # this regexp for the OpenSSH server matches lines like:
    #
    # comment: auth via key only
    #sshd[72593]: Illegal user hacker from 1.2.3.4
    #
    # comment: pwd auth, but no such user
    #sshd[72593]: Failed password for illegal user sammmm from 1.2.3.4
    #
    # comment: correct user, but wrong password
    #sshd[72626]: Failed password for samm from 1.2.3.4
    #
    # comment: other messages
    #sshd[41945]: error: PAM: authentication error for alice from 192.168.0.1
    #sshd[41945]: error: PAM: authentication error for illegal user root from 192.168.0.1
    #sshd[41945]: Failed keyboard-interactive/pam for invalid user root from 192.168.0.1 port 64507 ssh2
    #sshd[16666]: Failed unknown for illegal user asdfasdfasd from 192.168.0.1 port 52652 ssh2
    #sshd[16666]: Did not receive identification string from 192.168.0.1
    #
    regexp          = sshd.*(?:Illegal|Invalid) user \S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
    regexp1        = sshd.*Failed \S+ for (?:(?:illegal|invalid) user )?\S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
    regexp2        = sshd.*error: PAM: authentication error for (?:(?:illegal|invalid) user )\S+ from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
    regexp3        = sshd.*Did not receive identification string from (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
    
    # Number of failed login attempts within time before we block
    max_count      = 4
    
    # Time in seconds in which all failed login attempts must occur
    within_time    = 60
    
    # Time in seconds to block ip in firewall
    
    # 10 minutes
    reset_ip      = 600
    
    # IPFW table number to add "bad" hosts
    ipfw2_table_no = 1
    
    где
    У меня получилось следующее
    Практически все уже готово последние штрихи
    Правим /etc/syslog.conf
    Должно получится следующее
    Код:
    test# cat /etc/syslog.conf |grep auth
    auth.info;authpriv.info                        /var/log/auth.log
    auth.info;authpriv.info |exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf
    
    Добавляем правила в фаервол
    Код:
    ipfw add 11 deny all from "table(10)" to me
    ipfw add 11 deny all from me to "table(10)" 
    Редактируем rc.conf и запускаем демоны
    Код:
    echo 'syslogd_flags="-c"' >> /etc/rc.conf
    echo 'bruteblockd_enable="YES"' >> /etc/rc.conf
     echo 'bruteblockd_table="10"' >> /etc/rc.conf
    echo 'bruteblockd_flags="-s 5"' >> /etc/rc.conf
    /etc/rc.d/syslogd restart
    /usr/local/etc/rc.d/bruteblockd start
    
    Как советуют люди и я их понимаю, редактируем конфигурационный файл ssh
    Код:
    echo 'UseDNS no' >> /etc/ssh/sshd_config
    Смотрим логи :)
    Вот теперь 85.17.76.159 посидит в бане :)
     
    Mafiozi и alesel нравится это.
  2. alesel

    alesel Пользователь

    Сообщения:
    43
    Симпатии:
    0
    Спасибо. Хорошая вещь.
    Я сам от Unix'a далек, но сижу на CentOS. Установка многим будет отличаться?
     
  3. Lange

    Lange Пользователь

    Сообщения:
    1.791
    Симпатии:
    143
    Версия TP:
    2.2.1
    Это две разные оси:)
     
  4. alesel

    alesel Пользователь

    Сообщения:
    43
    Симпатии:
    0
    Ну это понятно =)
     
  5. kenny

    kenny Гость

    под линукс придется собирать из исходных кодов
     
  6. diden05

    diden05 Пользователь

    Сообщения:
    262
    Симпатии:
    76
    В линуксе можно использовать fail2ban она поможет от подбора паролей не только для ssh, но и почти для всех сервисов, типа MTA, FTP итд.
     
    alesel нравится это.
  7. alesel

    alesel Пользователь

    Сообщения:
    43
    Симпатии:
    0
    Спасибо. попробую
     
  8. kenny

    kenny Гость

    перебор для почтовика правила помогают.
    для фтп можно написать скрипт который будет парсить логи :)
     
  9. diden05

    diden05 Пользователь

    Сообщения:
    262
    Симпатии:
    76
    Можно и штаны через голову надевать, я предложил нормально работающее решение для Linux.
     
  10. kenny

    kenny Гость

    Вы говорите как человек который боиться sh))))
    смотрите система то простая))) Крон и скрипт что может быть проще и удобней :) и да табличка для неверных которым нельзя к вам на ресурс и все :)
     

Поделиться этой страницей