Контактная информация

По всем интересующим вас вопросам связывайтесь при помощи контактной информации приведенной на этой странице!

skype: metsof
email: accusser@gmail.com

В социальных сетях...

Форма обратной связи

Авторизация

Статьи об операционной системе Linux

Сайдбар

Основы защиты сетевых служб в Linux

04 апр. 2014

Деинсталлируйте все сетевые службы, которые вам не нужны. Службы, которые не установлены, не работают и поэтому совершенно безопасны.
Часто при работе с самыми нужными сетевыми службами бывает достаточно лишь предоставить доступ к службе всего для нескольких определенных клиентов (которые, в частности, находятся в локальной сети). Например, практически исключен случай, в котором вам пришлось бы предоставлять доступ к службам сервера печати в Интернете.

Что касается Apache, Samba, MySQL и многих других «крупных» служб, то меры защиты нужно предпринимать в соответствующем конфигурационном файле. К счастью, есть несколько сетевых служб, которые для управления доступом обращаются к библиотеке TCP-Wrapper. Эта библиотека позволяет осуществлять централизованную конфигурацию.

Необходимые сетевые службы должны выполняться с минимальным набором прав. Их выполнением занимаются сценарии Init-V, поставляемые вместе с дистрибутивом. Если это возможно и целесообразно, запустите службы без прав администратора с учетной записи, созданной специально для этих целей, или в среде chroot, которая не позволит обращаться к файлам из-за ограничений каталогов.

В качестве дополнительного уровня защиты рекомендуется использовать специальный брандмауэр, предназначенный для фильтрации пакетов, который, в соответствии с определенными правилами, блокирует пакеты, приходящие из Интернета на адреса различных служб. О Ни одна программа не защищена от ошибок. Программные ошибки позволяют потенциальным агрессорам завершать ваши программы с помощью отправки на компьютер специальных пакетов, а в особо тяжелых случаях даже выполнять на вашем компьютере свои команды. Чтобы свести к минимуму связанный с этим риск, ядро может наблюдать за выполнением программ на основании заранее заданных правил. Такой метод называется мандатным управлением доступом — Mandatory Access Control, кратко — MAC. В Linux для реализации этой функции используется два метода: SELinux и AppArmor.

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

Библиотека TCP-Wrapper



На сервере локальной сети обычно не следует делать все сетевые службы глобально доступными. Вполне достаточно обеспечить доступ к службам в рамках локальной сети. Некоторые сетевые службы обращаются для обеспечения такой базовой защиты к библиотеке TCP-Wrapper. К подобным службам относятся, в частности, SSH-сервер и NFS-сервер, а в SUSE — и служба CUPS. Службы, которые запускаются демоном интернет-сервисов, также с пользой применяют библиотеку TCP-Wrapper.

Файлы /etc/hosts.allow и hosts.deny



Файлы /etc/hosts.allow и /etc/hosts.deny определяют, с каких компьютеров какими службами можно управлять. Настройки действуют только для тех сетевых служб, которые применяют для контроля доступа библиотеку TCP-Wrapper или команду tcpd. По умолчанию оба файла пусты, то есть никакие ограничения не действуют.

Сначала библиотека TCP-Wrapper интерпретирует hosts.allow: если в этом файле прямо указано, что доступ разрешен, то осуществляется контроль. В противном случае библиотека интерпретирует hosts.deny: если в этом файле доступ запрещен, то клиент получает сообщение об ошибке. Внимание: во всех случаях, для которых отсутствуют правила и в /etc/hosts.allow, и в /etc/hosts.deny, доступ разрешается!

Чтобы обеспечить максимально безопасную конфигурацию, нужно запретить запуск любых сетевых служб — это делается с помощью команды all:all в /etc/ hosts.deny. Благодаря команде spawn любая попытка запустить сетевую службу будет протоколироваться в файле /var/log/deny.log.

Теперь из файла /var/log/deny.log вы сможете узнать, кто и когда пытается использовать сетевые службы вашего компьютера (запись в этом файле — необязательно сигнал об атаке; вполне возможно, что кто-то просто ошибся при написании IP-адреса).

<code># /etc/hosts.deny

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

# протоколировать

ALL : ALL : spawn (echo Attempt from %h to M at $(date) \ » /var/log/deny.log)</code>

Следующий шаг — разрешить в файле /etc/hosts.allow использование определенных служб. Приведенная далее в качестве примера конфигурация позволяет: получать с локального компьютера (localhost) доступ к любым службам; обмениваться информацией по ssh с любого компьютера, находящегося в сети

(это касается любых компьютеров, подключенных к Интернету); использовать NFS и SWAT в локальной сети.

Синтаксис, применяемый в hosts.allow или hosts.deny, на основании данных примеров уже должен быть понятен. Каждая запись состоит из двух частей, разделяемых двоеточием. В первой части указывается служба, во второй — IP-адрес или сетевое имя, в третьей части — итоговое действие. В man 5 hosts access содержится более подробное описание синтаксиса.

Обеспечение поддержки библиотеки TCP-Wrapper



Строка cupsd в SUSE требуется потому, что сервер печати CUPS в этом дистрибутиве компилируется с поддержкой библиотеки TCP-Wrapper (чего не скажешь о большинстве других дистрибутивов). Но при этом необходимо учитывать, что доступ к сетевому принтеру дополнительно управляется CUPS-специфичным файлом /etc/cups/cups.conf .

С помощью команды ldd вы легко можете сами определить, использует ли та или иная программа библиотеку TCP-Wrapper (libwrap). Результаты для cupsd и sshd в SUSE и Ubuntu выглядят так:

user$ ldd /usr/sbin/cupsd | grep wrap (SUSE)

libwrap.so.O => /lib64/libwrap.so.O (0x00007flf3fece000) user$ ldd /usr/sbin/sshd | grep wrap

libwrap.so.O => /lib64/libwrap.so.O (0x00007fbfl2455000)

user$ ldd /usr/sbin/cupsd | grep wrap (Ubuntu) user$ ldd /usr/sbin/sshd | grep wrap

libwrap.so.O => /lib/libwrap.so.O (0xb7f85000)

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



Для того чтобы такие программы, как Apache и MySQL, без проблем выполняли за вас вашу работу, нет необходимости запускать их с правами администратора. В большинстве дистрибутивов для таких служб предусмотрены специальные учетные записи, названия которых от дистрибутива к дистрибутиву различаются. Например, в Ubuntu Apache выполняется под учетной записью www-data и поэтому может обращаться лишь к тем файлам, которые доступны для чтения с этой учетной записи. Вы можете в этом убедиться с помощью команды ps axu (но один экземпляр Apache все же должен работать с правами администраторами отвечает лишь за запуск других экземпляров Apache и не выполняет никаких других задач).

<code>root# ps axu | grep apache2

root ... /usr/sbin/apache2 -k start www-data ... /usr/sbin/apache2 -k start www-data ... /usr/sbin/apache2 -k start
</code>

Поскольку сценарии Init-V, как правило, выполняются с правами администратора, для запуска сетевого демона с другой учетной записи требуется специальный механизм. В простейшем случае процесс необходимо запустить в форме su имя учетной записи -c демоя.Нодлябольшинствасетевых процессоввсежепредусмо-трены более тонкие механизмы, в ходе которых программа инициализируется с правами администратора и только потом переходит к работе с учетной записью, для которой определено меньшее количество прав. В некоторых программах, например в syslog, предусмотрен специальный параметр, позволяющий указать нужную учетную запись. У Apache, MySQL и некоторых других серверных служб, которые запускаются в нескольких экземплярах, управляющий процесс сохраняет за собой права администратора. Но обычно такой процесс выполняет нетипичные задачи (как правило, запуск и остановку других экземпляров).

Запуск сетевых служб в среде chroot



Команда chroot каталог команда запускает указанную команду, причем каталог используется в качестве корневого каталога. Команда может обращаться только к тем файлам, которые находятся в пределах этого каталога. Чтобы гарантировать, что программа не сможет «выбраться» из своей «клетки», ее нужно выполнять с учетной записи, имеющей ограниченные права (то есть учетная запись root не подходит).

Правда, на практике сетевые службы запускаются не с помощью chroot, а посредством специального параметра, предназначенного для указания chroot-каталога. В этом каталоге должны находиться все необходимые библиотеки, конфигурационные файлы и т. д. Все эти файлы в нужный каталог перед запуском скопирует сценарий Init-V.

В SUSE по умолчанию DHCP-сервер и сервер имен запускаются в средах chroot. В качестве DHCP-сервера в данном случае используется специальная обновленная версия dhcpd, в которой chroot-каталог можно задавать с помощью дополнительного параметра — chroot. Что касается сервера имен, то в данном случае для указания chroot-каталога применяется параметр -t.

Если за сетевой службой наблюдает SEEinux или AppArmor и правила обеспечения безопасности сформулированы правильно, то можно обойтись и без применения среды chroot, а если она и используется, то никак не способствует повышению безопасности. В Fedora и Red Hat chroot-каталоги по умолчанию не применяются, а система полностью полагается на соблюдение правил SEEinux.
Читайте так же:
Настройка и работа с брандмауэром для Linux

Никакого спама, только обновления!!!

Комментарии (0)


    Услуги по MODX Revolution

    Посмотреть все услуги

    Техническая оптимизация сайта

    Подробнее & Заказать

    Создание сайта на MODX Revolution

    Подробнее & Заказать

    Перенос сайта на MODX Revolution

    Подробнее & Заказать

    Продвижение сайта на MODX

    Подробнее & Заказать