Как обеспечить безопасность Linux?

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

1. Запуск обновлений

Разработчики постоянно находят варианты, как сделать серверы более стабильными, быстрыми и безопасными, исправляя известные уязвимости. Регулярный запуск обновлений – хорошая практика для обеспечения безопасности. Запускайте их с помощью:

1
sudo apt-get update && apt-get upgrade

2. Включение защиты межсетевого экрана

Включение брандмауэра облегчает контроль входящего и исходящего трафика на вашем сервере.

Существует множество приложений брандмауэра, которые можно использовать в Linux, включая firewall-cmd и Uncomplicated Firewall (UFW). Я использую UFW, поэтому мои примеры относятся именно к нему, но эти принципы применимы к любому выбранному вами инструменту.

Установите UFW с помощью:

1
sudo apt-get install ufw

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

1
2
sudo ufw default deny incoming
sudo ufw default allow outgoing

Вы также можете написать правила для разрешения входящих соединений, которые нужны вам для персонального использования:

1
ufw allow <service>

Например, чтобы обеспечить разрешение SSH-соединений:

1
ufw allow ssh

В завершение включите брандмауэр, используя:

1
sudo ufw enable

3. Усиление защиты паролей

Применение строгой политики паролей является важным аспектом обеспечения безопасности сервера от кибератак и утечки данных.

Некоторые лучшие практики для политики паролей включают обеспечение минимальной длины и указание возраста пароля. Для выполнения этих задач я использую пакет libpam-cracklib.

Установите пакет libpam-cracklib:

1
sudo apt-get install libpam-cracklib

Чтобы обеспечить соблюдение длины пароля:

  • Откройте файл /etc/pam.d/common-password.
  • Измените минимальную длину символов для всех паролей, изменив строку minlen=12 на любое количество символов.

Чтобы предотвратить повторное использование пароля:

  • В том же файле (/etc/pam.d/common-password) добавьте строку remember=x.
  • Например, если вы хотите запретить пользователю повторно использовать один из его последних пяти паролей, используйте: remember=5.

Чтобы установить срок действия пароля:

Найдите следующие строки в файле /etc/login.defs и замените их на желаемое количество времени (дней). Например:

1
2
3
PASS_MIN_AGE: 3
PASS_MAX_AGE: 90
PASS_WARN_AGE: 14

Обеспечение соблюдения сложности пароля

  • Четыре параметра для обеспечения символов в паролях: lcredit (строчные буквы), ucredit (прописные буквы), dcredit (цифра) и ocredit (спец символы).
  • В том же файле (/etc/pam.d/common-password) найдите строку, содержащую pam_cracklib.so.
  • Добавьте следующее в конец этой строки:
1
lcredit=-a ucredit=-b dcredit=-c ocredit=-d

Например, следующая строка требует, чтобы пароли содержали по одному символу. Вы можете изменить числа в зависимости от предпочитаемого уровня безопасности пароля:

1
lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1

4. Отключение ненужных служб, которые подвержены к эксплуатации различных уязвимостей

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

Установите пакет systemd:

1
sudo apt-get install systemd

Проверьте, какие службы запущены:

1
systemctl list-units

Остановите службу, если она запущена:

1
systemctl stop <service>

Отключите включение службы при загрузке:

1
systemctl disable <service>

После выполнения этих команд проверьте состояние службы:

1
systemctl status <service>

5. Проверка прослушиваемых портов

Открытые порты могут представлять угрозу безопасности, поэтому важно проверить, какие порты прослушиваются на вашем сервере. Я использую команду netstat, чтобы показать все сетевые подключения:

1
netstat -tulpn

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

6. Сканирование на наличие вредоносных программ

Использование антивирусного программного обеспечения – это простой способ уберечь ваш хост от вредоносных программ. Я предпочитаю использовать программу ClamAV с открытым исходным кодом.

Установите ClamAV:

1
sudo apt-get install clamav

Обновите сигнатуры вирусов:

1
sudo freshclam

Просканируйте все файлы и выведете на экран зараженные файлы:

1
sudo clamscan -r --bell -i /

Необходимо автоматизировать сканирование, чтобы вам не приходилось запоминать команды или тратить время на выполнение сканирования вручную. Для такой простой автоматизации вы можете использовать таймеры systemd или ваш любимый cron.

Заключение

Это лишь некоторые из многих шагов, которые Вы можете предпринять для обеспечения безопасности Вашего Linux-сервера. Конечно, профилактика – это только часть решения. Эти практики должны сочетаться с тщательным мониторингом на предмет атак типа “отказ в обслуживании”, анализом системы с помощью Lynis и постоянным созданием резервных копий.