Просмотр Исходного

{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}cp -p /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
cp -p /etc/fail2ban/jail.conf /etc/fail2ban/jail.local{code}
* Для ведения отдельного лога по сервису необходимо указать, где он будет располагаться. Для этого открываем файл */etc/fail2ban/fail2ban.local* любым текстовым редактором и указываем значение в поле *logtarget*
{code}logtarget = /var/log/fail2ban.log{code}
* Далее, переходим к настройкам, отвечающим за защиту сервисов */etc/fail2ban/jail.local*. *Обязательно* добавляем в исключение локальные адреса администратора и внутренние адреса используемые системой для работы. Открываем файл, находим секцию [DEFAULT] указываем следующие параметры
{code} [ DEFAULT ]
backend=systemd
ignoreip = 192.168.11.1 10.0.0.0/24 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 = 2
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 = 2
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 = 2
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}