Что нового

Article [end] Комплекс мероприятий по защите сервера

Vander

Команда форума
10.11.2019
388
818
Всем привет!

Продолжим тему настройки базовой защиты вашего сервера от неприятелей.

33333.png

В прошлой статье мы остановились на отключении не нужных сервисов, следующим шагом будет:

Обнаружение всех доступных для записи файлов.

Все доступные для записи файлы могут быть изменены любым пользователем в системе. Если у вас есть файлы, к которым должен иметь доступ только пользователь root или администратор, и которые доступны всем пользователям, вы рискуете.

Отобразите список доступных для записи файлов с помощью:

Код:
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) –print
С помощью команды chmod вы можете исправить обнаруженные недостатки.

Настройка iptables для блокировки распространенных атак.

Iptables достаточно сложный инструмент и достоин отдельной статьи, вот несколько команд, которые вы можете использовать, чтобы блокировать обычные атаки:

444444.jpg
  • Принудительная проверка пакетов SYN: iptables -A INPUT -p tcp! --syn -m state --state NEW -j DROP
  • Отбросить нулевые пакеты: iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
  • Отбрасывать входящие пакеты с фрагментами: iptables -A INPUT -f -j DROP
  • Защита от сканеров портов: iptables -A INPUT -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j ACCEPT
    iptables -A INPUT -p tcp —tcp-flags SYN,ACK,FIN,RST RST -j DROP
Вообще для этих целей удобнее использовать Fail2Ban, о нём речь пойдет чуть позже.

Установка пароля загрузчика GRUB.

Доступ к GRUB означает доступ к куче важных низкоуровневых административных задач и операций, поэтому важно, чтобы он был защищен надежным паролем.

Эта инструкция применима для Ubuntu 16.04, в вашем случае процесс может отличаться.

Мы сгенерируем запутанный пароль для файлов конфигурации Grub.

Код:
grub-mkpasswd-pbkdf2
Он попросит вас ввести пароль и предоставит вам длинную строку. Копируем её в буфер обмена.

rfrfrfrf.png

Этот шаг технически необязателен - мы можем ввести наш пароль в виде простого текста в файлах конфигурации Grub, но эта команда скрывает его и обеспечивает дополнительную безопасность.

Установка пароля:

Код:
nano /etc/grub.d/40_custom
Добавляем в конце файла строки и копируем сюда сгенерированный хэш.
  • set superusers=”name”
  • password_pbkdf2 name [hashpassword]
vvvvvvv.png

Отключить использование горячих клавиш при загрузке.

hotkeys-logo_610w.png

Еще один способ защитить свой сервер от злоумышленника с физическим доступом - отключить горячие клавиши при загрузке сервера. Если это сделано, вы ограничиваете возможность отключения, злоумышленником системных служб, включая брандмауэры.

Интерактивные настройки загрузки устанавливаются в /etc/sysconfig/init. Просто добавьте эту строку в файл или измените соответствующую переменную:

Код:
PROMPT = no
Используйте Logwatch для мониторинга подозрительных сообщений журнала.

f4f4f4f4.jpg

Ежедневные сводки логов можно получать на почту, установив и включив Logwatch на своем сервере. Logwatch прост в настройке - просто включите его, и вы автоматически будете ежедневно получать дайджесты журналов, хранящиеся в /var/logs на свой почтовый ящик.

Код:
apt install logwatch
Обратитесь к файлу конфигурации, для настроек детализации, списка служб и почтового сервиса.

Код:
nano /usr/share/logwatch/default.conf/logwatch.conf
Мониторинг изменения файлов с помощью auditd.

regergerg.png

Если кто-то вносит изменения в критически важные файлы - или использует для этого скомпрометированную учетную запись пользователя – вы естественно захотите пресечь дальнейшие действия злоумышленника как можно раньше.

Просматривая файлы с помощью auditd, вы можете легко это сделать.

Установка:

Код:
apt install auditd
/etc/init.d/auditd start
Затем необходимо произвести настойку этого инструмента.

Чтобы посмотреть файл паролей, выполните команду:

Код:
audctl -w /etc/passwd -p war -k password-file
Защита Apache.

Зная версию web сервера, можно попробовать подобрать публичные эксплойты.

Сделаем так, чтобы Apache не выдавал себя.

Откройте файл конфигурации Apache, расположенный в /etc/apache2/apache2/conf, и измените, значения по умолчанию, так чтобы они содержали следующие строки:
  • ServerTokens Prod
  • ServerSignature Off
  • Header always unset X-Powered-By
Эти три строки не позволяют Apache публиковать номер своей версии и другие идентифицируемые детали, что затрудняет использование злоумышленниками известных уязвимостей.
  • TraceEnable Off
Отключение TRACE поможет предотвратить cross-site tracking атаки.

erververv.png

Установите и настройте UFW

rvrbvrvr444.png

Несложный межсетевой экран (UFW) - это интерфейс для iptables, который предлагает более простой способ регулирования входящего и исходящего трафика. С помощью нескольких быстрых команд вы можете заблокировать весь трафик, который не идет на веб-сервер, через SSH, через FTP и т. д.

Установка:

Код:
apt install ufw
Теперь, в зависимости от того, какой трафик вы хотите разрешить, можно использовать следующие команды:

Код:
ufw allow ssh
ufw allow http
ufw allow ftp
Ваша идеальная конфигурация зависит от того, для чего вы используете сервер. Если вы в настоящее время используете SSH на автономном сервере, имейте в виду, что запрет SSH разорвет соединение.

