Как защитить свой Linux сервер от атак: руководство для новичков

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

Как защитить свой Linux сервер от атак: руководство для новичков
Как защитить свой Linux сервер от атак: руководство для новичков

1. Обновляйте систему регулярно

Первое, что нужно помнить при работе с Linux сервером, — это регулярное обновление системы. Обновления не только исправляют ошибки и добавляют новые функции, но и закрывают уязвимости, которые могут быть использованы злоумышленниками.

Для дистрибутивов на основе Debian и Ubuntu:

sudo apt update && sudo apt upgrade -y

Для дистрибутивов на основе Red Hat и CentOS:

sudo yum update -y

Для дистрибутивов на основе Arch Linux:

sudo pacman -Syu

Регулярное выполнение этих команд поможет вам поддерживать ваш сервер в актуальном состоянии и закрыть возможные уязвимости.

2. Настройте файервол

Файервол (брандмауэр) — это программное обеспечение, которое контролирует входящий и исходящий трафик на вашем сервере, разрешая или блокируя его на основе определенных правил.

Настройка UFW (Uncomplicated Firewall) на Ubuntu:

Установите UFW (если он еще не установлен):

sudo apt install ufw

Разрешите SSH-соединение (чтобы не потерять доступ к серверу):

sudo ufw allow ssh

Настройте доступ к другим необходимым сервисам:

sudo ufw allow http
sudo ufw allow https

Включите файервол:

sudo ufw enable

Теперь ваш сервер будет защищен от несанкционированного доступа.

3. Отключите корневой доступ по SSH

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

Как отключить root-доступ по SSH:

Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Найдите строку PermitRootLogin и измените ее на no:

PermitRootLogin no

Перезапустите SSH для применения изменений:

sudo systemctl restart sshd

Теперь доступ к вашему серверу под пользователем root будет невозможен по SSH.

4. Используйте SSH-ключи вместо паролей

Использование SSH-ключей — более безопасный способ аутентификации по сравнению с паролями. С SSH-ключами вам не нужно беспокоиться о том, что кто-то сможет подобрать ваш пароль.

Генерация SSH-ключей и их настройка:

Создайте SSH-ключ на вашем локальном компьютере:

ssh-keygen -t rsa -b 4096

Скопируйте ключ на сервер:

ssh-copy-id username@server_ip_address

Отключите аутентификацию по паролю (опционально):
Откройте файл конфигурации SSH и найдите строку PasswordAuthentication. Измените ее на no:

PasswordAuthentication no

После этого перезапустите SSH:

sudo systemctl restart sshd

Теперь вход на сервер возможен только при наличии приватного SSH-ключа.

5. Настройте двухфакторную аутентификацию (2FA)

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

Настройка двухфакторной аутентификации с помощью Google Authenticator:

1 Установите Google Authenticator:

sudo apt install libpam-google-authenticator

2 Запустите настройку для вашего пользователя:

google-authenticator

Следуйте инструкциям на экране для генерации ключа и QR-кода.

3 Включите двухфакторную аутентификацию для SSH:

Откройте файл /etc/pam.d/sshd и добавьте строку:

auth required pam_google_authenticator.so

Далее откройте /etc/ssh/sshd_config и найдите строку ChallengeResponseAuthentication, изменив ее на yes:

ChallengeResponseAuthentication yes

Перезапустите SSH:

sudo systemctl restart sshd

Теперь при входе на сервер вы будете вводить код из приложения Google Authenticator.

6. Мониторинг и логирование

Мониторинг активности сервера и ведение логов позволяют быстро обнаружить подозрительную активность и принять меры.

Инструменты для мониторинга:

Fail2Ban: автоматически блокирует IP-адреса после нескольких неудачных попыток входа.

sudo apt install fail2ban

Logwatch: анализирует логи и отправляет отчеты на вашу почту.

sudo apt install logwatch

Настроив эти инструменты, вы будете всегда в курсе происходящего на вашем сервере.

7. Отключите ненужные сервисы и порты

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

Команды для управления сервисами:

Отключение сервиса:

sudo systemctl disable service_name

Остановка сервиса:

sudo systemctl stop service_name

Просмотр открытых портов:

Используйте команду netstat или ss для просмотра открытых портов:

sudo ss -tuln

Закрыв ненужные порты и отключив неиспользуемые сервисы, вы значительно повысите безопасность вашего сервера.

Заключение

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

Следуйте этим рекомендациям, и ваш сервер будет надежно защищен от большинства угроз.

Nazario

Я — Nazario, создатель и автор сайта linuxwin.ru, специализируюсь на информационных технологиях с акцентом на системное администрирование Linux и Windows, веб-разработку и настройку различных систем.

Linux и Windows
Выскажите своё мнение или присоединяйтесь к обсуждению:

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