Защищённость ОТ сети

Противодействие хакерским угрозам

Модераторы: Olej, adminn, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 00:26

Авторизация SSH ...
Olej писал(а): Я этого не понимаю: какое бы не установить значение MaxAuthTries (или дефаултное 6) - допускается неизменно 3 попытки авторизации.
Я завёл 2-х пользователей-придурков с красивыми именами freak и stupid ... и вот (после рестарта sshd):
Подсказали ... поискали ... разобрались...
3-мя попытками входа ограничивается не сервер, а SSH-клиент:

Код: Выделить всё

[olej@dell IDE]$ man 5 ssh_config
...
NumberOfPasswordPrompts
Specifies the number of password prompts before giving up.  The argument to this keyword must be an integer.  The default is 3.

Код: Выделить всё

[root@dell ssh]# tail -n1 /etc/ssh/ssh_config
NumberOfPasswordPrompts 6
[root@dell ssh]# cat /etc/ssh/sshd_config | grep MaxAuthTries
MaxAuthTries 10
[root@dell ssh]# service sshd restart
Redirecting to /bin/systemctl restart  sshd.service
И один из моих придурков пробует проломиться:

Код: Выделить всё

[stupid@dell ~]$ whoami
stupid
[stupid@dell ~]$ ssh stupid@localhost
stupid@localhost's password: 
Permission denied, please try again.
stupid@localhost's password: 
Permission denied, please try again.
stupid@localhost's password: 
Permission denied, please try again.
stupid@localhost's password: 
Permission denied, please try again.
stupid@localhost's password: 
Permission denied, please try again.
stupid@localhost's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
6 попыток и не более!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 00:30

Olej писал(а): И один из моих придурков пробует проломиться:

Код: Выделить всё

[root@dell ssh]# cat /etc/ssh/sshd_config | grep MaxAuthTries 
MaxAuthTries 4

[root@dell ssh]# service sshd restart
Redirecting to /bin/systemctl restart  sshd.service
И второй мой придурок пытается проломиться:

Код: Выделить всё

[freak@dell ~]$ whoami
freak

[freak@dell ~]$ ssh freak@localhost
freak@localhost's password: 
Permission denied, please try again.
freak@localhost's password: 
Permission denied, please try again.
freak@localhost's password: 
Permission denied, please try again.
freak@localhost's password: 
Received disconnect from 127.0.0.1 port 22:2: Too many authentication failures
Connection to localhost closed by remote host.
Connection to localhost closed.
4 попытки и ни одной больше!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 03:06

