10 основных шагов для обеспечения безопасности сервера
10 основных шагов для защиты Linux-сервера: аутентификация по SSH-ключу, брандмауэр, Fail2ban, автоматические обновления, защита от DDoS и многое другое. Руководство с командами и пояснениями.
Содержание
10 основных шагов для обеспечения безопасности сервера
Когда вы настраиваете новый Linux-сервер, конфигурация по умолчанию не оптимизирована для безопасности. Каждый сервер, подключённый к интернету, становится целью автоматизированных инструментов сканирования в течение нескольких минут. Это руководство объясняет 10 основных шагов, которые необходимо реализовать для защиты вашего сервера, с командами.
Будьте осторожны, чтобы не потерять доступ к серверу при применении этих шагов. Особенно при изменении конфигурации SSH держите текущий сеанс открытым и тестируйте в новом окне терминала.
Шаг 1: Аутентификация по SSH-ключу и отключение входа по паролю
Вход по SSH с паролем уязвим для атак методом перебора. Использование пары SSH-ключей намного безопаснее.
Создание пары SSH-ключей (на локальной машине)
# Создать ключ Ed25519
ssh-keygen -t ed25519 -C "server-name@rexe"
# Или если хотите использовать RSA
ssh-keygen -t rsa -b 4096 -C "server-name@rexe"
Копирование публичного ключа на сервер
# Запустить с локальной машины
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip
Отключение входа по паролю
# Редактировать /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
# Изменить эти строки:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
# Перезапустить службу SSH
sudo systemctl restart sshd
Шаг 2: Настройка брандмауэра (UFW)
# Установить 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
# Установить Fail2ban
sudo apt install fail2ban -y
# Создать файл конфигурации
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 86400
# Запустить Fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Проверить статус
sudo fail2ban-client status sshd
Шаг 4: Автоматические обновления безопасности
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Шаг 5: Отключение неиспользуемых служб
# Список запущенных служб
sudo systemctl list-units --type=service --state=running
# Проверить открытые порты
sudo ss -tlnp
# Остановить и отключить ненужные службы
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth
Шаг 6: Надёжные пароли и двухфакторная аутентификация
sudo apt install libpam-pwquality -y
minlen = 12
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1
2FA с Google Authenticator
sudo apt install libpam-google-authenticator -y
google-authenticator
Шаг 7: Регулярное резервное копирование
# Локальное резервное копирование с 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: Мониторинг журналов
tail -f /var/log/auth.log
tail -f /var/log/syslog
grep "Failed password" /var/log/auth.log | tail -20
Шаг 9: Защита от DDoS
# Защита от 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
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
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-сертификат установлен
Связанные статьи
Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV
Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.
Настройка Fail2Ban: Защита SSH от брутфорс-атак
Защитите сервер от SSH брутфорс-атак с помощью Fail2Ban. Установка, настройка jail.local, джейлы для Nginx/Apache, белый список IP, мониторинг блокировок и email-уведомления.
Настройка VPN-сервера WireGuard: пошаговое руководство
Настройте VPN-сервер WireGuard: генерация ключей, конфигурация сервера и клиента, IP-пересылка, правила брандмауэра и настройка клиентов Windows/Linux/Android.