понедельник, 16 июля 2018 г.

Защита линукс-машины от ботов

Ради своих студентов и просто начинающих тестировщиков я периодически выкладываю что-то в открытый доступ — см «Бесплатные тестовые площадки».

Некоторые инструменты я подняла условно бесплатно, плачу только за место на сервере. За некоторые каждый месяц плачу — JIRA, linux... Мне не жалко, так как большинство этих площадок используется у меня на курсах, все равно надо для студентов.

Но, к сожалению, как только ты делаешь доброе дело и выкладываешь что-то в открытый доступ, всегда находятся «самые умные люди», которые или попробуют тебя взломать, или хоть как-то еще подгадить.



У меня есть открытая линукс-виртуалка, см статью: Тут можно потыкать Linux.

Раз в месяц я туда захожу сама, чтобы написать статейку, которую вы можете тоже сразу сами пощупать. Или видосик. Или еще что. Не суть. Каждый раз, как не попробую войти спустя время, сразу вижу Access Denied. Кто-то решил поменять пароль, «и пусть эта машина будет только моя, ахаха». Ж — жадность.


Последний раз как раз на той неделе зашла, обломалась. Приходиться входить под рутом и снова ставить пароль 123. Захожу под рутом, вижу:

Last failed login: Fri Jul 13 15:56:21 MSK 2018 from 61.177.172.188 on ssh:notty
There were 87956 failed login attempts since the last successful login.

Да, я и сама вошла именно в пятницу, 13 =)
Пришлось попросить админа помочь и самой погуглить. Вот что мы в итоге применили


Защита от ботов — резать порт, если было больше двух подключений за минуту


Надо на iptables вешать правилом которое рубит на минуту ssh порт если было больше двух подключений за минуту

Добавить правила:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m recent --update --seconds 47 --hitcount 2 --name ssh --mask 255.255.255.255 --rsource -j DROP
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m recent --set --name ssh --mask 255.255.255.255 --rsource -j ACCEPT

Выполняются как простые команды


Минимальное время смены пароля


Параметр -n команды passwd позволяет задать минимальное количество дней между сменами пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль когда захочет.

Поэтому заходим под рутом и выполняем команду:

passwd -n 1000 test

Пробуем под тестом поменять, вроде не дает:

[test@177435 ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
You must wait longer to change your password
passwd: Authentication token manipulation error


См также:
man по usermod (англ) — с параметром -L у меня не срослось, потом под тестом войти нельзя, мне больше понравилось passwd -n



Ограничение доступ к внешним системам

Нашла в материале на Хабре: Как обезопасить Linux-систему: 10 советов

В файл /etc/hosts.deny добавить строки:

in.telnetd: ALL
in.ftpd: ALL


Запрет на выполнение команд

Чтобы пользователь не настроил атаку с тестовой машины на чью-то другую, лучше обрубить ему выполнение подключений. Это делается по статье «Как запретить пользователю Linux Ubuntu запускать какую-либо команду или приложение»

chmod o-x $(which curl)
chmod o-x $(which ssh)


Посмотрим, поможет ли... Если у вас есть какие-то еще идеи, буду только рада Smile :)

Издевки на тему «Не умеешь защищать машину, нефиг вообще создавать / покупать ее было, так тебе и надо» можно не начинать. О существовании такой логики я знаю, но сама ее не поддерживаю.

5 комментариев:

  1. Есть еще утилита fail2ban https://www.fail2ban.org/wiki/index.php/Main_Page
    Например небольшая инструкция по настройке: https://www.dmosk.ru/instruktions.php?object=fail2ban
    Описывая Fail2ban в двух словах, можно сказать, что он позволяет на основе анализа логов блокировать тех, кто злоупотребляет доступностью сервера по сети. Например, защитить почтовые ящики от взлома путем перебора паролей или многократного запроса какого-либо ресурса.

    ОтветитьУдалить
  2. Есть же PlayWithDocker - там и линкс, и докер, и все прямо в браузере - и не надо защищать :) https://habr.com/company/flant/blog/334470/

    ОтветитьУдалить
    Ответы
    1. Ого, а вот это реально круто, спасибо) Добавила ссылку в http://testbase.ru/test-it

      Но с докером разбираться надо тем, кто его впервые видит )))

      Удалить