Руководство администратора Linux по безопасности

       

Обзор


Имеется ряд инструментальных средств, чтобы упростить управление системой. От локальных инструментальных средств подобных sudo, которые предоставляют ограниченные привилегии суперпользователя, до Webmin и Linuxconf, которые основаны на www. Информации относительно того как войти в систему дистанционно (то есть, через telnet или ssh) есть в разделе shell server.


Имеется ряд методов совместно использовать регистрационные данные. С ростом популярности сетей, пользователи уходят далеко за пределы своей LAN, так что данная задача становится все более общей.




Всегда резервируйте вашу систему, даже если это только файлы конфигурации, Вы сохраните себе время и деньги в конечном счете. Причины исчезновения файлов могут быть самыми разными: сбой диска, безграмотное пользование командами типа 'delete', хакер, проникший в систему...

Чтобы резервировать данные под Linux имеется много решений, все с различными плюсами и минусами.




Сертификаты становятся все более популярными и, если Вы имеете свой сервер сертификатов, могут сэкономить много времени и денег. Имеются другие проекты, где было бы хорошо иметь сертификаты, но коммерческие версии дороги, а вариант OpenSource очень привлекателен.




DHCPD должны использовать все сетевые администраторы. Это позволяет Вам предоставлять клиентам информацию относительно их сетевых параметров настройки. Это также позволяет Вам легко реконфигурировать машины пользователей (чтобы , скажем, переместить с 10.0.1.0 на 10.0.2.0, или задать новый набор DNS-серверов). В конечном счете DHCP сильно облегчит Вам жизнь. Я выполнял его только с 8 машинами пользователей и нашел, что жизнь будет намного проще. DHCPD поддерживается ISC и есть на http://www.isc.org/dhcp.html.



Следует использовать DHCPD версии 2.x (3.x пока на тестировании), эта версия получила много новых свойств, и проще в установке и работе. Конечно, стоит закрыть firewallом DHCPD от Internet. Трафик DHCP должен быть только на локальных сегментах, возможно посланных на DHCP-сервер в другом сегменте, но единственный трафик DHCP из Internet означает атаку/DOS (они могли бы резервировать все Ваши IP, таким образом оставляя Вашу реальную клиентуру ни с чем). Если Вы передаете трафик DHCP через Internet, НЕ ДЕЛАЙТЕ ТАК! Это действительно плохая идея по ряду причин (прежде всего эффективность и надежность, но также и защита).

Я рекомендую, чтобы DHCPD-сервер был только сервером DHCP, блокированным где-нибудь (если Вы полагаетесь на DHCP в своей сети, и сервер DHCP засбоит, сеть окажется в серьезной проблеме). Если Вы должны охватить подсети (то есть, Вы имеете много сегментов ethernet, только один из которых имеет сервер DHCP, физически связанный с ним) реле DHCP (NT имеет его встроенным, программное обеспечение DHCP для Linux имеет эту возможность). Имеются также несколько известных проблем с NT и DHCP, NT RAS имеет довольно противную привычку забивать IP-адреса подобно сумасшедшему (я видел, как NT-сервер захватывает 64 адреса и хранит их неопределенными), потому что он пробует резервировать IP для клиентуры, которая будет работать. Это не может походить на реальную проблему, но это может привести (и приводит) к исчерпанию адресов. Или направьте RAS NT подальше, или поместите его в свою подсеть.

DHCPD определенно должен быть firewalled от внешних хостов. DHCP выполняется на порте 67, использует протокол udp, потому что количества данных маленькие, а быстрый ответ важен.

ipfwadm -I -a accept -P udp -S 10.0.0.0/8 -D 0.0.0.0/0 67 ipfwadm -I -a accept -P udp -S some.trusted.host -D 0.0.0.0/0 67 ipfwadm -I -a deny -P udp -S 0.0.0.0/0 -D 0.0.0.0/0 67

или

ipchains -A input -p udp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 67 ipchains -A input -p udp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 67 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 67




