Защита системы – важная составляющая работы. В статье 11 полезных советов, которые помогут сделать вашу UNIX-систему более защищённой.
Ежедневно обнаруживаются десятки уязвимостей, создаются сотни эксплоитов. Не исключено, что уязвимость может быть найдена и в UNIX-системах, поэтому, вам стоит обезопасить себя от “нежелательного вторжения”, даже если вы периодически обновляете ОС.
Защитите терминал
Вы можете защитить консоль, ограничив права root на использование определённых терминалов. Сделать это можно, указав терминалы, которые будет использовать root в /etc/securetty
.
Предпочтительно (но не обязательно) разрешать root вход только в один терминал, а другие оставлять для прочих пользователей.
Всегда меняйте пароль
В наши дни просто необходим сильный пароль, но чтобы добавить ещё один слой защиты, следует время от времени его менять.
Вы можете забывать о смене пароля, поэтому должно быть что-то, что будет вам напоминать об этом.
Есть два способа добиться этого:
- Использование
chage
- Установка значений по умолчанию в
/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
Вы можете вывести предопределенные зоны вот так:
$ firewall-cmd --get-zones
Каждая из этих зон имеет “уровень доверия”. Значение может быть обновлено так:
$ firewall-cmd --set-default-zone=<new-name>
Вы можете получить всю информацию о конкретной зоне следующим образом:
$ firewall-cmd --zone=<zone-name> --list-all
Также вы можете вывести все поддерживаемые службы:
$ firewall-cmd --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
Неизменяемость файла можно убрать:
$ chattr -i /myscript
Управление SELinux с помощью aureport
Отключённый SELinux – обычная вещь, если вы используете хостинговые панели управления.
Отключение SELinux оставляет систему незащищённой. Нельзя не согласиться с тем, что SELinux имеет определённые сложности, однако вы можете упростить себе жизнь, используя aureport.
Утилита aureport разработана для создания табличных отчётов для логов аудита.
$ aureport --avc
Вы можете создать список исполняемых файлов:
$ aureport -x
Кроме того, aureport можно применять для генерации полного отчёта об аутентификациях.
$ aureport -au -i
Также вы можете вывести список неудачных попыток аутентификации:
$ aureport -au --summary -i --failed
Или, может быть, итог успешных аутентификаций:
Используем sealert
В добавок к aureport, вы можете использовать инструмент sealer. Установка:
$ yum install setools
Теперь у нас есть инструмент, возвращающий объявления из файла /var/log/audit/audit.log
и дающий нам понять о проблемах SELinux, если таковые возникают.
Вы можете использовать это примерно так:
$ sealert -a /var/log/audit/audit.log
Лучше всего в генерируемых отчётах то, что, если обнаружена проблема, вы с лёгкостью сможете найти способ её решения.
Заключение
В этой статье мы рассмотрели только некоторые из трюков для обеспечения безопасности Linux. Однако существует ещё множество различных способов для множества популярных инструментов, которые нуждаются в усилении защиты.
Надеемся, вы узнали что-то новое из статьи и сочли это полезным.
Комментарии