Skip to content

Instantly share code, notes, and snippets.

@CBoJI
Last active August 29, 2015 14:14
Show Gist options
  • Save CBoJI/b7c70641fa0d04257302 to your computer and use it in GitHub Desktop.
Save CBoJI/b7c70641fa0d04257302 to your computer and use it in GitHub Desktop.
защита от брут-форса SSH
# можно заюзать fail2ban. больше настроек, больше функционал!!!
борьба с брут-форсом ssh
>>> last - список последних аутентификаций
если выдается ошибка
>>> last: /var/log/wtmp: No such file or directory
>>> Perhaps this file was removed by the operator to prevent logging last info.
то либо дистрибутив не создал файл для логирования, либо хакер ее снес
>>> tailf /var/log/auth.log - посмотреть попытки аутентификации. при переборе есть возможность, что увидим брут-форс
ЗАЩИТА:
если команда last не работает, то
>>> sudo touch /var/log/wtmp
>>> sudo chown root:utmp /var/log/wtmp
>>> sudo chmod 0664 /var/log/wtmp
далее:
Защита от брутфорса с помощью IPTABLES
>>> sudo iptables -L -n -v
Где:
-L : Показать список правил.
-v : Отображать дополнительную информацию. Эта опция показывает имя интерфейса, опции, TOS маски. Также отображает суффиксы 'K', 'M' or 'G'.
-n : Отображать IP адрес и порт числами (не используя DNS сервера для определения имен. Это ускорит отображение).
Защищаем 22 порт ssh от перебора паролей по словарю (брутфорса) с помощью iptables
Правило даёт 3 неудачных попытки. При последующих попытках бот блокируется на 60 секунд. Время блокировки и количество попыток подбираете самостоятельно.
>>> sudo iptables -A INPUT -p tcp -i eth0 --syn --dport 22 -m recent --name SSH --set
>>> sudo iptables -A INPUT -p tcp -i eth0 --syn --dport 22 -m recent --name SSH --update --seconds 60 --hitcount 4 -j DROP
--recent : позволяет создавать динамические списки адресов IP. Модуль поддерживает ряд опций
--name name SSH: имя списка, с которым работает команда. По умолчанию для списка используется имя DEFAULT
--update : опция будет проверять наличие адреса отправителя пакета в списке. Если адрес присутствует, соответствующая запись обновляется. При отсутствии адреса в списке возвращается значение false.
--hitcount hits : счетчик, возвращает true при наличии адреса в списке, когда число принятых пакетов с адреса больше или равно заданного значения. Используется совместно с rcheck или update
--seconds seconds : определяет период (от момента занесения адреса в список), в течение которого адрес может находиться в списке
--set : служит для добавления адреса отправителя пакета в список. Если такой адрес уже есть в списке, запись будет обновлена
сохраняем правила iptables, дабы после перезагрузки они не слетали
>>> sudo apt-get install iptables-persistent
>>> sudo invoke-rc.d iptables-persistent save
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment