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

         

Мониторинг файловой системы


Допустим, Вы воздвигли вокруг своей системы настоящий бастион. Да, в ней стало почти невозможно работать, но зато она стала защищенной... Теперь главное не успокаиваться на достигнутом. Проверяйте защиту, ищите дыры, затывайте их. Попробуйте сами взломать защиту такой ход покажет, что именно надо укрепить. Если не получилось радуйтесь: система надежна. Но не радуйтесь долго: если будете купаться в лучах славы, расслабитесь, а мы... скажем так, специалисты по компьютерной безопасности, только того и ждем... Если дыра нашлась, она представляет собой хороший случай показать начальству, что защита системы, это постоянный поединок, обезопасить систему раз и навсегда невозможно. Прислушивайтесь к замечаниями пользователей, они часто сообщат Вам такое, что и в голову бы Вам не пришло: их много, а Вы один. Создайте сигнатуры файлов, которые нельзя подделать, и регулярно проверяйте целостность файлов системы.



MRT


MRT (Multi-threaded Routing Toolkit) routing daemon и набор тестовых утилит с поддержкой IPv4 и IPv6. Скачать можно с http://www.mrtd.net.



Muddleftpd


Muddleftpd маленький сервер ftp. Доступен на

http://www.computing.edu.au/~kuiperba/muddleftpd.



Nannie


nannie относительно просто инструмент, который полагается на stat, чтобы сформировать список файлов (размер, timestamps и прочее). Он создает список, содержащий имя файла, inode, информацию о его связях и так далее. Загрузить пакет можно с

ftp://tools.tradeservices.com/pub/nannie.



Настройка IPSec


Теперь Вы должны сконфигурировать ipsec. Параметры настройки обычно задаются в файлах /etc/ipsec.conf и /etc/ipsec.secrets, Вы можете использовать директиву include, чтобы разорвать файлы.





Настройка сети для IPSec


Надо разрешить TCP-IP forwarding на шлюзовом сервере, в Red Hat Linux это достигается заменой в файле /etc/sysconfig/network строки:

FORWARD_IPV4="false?

на строку:

FORWARD_IPV4="yes"

Или Вы можете разрешить это через файловую систему /proc:

cat 1 > /proc/sys/net/ipv4/ip_forward

Так как большинство людей имеет значение по умолчанию, запрещающее forwarding пакетов, Вам придется передавать пакеты из удаленной сети/машины в Ваши сеть/машину. Кроме того, все masquerading-правила для внутренних сетей, которые также используют IPSEC, должны быть заданы после правил, разрешающих IPSEC-связанный трафик, иначе пакеты будут маскироваться вместо использования IPSec.



NcFTPD


NcFTPD очень мощный ftp-сервер, но бесплатен только для личного или учебного пользования. Доступен на

http://www.ncftpd.com/ncftpd.



Nessus


Nessus относительно нов, но быстро движется к позиции самого лучшего пакета такого назначения. Он имеет архитектуру client/server, сервер пока работает под Linux, FreeBSD, NetBSD и Solaris, клиенты есть для Linux и Windows, есть также Java-клиент. Связь между клиентом и сервером зашифрована. Nessus поддерживает просмотр портов и нападение, основанное на адресах IP или именах. Может также прерывать сеть DNS-информация и нападать на связанные хосты в сети. Nessus работает относительно медленно в режиме нападения, но имеет более 200 вариантов атаки и язык для написания plug-in, так что можно писать свои сценарии атаки. Nessus доступен на http://www.nessus.org.



NETFILTER


NETFILTER следующее поколение firewallа пакетов для Linux. Поддерживает много полезных функций, понимает IPSec, позволяет гибко управлять пакетами. HOWTO доступно на

http://netfilter.kernelnotes.org.



NetMAX


NetMAX делает несколько программ, firewall, webserver, file server и "Linux Professional" основанный на Linux (а также еще одну линейку на FreeBSD). Они прислали мне копию firewall, так что ждите информацию, как только я с ней разберусь. Коробка выгялдит вполне прилично.

http://www.netmax.com/

Back

Written by Kurt Seifried



Netscape Enterprise


Пока на тестировании (но ставится и работает нормально) для Linux, доступен на

http://www.iplanet.com/downloads/iwsonlinux.html.



Netstat


