Методы защиты сервера биллинга
Встроенный механизм настроек защиты доступа
Для защиты сервера от взлома пароля к сервису ssh, к доступу панели управления wordpress, к web-интерфейсу управления биллингом можно подходить разными путями. Самый простой и надежный - это указать ограничения по ip-адресам в настройках интерфейса по инструкции.
Защита с помощью fail2ban.
Для более проактивного подхода к защите самой системы от взлома, а также второстепенных сервисов от попыток получения доступа, блокировки нежелательных адресов, блокировки сетей ботнетов можно использовать зарекомендовавший себя сервис fail2ban.
Настройка.
- Установка пакета
yum install fail2ban -y
- Для автоматического запуска сервиса необходимо прописать в автозагрузке
chkconfig fail2ban on
- Файлы настроек fail2ban расположены в каталоге /etc/fail2ban/:
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
- Перед выполнением настроек требуется сделать копию конфигурационных файлов, для возможности быстрого отката настроек к первоначальным. Для этого копируем их(fail2ban.conf и jail.conf ) с окончанием имени .local
cp -p /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local cp -p /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Для ведения отдельного лога по сервису необходимо указать, где он будет располагаться. Для этого открываем файл /etc/fail2ban/fail2ban.local любым текстовым редактором и указываем значение в поле logtarget
logtarget = /var/log/fail2ban.log
- Далее, переходим к настройкам, отвечающим за защиту сервисов /etc/fail2ban/jail.conf. Обязательно добавляем в исключение локальные адреса администратора и внутренние адреса используемые системой для работы. Открываем файл, находим секцию [DEFAULT] указываем следующие параметры
[ DEFAULT ] backend=systemd ignoreip = 192.168.11.1 10.0.0.0/24 127.0.0.1/8 169.254.*.*
- Переходим к секциям защищаемых сервисов.
Перед сохранением настроек, обязательно проверьте, что параметры заданы корректно, иначе есть риск потери доступа к серверу. Защита ssh от подбора пароля.
Указываем следующие настройки:
[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
Описание полей:
enabled - отвечает за включение контроля сервиса
filter - тип используемого фильтра, по которому будет выполнятся блокировка опасных ip-адресов. Все шаблоны фильтров представлены в каталоге /etc/fail2ban/filter.d
port - порт, по которому идет проверка. При указании ssh, проверка выполняется по стандартному порту 22, при использовании другого порта необходимо выполнить замену на используемый вами.
logpath - путь к анализируемому логу. Используется стандартный лог /var/log/secure
backend - определяет, как fail2ban будет контролировать логи. Настройку оставляем по умолчанию, так как ранее уже назначили в секции [DEFAULT]
findtime - период подсчета некорректных попыток входа в систему
maxretry - количество некорректных попыток ввода логин:пароль
bantime - срок блокировки ip-адреса.
ignoreip - ip-адрес, которые не будут попадать под обозначенное правило.Защита ЛК от попыток сканирования ботами, снижения нагрузки на web-интерфейс ЛК
- Переходим к секции apache и указываем следующие параметры для предотвращения получения доступа к панели управления
[apache-auth] enabled = true port = http,https filter = apache-auth logpath = /mnt/log/app/asr_cabinet/log/httpd/error_log maxretry = 3 backend = auto
- Блокировка ip которые напрямую обращаются к скриптам с расширением php, asp, exe, pl, cgi, scgi
[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
- Блокировки ip запросы которых содержать очень длинный URL-адреса
[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
- Блокировка ботов.
[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
- Блокировка ip при попытке использовать определенное поведение PHP в ЛК
[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
После сохранения настроек требуется их перечитать, для этого используем команду
service fail2ban restart
Список "белых"(легитимных) ip-адресов
В некоторых случаях есть необходимость вести список адресов которым можно доверять доступ к определенным сервисам на сервере.
В качестве примера, рассмотрим добавление адреса для доступа к ssh, для этого требуется в настройках jail.local в разделе sshd назначить параметр с адресом:
ignoreip = 5.189.хх.ххх
Указанный адрес не будет попадать в обработку правилом для ssh.
Проверка защищаемых служб.
Чтобы проверить, какие сервисы на текущий момент обрабатываются fail2ban используем команду
fail2ban-client status
Получаем ответ
[root@localhost ~]# fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: apache-auth, sshd
Анализируются два сервиса: ssh и apache-auth.
Для проверки заблокированных адресов по сервису ssh используем команду:
fail2ban-client status sshd
Вывод выглядит следующим образом
[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:
Снятие блокировки IP
Для разблокировки валидного адреса необходимо использовать команду
fail2ban-client set sshd unbanip 192.168.11.10