Травыч
МируМир☮️
- Регистрация
- 01.06.2025
- Сообщения
- 9 151
- Реакции
- 20 449
- Баллы
- 113
Настройка безопасности сервера Linux
1. Обновления системы
Несмотря на простоту этого пункта, он один из самых важных. В программном обеспечении постоянно находят и исправляют различные уязвимости. Если вы хотите чтобы ваш сервер был в безопасности, держите всё программное обеспечение в актуальном состоянии. Возьмите за правило время от времени проводить обновление системы. В Ubuntu или Debian для обновления надо выполнить:sudo apt update
sudo apt full-update
В Fedora или CentOS надо использовать пакетный менеджер dnf:
sudo dnf update
2. Не используйте незащищённые сервисы
В большинстве сетей имена пользователей, пароли от FTP, Telnet, RSH команд могут быть перехвачены кем-либо из той же самой сети с помощью анализатора пакетов. Общее решение этой проблемы заключается в использовании OpenSSH или SFTP, который добавляет SSL или TLS к обычному FTP. Для подключения к серверу удалённо можно использовать ssh, а для передачи файлов либо SSH либо SFTP.3. Минимум программ и открытых портов
Чем меньше портов на вашем сервере доступно из сети, тем безопаснее и тем меньше вероятность, что в какой-нибудь программе обнаружится уязвимость и вас взломают. Вы можете проверить какие сейчас порты открыты на вашем сервере:sudo nmap -sT адрес_сервера
Например, для losst.pro:
Вы можете узнать PID процесса, который использует порт с помощью команды ss:
sudo ss -lptn 'sport = :53'
Информацию о процессе по его PID вы можете узнать с помощью команды ps. Например:
ps -p 2756
Используйте свой пакетный менеджер чтобы посмотреть установленные программы и удалить все ненужные. Например, для Debian:
yum list installed
yum list пакет
yum remove пакет
Или для Ubuntu:
4. SELinux или Apparmor
Операционная система Linux поставляется с различными патчами безопасности, которые могут быть использованы для защиты от неправильной конфигурации или вредоносных программ. Вы можете использовать также такие дополнительные системы контроля доступа для приложений как SELinux или AppArrmor.SELinux предоставляет различные политики безопасности для ядра Linux. Эта надстройка позволяет контролировать доступ процессов к файлам в файловой системе. К тому или иному ресурсу может получить доступ только программа, роль которой позволяет это делать и даже права суперпользователя не имеют значения. SELinux намного увеличивает безопасность системы Linux, поскольку даже root здесь считается обычным пользователем. Подробнее о настройке SELinux описано в отдельной статье.
Система AppArmor используется в Ubuntu, она работает похожим образом на SELinux. Здесь для каждого приложения создаются профили, в которых описано к каким файлам приложение может получить доступ, а ко всему остальному у него доступа не будет. Подробнее про AppArrmor читайте здесь.
5. Учетные записи пользователей
Не используйте пользователя root для администрирования сервера. Создайте для этого не привилегированного пользователя с помощью команд useradd и usermod/ Убедитесь, что у вас хороший и сильный пароль, он должен содержать, по крайней мере, восемь символов, желательно в разном регистре, среди которых должны встречаться специальные символы или цифры. Например, 8 символов, из которых семь буквы и один символ или цифра. Для генерации паролей можно воспользоваться утилитой pwgen или любой другой утилитой из этой статьи.6. Регулярная смена пароля
Команда change позволяет указать количество дней до даты принудительной смены пароля. Эта информация используется системой для определения момента, когда пользователь должен его изменить. Эти настройки находятся в /etc/login.defs. Чтобы отключить старение пароля введите следующую команду:change -l имя_пользователя
Чтобы получить информацию о строке годности пароля введите команду:
Также вы можете все настроить вручную, в файле /etc/shadow:
{пользователь}:{пароль}:{последнее_изменение}:{максимум_дней}:{минимум_дней}:{Предупреждение}:{деактивировать}:{строк_годности}:
- Минимум дней - минимальный интервал между сменами паролей, то есть насколько часто пользователь может менять пароль.
- Максимум дней - сколько дней будет годен пароль, по истечении этого срока пользователь будет вынужден поменять пароль.
- Предупреждение - количество дней после которых пользователь будет предупрежден, что ему нужно сменить пароль.
- Строк_годности - количество дней с первого января 1970 когда аккаунт будет полностью отключен.
chage -M 60 -m 7 -W 7 имя_пользователя
Также желательно запретить пользователям использовать старые пароли, иначе все старания с попытками заставить их принудительно менять пароли будут сведены к нулю.
7. Использование fail2ban
В операционной системе Linux вы можете использовать команду faillog, чтобы посмотреть неудачные попытки входа пользователей. Также с помощью нее вы можете установить лимит неудачных попыток входа. Вся информация о неудачных попытках входа хранится в файле /var/log/faillog или /var/log/secure. Чтобы ее посмотреть наберите:faillog
Или:
cat /var/log/secure
Сервис fail2ban позволяет блокировать IP адреса после нескольких неудачных попыток авторизации по SSH, FTP, HTTP или в других сервисах Linux. Можно даже настроить блокировку для неудачных попыток входа в WordPress. Это может обезопасить вашу систему от попыток перебора пароля. Подробнее про fail2ban читайте тут.
8. Отключение входа для суперпользователя
На одном из предыдущих шагов вы создали непривилегированного пользователя, его и следует использовать для авторизации на сервере по SSH, а вход от имени Root пользователя следует отключить. Для этого в конфигурационном файле /etc/sshd_config надо изменить значение строчки PermitRootLogin с Yes на No:sudo vi /etc/sshd_config
9. Настройка брандмауэра
Используйте брандмауэр. Он позволяет закрыть доступ к портам, которые не должны быть видны из сети, а также отфильтровать нежелательный трафик. Разрешите в брандмауэре только нужные порты, а остальные пусть будут закрытыми. Про настройку iptables можно почитать в статье iptables для чайников. А ещё есть ufw и firewalld.10. Настройка ядра
В файле /etc/sysctl.conf хранятся настройки ядра, которые загружаются и применяются во время запуска системы. Чтобы включить защиту от переполнения буфера execshield, добавьте:kernel.exec-shield=1<br dir="ltr">kernel.randomize_va_space=1
Включить защиту от подделывания IP:
net.ipv4.conf.all.rp_filter=1
Отключить перенаправление IP адресов:
net.ipv4.conf.all.accept_source_route=0
Игнорировать широковещательные запросы:
net.ipv4.icmp_echo_ignore_broadcasts=1<br dir="ltr">net.ipv4.icmp_ignore_bogus_error_messages=1
Логгировать все подделанные пакеты:
net.ipv4.conf.all.log_martians = 1
11. Разбивка диска на разделы
Разделение жесткого диска на разделы в зависимости от назначения файлов улучшает безопасность ОС Linux. Рекомендуется делать отдельные разделы для таких директорий:Сделайте отдельные разделы для корневых директорий Apache и FTP серверов. Откройте файл /etc/fstab и выставьте специальные опции для нужных разделов:
- noexec - не выполнять любые программы или исполняемые файлы на этом разделе, разрешены только скрипты
- nodev - не разрешать символические или специальные устройства на этом разделе.
- nosuid - не разрешать SUID / SGID доступ для программ из этого раздела.