netstat сообщает нам практически все связанное с сетью, что Вы можете воображать. Это особенно хорошо при распечатке активных подключений и сокетов. Используя netstat, мы можем узнать какие порты на каких интерфейсах являются активными. Ниже приведен типичной вывод netstat ?vat.

Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 24.108.11.200:80 205.253.183.122:3661 ESTABLISHED tcp 0 0 0.0.0.0:1036 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN tcp 0 0 10.0.0.10:53 0.0.0.0:* LISTEN tcp 0 0 28.208.55.254:53 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:635 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN udp 0 0 127.0.0.1:1031 0.0.0.0:* udp 0 0 0.0.0.0:1029 0.0.0.0:* udp 0 0 0.0.0.0:800 0.0.0.0:* udp 0 0 0.0.0.0:1028 0.0.0.0:* udp 0 0 10.0.0.10:53 0.0.0.0:* udp 0 0 28.208.55.254:53 0.0.0.0:* udp 0 0 127.0.0.1:53 0.0.0.0:* udp 0 0 10.1.0.1:138 0.0.0.0:* udp 0 0 10.1.0.1:137 0.0.0.0:* udp 0 0 10.0.0.10:138 0.0.0.0:* udp 0 0 10.0.0.10:137 0.0.0.0:* udp 0 0 0.0.0.0:138 0.0.0.0:* udp 0 0 0.0.0.0:137 0.0.0.0:* udp 0 0 0.0.0.0:2049 0.0.0.0:* udp 0 0 0.0.0.0:635 0.0.0.0:* udp 0 0 0.0.0.0:514 0.0.0.0:* udp 0 0 0.0.0.0:111 0.0.0.0:* raw 0 0 0.0.0.0:1 0.0.0.0:* raw 0 0 0.0.0.0:6 0.0.0.0:*

Числовой вывод, по-моеему, читать легче (как только Вы запомните /etc/services). Интересные поля для нас: первое поле, тип сервиса, четвертое поле, которое является адресом IP-интерфейса и порта, внешний адрес (если не 0.0.0.0.*, кто-то активно общается с этим портом) и состояние порта. Первая строка: удаленный пользователь, работающий с web-сервером на этой машине (порт 80). Дальше виден www-серевер, слушающий на 0.0.0.0:80, что значит все интерфейсы, порт 80, затем сервер DNS на всех 3 интерфейсах, сервер samba (139), сервер почты (25), NFS-сервер (2049) и так далее. Обратите внимание на ftp-сервер (21) перечисленный, даже при том, что запускается из inetd и не используется в настоящее время (то есть, никто не работает с ftp сейчас). Он перечислен в выводе netstat. Это делает netstat особенно полезным для выяснения, что является активным на машине, делая опись активного и неактивного сетевого программного обеспечения на сервере намного проще.



Next generation syslog


Другая альтернатива: ?syslog-ng? (Next Generation Syslog), который кажется намного больее настраиваемым чем syslog или secure-syslog, он поддерживает цифровые сигнатуры, чтобы предотвратить вмешательство в файлы регистрации, и может фильтровать данные, исходя из содержания сообщения, а не только того, откуда это исходит или приоритета (что является очень полезным для сокращения объема). Syslog-ng доступен на

http://www.balabit.hu/products/syslog-ng.



NFR


NFR (Network Flight Recorder) намного больше, чем перехватчик пакетов. Он фактически регистрирует данные, и в реальном времени обнаруживает нападения, сканирования и тому подобные мерзости. Это очень мощный инструмент и требует значительного времени и ресурсов системы, но того стоит. NFR доступен на http://www.nfr.com.



NFS


NFS наиболее универсальный метод разделения файлов, вообще поддерживаемый UNIX. Почти каждая UNIX OS (Linux, *BSD, Sun...) поддерживает NFS. Есть коммерческие клиенты и серверы NFS для Windows. NFS идеален для разделения каталогов пользователей и других файловых систем реального времени.



NIS / NIS+


NIS и NIS+ (формально известны как ?yellow pages?) сокращение от Network Information Service. По существу NIS и NIS+ обеспечивают средства, чтобы распределить файлы паролей, файл group, и другие файлы конфигурации по машинам в сети, обеспечивая синхронизацию паролей (среди других услуг). NIS+ по существу NIS с несколькими расширениями (обычно связанными с защитой).

