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

10 основных шагов для обеспечения безопасности сервера

10 основных шагов для защиты Linux-сервера: аутентификация по SSH-ключу, брандмауэр, Fail2ban, автоматические обновления, защита от DDoS и многое другое. Руководство с командами и пояснениями.

Время чтения: 12 мин Безопасность
безопасность серверабезопасность linuxsshбрандмауэрfail2banзащита от ddos

Содержание

10 основных шагов для обеспечения безопасности сервера

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

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

Шаг 1: Аутентификация по SSH-ключу и отключение входа по паролю

Вход по SSH с паролем уязвим для атак методом перебора. Использование пары SSH-ключей намного безопаснее.

Создание пары SSH-ключей (на локальной машине)

hljs bash
# Создать ключ Ed25519
ssh-keygen -t ed25519 -C "server-name@rexe"

# Или если хотите использовать RSA
ssh-keygen -t rsa -b 4096 -C "server-name@rexe"

Копирование публичного ключа на сервер

hljs bash
# Запустить с локальной машины
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip

Отключение входа по паролю

hljs bash
# Редактировать /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config

# Изменить эти строки:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no

# Перезапустить службу SSH
sudo systemctl restart sshd

Шаг 2: Настройка брандмауэра (UFW)

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

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

# Разрешить SSH
sudo ufw allow 22/tcp

# Порты веб-сервера
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

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

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

Шаг 3: Установка и настройка Fail2ban

hljs bash
# Установить Fail2ban
sudo apt install fail2ban -y

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

[sshd]
enabled = true
port    = ssh
maxretry = 3
bantime  = 86400
hljs bash
# Запустить Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

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

Шаг 4: Автоматические обновления безопасности

hljs bash
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

Шаг 5: Отключение неиспользуемых служб

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

# Проверить открытые порты
sudo ss -tlnp

# Остановить и отключить ненужные службы
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth

Шаг 6: Надёжные пароли и двухфакторная аутентификация

hljs bash
sudo apt install libpam-pwquality -y
minlen = 12
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1

2FA с Google Authenticator

hljs bash
sudo apt install libpam-google-authenticator -y
google-authenticator

Шаг 7: Регулярное резервное копирование

hljs bash
# Локальное резервное копирование с rsync
rsync -avz --delete /var/www/ /backup/www/

# Cron-задание для автоматического резервного копирования
0 2 * * * rsync -avz /var/www/ /backup/www/

# Резервное копирование базы данных
mysqldump -u root -p --all-databases | gzip > /backup/db_$(date +%Y%m%d).sql.gz

Применяйте правило резервного копирования 3-2-1: 3 копии, 2 разных носителя, 1 другое местоположение.

Шаг 8: Мониторинг журналов

hljs bash
tail -f /var/log/auth.log
tail -f /var/log/syslog
grep "Failed password" /var/log/auth.log | tail -20

Шаг 9: Защита от DDoS

hljs bash
# Защита от SYN-флуда
sudo iptables -A INPUT -p tcp --syn -m limit \
  --limit 1/s --limit-burst 3 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP

# Ограничение количества соединений (на IP)
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit \
  --connlimit-above 50 -j REJECT

Программная защита от DDoS может быть недостаточной против крупномасштабных атак. Инфраструктура Path.net от REXE обеспечивает фильтрацию DDoS на уровне сети, очищая трафик атак до того, как он достигнет вашего сервера.

Шаг 10: Настройка SSL/TLS

hljs bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
hljs nginx
server {
    listen 443 ssl http2;
    ssl_protocols TLSv1.2 TLSv1.3;
    add_header Strict-Transport-Security "max-age=63072000" always;
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
}

Контрольный список безопасности

  • Аутентификация по SSH-ключу активна, вход по паролю отключён
  • Вход root по SSH отключён
  • Брандмауэр настроен
  • Fail2ban установлен и работает
  • Автоматические обновления безопасности активны
  • Неиспользуемые службы отключены
  • Применена политика надёжных паролей
  • 2FA включена
  • Создан план регулярного резервного копирования
  • Мониторинг журналов настроен
  • Защита от DDoS активна
  • SSL/TLS-сертификат установлен