мрежаLinux услуги
Деинсталирайте всички мрежови услуги, от които не се нуждаете. Услугите, които не са инсталирани, не работят и следователно са напълно безопасни. Често, когато работите с най-необходимите мрежови услуги, е достатъчно да осигурите достъп до услугата само за няколко конкретни клиента (които по-специално се намират в локалната мрежа). Например, за вас е практически невъзможно да осигурите достъп до услуги на сървър за печат в Интернет.
Що се отнася до Apache, Samba, MySQL и много други "големи" услуги, трябва да се вземат мерки за сигурност в съответния конфигурационен файл. За щастие има няколко мрежови услуги, които разчитат на библиотеката TCP-Wrapper за контрол на достъпа. Тази библиотека позволява централизирана конфигурация.
Необходимите мрежови услуги трябва да се изпълняват с минимален набор от права. Те се изпълняват от Init-V скриптовете, доставени с дистрибуцията. Ако е възможно и практично, стартирайте услугите без администраторски права от акаунт, създаден специално за тази цел, или в chroot среда, която няма да позволи достъп до файлове поради ограничения на директорията.
Актуализации, регистриране. Невъзможно е да осигурите достатъчна сигурност за текущата конфигурация на компютъра наведнъж - само с помощта на редовни актуализации ще можете да поддържате софтуера си актуален. Препоръчително е редовно да преглеждате регистрационните файлове на вашия компютър.
TCP-Wrapper библиотека
На LAN сървър обикновено не трябва да правите всички мрежови услуги глобално достъпни. Достатъчно е да осигурите достъп до услуги в локалната мрежа. Някои мрежови услуги разчитат на библиотеката 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.
Следващата стъпка е да разрешите на файла /etc/hosts.allow да използва определени услуги. Следната конфигурация като пример ви позволява да: получите достъп до всякакви услуги от локалния компютър (localhost); обмен на информация чрез ssh от всеки компютър в мрежата
(това се отнася за всички компютри, свързани с интернет); използвайте NFS и SWAT в локалната мрежа.
Осигуряване на поддръжка за библиотеката 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 обвиване (SUSE)
libwrap.so.O => /lib64/libwrap.so.O (0x00007flf3fece000) user$ ldd /usr/sbin/sshd grep обвиване
libwrap.so.O => /lib64/libwrap.so.0 (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 и не прави нищо друго).
Тъй като Init-V скриптовете обикновено се изпълняват с администраторски привилегии, е необходим специален механизъм за стартиране на мрежовия демон от различен акаунт. В най-простия случай процесът трябва да бъде стартиран във формата su име на акаунт -c демо.Но за повечето мрежипроцеси, са предвидени още по-фини механизми, при които програмата се инициализира с администраторски права и едва след това продължава да работи с акаунт, за който са дефинирани по-малко права. Някои програми, като syslog, имат специален параметър, който ви позволява да посочите желания акаунт. За Apache, MySQL и някои други сървърни услуги, които се изпълняват в множество екземпляри, мениджърският процес запазва администраторски права. Но обикновено такъв процес изпълнява нетипични задачи (обикновено стартиране и спиране на други екземпляри).
Стартиране на мрежови услуги в chroot среда
Вярно е, че на практика мрежовите услуги не се стартират с помощта на chroot, а чрез специален параметър, предназначен да посочи chroot директорията. Тази директория трябва да съдържа всички необходими библиотеки, конфигурационни файлове и т.н. Всички тези файлове ще бъдат копирани в правилната директория, преди да стартирате Init-V скрипта.
В SUSE по подразбиране DHCP сървърът и сървърът за имена работят в chroot среди. В този случай като DHCP сървър се използва специална актуализирана версия на dhcpd, в която chroot директорията може да бъде зададена с помощта на допълнителен параметър - chroot. Що се отнася до сървъра за имена, в този случай опцията -t се използва за указване на chroot директорията.
Ако мрежовата услуга се наблюдава от SEEinux или AppArmor и правилата за сигурност са добре дефинирани, тогава може да се откаже от chroot среда и ако се използва, тя не прави нищо за подобряване на сигурността. Fedora и Red Hat не използват chroots по подразбиране и системата разчита изцяло на правилата на SEEinux.Прочетете също: Настройване и управление на защитната стена за Linux