DNS чрезвычайно важный сервис для IP сетей. Однако, данные на сервере DNS могут оказаться ложными. Сейчас все идет к цифровой подписи таких данных, что будет подтверждать их подлинность (метод базируется на цифровой подписи RSA).




Simple Mail Transfer Protocol (SMTP) одна из наиболее важных услуг Internet. Firewalling SMTP простой: SMTP работает на порте 25, протокол tcp:

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 25 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 25 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 25

или

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 25 ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 25 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 25




Надежная операционная система нуждается в надежной файловой системе. В случае Linux это файловая система ext2 (EXTended, version 2). Фактически, она аналогична файловым системам всех UNIX-подобных ОС. Она поддерживает права доступа (read, write, execute, sticky bit, suid, sgid и так далее), принадлежность (user, group, other) и другие стандартные функции. Некоторые из недостатков: никакого журналирования и никаких списков контроля доступа (Access Control Lists) здесь нет. По слухам, они появятся в ext3. Из плюсов надо отметить, что Linux имеет превосходный программный RAID, поддерживая уровни 0, 1 и 5 очень хорошо (RAID не связан с защитой, но связан со стабильностью). Имеется превосходный HOWTO по файловым системам в Linux на

http://www.penguin.cz/~mhi/fs/Filesystems-HOWTO/Filesystems-HOWTO.html.

Основные утилиты для работы с файлами: ?ls?, ?chown?, ?chmod? и ?find?. Впрочем, есть еще много других, в том числе ln (создает связи), stat (выдает сведения о файле). Для создания и управления файловыми системами есть ?fdisk? (старый добрый fdisk), ?mkfs? (MaKe FileSystem, форматирует разделы) и ?fsck? (FileSystem ChecK, исправляет ошибки на дисках). Linux может быть легко поставлена под угрозу, если получен доступ к некоторым файлам, например зашифрованным паролям, чтобы использовать против них подбор паролей по словарю. Это общая цель нападающих, приходящих по сети (плохо написанные CGI-скрипты, кажется, любимый способ). Еще хуже, если пользователь получит доступ на запись к системным файлам. Тут можно ждать чего угодно: от захвата управления до случайного стирания половины системы. Одной из дыр является "tmp races", когда setuid-программа (работает с правами root) создает временный файл, обычно в /tmp, и не проверяет существование ссылок. Хакер может создать жесткую ссылку на данный файл, и когда исходный файл будет стерт, добраться по ссылке до нужного файла, например, файла паролей (замечание переводчика: придумано здорово, надо будет попробовать). Как предотвратить такие нападения?




Имеется много способов совместно использовать ресурсы в локальной сети (LAN). Основонй интерес редставляет то, что клиенты работают под чем угодно: (UNIX, Windows, MAC, Novell...). Вы также должны принять во внимание тип файлов, которые Вы используете совместно: они просто файлы данных, документы, исходные тексты, файлы для сетевой загрузки или еще что-то?




Firewalling представляет собой фильтрацию сетевого трафика между Вашей сетью и другими сетями (Internet, какая-то другая LAN), который может быть запрещен (в случае Internet) или разрешен (другой этаж Вашего здания). Подобно межэтажным перегородкам в больших домах, сетевой firewall может защитить от атаки при нарушении безопасности в одном сегменте сети. Хорошей FAQ по Internet firewall есть на

http://www.interhack.net/pubs/fwfaq.




FTP второй по использованию в Internet протокол (после HTTP), предназначен для обмена файлами. FTP умеет только передавать файлы, зато он умеет передавать их хорошо. Протокол непосредственно опасен, пароли, данные и все прочее передаются открытым текстом, и можно легко использовать сниффинг, однако большинство ftp используют анонимный доступ, так что это не проблема. Одна из основных проблем, с которыми обычно сталкиваются на ftp-сайтах, неподходящие разрешения каталогов, которые позволяют людям использовать место, чтобы размещать их собственные данные (обычно защищенный авторским правом материал, и т.д). Снова, как с telnet, Вы должны использовать отдельный логин для управления ftp, так как пароль будет передан в открытом виде.

Проблемы с ftp обычно включают:

¬ Передачу username и пароля открытым текстом.

¬ Передачу команд открытым текстом.

