Защита системы Linux: 11 советов по безопасности

Защита системы – важная составляющая работы. В статье 11 полезных советов, которые помогут сделать вашу UNIX-систему более защищённой.

защита системы

Ежедневно обнаруживаются десятки уязвимостей, создаются сотни эксплоитов. Не исключено, что уязвимость может быть найдена и в UNIX-системах, поэтому, вам стоит обезопасить себя от “нежелательного вторжения”, даже если вы периодически обновляете ОС.

Защитите терминал

Вы можете защитить консоль, ограничив права root на использование определённых терминалов. Сделать это можно, указав терминалы, которые будет использовать root в /etc/securetty.

Предпочтительно (но не обязательно) разрешать root вход только в один терминал, а другие оставлять для прочих пользователей.

Всегда меняйте пароль

В наши дни просто необходим сильный пароль, но чтобы добавить ещё один слой защиты, следует время от времени его менять.

Вы можете забывать о смене пароля, поэтому должно быть что-то, что будет вам напоминать об этом.

Есть два способа добиться этого:

  1. Использование chage
  2. Установка значений по умолчанию в /etc/login.defs
$ chage -M 20 likegeeks

Мы используем параметр -M для установки срока пароля. Вы можете использовать chage без параметров, и тогда система попросит ввести вас значение.

Вы также можете перейти в /etc/login.defs и поменять значения в соответствии с вашими потребностями.

PASS_MAX_DAYS 10
 
PASS_MIN_DAYS 0
 
PASS_WARN_AGE 3

Имейте в виду, что вам следует заставить других пользователей создавать надёжные пароли, используя pam_cracklib.

Как только вы его установите, перейдите в /etc/pam.d/system-auth и введите что-то вроде этого:

password required pam_cracklib.so minlen=12 lcredit=-1 ucredit=-1 dcredit=-2 ocredit=-1

Оповещения sudo

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

Все конфигурации sudo лежат в /etc/sudoers.

Вы можете запретить пользователям выполнять команды как root. Вы можете сделать так, чтобы во время использования sudo, приходило письмо с оповещением на почту. Добавьте эти строки в конец файла:

mailto yourname@yourdomain.com
mail_always on

Защита системы: SSH

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

Файл конфигурации лежит в /etc/ssh/sshd_config.

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

Port 5555

Вы также можете запретить вход с root’а: обновите значение PermitRootLogin, поставив ‘no’

PermitRootLogin no

И, конечно же, замените обычный пароль на открытый и закрытый ключи:

PasswordAuthentication no
 
PermitEmptyPasswords no

Что касается тайм-аутов SSH, эта распространённая проблема может быть решена путём настройки перечисленных ниже параметров.

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

ServerAliveInterval 15
 
ServerAliveCountMax 3
 
TCPKeepAlive yes

Регулируя эти значения, вы можете обеспечить более продолжительное соединение.

ClientAliveInterval 30
 
ClientAliveCountMax 5

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

AllowUsers user1 user2

AllowGroup group1 group2

Защита системы: SSH + Google Authenticator

Кроме указанного способа вы также можете использовать двухфакторную аутентификацию для SSH, например Google Authenticator.

$  yum install google-authenticator

Далее запустите, чтобы установить.

$ google-authenticator

На вашем телефоне должно быть установлено приложение Google Authenticator. Отредактируйте файл /etc/pam.d/sshd, добавив следующую строку:

auth required pam_google_authenticator.so

Последнее, что необходимо сделать – сообщить SSH об установленном аутентификаторе, добавив следующую строку в /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes

Теперь перезапустите SSH.

$ systemctl restart sshd

Теперь, когда вы будете входить в систему, используя SSH, вас попросят ввести код подтверждения. Ваш SSH стал более защищённым и надёжным.

Защита системы посредством обнаружения вторжений с помощью Tripwire (мониторинг файловой системы)

Tripwire – один из лучших инструментов для обеспечения безопасности Linux. Это система обнаружения вторжений (HIDS). Задача Tripwire – мониторинг файловой системы и фиксирование изменений файлов.

Для того, чтобы установить Tripwire, нужен доступ к репозиторию EPEL.

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm
$ rpm -ivh epel-release-7-9.noarch.rpm

Как только вы установили EPEL, можете установить Tripwire:

$ sudo yum install tripwire

Во-первых, создайте ключевые файлы:

$ tripwire-setup-keyfiles

Вам будет предложено ввести парольную фразу для этих файлов. Используйте сильный пароль.