После того, как вы установили нужные правила, проверьте их список:

Код:
ufw status verbose
А затем включите брандмауэр:

Код:
ufw enable
Настройка SSH.

333222.jpg

Одной из самых больших опасностей с SSH - особенно для крупных организаций с тысячами серверов - является управление ключами SSH. Если злоумышленник получает доступ к вашим серверам с помощью ключа SSH, можно попробовать минимизировать ущерб.

Для этого добавьте следующие ограничения в файл конфигурации SSH, расположенный в /etc/ssh/ssh_config:
  • PermitRootLogin no # запрещает root-доступ через SSH
  • AllowUsers [username] # ограничивает доступ по SSH указанным пользователям
  • IgnoreRhosts yes # запрещает SSH доверять хосту только на основании его IP
  • HostbasedAuthentication no # то же, что и выше
  • PermitEmptyPasswords no # запрещает пользователям входить в SSH с пустым паролем, если он установлен как таковой
  • X11 Forwarding no # ограничивает возможность серверу посылать команды клиенту
  • MaxAuthTries 5 # разрывает соединение SSH после 5 неудачных попыток авторизации
  • Ciphers aes128-ctr, aes192-ctr, aes256-ctr # отключают слабые шифры
  • UsePAM yes # использовать только PAM ключи для авторизации
  • ClientAliveInterval 900 # отключает неактивного пользователя через 15 минут
  • ClientAliveCountMax 0 # количество проверок активности, перед дисконнектом.
Безопасная настройка sysctl.

Настройки по умолчанию для sysctl могут позволить злоумышленникам проводить syn flood, IP spoofing атаки, а так же не регистрировать подозрительные пакеты.

Вносим необходимые изменения в /etc/sysctl.conf:
  • Отключите IP-forvarding, установив для параметра net.ipv4.ip_forward значение 0
  • Отключите переадресацию пакетов, установив для параметров net.ipv4.conf.all.send_redirects и net.ipv4.conf.default.send_redirects значение 0.
  • Запрещение приема ICMP redirect пакетов net.ipv4.conf.all.accept_redirects и net.ipv4.conf.default.accept_redirects значение 0.
  • Включите защиту от неправильных сообщений об ошибках, установив для параметра net.ipv4.icmp_ignore_bogus_error_responses значение 1
Блокировка учетных записей пользователей с Fail2Ban.

Fail2Ban помогает вам обойти файл конфигурации PAM и легко изменять глобальные правила для блокировки пользователей. Чтобы использовать Fail2Ban, достаточно просто установить его, включить, а затем отредактировать файл конфигурации, указав, сколько попыток пользователь может предпринять, прежде чем его заблокировать, и на какое время. Это помогает предотвратить, bruteforce – атаки.

Установка Fail2Ban:

Код:
apt install fail2ban
systemctl start fail2ban && systemctl enable fail2ban
Отредактируйте файл конфигурации:

Код:
nano /etc/fail2ban/jail.local
Ниже приведен фрагмент файла конфигурации jail.local, в котором вы можете установить максимальное количество попыток входа в систему до блокировки:

gtgrgrgr.png

Настройка таймаута пользователя root.

Не имеет значения, насколько жесткой является ваша политика паролей или конфигурация SSH, если кто-то заходит в ваше здание и у вас запущен сеанс корневого терминала без присмотра, ничего больше не имеет значения.

Вы можете установить короткое время ожидания для корневых сеансов, отредактировав файл /etc/profile, добавив в него строку:
  • [$ UID -eq 0] && TMOUT = 600. Часть $ UID -eq 0
Относится к пользователю с идентификатором 0 - всегда root. Часть TMOUT = 600 устанавливает предел времени ожидания 10 минут (600 секунд).

Проверка наличия скрытых открытых портов с помощью netstat.

Открытые порты могут раскрыть информацию о системной или сетевой архитектуре и увеличить поверхность атаки. Если вам не нужен порт, закройте его. Если вы видите открытый порт, который вы не можете распознать, используйте netstat для анализа.

Код:
netstat –antp
Установка прав доступа для основных системных файлов.

Существуют некоторые основные файлы, которые должны использоваться только пользователем root. В противном случае, не авторизованный пользователь может прочитать пароли или настроить повторяющиеся команды с помощью cron.

Установите права пользователя/группы на:
  • chown root:root
  • chmod og-rwx
На следующие файлы:
  • anacrontab
  • crontab
  • cron.hourly
  • cron.daily
  • cron.weekly
  • cron.monthly
  • cron.d
  • passed
  • group
  • shadow
  • gshadow
Проверка на руткиты.

Руткит, скрывающийся на вашем сервере, может перехватывать данные для входа в систему, скрывать вредоносные программы, предоставлять бэкдор злоумышленнику или даже удаленно контролировать ваш сервер как часть ботнета. Руткиты спроектированы так, чтобы их было трудно обнаружить, поэтому для работы вам нужен специализированный инструмент.

Для этого сначала установите chkrootkit:

Код:
apt install chkrootkit
Запускаем chkrootkit от пользователя root. Утилита просканирует сервер и сообщит подробности о любых подозрительных действиях.

567567567.png

На этом, пожалуй, всё. В следующих, уже отдельных статьях я ещё неоднократно буду возвращаться к теме защиты серверов от несанкционированного проникновения.

Спасибо за внимание, материал подготовлен специально для protey.net.​
 
Верх Низ