Using iptables to prevent SSH brute force

Рубрика: Development | 21 June 2009, 16:34 | Vadim Voituk

Себе на заметку, дабы потом опять не гуглить.
Эти 2 простых iptables-правила спасают сервер от brute force перебора пароля от SSH:
iptables -I INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsourceiptables -I INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 5 --name DEFAULT --rsource -j DROP
В результате те, кто делает более 5-ти попыток SSH-подключений за последние 3 минуты – блокируются на 3 минуты.
Для того, чтоб эти правила запускались при старте системы делаем dump rules-файла:
iptables-save > /etc/sysconfig/iptables

Комментариев: 4

4 Responses to “Using iptables to prevent SSH brute force”

Комментарии:

  1. crud

    как вариант также можно использовать следующую конструкцию
    $IPTABLES -F
    $IPTABLES -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
    $IPTABLES -N SSH_WHITELIST
    $IPTABLES -N SSH_BF
    $IPTABLES -A INPUT -p tcp –dport 22 -m state –state NEW -j SSH_WHITELIST
    for I in 88.81.251.200 88.81.251.194 213.227.195.211; do
    $IPTABLES -A SSH_WHITELIST -s $I -m recent –remove –name SSH -j ACCEPT
    done
    $IPTABLES -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –name SSH –set –rsource -j SSH_BF
    $IPTABLES -A SSH_BF -m recent ! –rcheck –seconds 60 –hitcount 3 –name SSH –rsource -j RETURN
    $IPTABLES -A SSH_BF -j LOG –log-prefix “SSH Brute Force Attempt: ”
    $IPTABLES -A SSH_BF -p tcp -j DROP

    Здесь есть йункционеал занесения IP атакующего в лог (/var/log/messages) а также организатор whitelist в виде цикла. Как фишка IP в чёрном листе флушаются через 60 секунд.

  2. crud

    # занесенные в whitelist IP
    for I in 88.81.251.200 88.81.251.194 213.227.195.211; do

    # Пишем в лог
    $IPTABLES -A SSH_BF -j LOG –log-prefix “SSH Brute Force Attempt: ”

  3. squirL

    вот только злые боты – брутфорсят с ботнетов. адреса разные, т. е. за промежуток времени – никто не делает более 5 попыток. я, обычно, просто перевешиваю ssh на другой порт :)

  4. Arkady

    Мне больше всего нравится http://denyhosts.sourceforge.net/
    Он сканирует auth.log и через tcp-wrapers блокирует хост.

Leave a Reply