Olej писал(а):
Одна из делающих это программ - Denyhosts (http://www.denyhosts. net);
Есть в стандартном репозитории в Fedora 23, версия 2.10, и, говорят, пользуется изрядным интересом у сетевых администраторов:

Код: Выделить всё

[olej@dell home]$ dnf list denyhosts*
Последняя проверка окончания срока действия метаданных: 15 days, 13:30:53 назад, Tue Jan 10 12:29:09 2017.
Доступные пакеты
denyhosts.noarch                                                  2.10-6.fc23                                                   fedora

[olej@dell home]$ dnf info denyhosts*
Последняя проверка окончания срока действия метаданных: 15 days, 13:31:09 назад, Tue Jan 10 12:29:09 2017.
Доступные пакеты
Имя         : denyhosts
Архитектура : noarch
Эпоха       : 0
Версия      : 2.10
Релиз       : 6.fc23
Размер      : 96 k
Репозиторий : fedora
Краткое опи : A script to help thwart ssh server attacks
URL         : http://github.com/denyhosts/denyhosts/
Лицензия    : GPLv2
Описание    : DenyHosts is a Python script that analyzes the sshd server log
            : messages to determine which hosts are attempting to hack into your
            : system. It also determines what user accounts are being targeted. It
            : keeps track of the frequency of attempts from each host and, upon
            : discovering a repeated attack host, updates the /etc/hosts.deny file
            : to prevent future break-in attempts from that host.  Email reports can
            : be sent to a system admin.
И перевод статьи с описанием использования, и статьи весьма свежей - Безопасность с помощью трех D: Detect - Обнаружить, Decide – Принять решение и Deny - Запретить
Оригинал: Security in Three Ds: Detect, Decide and Deny
Автор: Federico Kereki
Дата публикации: March 16, 2015
Перевод: Н.Ромоданов
Дата перевода: июнь 2015 г.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 14:37

Olej писал(а): Есть в стандартном репозитории в Fedora 23, версия 2.10, и, говорят, пользуется изрядным интересом у сетевых администраторов:
Более свежую (последнюю) версию 3.1 можно найти:
- в GIT-репозитарии https://github.com/denyhosts/denyhosts
- в виде архива исходных кодов https://github.com/denyhosts/denyhosts/releases
Version 3.1 beta
released this on 16 Sep 2015 · 35 commits to master since this release

This is a minor update to the DenyHosts 3.x series. This release fixes a bug when moving between Python 2 and Python 3 environments. DenyHosts should now work equally well under either version of Python.
Поскольку это Python-проект, он требует минимальных действий для установки (там есть все описания).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 17:25

Olej писал(а): Одна из делающих это программ - Denyhosts (http://www.denyhosts. net); другая - Sshutout (http://www.techfinesse.com/sshutout/sshutout. html).
Кроме того, для простых случаев для бана придурку можно обойтись стандартным средством Linux PAM (который даже устанавливать не надо - он всегда присутствует) ... подсказали:
В /etc/pam.d/ssh, перед секцией auth (@include common-auth) добавить

Код: Выделить всё

required      pam_tally2.so  file=/var/log/tallylog deny=3 even_deny_root unlock_time=1200
В /etc/pam.d/ssh, перед секцией accaunt (@include common-account) добавить

Код: Выделить всё

account     required      pam_tally2.so
После 3-х неудачных попыток (deny=Х) пользователь блочится на 20 минут (unlock_time=Х). Даже root (even_deny_root).
На локльный вход это не распространяется.
Не очень понятно ... но очень заманчиво ... и нужно разбираться!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 17:36

Olej писал(а):Не очень понятно ... но очень заманчиво ... и нужно разбираться!
Кто может войти?
Три замка на воротах SSH. Усложните жизнь потенциальным хакерам.
В контексте безопасности Linux® PAM означает Pluggable Authentication Modules— «подключаемые модули аутентификации». Эти модули определяют дополнительные правила аутентификации, затрудняя доступ к вашему компьютеру.
Модули required являются обязательными. В случае неудачи PAM возвращает значение failure, но только после исполнения всех остальных модулей этого стека.
account определяет ограничения прав учетных записей. Если пользователь имеет право на вход, что ему позволено делать?
Стандартный конфигурационный файл "other" обеспечивает безопасный уровень защиты по умолчанию (отклонение всех запросов) для всех приложений, не имеющих собственного конфигурационного файла.
Листинг 2. Стандартный конфигурационный файл "other"

Код: Выделить всё

account required pam_deny.so 
auth required pam_deny.so 
auth required pam_warn.so 
password required pam_deny.so 
password required pam_warn.so 
session required pam_deny.so
Если заменить pam_deny.so на pam_unix.so, будет применен стандартный метод аутентификации (ввод имени пользователя и пароля). Аналогично, если вам не нужна защита, используйте вместо этого файл pam_permit.so, который с радостью пропустит все запросы!
Добавление pam_access.so в файл sshd PAM
...
Но это еще не все. Нужно изменить файл /etc/ssh/sshd_config так, чтобы он использовал PAM. Добавьте в файл строку UsePAM yes и перезапустите демон sshd— вот теперь все!
И вот ещё: PAM на страже ваших компьютеров
Проект PAM предоставляет решение путем добавления дополнительного программного уровня. Программа, которой требуется аутентификация, должна использовать стандартную библиотеку или API (Application Programming Interface, Прикладной программный интерфейс), а системный администратор должен указать порядок аутентификации для данной конкретной программы (проверки осуществляются отдельными модулями; можно даже запрограммировать собственные модули). Таким образом, можно динамически изменять требования безопасности, причем все программы будут автоматически следовать вашим новым указаниям. Другими словами, можно модифицировать механизмы аутентификации программ (которые собраны с поддержкой PAM) без пересборки самих программ. С точки зрения программиста это очень хороший подход, ведь ему не требуется связываться с механизмами аутентификации. Когда мы используем модули PAM, требуемые проверки выполняются автоматически.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 26 янв 2017, 17:46

На возражения, что всё в этой теме перемешано и сумбурно, а подтверждаю:
Да. Здесь идёт накопление материала. Вперемешку.
Потом он будет систематизирован и оформлен, как описано в теме: Прочь, малолетние хакеры!.
Ждите ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 31 янв 2017, 15:38

Olej писал(а):На возражения, что всё в этой теме перемешано и сумбурно, а подтверждаю:
Да. Здесь идёт накопление материала. Вперемешку.
Потом он будет систематизирован и оформлен, как описано в теме: Прочь, малолетние хакеры!.
Ждите ;-)
Более-менее упорядочено, структурировано всё это начинает выкладываться там по ссылке.
Всё.
Поехали дальше...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 03 фев 2017, 11:04

Olej писал(а):Продолжаю разбираться с проектом fail2ban.
После установки мы получаем набор программ:

Код: Выделить всё

$ ls /bin/fail2ban*
/bin/fail2ban-client  /bin/fail2ban-regex  /bin/fail2ban-server  /bin/fail2ban-testcases
Сервер запускается как сервис, и после инсталляции у нас всё готово для работы с этим сервисом стандартными системными средствами:

Код: Выделить всё

$ service fail2ban status
Redirecting to /bin/systemctl status  fail2ban.service
● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:fail2ban(1)
...
Проект состоит из:
- фильтров (/etc/fail2ban/filter.d) — фактически это регулярные выражения, которыми мы «ловим» в системном журнале сообщения отказа от интересующих нас сервисов;
- действий (/etc/fail2ban/action.d) — система действий, которые следует применять к назойливым гостям, как правило, это действия iptables, но не обязательно — там предлагаются и действия для подсистемы разрешения адресов ARP и др.);
- изоляторов (/etc/fail2ban/jail.conf) — это правила, связывающая то, какие действия нужно предпринимать при обнаружении событий, предусмотренных фильтрами;