¬ Атаку на вычисление пароля.

¬ Неправильные настройки сервера.

¬ Несколько дырок для атаки Denial of Service все еще есть в некоторых серверах ftp.

¬ Старые версии WU-FTPD и его производных дают возможность захвата root-достуа.

Безопасность FTP низка, так что используя firewall и TCP_WRAPPERS Вы сможете ограничивать доступ, исходя из IP-адреса/имени хоста. Кроме того, большинство серверов ftp работает chroot'ed по умолчанию для любого анонимного доступа, или гостевого логина. Можно использовать chroot для всех пользователей ftp на их домашние каталоги, есть серверы, которые поддерживают протоколы шифрования данных (например, SSL), однако, при их использовании понадобится аналогичная поддержка со стороны клиентов, а это не всегда удобно. Проследите также, чтобы на Вашем сервере ftp не было публичных каталогов, доступных для чтения и записи одновременно, иначе пользователи рано или поздно начнут их активное использование для распространения своих данных (обычно warez или porn).

Пример firewall-правил:

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 21 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 21 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 21

или

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 21 ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 21 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 21

Пример использования TCP_WRAPPERS в /etc/hosts.allow:

in.ftpd: 10.0.0.0/255.0.0.0, some.trusted.host

в /etc/hosts.deny:

in.ftpd: 0.0.0.0/0.0.0.0

Имеются несколько шифрованных вариантов ftp как упомянуто выше, SSLeay FTPD и утилиты третьих фирм. Так как большинство ftp-логинов не используется как логины администраторов (пароли в открытом виде, я Вас предупредил) и выполняется chroot, опасность минимальна.




За последние несколько лет число инструментальных средств защиты для Windows и UNIX резко возросло. Интересен факт, что большинство из них является свободно доступными в Internet. Я буду описывать только свободные инструментальные средства, так как большинство коммерческих инструментальных средств смехотворно дорого, не имеют открытых исходников и во многих случаях содержат сильные дефекты защиты (подобно сохранению паролей в чистом тексте после установки). Любой серьезный cracker/hacker будет иметь эти инструментальные средства в их распоряжении, так, почему не должен Вы?

Имеются несколько основных категорий инструментальных средств, одни просматривают хосты с одного из них, другие сообщают о том, какая OS используется (технология TCP-IP fingerprinting), перечисляют сервисы, которые являются доступными и так далее, наиболее сложными являются средства для вторжения, которые фактически пытаются вторгнуться в систему и формируют отчет о найденных дырках. К тому же, есть эксплойты (exploits).

Имеются также много свободных инструментальных средств и методы, которые Вы можете использовать, чтобы провести проверку. Утилиты вроде nmap, nessus, crack и им подобных могут быстро использоваться, чтобы просмотреть Вашу сеть и ее хосты, быстро находя любые очевидные проблемы.




IP Security (IPSec) шифрование сетевого трафика. Вы не можете шифровать информацию заголовка или завершитель (то есть, IP адрес/порт, куда и откуда идет пакет, CRC и прочее), но Вы можете шифровать полезные данные. Это позволяет Вам обезопасить протоколы типа POP/WWW без того, чтобы менять их, так как шифрование происходит на уровне IP. Это также позволяет Вам надежно подключать клиентов к LAN по опасным сетям (подобно Internet). В настоящее время IPSec для Linux находится на тестировании, однако имелось несколько устойчивых выпусков, и я успешно развернул под Linux IPSEC-сервер. IPSEC стандарт, и часть IPV6 протокола, Вы можете приобретать IPSEC программное обеспечение для Windows 95/98/NT и Solaris, Подробности по работе с firewall или блоками NAT (например, Linux с IP Masquerading) см. в разделе о firewall.




Протокол Lightweight directory access, кажется, является будущим хранения информации пользователя (пароли, местные каталоги, номера телефона, и т.д.). Много программ (ADS, NDS, etc.) поддерживают интерфесы LDAP, делая важной для Linux поддержку LDAP, поскольку она будет требоваться, чтобы связаться с будущими сетями предприятий.




Одной из главных частей любой UNIX-системы является протоколирование (logging). В Linux оно обеспечивается двумя основными программами: sysklogd и klogd, первая предоставляет сервис протоколирования программам и приложениям, вторая делает то же самое в отношении ядра Linux. Klogd фактически посылает большинство сообщений syslogd, но при необходимости выдает сообщения и на консоль (например, kernel panics). Sysklogd фактически решает задачу обработки большинства сообщений и посылки их в соответствующий файл или на устройству, это настраивается в /etc/syslog.conf. По умолчанию большинство файлов протокола лежат в /var/log, и вообще говоря, программы, которые ведут свой протокол (большинство httpd-серверов обрабатывают события сами), имеют файл с именем вида /var/log/program-name, который позволяет Вам централизовать журналы и делает работу с ними проще, что позволяет поместить их в отдельный раздел (некоторые нападения могут заполнять файлы регистрации очень быстро, а полный корневой раздел приводит к проблемам). Дополнительно имеются программы, которые обрабатывают их собственные протоколы полностью сами, в этом плане интересна bash command shell. По умолчанию bash хранит файл хронологии команд в ~username/.bash_history. Apache обрабатывает события сам с перестраиваемой конфигурацией в httpd.conf. Sendmail обрабатывает требования регистрации через syslogd но также имеет и опцию (параметр -X в командной строке) регистрации всех SMTP-транзакций прямо в файл. Это нецелесообразно, поскольку файл будет становиться огромным за короткий промежуток времени, но полезно для отладки.




Сетевая безопасность довольно широкая тема, так что я разбил ее на пару разделов. В этом я описываю нижние 4 уровня (transport, network, datalink, physical) 7-уровневой модели OSI protocol stack, верхние 3 (application, presentation, session) будут рассмотрены в разделах по сетевым сервисам. Я такэе рассмотрю некоторые базисные файлы конфигурации сети, так как их объяснение всегда полезно.




NNTP (network news transfer protocol) полезен для совместного использования больших количеств информации множеством серверов. Он полезен для организации дискуссий и форумов по разным проблемам (например, криптографии).




SNMP (Simple Network Management Protocol) был разработан, чтобы позволить гетерогенным системам и оборудованию общаться друг с другом, обмениваться данными отчетоа и менять параметры настройки по сети TCP-IP. Например, SNMP-устройство (типа маршрутизатора от Cisco) может быть проверено/настроено от пользователя SNMP, и Вы можете легко писать сценарии для автоматизации разных процессов. К сожалению SNMP не имеет никакой защиты. SNMP v1, первоначально предложенный в RFC 1157 (May 1990) и раздел 8 (Security Considerations) сформулированы просто: "Вопросы безопасности здесь пока не обсуждаются.". В 1992/1993 вышел SNMP v2, однако рассмотрение защиты было гораздо позже, но защита оказалась легко снимаемой. Таким образом, мы имеем дело сегодня с SNMP v2 и никакой защитой.

В настоящее время единственный способ защищать SNMP-устройства состоит из установки имени семейства во что-то неожиданное (но очень просто найти имя, используя сниффинг), и firewall/filter SNMP так, чтобы только хосты, которые должны разговаривать с друг другом, могли использовать такую связь. Если грамотно защитить и использовать SNMP, администрирование сети станет проще.

По умолчанию имена семейств в SNMP "public" (так обстоит дело в Linux, NT и других системах), смените его на что-то свое, неожиданное. Зная имя семейства можно выполнить "snmpwalk" и захватить контроль над Вашей сеткой. SNMP работает через UDP на портах 161 и 162; блокируйте их как только можно.

Дополнительное использование IPSEC (или другого VPN-программного обеспечения) может значительно уменьшать риск сниффинга. RFC для SNMP v3 существенно усиливает защиту (особенно RFC 2274, январь 1998).

Не имеется никаких специфических проблем с cu-snmpd на se, кроме общих SNMP проблем, которые я описал. Инструментальные средства и утилиты cu-snmp поддерживают только SNMP v1 и SNMP v2, так что будьте внимательны при использовании их в открытой сети.

ipfwadm -I -a accept -P udp -S 10.0.0.0/8 -D 0.0.0.0/0 161:162 ipfwadm -I -a accept -P udp -S some.trusted.host -D 0.0.0.0/0 161:162 ipfwadm -I -a deny -P udp -S 0.0.0.0/0 -D 0.0.0.0/0 161:162

или

ipchains -A input -p udp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 161:162 ipchains -A input -p udp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 161:162 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 161:162

Back

Written by Kurt Seifried




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




Linux нельзя заразить вирусом путями, аналогичными принятым в Dos/Windows или на Mac. В UNIX контроль безопасности является фундаментальной частью системы. Например, пользователи не могут записывать любую точку памяти, как в Dos/Windows и на Mac.

Если честно, имеются вирусы для UNIX. Однако единственный для Linux, который я видел, был назван "bliss", имел опцию (" --uninstall-please") и должен был быть выполнен как root, чтобы быть эффективным. В общем, если Вы не знаете, что программа делает, не выполняйте ее как root! Черви намного более распространены в UNIX-мире, первым был Morris Internet worm, который использовал дыру в sendmail. Сейчас черви в Linux используют дыры в imapd, sendmail, WU-FTPD и прочих демонах. Самое простое: обновляйтесь регулярно. Этого вполне достаточно, чтобы вывести их из строя. Так что необходимости в антивирусах под Linux нет.

Трояны также весьма популярны. Недавно ftp.win.tue.nl был разрушен и пакет TCP_WRAPPERS (вместе с некоторыми другими) был подправлен для отсылки паролей на анониный доступ. Это было обнаружено, когда кто-то проверил PGP-сигнатуру пакета. Мораль истории? Используйте программное обеспечение из доверенных мест, и проверяйте PGP-сигнатуру.




WWW-трафик на сегодня один из главных компонентов использования Internet. Есть несколько популярных WWW-серверов для Linux, самый популярный, конечно, Apache (свыше 50% пользователей). Есть несколько новых WWW-серверов тоже с поддержкой SSL для безопасных соединений (для e-commerce). Этот раздел очень ориентирован на Apache, но поскольку он является сервером по умолчанию почти для всех дистрибутивов Linux (и *BSD), это имеет смысл. Я также написал о версии 1.3.9 сервера Apache, которая больше не использует access.conf или srm.conf, но взамен применяет httpd.conf.

HTTP работает на порте 80, протокол tcp, и если он предназначен только для внутреннего использования (Intranet или www-механизмы контроля firewall, например) его нужно закрыть с помощью firewall.

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 80 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 80 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 80

или в ipchains:

ipchains -A input -p all -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 80 ipchains -A input -p all -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 80 ipchains -A input -p all -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 80

HTTPS работает на порте 443, протокол tcp, и если он предназначен только для внутреннего использования (Intranet или www-механизмы контроля firewall, например) его нужно закрыть с помощью firewall.

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 443 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 443 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 443

или в ipchains:

ipchains -A input -p all -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 443 ipchains -A input -p all -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 443 ipchains -A input -p all -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 443




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




X Window System сетевое средство для совместного использования графических данных, или более конкретно для экспорта дисплея программы на удаленный (или локальный) хост. Используя это Вы можете выполнять мощный 3d rendering пакет на SGI origin 2000 и отображать его на 486. По существу это аналог тех 'thin client' (тощих клиентов) о которых в последнее время столько разговоров. Это средство было создано в MIT, когда защита была не столь важна как сейчас. Защита исков слабая: копии экрана и данные о нажатиях клавиш на клавиатуре и перемещениях мыши можно легко перехватить, что может привести к крупным проблемам, например при входе на другую систему через xterm.

X в большинстве случаев использует для первого сеанса порт 6000, а затем для каждого нового сеанса использует порт на единичку выше. Если Вы не собираетесь работать с иксами на удаленных системах (хотя это иногда удобно), поставьте firewall на порт 6000.

ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 6000:6100 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 6000:6100 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 6000:6100

или

ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 6000:6100 ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 6000:6100 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 6000:6100



Содержание раздела