... {toc} h1. Методы защиты сервера биллинга h2. Встроенный механизм настроек защиты доступа Для защиты сервера от взлома пароля к сервису ssh, к доступу панели управления wordpress, к web-интерфейсу управления биллингом можно подходить разными путями. Самый простой и надежный - это указать ограничения по ip-адресам в настройках интерфейса по [инструкции.|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=48693373#Правадоступа.Настройкаправдоступакбиллингу.Настройкаправдоступаквеб-интерфейсу-ОграничениедоступаквебинтерфейсуиSSH] h2. Защита с помощью fail2ban. Для более проактивного подхода к защите самой системы от взлома, а также второстепенных сервисов от попыток получения доступа, блокировки нежелательных адресов, блокировки сетей ботнетов можно использовать зарекомендовавший себя сервис fail2ban. h3. Настройка. * Установка пакета {code}yum install fail2ban -y{code} * Для автоматического запуска сервиса необходимо прописать в автозагрузке {code}chkconfig fail2ban on{code} * Файлы настроек fail2ban расположены в каталоге /etc/fail2ban/: {code} drwxr-xr-x 2 root root 4096 Июн 10 12:15 action.d -rw-r--r-- 1 root root 2313 Фев 17 2017 fail2ban.conf drwxr-xr-x 2 root root 4096 Фев 17 2017 fail2ban.d drwxr-xr-x 3 root root 4096 Июн 10 12:49 filter.d -rw-r--r-- 1 root root 21280 Фев 17 2017 jail.conf drwxr-xr-x 2 root root 4096 Фев 17 2017 jail.d -rw-r--r-- 1 root root 2375 Дек 9 2016 paths-common.conf -rw-r--r-- 1 root root 642 Дек 9 2016 paths-debian.conf -rw-r--r-- 1 root root 769 Фев 17 2017 paths-fedora.conf -rw-r--r-- 1 root root 1174 Дек 9 2016 paths-freebsd.conf -rw-r--r-- 1 root root 975 Дек 9 2016 paths-opensuse.conf -rw-r--r-- 1 root root 290 Дек 9 2016 paths-osx.conf {code} * Перед выполнением настроек требуется сделать копию конфигурационных файлов, для возможности быстрого отката настроек к первоначальным. Для этого копируем их(fail2ban.conf и jail.conf ) с окончанием имени .local
|
... {code} [ DEFAULT ] backend=systemd ignoreip = 192.168.11.1 10.0.0.0/24 127.0.0.1/8 169.254.*.*{code} * Переходим к секциям защищаемых сервисов. {warning}Перед сохранением настроек, обязательно проверьте, что параметры заданы корректно, иначе есть риск потери доступа к серверу. {warning} h4.Защита ssh от подбора пароля. Указываем следующие настройки: {code}[sshd] enabled = true filter = sshd port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s findtime = 600 maxretry = 5 bantime = 86400 ignoreip = 88.55.36.000{code} Описание полей: enabled - отвечает за включение контроля сервиса filter - тип используемого фильтра, по которому будет выполнятся блокировка опасных ip-адресов. Все шаблоны фильтров представлены в каталоге */etc/fail2ban/filter.d* port - порт, по которому идет проверка. При указании ssh, проверка выполняется по стандартному порту 22, при использовании другого порта необходимо выполнить замену на используемый вами. logpath - путь к анализируемому логу. Используется стандартный лог /var/log/secure backend - определяет, как fail2ban будет контролировать логи. Настройку оставляем по умолчанию, так как ранее уже назначили в секции [DEFAULT] findtime - период подсчета некорректных попыток входа в систему maxretry - количество некорректных попыток ввода логин:пароль bantime - срок блокировки ip-адреса. ignoreip - ip-адрес, которые не будут попадать под обозначенное правило. h4. Защита ЛК от попыток сканирования ботами, снижения нагрузки на web-интерфейс ЛК * Переходим к секции apache и указываем следующие параметры для предотвращения получения доступа к панели управления {code} [apache-auth] enabled = true port = http,https filter = apache-auth logpath = /mnt/log/app/asr_cabinet/log/httpd/error_log maxretry = 3 backend = auto {code} * Блокировка ip которые напрямую обращаются к скриптам с расширением php, asp, exe, pl, cgi, scgi {code} [apache-noscript] enabled = true port= http,https filter = apache-noscript logpath = /mnt/log/app/asr_cabinet/log/httpd/error_log maxretry = 3 backend = auto findtime = 600 {code} * Блокировки ip запросы которых содержать очень длинный URL-адреса {code}[apache-overflows] enabled = true port= http,https filter = apache-overflows logpath = /mnt/log/app/asr_cabinet/log/httpd/error_log maxretry = 3 findtime = 600 backend = auto {code} * Блокировка ботов. {code}[apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /mnt/log/app/asr_cabinet/log/httpd/error_log maxretry = 3 findtime = 600 backend = auto {code} * Блокировка ip при попытке использовать определенное поведение PHP в ЛК {code} [php-url-fopen] enabled = true port = http,https filter = php-url-fopen logpath = /mnt/log/app/asr_cabinet/log/httpd/access_log maxretry = 3 findtime = 600 backend = auto{code} После сохранения настроек требуется их перечитать, для этого используем команду {code}service fail2ban restart{code} h3. Список "белых"(легитимных) ip-адресов В некоторых случаях есть необходимость вести список адресов которым можно доверять доступ к определенным сервисам на сервере. В качестве примера, рассмотрим добавление адреса для доступа к ssh, для этого требуется в настройках *jail.local* в разделе sshd назначить параметр с адресом: {code}ignoreip = 5.189.хх.ххх {code} Указанный адрес не будет попадать в обработку правилом для ssh. h3. Проверка защищаемых служб. Чтобы проверить, какие сервисы на текущий момент обрабатываются fail2ban используем команду {code}fail2ban-client status{code} Получаем ответ {code}[root@localhost ~]# fail2ban-client status Status |- Number of jail: 2 `- Jail list: apache-auth, sshd {code} Анализируются два сервиса: ssh и apache-auth. Для проверки заблокированных адресов по сервису ssh используем команду: {code}fail2ban-client status sshd{code} Вывод выглядит следующим образом {code}[root@localhost ~]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/secure `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: {code} h3. Снятие блокировки IP Для разблокировки валидного адреса необходимо использовать команду {code}fail2ban-client set sshd unbanip 192.168.11.10{code}
|