Для конфигурирования вашей защиты самым важным (и зачастую достаточным) является файл конфигурации изоляторов (в составе уже есть достаточное количество фильтров и действий, достаточных для практически всех целей). Структура защиты определяется большим числом файлов *.conf (дефаултных) и *.local (пользовательских, изначально отсутствующих). Сначала считывается содержимое .conf-файлов, а только затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть замещены. Таким образом, в .local-файлах хранятся лишь те значения параметров, которые вам требуется скорректировать.
Содержимое файла /etc/fail2ban/jail.conf разделяется на именованные секции, соответствующие различным сервисам. Первая секция называется [DEFAULT] и предназначается для определения общих параметров, значения которых имеют силу во всех последующих секциях (взято для примера из моей реальной инсталляции):

Код: Выделить всё

[DEFAULT]
ignoreip = 127.0.0.1/8 
bantime = 600
findtime = 600
maxretry = 5
Это означает, что после 5-ти неудачных попыток (maxretry) получить доступ в систему с одного и того же IP-адреса в течение 10 минут (600 секунд, findtime) этот адрес будет автоматически заблокирован на следующие 10 минут (600 секунд, bantime). Для параметра ignoreip (исключены из наблюдения) задан только один диапазон IP-адресов, поскольку блокировать localhost не имеет никакого смысла.

Секция [sshd] описывает реакцию на фильтр sshd.conf (точно так же по аналогии вы можете определить реакцию на любой сервер!). Доопределим реакцию на SSH — создадим новый файл jail.local в каталоге /etc/fail2ban/jail.d (файл может быть с любым именем, параметры определяются именем секции, хотя правильнее было бы назвать файл sshd.local):

Код: Выделить всё

# pwd
/etc/fail2ban/jail.d
# sudo touch jail.local
# cat jail.local 
[sshd]
enabled = true
maxretry = 4
bantime = 120

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Защищённость ОТ сети

Непрочитанное сообщение Olej » 03 фев 2017, 11:07

Сделав такие простейшие (иллюстрационные) дополнения в конфигурации, запускаем контролирующий сервис:

Код: Выделить всё

$ sudo service fail2ban start
Redirecting to /bin/systemctl start  fail2ban.service
$ service iptables status
Redirecting to /bin/systemctl status  iptables.service
● iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
   Active: active (exited) since Пт 2017-01-20 02:56:06 EET; 1 weeks 6 days ago
 Main PID: 889 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/iptables.service
янв 20 02:56:03 dell.localdomain systemd[1]: Starting IPv4 firewall with iptables...
янв 20 02:56:06 dell.localdomain iptables.init[889]: iptables: Applying firewall rules: [  OK  ]
янв 20 02:56:06 dell.localdomain systemd[1]: Started IPv4 firewall with iptables. 
Теперь с совершенно другого хоста (в LAN) проверяем работу … делаю последовательность SSH подключений с заведомо неверным паролем:

Код: Выделить всё

$ ssh stupid@192.168.1.101
stupid@192.168.1.101's password: 
Permission denied, please try again.
stupid@192.168.1.101's password: 
Permission denied, please try again.
stupid@192.168.1.101's password: 
Permission denied, please try again.
stupid@192.168.1.101's password: 
Received disconnect from 192.168.1.101 port 22:2: Too many authentication failures
Connection to 192.168.1.101 closed by remote host.
Connection to 192.168.1.101 closed.
После 4-х (maxretry) попыток подключения сервер отвергает сессию… После чего мы «вспоминаем» верный пароль и повторяем … ломиться в закрытые ворота:

Код: Выделить всё

$ ssh stupid@192.168.1.101
stupid@192.168.1.101's password: 
Permission denied, please try again.
stupid@192.168.1.101's password: 
Permission denied, please try again.
stupid@192.168.1.101's password: 
^C
$ date
Чт фев  2 17:09:31 EET 2017
Но на верный пароль реакция в точности такая же, как и на ошибочный (важно, что сообщение ошибки то же самое, что не позволяет внешне идентифицировать работу контролёра). Выжидаем время блокировки (bantime) … истекло 4 минуты:

Код: Выделить всё

$ date
Чт фев  2 17:13:02 EET 2017
$ ssh stupid@192.168.1.101
stupid@192.168.1.101's password: 
Last failed login: Thu Feb  2 17:09:24 EET 2017 from 192.168.1.102 on ssh:notty
There were 19 failed login attempts since the last successful login.
Last login: Wed Feb  1 20:59:55 2017 from 192.168.1.102
$ whoami
stupid
...
То же действие, которое 4 минуты назад завершалось ошибкой, теперь заканчивается установлением сеанса SSH.

Ответить

Вернуться в «Безопасность»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей