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

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

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

Время чтения: 12 мин Безопасность
безопасность серверабезопасность linuxsshбрандмауэрfail2banзащита от ddos
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

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-сертификат установлен

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

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

При первом подключении выполните следующие шаги: 1) Обновите систему (apt update && apt upgrade), 2) Создайте нового пользователя sudo, 3) Настройте аутентификацию по SSH-ключу, 4) Отключите вход root по SSH, 5) Настройте брандмауэр UFW, 6) Установите Fail2ban.

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

Да, Fail2ban и UFW отлично работают вместе. Fail2ban обнаруживает неудачные попытки входа и автоматически блокирует IP-адреса злоумышленников через UFW.

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

Частично. Смена порта SSH блокирует большинство автоматизированных инструментов сканирования. Однако это считается «безопасностью через неизвестность» и не заменяет реальных мер безопасности. Аутентификация по SSH-ключу и Fail2ban намного эффективнее.

Как узнать, что мой сервер был атакован?

Признаки подозрительной активности: множество неудачных попыток входа в /var/log/auth.log, неожиданно высокое использование CPU/RAM, неизвестные сетевые соединения, неизвестные cron-задания, изменённые системные файлы.

Что делать при DDoS-атаке на мой VDS-сервер?

Сначала определите тип и источник атаки. Если атака продолжается, немедленно уведомите команду поддержки REXE. Защита от DDoS REXE через Path.net фильтрует атаки на уровне сети.

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

Сканирование на вредоносное ПО и руткиты: rkhunter и ClamAV

Защитите Linux-сервер от вредоносного ПО и руткитов. Установка rkhunter и ClamAV, настройка сканирования, интерпретация результатов, планирование сканирований и реагирование на инциденты.

14 мин
вредоносное ПОруткитrkhunter

Настройка Fail2Ban: Защита SSH от брутфорс-атак

Защитите сервер от SSH брутфорс-атак с помощью Fail2Ban. Установка, настройка jail.local, джейлы для Nginx/Apache, белый список IP, мониторинг блокировок и email-уведомления.

13 мин
fail2banбрутфорсбезопасность ssh
Сетевой трафикВходящий GbpsИсходящий Gbps