14 простых советов по безопасности Linux

CS_Linux_Deep_10.07_site-5020-1d8e0e.png

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

Материал не претендует на полную и абсолютную истинность. Однако указанные советы несомненно будут полезными при эскизном проектировании ИБ, а также смогут послужить как отправные точки для написания различного рода внутренних регламентов и политик безопасности.

Чтобы сервер был безопасен, надо соблюдать ряд действий и правил. Простых и не очень. Опишу всё по порядку.

1. Ставить везде разные и везде сложные пароли

Ну, я думаю, зачем это, объяснять не нужно, если с фантазией сложно, можно использовать утилиту pwgen, которая сгенерирует пароли за вас.

2. Не использовать стандартные порты

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

3. Читать и проверять логи

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

4. Не сидеть постоянно под рутом

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

5. Выставлять безопасные права на файлы и папки, владельцев

Также хочу заметить, что не повредит selinux (модуль ядра, разработанный американскими военными для более сложных уровней доступа) и bindfs (можно примонтировать папку как отдельную файловую систему).

6. Chroot'ить всё, что можно, что может дать доступ к системе

Черут — это создание окружения с нужными файлами и утилитами, после этой команды корень файловой системы будет именно в этом каталоге, в который вы черутите. Разумеется, там нужны многие системные файлы, но плюсы в том, что вы можете скопировать только нужные утилиты в папку /bin/ и у людей, закрытых в этой директории, будут урезанные возможности, и даже если они что-то натворят, то только в этой папке. Поэтому надо черутить всё, что так или иначе может дать доступ к системе, например, апач. Многие программы в конфиге позволяют настроить черут для некоторых юзеров. Например, пользователей proftpd можно закрыть в любом каталоге и выше него они не подымутся, это делается всё также — черутом, но уже без вашего участия, а автоматически программами.

7. Запускать службы и демоны, которые могут дать доступ к системе под отдельным пользователем, урезанным в правах

И снова можно привести пример с апачем. Если в нём найдётся уязвимость, то можно будет выполнять команды от юзера, запустившего его, поэтому стоит позаботится об ограничении прав для этого пользователя. В убунте уже есть юзер, специально созданный для этого дела, — www-data, и веб-серверы запускаются от его имени.

8. Использовать программы для безопасной работы, фаерволы, блокировщики (iptables, fail2ban и т. п.)

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

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

9. Использовать антивирусы

Вирусы в линукс, конечно, не так опасны, но могут причинить вред пользователям, если речь идет о сайте, и он заражен. Я использую на своем сервере clamav.

10. Отключать неиспользуемые протоколы

Действительно, зачем они нам, если косвенно могут предоставлять опасность? Лучше их отключить, например, IPv6, если не используем.

11. Дополнительную авторизацию для служб, которые вещают в сеть, вешать на https

Яркий пример — phpmyadmin, лучше его повесить на https, чтобы никто не перехватывал трафик с паролями, а также для большей безопасности лучше повесить на дополнительную авторизацию веб-сервера.

12. Ограничить подключения только c localhost, если не планируется подключаться удалённо

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

13. Авторизация ssh по ключу, ограничение доступа

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

Есть ещё программа jailkit, как раз позволяет черутить. Но она не очень-то и гибкая, я вам скажу, навязывает свою структуру и запирает пользователя строго в домашнем каталоге. Но попробовать стоит. Также, если предполагается подключение только узкого круга лиц, стоит ограничить его для подключения строго с определенных ip-адресов.

14. Регулярный бэкап

Не бывает ничего безопасного. Лучше настроить регулярный бэкап. При этом так, чтобы данные дополнительно хранились на сторонних ПК либо на облачных сервисах.

Есть что добавить? Пишите в комментариях!

Автор
1 комментарий
0

ipv6 отключать не всегда айс ибо всё чаще используется для межпроцессного взаимодействия. Из чрута вроде как есть способы вылезти в корень. Плюхи а-ля файл2бан лучче выносить ближе к периметру в конекшн-стейт фаер и жахать всех кто лезет с тремя и более подряд соединениями в состоянии нью. Советы так-то норм, но есть нюансы. Это видно даже мне - нубу.

Для комментирования необходимо авторизоваться