Необходимо повысить защиту сервера

Skip to end of metadata
Go to start of metadata

Методы защиты сервера биллинга

Встроенный механизм настроек защиты доступа

Для защиты сервера от взлома пароля к сервису 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
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.