Теперь вы можете настроить Tripwire, отредактировав файл /etc/tripwire/twpol.txt. Файл очень легко редактировать, потому что каждая строка имеет пояснения в виде комментариев.

Как только закончите, инициализируйте Tripwire:

$ tripwire --init

Процесс сканирования займёт некоторое время, это зависит от размера и количества хранящихся файлов. Любые изменения в файловой системе считаются вторжением. Администратор будет уведомлён, затем ему нужно будет восстановить систему с файлами, которым можно доверять.

По этой причине любые системы должны проверяться через Tripwire. Для этого используйте следующую команду:

$ tripwire --check

Последнее, что касается Tripwire, я бы порекомендовал вам защитить файлы twpol.txt и twcfg.txt для создания ещё одного слоя безопасности. У Tripwire очень много опций и настроек, вы можете посмотреть их с помощью man tripwire.

Защита системы с помощью Firewalld(CentOS)

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

Чтобы узнать, запущен ли Firewalld, введите следующую команду:

$ firewall-cmd --state

linux security firewall-cmd state

Вы можете вывести предопределенные зоны вот так:

$ firewall-cmd --get-zones

linux security firewall-cmd --get-zones

Каждая из этих зон имеет “уровень доверия”. Значение может быть обновлено так:

$ firewall-cmd --set-default-zone=<new-name>

Вы можете получить всю информацию о конкретной зоне следующим образом:

$ firewall-cmd --zone=<zone-name> --list-all

Также вы можете вывести все поддерживаемые службы:

$ firewall-cmd --get-services

linux security firewall get services

Затем вы можете включить в список дополнительные службы или удалить конкретные:

$ firewall-cmd --zone=<zone-name> --add-service=<service-name>
 
$ firewall-cmd --zone=<zone-name> --remove-service=<service-name>

Вывести открытые порты для конкретной зоны:

$ firewall-cmd --zone=<zone-name> --list-ports

Удалить или добавить порты в зону:

$ firewall-cmd --zone=<zone-name> --add-port=<port-number/protocol>
 
$ firewall-cmd --zone=<zone-name> --remove-port=<port-number/protocol>

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

$ firewall-cmd --zone=<zone-name> --add-forward-port=<port-number>
 
$ firewall-cmd --zone=<zone-name> --remove-forward-port=<port-number>

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

Возвращаемся к Iptables

Некоторые люди предпочитают iptables firewall Firewalld’у, вы можете с лёгкостью вернуться к iptables, если раньше использовали Firewalld.

Первым делом, отключите Firewalld:

$ systemctl disable firewalld
 
$ systemctl stop firewalld

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

$ yum install iptables-services
 
$ touch /etc/sysconfig/iptables
 
$ touch /etc/sysconfig/ip6tables

Теперь запустите:

$ systemctl start iptables
 
$ systemctl start ip6tables
 
$ systemctl enable iptables
 
$ systemctl enable ip6tables

В конце перезагрузите систему.

Неизменяемые файлы (запрет на модификацию файла)

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

Вы можете защитить любой файл, который захотите. Используем команду chattr.

$ chattr +i /myscript

linux security immutable files

Неизменяемость файла можно убрать:

$ chattr -i /myscript

linux security remove immutalbe flag

Управление SELinux с помощью aureport

Отключённый SELinux – обычная вещь, если вы используете хостинговые панели управления.

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

Утилита aureport разработана для создания табличных отчётов для логов аудита.

$ aureport --avc

linux security aureport

Вы можете создать список исполняемых файлов:

$ aureport -x

linux security aureport -x Кроме того, aureport можно применять для генерации полного отчёта об аутентификациях.

$ aureport -au -i

linux security aureport -au

Также вы можете вывести список неудачных попыток аутентификации:

$ aureport -au --summary -i --failed

linux security aureport failed summery

Или, может быть, итог успешных аутентификаций:

linux security aureport success summery

Используем sealert

В добавок к aureport, вы можете использовать инструмент sealer. Установка:

$ yum install setools

Теперь у нас есть инструмент, возвращающий объявления из файла /var/log/audit/audit.log и дающий нам понять о проблемах SELinux, если таковые возникают.

Вы можете использовать это примерно так:

$ sealert -a /var/log/audit/audit.log

linux security sealert -a

Лучше всего в генерируемых отчётах то, что, если обнаружена проблема, вы с лёгкостью сможете найти способ её решения.

Заключение

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

Оригинал

Статьи по теме:

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Java Team Lead
Москва, по итогам собеседования
Senior Java Developer
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