Для защиты валидатора от атак может использоваться большое количество методов, включая выявление и устранение уязвимостей в работающей системе. Безопасность сервера — сложная операция. Деактивируйте демонов (фоновые программы) — это значительно повысит безопасность, так как сломанный сервис невозможно взломать. Есть возможность настроить брандмауэр так, чтобы доступ к различным сервисам, которые не используются постоянно, осуществлялся исключительно с безопасных IP, выбранных пользователем. Вам нужно отключить те учетные записи, которые больше не должны иметь доступ к системе. Рекомендуется, чтобы каждый пользователь создал уникальную учетную запись, чтобы защитить больше служб от несанкционированного доступа. Резервное копирование должно быть включено. После взлома сервера восстановить копию в безопасной среде без подключения к Интернету достаточно просто. Резервные копии (бесплатно): FTP-клиент FileZilla, скрипт phpMyAdmin, файловый менеджер Total Commander, служба удаленного хранения файлов Amazon S3. Бэкапы (платные): Codeguard, WSR, BackupGuard, WP Time Capsule. Советы: делайте резервную копию перед каждым изменением функционала, дублируйте создание резервных копий, проверяйте правильность обработки резервной копии, не забывайте проверять свободное место для хранения резервных копий. Отключите неиспользуемые порты. Для неиспользуемых портов необходимо ограничить источники подключения, задав пользовательский список IP, для которых это возможно. Активация брандмауэра: UFW, IPTables, NFTables. Выше перечислены основные инструменты, отвечающие за безопасность системы. Регулируя их настройки, вы можете значительно снизить риск взлома. Вы можете выполнить переадресацию портов. Замена может быть произведена в пользу более сложного и многозначного порта. Рекомендую, даже считаю обязательным, использовать утилиту FAIL2BAN (установка: sudo apt-get install fail2ban). Я сам использую её. FAIL2BAN может отслеживать журнал входа в систему, поэтому вы можете отметить те IP-адреса, с которых было выполнено большое количество неудачных авторизаций. Предположительно, в это время пытаются подобрать правильную комбинацию для входа с таких IP. FAIL2BAN автоматически создает правило брандмауэра, которое временно блокирует их. Основные способы защиты сервера: SSH-ключи, аудит, брандмауэры, VPN, PKI и шифрование SSL/TLS.
Для мониторинга нод можно использовать: Prometheus, Hubble Alerts от Figment Networks, Botelicious. Для самого простого способа оповещения можно написать скрипт.
Мы сосредоточимся на Fail2ban.
Почему Fail2ban? Потому что это простой в использовании локальный сервис, который следит за лог-файлами запущенных программ и по разным условиям блокирует найденных нарушителей по IP.
Программа способна бороться с различными атаками на все популярные *NIX-сервисы, такие как Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named и др.
Но Fail2ban в первую очередь известен тем, что готов «из коробки» защитить SSH-сервер от атак «bruteforce», то есть защитить SSH от атак методом перебора паролей.
Итак, устанавливаем.
Установка Fail2ban: apt-get install fail2ban
У Fail2ban есть два основных конфигурационных файла: /etc/fail2ban/fail2ban.conf — отвечает за настройки запуска процесса Fail2ban. /etc/fail2ban/jail.conf — содержит настройки безопасности для определенных сервисов, включая sshd.
Файл jail.conf разбит на разделы, так называемые «изоляторы» (джейлы), каждый раздел отвечает за конкретный сервис и вид атаки:
[ПО УМОЛЧАНИЮ] ignoreip = 127.0.0.1/8 bantime = 600 maxretry = 3 banaction = iptables-multiport
[ssh] enabled=true port=ssh filter=sshd logpath=/var/log/auth.log maxretry = 6
ignoreip — IP-адреса, которые не должны блокироваться. Вы можете указать список IP-адресов, разделенных пробелами, маску подсети или имя DNS-сервера.
bantime — время бана в секундах, по истечении которого IP-адрес удаляется из списка заблокированных.
maxretry — количество подозрительных совпадений, после которых применяется правило. В контексте [ssh] это количество неудачных попыток входа до блокировки.
enabled — значение true указывает, что этот джейл активен, false отключает активность джейла.
порт — указывает, на каком порту или портах работает целевая служба. Стандартный порт SSH-сервера — 22, или его буквенное имя — ssh.
filter — название фильтра с регулярными выражениями, которые используются для поиска «подозрительных совпадений» в логах сервиса. Файл /etc/fail2ban/filter.d/sshd.conf соответствует фильтру sshd.
logpath — это путь к лог-файлу, который Fail2ban будет обрабатывать с использованием ранее заданного фильтра. Вся история успешных и неудачных входов, в том числе и по SSH, по умолчанию записывается в лог-файл /var/log/auth.log.
Не рекомендуется оставлять параметр ignoreip со значением по умолчанию 127.0.0.1/8, это создает очевидную угрозу в многопользовательских системах — если злоумышленник получил доступ хотя бы к одной шелл-аккаунту, то он может свободно запускать Программа грубой силы для атаки root или других пользователей непосредственно с того же сервера. Перед внесением изменений согласно рекомендациям отметим, что не следует редактировать основной файл настроек jail.conf, для этого предусмотрены файлы с расширением *.local, которые подключаются автоматически и имеют наивысший приоритет.
nano /etc/fail2ban/jail.local [ПО УМОЛЧАНИЮ]
игнорировать ip = 57.66.158.131
[ssh]
findtime=3600
maxretry = 6
bantime=86400
Осталось перезапустить Fail2ban:
service fail2ban restart
Перезапуск монитора ошибок аутентификации fail2ban [ OK ] tail /var/log/fail2ban.log
И, наконец, для полного комплекта установим систему мониторинга и быстрого оповещения Uptime Robot.
Проходим регистрацию на сайте. Активируйте ссылку, которая будет отправлена на вашу электронную почту.
Добавление нового монитора.
Выберите «Порт» из выпадающего меню.
Выставляем ваш IP, порт, интервал.
Получаем подтверждение, что монитор успешно создан.
Есть свое приложение и в Google Play, и в Apple Store, можно просто установить их приложение на телефон и завершить настройку.
Но вы можете сделать больше настроек.
Перейдите на вкладку «Мои настройки» и нажмите кнопку «Добавить контакт для оповещения».
Во всплывающем окне выбираем сервис, через который хотим получать уведомления о сбоях — у меня Telegram настроен.
И прописываем имя вашего аккаунта в Telegram.
Далее нужно подтвердить в Telegram, что это я и я готов получать сообщения от этого сервиса. Для этого перейдите по ссылке, указанной в аккаунте, и подтвердите в телеграмме, что это я.
