Да хватит уже ломиться!

Материал из База знаний Linux.ру

Перейти к: навигация, поиск

Если так случилось, что на вашей домашней Linux машине или тем более на сервере установлен ssh-сервер, то само собой его надо бы обезопасить. Не секрет, что многие сервера ломают не из каких-то корыстных мотивов, а просто потому что малолетние "хакеры" хотят доказать себе и всему миру, что они это могут. Конечно, инструкций по защите linux-серверов написано море, но позволю себе рассказать про личный опыт настройки pam_tally2. Просто как выяснилось, дело это сопряжено с многочисленными подводным камнями и не всегда так тривиально как расписано в мануалах.

Для начала в двух словах, что же такое вообще это pam_tally2? Собственно, как видно из названия это модуль PAM, который можно подключить на любом этапе входа в систему, а выполняет он функцию временной блокировки пользователя в случае если тот совершит n неудачных попыток входа. Таймаут, например, в 30 минут должен охладить горячую голову, что вот уже десятый раз пытается подобрать пароль к учётной записи root или oracle.

Решение описанное ниже я тестировал на Red Hat (RHEL 5) и на Ubuntu, так что не могу гарантировать работу на других системах.

Итак, первое, что необходимо сделать, это убедиться в том, что openssh собран с поддержкой PAM. Обычно это так и есть, но если после включение опции "UsePAM yes" перезапуск sshd будет вызывать ошибки, то тогда качайте исходники и собирайте ssh-сервер руками c опцией --with-pam.

Для того чтобы аутентификация с использованием PAM проходила нормально, необходимо в /etc/sshd_config исправить два занчения:

   UsePAM yes
   ChallengeResponseAuthentication yes

Далее в папке /etc/pam.d/ правим файл sshd и дописываем в начало секции auth следующую строку:

auth       required     pam_tally2.so deny=5 onerr=fail unlock_time=1800

Значение unlock_time - это время в секундах на которое пользователь будет заблокирован после пяти (значение параметра deny) неудачных попыток входа.

В том же файле в начало секции account добавляем:

account    required     pam_tally2.so

Собственно в Ubuntu Linux на этом всё. Это если глобально. Ниже пойдут некоторые особенности RHEL 5.

Если в файле /etc/pam.d/system-auth есть строчки вида:

   auth     requisite     pam_succeed_if.so uid >= 500 quiet
   auth     required      pam_deny.so

То их надо удалить или закомментировать.

Находим строку

 auth sufficient pam_unix.so nullok try_first_pass 

Изменяем её на:

auth     required      pam_unix.so nullok try_first_pass

Несколько тонкостей:

Можно добавить pam_tally2 не только в ssh, а вообще на любой тип входа в систему (разблокировка экрана, обычный вход, вход через gdm и т.д.). Для этого мы просто пишем строчки с pam_tally2 как это указанно выше не в /etc/pam.d/sshd, а в /etc/pam.d/system-auth для RHEL. В Ubuntu же общесистемные файлы разнесены по секциям common-auth и common-account (оба они в директории /etc/pam.d).

Просмотреть заблокированных пользователей можно выполнив от рута команду pam_tally2. Разблокировать пользователя не дожидаясь завершения срока его таймаута можно выполнив команду pam_tally2 -u username -r

P.S. На время опытов рекомендую держать где нибудь в сторонке открытую рутовую сесию, чтобы не оказаться перед наглухо закрытыми воротами :)



Спасибо Максиму Семочкину за данную статью!