Чтобы использовать NIS, надо установить мастер-сервер NIS, который будет хранить записи и позволять их менять. Он может распределять записи на вторичные NIS-машины, которые содержат доступную только для чтения копию записей (но они могут быть переведены в режим чтение-запись, если что-то пошло не так). Клиентура NIS-сети запрашивает части информации и копирует их непосредственно в свои файлы конфигурации (типа /etc/passwd), таким образом делая их доступными в местном масштабе. Используя NIS Вы можете обеспечивать несколько тысяч автоматизированных рабочих мест и серверов с идентичными наборами usernames, информации о пользователях, паролей и т.п. при уменьшении кошмаров администрирования.

Однако это часть проблемы: в совместном использовании этой информации Вы делаете ее доступной для нападавших. NIS+ пытается ее решить, но NIS+ чрезвычайный кошмар при установке. NIS+ использует безопасный RPC, который может использовать одиночное DES шифрование (слабовато, конечно, но все же лучше, чем ничего). Полагаться на него особо не стоит.

Альтернативная стратегия должна использовать некоторый сорт VPN (подобно FreeS/WAN, который, кажется, решает много проблем) и шифровать данные прежде, чем они попадут в сеть. Имеется NIS / NIS+ HOWTO:

http://metalab.unc.edu/LDP/HOWTO/NIS-HOWTO.html, и O?Reilly имеет превосходную книгу по предмету,

"Managing NFS and NIS". NIS / NIS+ выполняется над RPC, который использует порт 111, tcp и udp. Это определенно должно быть ограничено пределами Вашей сети, но полностью защитить NIS / NIS+, видимо, нельзя. Так как NIS и NIS+ RPC-основанные услуги, они имеют тенденцию использовать высокие номера портов (то есть, выше 1024) несколько произвольным способом, делая firewalling этого довольно трудным. Самые лучшие решения состоят в том, чтобы поместить сервер(а) NIS во внутреннюю сеть, которая блокирована полностью. Имеется также превосходное руководство по безопасности NIS на

http://www.eng.auburn.edu/users/doug/nis.html.

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

или

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



Nmap


Nmap более новый и намного более функциональный инструмент сканирования хостов. Использует продвинутые методы типа TCP-IP fingerprinting, в котором тип ОС удаленного хоста определяется путем анализа возвращаемых пакетов TCP-IP на предмет наличия в них особенностей реализации TCP-IP стека конкретной системы. Nmap также поддерживает разные методы сканирования от обычного TCP-сканирования (просто пробует открыть подключение как обычно) connection as normal) до невидимого сканирования и полуоткрытого SYN сканирования (разваливает ненадежные стеки TCP-IP). Это, возможно, одна из самых лучших программ просмотра портов. Nmap доступен на

http://www.insecure.org/nmap/index.html. Есть интересная статья на

http://raven.genome.washington.edu/security/nmap.txt по nmap и использованию некоторых его хитрых возможностей.



Носители для резервных копий


Есть много типов носителей, но среди них выделились наиболее популярные:

Носитель Плюсы Минусы
Hard Drive Быстро, довольно дешево ($20-$30 USD на gig) и надежно. Емкость ограничена, кончается в самый неподходящий момент. Если уж накроется, то всерьез и вместе со всей информацией. Неплохим решением является RAID, но большие диски все дороговаты.
CDROM Не восприимчив к EMP и широко распространен. Диски также довольно крепкие и дешевые ($2 USD на 650 МБ или около того) CDROM имеет конечный срок годности в 5-15 лет. С записываемыми дисками иной раз бывают проблемы: они читаются далеко не на всех приводах. Храните их далеко от солнечного света и удостоверьтесь, что Вы имеете дисковод, который будет их читать.
Лента Это надежно, Вы можете покупать БОЛЬШИЕ ленты. Магнитные средства, конечная продолжительность жизни и некоторые ленты могут быть легко повреждены (Вы получаете то, что Вы оплачиваете...), также удостоверьтесь, что ленты могут читаться на других стриммерах.
Дискеты Есть везде и доступны на какой угодно аппаратуре. Маловаты, хотя для файлов конфигурации сойдут.
Zip Disks Емкость в 100 мегабайт вполне достаточна для сменного носителя на домашней системе или рабочей станции. Не каждый имеет дисковод zip, и они магнитные средства. Модели на IDE и SCSI вполне приличны, но вот на паралелльном порте плачевно медленно. Не упустите щелчок смерти.
Jazz Drives 1 или 2 gig на сменном диске, мой SCSI пишет соскоростью около 5 meg/sec. Они умирают. Я нахожусь на моем третьем диске. Жесткие диски также имеют привычку вылетать если используются тяжело. Они не дешевые.
SyQuest 1.6 gigs, диск в корпусе более надежен. Дела у компании идут плохо, так что за будущее таких дисков никто не ручается.
LS 120 120 Megs и довольно дешево. Медленно. 120 megs на floppy-контроллере, какая уж тут скорость...
Printer Очень длинный срок годности. Требует человека как читающего устройства. Удобный для показывающих консультантов и как материал ссылки. Не может быть легко изменен. Вы хотите ручками набирать 4000 парольных записей? Я нет. Правда, есть OCR...

Back

Written by Kurt Seifried



Novell


Неизвестно, есть ли какие-то проблемы для программного обеспечения Novell.



NSBD


NSBD (not-so-bad-distribution) метод автоматического безопасного распространения и обновления пакетов по сети. Скачать можно с

http://www.bell-labs.com/project/nsbd.



NSH


NSH коммерческий пакет со встроенной поддержкой шифрования. Не знаю, насколько прочное шифрование, поскольку открытых исходников тут нет. Легкость использования высока, Вы cd //computername и начинается регистрация на заданном компьютере, моджно легко упраялть файлами, запустить ps и получить список процессов на компьютере и многое другое. NSH идеален для управления несколькими подобными системами благодаря встроенному модулю Perl для изготовления скриптов. К тому же, NSH доступен для многих платформ (Linux, BSD, Irix), а для Red Hat есть RPM-пакет. NSH доступен на http://www.networkshell.com, там есть 30-дневная версия.



NSS LDAP Module


NSS LDAP Module позволяет Вам сделать авторизацию пользователя по LDAP. Скачать можно с

http://www.padl.com/nss_ldap.html.



Nsyslogd


Nsyslogd поддерживает tcp и SSL для протоколирования удаленных систем. Работает на разных UNIX-платформах и доступен на

http://coombs.anu.edu.au/~avalon/nsyslog.html.



Ntpdate


ntpdate входит во многие дистрибутивы.

Back

Written by Kurt Seifried



Nullmailer


nullmailer посылает почту интеллектуальным хостам (relays), так что локальная машина не должна выполнять программное обеспечение сервера. Доступен на

http://em.ca/~bruceg/nullmailer.



Обнаружение атаки


Базовые линии

Мониторинг файловой системы

Tripwire

AIDE

L5

Gog&Magog 

Sentinel

SuSEauditdisk

ViperDB 

Sxid

nannie

confcollect

Pikt

Backups

Сетевой мониторинг и выявление атак

DTK

Psionic PortSentry

Psionic HostSentry

Firewalls

TCP-WRAPPERS

Klaxon

NFR

Имеем дело с атакой

Перехватчики пакетов

tcpdump

sniffit

Ethereal

Snort

SPY

packetspy

Другие перехватчики

Выявление перехватчиков пакетов

AntiSniff



Обновление и компиляция ядра


Обновление ядра включает получение нового ядра и модулей, правку /etc/lilo.conf, запуск LILO для записи нового MBR. Ядро обычно помещается в /boot, а модули в /lib/modules/kernel.version.number.

Получить новое ядро можно двумя способами: скачать соответствующий ядерный пакет и установить его, или скачать и откомпилировать исходный код ядра с ftp://ftp.kernel.org (пожалуйста, используйте зеркальный сайт!).



Обновления


Обновления для TurboLinux 3.6 (Miami) доступны на

ftp://ftp.turbolinux.com/pub/TurboLinux/turbolinux-updates/3.6.

Back

Written by Kurt Seifried



Общие методы совместного использования файлов


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



Обзор


Имеется ряд инструментальных средств, чтобы упростить управление системой. От локальных инструментальных средств подобных 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



Ограничение пользователей


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



OpenCA


Проект создания всестороннего набора инструментальных средств для сертификации, совместимой с сертификатами X.509. Доступен по адресу: http://www.openca.org/.



OpenLDAP


OpenLDAP полностью opensource (но не GPL) пакет, который предоставляет LDAP-сервер, replication-сервер и утилиты. Его можно получить с http://www.openldap.org.



OpenSSH


OpenSSH проект, начатый OpenBSD project для создания полнофункциональной версии SSH клиент и сервер, лицензируемых свободно (то есть, BSD и GPL). Они очистили код, устранили кучу ошибок и сделали лучшую поддержку PAM, чем в "официальный" SSH клиенте и сервере. Этот проект собирается заменить традиционный SSH полностью. Доступен на

http://www.openssh.com. Я лично использую его и никаких проблем нет.



Основано на Linux Administration's Security Guide


By Kurt Seifried (

seifried@seifried.org, encryption keys here), LASG распространяется по лицензии OpenContent

(http://www.opencontent.org).

Оригинал LASG доступен на

http://www.securityportal.com/lasg

Первые шаги: основные концепции

Установка Linux: как поставить linux безопасно

Системная безопасность: физическая и защита загрузки системы

Аутенфикация: PAM, smartcards, passwords

Файлы и файловые системы: права доступа, системные файлы

Шифрование: файловые системы и файлы

Сетевая безопасность: PPP, TCP-IP и прочее

Сетевые сервисы: E-mail, FTP, WWW, SSH и многие другие

Firewalling: IPFWADM, IPCHAINS, IPFW, Phoenix, Sinus

IPSec: установка IP Security (рекомендуется для VPN)

VPN: альтернатива IPSec

Утилиты алминистрирования: см. shell-серверы для удаленного доступа

Контроль и ограничение пользователей: ulimit, ttysnoop, quotas и другое

Основные приемы защиты: chroot, non root user, subDomain и прочее

Протоколирование системы и пользователей: syslog

Обнаружение атак: audits, logging и baselines

Утилиты сканирования системы: инструменты для попыток атак на систему. Лучше найти дырки самому...

Программное обеспечение: обновление, методы защиты, безопасное программирование

Вирусы: антивирусные сканеры для Linux (тонкие windows-клиенты)

Информация о дистрибутивах: специфика, как связаться с разработчиком и тому подобное

Резервирование: резервное копирование данных

Ядро Linux: обновление, безопасность и патчи

Checklists: что надо сделать

Приложения

Contributors

Written by Kurt Seifried



Основные концепции.


Безопасность системы зависит от множества аспектов. Насколько безопасна должна быть система? Подключена ли машина к сети? Предоставляется ли юзверям доступ к командной строке (telnet/SSH)? Рабочая станция это или сервер? Последнее имеет принципиальное значение. Хотя сейчас граница между ОС сервера и рабочей станции практически отсутствует, исторически сложилось, что это очень разные звери. На сервере установлено гораздо больше сетевых пакетов, и их настройки предположительно содержат гораздо больше дыр, чем у рабочей станции. Некоторые общие правила, которые сохранят немало сил и времени:

1. Держите пользователей подальше от сервера. Без крайней необходимости не давайте им shells-доступ.

2. Блокируйте рабочие станции когда уходите. Помните, что если на консоли остался Ваш логин, то когда Вы придете, можете обнаружить немало новшеств, которые Вас потрясут... Например, готовую к запуску команду rm -r /

3. Используйте шифрование где только возможно.

4. Регулярно проверяйте сеть на открытые порты, установленный софт и прочее в этом роде. Сравнивайте с результатами предыдущих проверок.

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

Вообще, большинство пользователей не разбирается во всяких премудростях. Все, что им нужно: работать и получать почту. Но всегда найдется кто-то, кто творчески подойдет к Вашей защите (install packet sniffers, warez ftp sites, www servers, IRC bots, и многое другое). Вот за такими юзверями нужен глаз да глаз! Часто они очень изобретательны...

1. Используйте BIOS-пароль для запрета доступа к системе (увы, многие BIOS имеют универсальный пароль...).

2. Установите загрузку ТОЛЬКО с винчестера.

3. Поставьте пароль на LILO.

4. Не давайте юзверям доступ к root, используйте sudo для ограниченного доступа, если уж очень нужно.

5. Используйте firewall для всех сервисов, которые не должны быть доступны кому угодно.

6. Регулярно проверяйте таблицы процессов, порты, установленный софт и прочее на предмет неожиданных изменений.


7. Разработайте правила пользования системой и политику безопасности.

8. Удалите все лишнее из системы.

Помните: безопасность понятние глубокое.

При правильной установке Linux на рабочей станции Вы можете почти расслабиться (на 100% ничего не безопасно!), система куда надежней своего аналога под Windows. К тому же, есть удаленное администрирование (SSH/Telnet/NSH), что существенно облегчает работу администратора.

Сервер совсем другое дело. Если обвалилась рабочая станция, ничего страшного, на то они и стоят. А вот выражение: "Выносят пострадавших: рухнул сервер", увы, имеет глубокий смысл. Старайтесь свести к миниуму число юзверей с shell-доступом (bash, pine, lynx). При грамотной установке сервер почти не требует администрирования (я имел один почтовый сервер, который на стороне клиента работал около 2 лет с затратой на его администрирование в общей сложности около 10 часов!). Все обновления надо проверять на тестовом стенде. Приведу основные моменты, которые надо помнить на сервере:

1. Ограничьте физический доступ к серверу.

2. Используйте стратегию минимизации привилегий: меньше шансов, что Вас порвут.

3. РЕЗЕРВИРУЙТЕСЬ!

4. Регулярно проверяйте сервер на изменения (порты, софт...), автоматические утилиты для этого есть в ассортименте.

5. Обновления должны быть спланированы и проверены. Пример: ядро 2.2.x не использует ipfwadm, что весьма интересно, если Вы забыли поставить ipchains).

Минимизация привилегий означает давать пользователям (и администрам тоже) минимальное количество доступа, требуемого, чтобы делать их работу. Ограничение доступа также ограничит повреждение в случае проникновения (Вы когда-либо читали post-it листочки, которые висят на многих мониторах?).

Back



Written by Kurt Seifried


Основы протоколирования


Вообще говоря, Вы не хотите позволять пользователям видеть журналы сервера, и Вы особенно не хотите, чтобы они были способными изменять или удалять их. Вообще говоря, большинство журналов принадлежит пользователю и группе root, и не имеет никаких прав для кого-то еще, так что в большинстве случаев единственный пользователь, способный изменять файлы протоколов root. Есть несколько способов дополнительной защиты, самый простой из них команда ?chattr? (CHange ATTTRibutes) для перевода log-файлов в режим append only. Файл может дополняться, но стереть его будет нельзя. Для перевода его в такой режим нужно:

chattr +a filename

Только суперпользователь имеет доступ к этой функции chattr. Если Вы устанавливаете все журналы в такой режим, помните что программы прокрутки журналов будут терпеть неудачу, поскольку они не будут способны временно удалить журнал. Добавьте к скрипту обновления журналов строку для отмены режима append only:

chattr -a filename

и добавьте строку в тот же скрипт после обработки журнала, чтобы восстановить атрибут append only. Если Вы храните журналы в системе, Вы можете также установить атрибут immutable, так что с ними что-то сделать будет гораздо сложнее. Для установки атрибута immutable просто:

chattr +i filename

Теперь файл не сможет удалить никто, кроме root.

chattr -i filename

Только пользователь root имеет доступ к атрибуту immutable.



OSSH


Я так и не смог понять толком, что это за штука, но сложилось впечатление, что это версия SSH с некоторыми расширениями (типа поддержки SecureID). Скачать можно с

ftp://ftp.nada.kth.se/pub/krypto/ossh.



Отслеживание установки софта


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



OutGuess


OutGuess прячет данные в файлах картинок, так что файлы можно передавать не привлекая к ним лишнего внимания. Скачать можно с http://www.outguess.org.

Back

Written by Kurt Seifried



Packetspy


packetspy еще один перехватчик, основанный на libpcap. Доступен на

http://www.bhconsult.com/packetspy.



Пакеты Firewall для Linux


Linux имеет свой firewall в виде ipfwadm, который представляет собой простой фильтр пакетного уровня. С ядра 2.1 он заменен на ipchains, который имеет больше функций. В ядре 2.4 ожидается еще более функциональный фильтр. Однако, это все еще базисные фильтры пакетов, и они не учитывают продвинутые свойства типа stateful проверки или некоторых типов proxying подключений. Linux поддерживает IPMASQ, расширенную форму NAT (Network Address Translation). IPMASQ позволяет машинам Вашей сети работать в Internet, но кэширует их соединения на уровне IP. Таким образом, весь внешний трафик идет через одну машину (сервер Linux IPMASQ), что защищает структуру внутренней сети от изучения. В качестве дополнительного бонуса упомянем, что клиенты во внутренней сети не требуют настройки прокси; если сервер Linux IPMASQ сконфигурирован правильно, и клиенты используют его как шлюз по умолчанию, то все должно работать нормально.

ipchains и ipfwadm имеют следующие базовые возможности:

блокировка/разрешение передачи данных на основе IP/порта/интерфейса/источника/получателя

маскировка соединений на основе IP/порта/интерфейса/источника/получателя

Кроме того, ipchains дополнительно поддерживает:

переадресацию портов

создание цепочек, для более запутанных правил и условий

quality of service (QOS) маршрутизация, полезная на низкоскоростных подключениях

указание IP/порта/интерфейса как обратной спецификации (используя !)

Firewall-HOWTO и "man <command>" (ipchains или ipfwadm) хорошо описывают механизмы построения и работы правил, но там нет стратегии безопасности с использованием firewal. Ваш первый выбор: политика когда по умолчанию всем все запрещено, а разрешено только то, что нужно и только тем, кому можно, или прямо противоположный подход, когда всем открыт доступ ко всем Вашим сервисам.

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

Рассмотрим пример. У Вас есть защищенный firewallом сервер с запущенным Apache, Вы поставили WU-FTPD, чтобы пользователи могли выкладывать свои странички по FTP, и забыли сменить правила для firewall. Если используется политика полного разрешения, кто угодно из Internet сможет обратиться к Вашему ftp-серверу, и если у Вас старая версия, Вы быстро испытаете острые ощущения! А вот при политике запрета всего по умолчанию, до сервера не сможет добраться никто, в том числе и Ваши пользователи. Не беда, они Вам быстро напомнят про настройку.

Я решил не описывать здесь всех правил firewall для каждого сервиса, а давать их в разделах по конкретным сервисам.



PAM


"Pluggable Authentication Modules для Linux набор общедоступных библиотек, которые дают возможность локальному администратору системы выбрать, как прикладные программы опознают пользователей. Но что это фактически означает? Например; берите программу ?login?, когда пользователь соединяется с tty (через последовательный порт или по сети) программа отвечает на обращение (getty для последовательных линий, telnet или SSH для сетевых подключений) и запускает программу ?login?. Она обычно запрашивает username, сопровождаемый паролем, который сравнивается с данными файла /etc/passwd. Это прекрасно, пока Вы не поставите новую систему удостоверения и захотите использовать это. Вы будете должны перетранслировать login (и любые другие приложения, которые будут делать удостоверение через новый метод) так, чтобы они поддерживали новую систему. Здесь возможны ошибки и досадные неожиданности.

PAM представляет промежуточный уровень между прикладной программой и фактическим опознавательным механизмом. Как только программа скомпилирована с поддержкой PAM, любые опознавательные методы, поддерживаемы PAM, будут пригодны для использования программой. В дополнение к этому PAM может обрабатывать данные сеанса, что другие механизмы делают не очень хорошо. Например, используя PAM Вы можете легко отвергать доступ систему нормальных пользователей между 6pm и 6am. По умолчанию Red Hat и новые версии Debian поддерживают PAM (см. ниже таблицу PAM?ified-систем). Таким образом на системе с PAM все, что нужно для затенения паролей: преобразовать файлы паролей и групп и добавить несколько строк в файлы настройки PAM. По существу, PAM дает Вам много гибкости для идентификации пользователя, и будет поддерживать другие свойства в будущем типа цифровых сигнатур. Этот вид гибкости будет требоваться, если Linux должен быть операционной системой класса предприятия. Дистрибутивы без поддержки PAM можно сделать таковыми, но требуется много усилий (Вы должны перетранслировать все Ваши программы с поддержкой PAM, установить PAM и так далее). PAM обычно приходит с полной документацией, и если Вы ищете хороший краткий обзор, Вы должны посетить


http://www.sun.com/software/solaris/pam
.

Другие выгоды PAM в том, что Вы можете теперь использовать NT-домен для аутенфикации пользователей, что дает возможность связывать Linux автоматизированные рабочие места с существующей Microsoft-сетью без того, чтобы покупать NIS/NIS+ для NT и проходить кошмар ее установки.

Дистрибутив Версия Поддержка PAM
Red Hat 5.0, 5.1, 5.2, 6.0 Полная
Debian  2.1 Yes
Caldera  1.3, 2.2 Полная
TurboLinux  3.6 Полная
SuSE 6.2 Yes
Имеется большее количество дистрибутивов с поддержкой PAM, которые здесь не перечислены, пожалуйста, сообщите мне о них.


Пароли


Во всех UNIX-подобных ОС имеются несколько констант, и одна из них файл /etc/passwd, и как он работает. Для удостоверения пользователя, Вы нуждаетесь (минимально) в некотором подобии файла с соответствием UID username, GID groupname, паролями для пользователей и другой информации. Проблема с этим состоит в том, что каждый нуждается в доступе к passwd файлу! То есть, зашифрованные пароли доступны всем. Раньше было просто: зашифровал пароль и порядок. При входе введенный пароль шифровался и сравнивался с зашифрованной информацией в файле паролей. Если совпал, то это либо пользователь. либо хакер. Теперь, когда мощности систем возросли на порядки, уже можно попробовать шифровать слова, сравнивать их с зашифрованными, и таким способом за разумное время найти пароль. Называется "метод грубой силы" (brute force). Есть несколько решений такой проблемы:

Использовать сильный алгоритм шифрования, например MD5. Грабли: может развалить немало программ, если его не ждут.

Хранить пароли отдельно. Грабли: система и пользователи все еще должны к ним обращаться, так что программы без соответствующей поддержки работать не будут.

Многие OS применяют первое решение, Linux использует второе, оно получило название теневых паролей. В файле паролей Ваш пароль просто заменен на символ 'x', который сообщает, чтобы система проверила пароль по теневому файлу. Любой может читать файл passwd, но только root имеет доступ для чтения к теневому файлу (то же самое делается и с файлом group). Кажется достаточно простым, но до недавнего времени теневые пароли были кошмаром. Вы были должны перетранслировать все Ваши программы, которые проверяли пароли (login, ftpd, и много-много других. Вы даже не представляете сколько, пока не начнете). Но теперь проблема легко решаема в системах с поддержкой PAM.

Чтобы запустить теневые пароли, Вы должны сделать две вещи. Сначала надо внести правки в файлы паролей, выделив пароли в отдельный файл. Затем пойдет более сложная задача. Вы должны удостовериться, что все Ваши программы имеют поддержку теневых паролей, которая может быть КРАЙНЕ важна.

Поскольку Red Hat имеет PAM, все, что Вы должны сделать, чтобы запустить новую опознавательную схему это, добавить модуль PAM, который понимает ее и отредактировать файл конфигурации для любой программы (скажем, login), чтобы она использовала нужный модуль. Никакого перетранслирования, и минимальное количество суеты, правильно? В Red Hat 6.0 Вы можете указать опцию в течение установки, чтобы выбрать теневые пароли, или Вы можете добавить их позже через утилиты pwconv и grpconv, которые входят в пакет shadow-utils. Большинство других дистрибутивов также имеет поддержку теневых паролей. Иногда пароли даже при использовании затенения могут оказаться в файле /etc/passwd стараниями программ, не поддерживающими затенения. Следите, чтобы такого не было.



Патчи компилятора


Есть несколько патчей компилятора для повышения безопасности.



Патчи (заплатки) для ядра


Имеется ряд заплат, непосредственно связанных с защитой.



Печать под Linux


Имеется ряд демонов печати (print daemons) для Linux, но они подражают lpd (оригиналу).



Перехватчики пакетов


Packet sniffing практика захвата сетевых данных, не предназначенных для вашей машины, обычно с целью просмотра конфиденциального трафика, типа telnet-сеансов или людей, читающих их email. К сожалению, нет никакого реального надежного способа обнаружить перехватчик, так как это обычно пассивное действие. Имеется также инструмент AntiSniff, который исследует сетевые устройства и может выявить сниффер (перехватчик). Это инструментальное средство также неоценимо, если сеть атакована, и Вы хотите видеть, что происходит. Имеется превосходный FAQ на

http://www.robertgraham.com/pubs/sniffing-faq.html.



Perfect Backup


Perfect Backup поддерживает почти все дистрибутивы Linux и имеет функцию аварийного восстановления. Доступна на

http://www.merlinsoftech.com/nonflash/merlinhome.htm.



Perl/Java/C SDK для LDAP


Несколько пакетов разработчика для LDAP доступны для скачивания на http://www.mozilla.org/directory

Back

Written by Kurt Seifried