Перейти к основному содержимому
Вернуться в категорию

Усиление безопасности сервера: Полный чеклист

Руководство по усилению безопасности Linux-сервера: настройка SSH, отключение root-входа, Fail2Ban, автоматические обновления, правила брандмауэра и права доступа к файлам.

Время чтения: 16 мин Управление сервером
безопасностьусилениеhardeningsshfail2banбрандмауэрlinuxчеклист
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Усиление безопасности сервера: Полный чеклист

При настройке нового Linux-сервера конфигурация по умолчанию не оптимизирована с точки зрения безопасности. Усиление сервера включает систематические изменения конфигурации для уменьшения поверхности атаки и устранения уязвимостей. Это руководство предоставляет полный чеклист безопасности для серверов REXE.

Зачем усиливать безопасность сервера?

Стандартные установки Linux могут иметь:

  • Запущенные ненужные службы
  • SSH открытый для аутентификации по паролю
  • Включённый вход root
  • Минимальные правила брандмауэра
  • Отключённые автоматические обновления

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

✅ Чеклист 1: Обновления системы

hljs bash
# Обновление системы
sudo apt update && sudo apt upgrade -y

# Установка автоматических обновлений безопасности
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

✅ Чеклист 2: Усиление SSH

hljs bash
sudo nano /etc/ssh/sshd_config
# Настройки безопасности SSH

# Отключить вход root
PermitRootLogin no

# Отключить аутентификацию по паролю (после настройки SSH-ключа)
PasswordAuthentication no

# Запретить пустые пароли
PermitEmptyPasswords no

# Отключить X11 forwarding
X11Forwarding no

# Максимальное количество попыток входа
MaxAuthTries 3

# Максимальное количество одновременных сессий
MaxSessions 5

# Тайм-аут входа (секунды)
LoginGraceTime 30

# Версия протокола
Protocol 2

# Разрешить только определённых пользователей
AllowUsers admin deploy

# Изменить порт SSH (опционально)
# Port 2222

# Сильные алгоритмы шифрования
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
KexAlgorithms curve25519-sha256,diffie-hellman-group14-sha256
hljs bash
# Проверка конфигурации SSH
sudo sshd -t

# Перезапуск SSH
sudo systemctl restart sshd

✅ Чеклист 3: Настройка брандмауэра

hljs bash
# Установка и настройка UFW
sudo apt install ufw -y

# Политики по умолчанию
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Сначала разрешить SSH!
sudo ufw allow ssh

# Веб-сервисы
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Разрешить доступ с определённого IP
sudo ufw allow from 192.168.1.0/24 to any port 3306

# Включить UFW
sudo ufw enable

# Проверить статус
sudo ufw status verbose

Расширенные правила UFW

hljs bash
# Ограничение скорости для защиты от брутфорса
sudo ufw limit ssh

# Заблокировать определённый IP
sudo ufw deny from 1.2.3.4

# Удалить правило
sudo ufw delete allow 80/tcp

✅ Чеклист 4: Настройка Fail2Ban

hljs bash
# Установка Fail2Ban
sudo apt install fail2ban -y

# Создание локальной конфигурации
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
hljs ini
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400

[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
hljs bash
# Запуск Fail2Ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban

# Проверка статуса
sudo fail2ban-client status
sudo fail2ban-client status sshd

# Просмотр заблокированных IP
sudo fail2ban-client status sshd | grep "Banned IP"

# Разблокировать IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

✅ Чеклист 5: Отключение ненужных служб

hljs bash
# Список запущенных служб
sudo systemctl list-units --type=service --state=running

# Отключение ненужных служб
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now cups
sudo systemctl disable --now bluetooth
sudo systemctl disable --now rpcbind

# Проверка открытых портов
sudo ss -tlnp

✅ Чеклист 6: Безопасность файловой системы

hljs bash
# Поиск файлов SUID/SGID
find / -perm /4000 -type f 2>/dev/null
find / -perm /2000 -type f 2>/dev/null

# Поиск файлов с мировой записью
find / -perm -0002 -type f 2>/dev/null

# Сделать критические файлы неизменяемыми
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow

✅ Чеклист 7: Параметры безопасности ядра

hljs bash
sudo nano /etc/sysctl.d/99-security.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
kernel.randomize_va_space = 2
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
fs.suid_dumpable = 0
hljs bash
sudo sysctl -p /etc/sysctl.d/99-security.conf

✅ Чеклист 8: Мониторинг логов

hljs bash
tail -f /var/log/auth.log
tail -f /var/log/fail2ban.log
tail -f /var/log/ufw.log

# Подсчёт неудачных SSH-входов
grep "Failed password" /var/log/auth.log | wc -l

# Установка Logwatch
sudo apt install logwatch -y
sudo logwatch --output stdout --format text --range today

✅ Чеклист 9: Сканирование безопасности

hljs bash
# Аудит безопасности с Lynis
sudo apt install lynis -y
sudo lynis audit system

# Сканирование руткитов с rkhunter
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check

Оценка безопасности Lynis должна быть 70+. Запускайте регулярно (ежемесячно).

Краткий справочный чеклист

  • Обновления системы применены
  • Автоматические обновления безопасности включены
  • Вход root по SSH отключён
  • Вход по паролю SSH отключён (ключ установлен)
  • SSH MaxAuthTries установлен на 3
  • Брандмауэр UFW включён и настроен
  • Fail2Ban установлен и работает
  • Ненужные службы отключены
  • Параметры безопасности ядра настроены
  • Мониторинг логов настроен
  • Аудит безопасности Lynis завершён

Заключение

Усиление безопасности сервера — не разовая задача, а непрерывный процесс. Применяйте этот чеклист при настройке новых серверов и проводите регулярные аудиты безопасности. Эти шаги значительно повысят безопасность ваших серверов REXE.

Часто задаваемые вопросы

Улучшает ли изменение порта SSH безопасность?

Изменение стандартного порта 22 снижает количество автоматизированных атак сканирования (безопасность через неизвестность). Однако для реальной безопасности аутентификация по SSH-ключу и Fail2Ban более эффективны. Изменение порта можно использовать как дополнительный уровень.

Можно ли использовать Fail2Ban и UFW вместе?

Да, Fail2Ban по умолчанию использует iptables, но может работать с UFW. Установите 'banaction = ufw' в /etc/fail2ban/jail.local, чтобы Fail2Ban создавал правила UFW.

Что нужно сделать перед отключением входа root?

Сначала создайте обычного пользователя с правами sudo и настройте его SSH-ключ. Проверьте соединение с новым пользователем. Затем установите 'PermitRootLogin no' в /etc/ssh/sshd_config. Проверьте из нового терминала перед отключением.

Могут ли автоматические обновления сломать сервер?

Обновления безопасности, как правило, безопасны. Настройте unattended-upgrades только для обновлений безопасности и установите 'Automatic-Reboot false'. Для критических систем сначала тестируйте обновления в промежуточной среде.

Как улучшить оценку безопасности Lynis?

Отчёт Lynis содержит предложения по улучшению. Сосредоточьтесь на разделах 'Suggestion' и 'Warning'. Распространённые улучшения: параметры ядра, конфигурация PAM, права доступа к файлам и отключение ненужных служб.

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps