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

         

Exploits


Я не буду рассматривать эксплойты специально (их сотни, если не тысячи для Linux). Я только перечислю основные сайты, где их можно найти.

http://www.rootshell.com

Один из главных архивных сайтов эксплойтов, имеет удобный поиск.

Back

Written by Kurt Seifried



F-Secure Anti-Virus


Data Fellow's тоже портировала свой антивирусный сканер под Linux. Скачать его можно с

http://www.europe.datafellows.com/products



Файлы GnuPG-signed


Также используется GnuPG, полностью открытая исходная версия PGP, которая не использует никаких патентованных алгоритмов. Вы можете скачать ее с http://www.gnupg.org.



Файлы MD5-signed


Другой путь проверки пакета состоит в том, чтобы создать MD5 контрольную сумму. Проблема в том, что как-то надо получить надежные данные о контрольной сумме. Обычно это делается по email после анонсирования павкета.





Файлы PGP-signed


Многие tarballs распространяются с PGP-сигнатурами в отдельных ASCII-файлах, для их проверки добавьте ключ разработчиков к Вашему брелку и используйте PGP с опцией -o. PGP для Linux доступен на ftp://ftp.zedz.net.



Fast Webpage Exchanger


Fast Webpage Exchanger сам синхронизирует файлы через ftp и имеет удобный файл настройки. Скачать можно с

http://www.enjoy.ne.jp/~gm/program/iwe_en.html.



FirePlug Edge


Для маленьких Linux типа firewall/gateway. Скачать можно с http://edge.fireplug.net.



Firewalk


Firewalk программа, которая использует traceroute стиль пакетов, чтобы просмотреть firewall и пытаться выводить правила этого firewall. Не имеется никакой реальной защиты против этого кроме тихого отрицания пакетов вместо того, чтобы посылать сообщения отклонения. Я советую использовать этот инструмент против Ваших систем, поскольку результаты могут помочь Вам усилить защиту. Firewalk есть на

http://www.packetfactory.net/firewalk.



Firewall-сканеры


Имеется также ряд программ, которые выполняют просмотр firewalls и другие тесты проникновения, чтобы выяснить, как firewall конфигурирован.



Firewalling


Обзор

Пакеты Firewall для Linux

IPFWADM

IPCHAINS

NETFILTER

IPF

SINUS Firewall

Phoenix Adaptive Firewall

FirePlug Edge

Firewall piercing

Создание правил и скрипты

Скрипты Firewall

ipfwadm2ipchains

mason

Mklinuxfw

fwconfig

xipfwadm

Linux Firewall Tools

Easy Firewall

DNi



Firewalls


Большинство щитов (firewall) ведут протоколы, и ipfwadm/ipchains не исключение, с параметром -l Вы получите syslog-записи по каждому пакету, используя автоматизированные фильтры (perl хорош для этого) Вы можете обнаружить попытки атаки.



Физический доступ


Это детально рассмотрено в книге "Practical Unix and Internet Security", но я кратко изложу основные положения. Кто-то перезагружает Ваш сервер со специально подготовленной дискеты и передает payroll.db на некий ftp-сайт. Известны истории и про уборщиц, вытаскивавших шнур питания сервера из розетки, чтобы включить туда пылесос. Были и другие случаи, типа стоящего на полу сервера и лопнувшей батареи отопления... Так что сервер должен быть в закрытой комнате и желательно его поставить на какую-то приподнятую поверхность.



Flash Web Server


Простой и быстрый www-сервер, скачать можно с

http://www.cs.rice.edu/~vivek/flash.



Fork Bomb Defuser


Загружаемый модуль ядра, который позволяет Вам управлять максимальным числом процессов на пользователя и максимальным числом ветвлений, очень полезен для shell-серверов. Скачать можно с

http://rexgrep.tripod.com/rexfbdmain.htm.



Fresh Free FiSSH


Большинство из нас все еще должно сидеть за windows workstations, а найти ssh-клиент для windows трудно. Fresh Free FiSSH является свободным клиентом ssh для Windows 95/NT 4.0. Хотя разработка еще не завершена, я рекомендую присматривать за пакетом повнимательнее: он того стоит. URL: http://www.massconfusion.com/ssh .



FrontPage


FrontPage одна из наиболее популярных программ HTML для пользователей Windows (я сам ей пользуюсь). Она может говорить непосредственно с WWW-серверами и обмениваться данными с сайтом (называемым ?FrontPage Site?), если сервер поддерживает расширения FrontPage. Они свободно доступны для различных UNIX-платформ с Ready To Run Software http://www.rtr.com. Есть коммерческие альтернативы, например, Instant ASP доступен на http://www.halcyonsoft.com. Хорошее описание взаимодействия FrontPage с Apache 1.3.X есть на

http://www.itma.lu/howto/apache.



Fsh


Fsh (?Fast remote command execution?) подобен rsh/rcp. Он создает шифрованный туннель, используя SSH или LSH и выполняет через него все команды. Скачать можно с

http://www.lysator.liu.se/fsh.



FTP


Классический способ предоставления доступа пользователям к ftp-серверу. Пользователи имеют обыкновение читать чужие файлы, лазать везде, куда дотянутся, и вообще портить жизнь сисопу. Chroot?ing ftp-сессий решает большинство этих проблем, однако основная проблема с ftp, в том что шифрование username и пароля обычно является невыполнимым из-за факта, что большинство людей работают с клиентами FTP для Windows. Я рекомендую ProFTPD вместо WU-FTPD, ProFTPD имеет много лучшие средства управления доступом.



FTP - SRP


SRP также может использоваться для шифрования username/password Ваших ftp-сеансов. SRP доступен на

http://srp.stanford.edu/srp



FTP - SSL


Замена Вашего любимого ftpd (возможно, WU-FTPD), также доступен как набор патчей для WU-FTPD. Вроде бы повышает защиту. Можно скачать tarball с

ftp://ftp.uni-mainz.de/pub/internet/security/ssl, или пакет RPM с

ftp://ftp.zedz.net/pub/replay/linux/redhat.



FTP4ALL


Еще один FTP-сервер, распространяемый по GPL, доступен на

http://www.ftp4all.de/v3/noframes.



Ftpcheck / Relaycheck


Две простых утилиты, которые сканируют серверы ftp и mail. Доступны на http://david.weekly.org/code.



Fuzz


Написан Ben Woodward, fuzz частично интеллектуальная программа, которая дает совершенно неожиданные исходные данные и смотрит на реакцию программы (то есть, не свалится ли она?). fuzz доступен на http://fuzz.sourceforge.net.



Fwconfig


fwconfig основанная на www утилита настройки для ipfwadm и ipchains. Доступна на

http://www.mindstorm.com/~sparlin/fwconfig.shtml.



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


gated более продвинутый вариант программ маршрутизации, чем routed. Он поддерживает RIP версий 1 и 2, DCN HELLO, OSPF версии 2, EGP версии 2 и BGP версий от 2 до 4. В настоящее время наиболее популярный протокол маршрутизации, кажется, BGP (Border Gateway Protocol), но набирает популярность и OSPF (он имеет встроенную защиту, очень эффективен и лишь немного более сложен).



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


Маленький и шустрый pop daemon, доступен по GNU на

http://www.nodomainname.net/software/gnu-pop3d.shtml.



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


Альтернатива PGP, GnuPG (GPG) с полностью открытым исходным кодом и GNU licensed. Доступна на http://www.gnupg.org , в исходниках и откомпилированных модулях для windows и RPM. Моя статья о GnuPG есть на

http://www.securityportal.com/closet/closet19990922.html.



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


Gog&Magog создает список свойств системного файла, владельца, разрешений, MD5-сигнатуру файла (подобно tripwire). Вы можете затем автоматически сравнивать данные с текущими, что гарантирует то, что любое измененение регистрируется быстро. Также, становится просто восстановить систему, поскольку вы будете знать, какие файлы были изменены. Вы можете скачать Gog&Magog с

http://www.multimania.com/cparisel/gog.



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


Gpasman прикладная программа, которая требует GTK (относительно легко установить на не Gnome-систему, поставьте только библиотеки GTK). Она шифрует пароли, используя алгоритм rc2. После запуска программы Вы напечатаете Ваш главный пароль и будете обеспечены хорошим списком Ваших логинов, сайтов, паролей и полей для комментария. Gpasman доступен на http://gpasman.nl.linux.org.



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


Основанный на GTK клиент LDAP, который может изменять настройки. Доступен на http://biot.com/gq



HardEncrypt


HardEncrypt генератор записей времени и набор утилит для работы с ними. В теории каждая такая запись практически непробиваема. Идеален для передачи важных данных. Скачать HardEncrypt можно с

http://www.csuglab.cornell.edu/Info/People/jcr13/HardenedCriminal/main.html .



Хост-сканеры


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



Хранение паролей


Как надежно Вы храните пароли? Наиболее очевидный метод состоит в том, чтобы запомнить их, это однако имеет тот недостаток что, если Вы управляете 30 различными местами, Вы захотите иметь 30 различных паролей, а хороший пароль (8 символов в длину) не самая простая вещь, чтобы запомнить. Это ведет к тому, что многие люди используют те же самые пароли на нескольких системах. Лучшая идея: сохранить пароли в шифрованном формате, обычно с помощью электроники на Вашем компьютере. Вы должны помнить только один пароль, чтобы отпереть остальные, которые Вы можете затем использовать. Чтобы выполнить это может использоваться PGP или GnuPG.



HUNT Project


Проект HUNT представляет собой набор инструментов для управления TCP-IP (обычно в Ethernet LAN), который может перезапускать соединения, наблюдать за ними и делать другие подобнгые вещи. Он также имеет несколько несколько атак, основанных на ARP. Скачать HUNT можно с http://www.cri.cz/kra.



I-data


i-data создала несколько пакетов, в том числе VPN-сервер, основанный на Linux и FreeS/WAN. Они размещены в Дании, что делает их пакеты доступными по всему миру. Подробности на сайте

http://www.i-data.com/networks.



IBM HTTP Server


IBM также сделала HTTP-сервер для Linux (основанный на Apache), который можно скачать с

http://www-4.ibm.com/software/webservers/httpservers/download.html.



ICE Linux-SNA


http://www.icenetworking.com/products/sna/fire/index.html

Back

Written by Kurt Seifried



Identd


Identd поддерживает несколько хороших свойств и может быть легко установлен, чтобы выполниться как пользователь не-root. В зависимости от Вашей политики защиты Вы можете не хотеть раздавать очень много информации или Вы хотите наоборот давать сведения в максимально возможной степени. Просто прикрепите опцию в inetd.conf после in.identd (по умолчанию -l -e -o).

-p port

-a address

Может использоваться, чтобы определить который порт и адрес используются (в случае машины с aliased IP или несколькими интерфейсами), это вообще полезно только если Вы хотите, чтобы внутренние машины соединялись, так как внешние машины не будут, вероятно, способны вычислить то, на какой порт Вы заменили это значение.

-u uid

-g gid

Задает пользователя и группу, чьи привилегии присвоит identd после соединения с портом.

-o

Указывает identd не сообщать тип ОС, а просто говорить "UNKNOWN", очень хорошая опция.

-n

Выдает код пользователя (UID) вместо username, что позволяет прослеживать проблемы с пользователями, но не дает ценной информации хакеру.

-N

Позволяет пользователям делать файлы ~/.noident, что вынудит identd возвращать "HIDDEN-USER" вместо информации. Это позволяет пользователям иметь опцию наличия степени секретности, но злонамеренные пользователи использует это, чтобы уклониться от идентификации.

-F format

Дает возможность Вам определить гораздо большее количество информации, чем обычно: все от имени пользователя и его номера, до PID, имени команды и параметров, которые были даны! Это я рекомендовал бы только для внутреннего использования, поскольку здесь много информации, которую нападавшие найдут полезной.

Вообще я советовал бы запускать identd на серврах с shell-доступом, а на остальных отключать из-за возможности denial of service атак на этот сервис. Использование identd будет делать жизнь намного проще для других администраторов при прослеживании нападений с Вашего сервера, что будет в конечном счете делать Вашу жизнь проще.



IDS POP


IDS (It Doesn?t Suck) POP облегченный вариант popd для небольших систем. Доступен по GPL на

http://www.nodomainname.net/software/ids-pop.



IMAP


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



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


Итак, система защищена. Вы поставили tripwire, DTK и прочее. Но в 3am Вы получаете сообщение, что кто-то модифицировал первичный сервер NIS. Ваши действия? Действия при атаке зависят от ряда факторов. Например, нападение все еще идет, или хакер уже смылся? Вы обнаруживали, бизнес-план компании, отправляемый на адрес в hotmail? Вы примчались из дома, чтобы обнаружить кластер мертвых серверов? Каковы ваши приоритеты? Восстановление обслуживания? Обеспечение безопасности конфиденциальных данных? Преследование по суду нападавшего? Несколько вещей, которые надо иметь в виду:

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

Большинство сайтов обычно не хочет сообщать о нападении (удачном или нет) из-за проблем связей с широкой публикой.

Большинство быстрых атак и атак "denial of service" замаскирвоаны. Отследить атаковавшего очень трудно. Еще хуже, когда вышли на человека, который вроде бы подходит, но на самом деле не тот. (Замечание переводчика: приведу конкретный пример: в университете, где я учусь, кто-то взломал сервер. Хакер явно был умным, впрочем рукастых студентов там хватает, а администратор у нас, похоже, вообще не слышал о какой-либо защите сервера. Но хакер выяснил фирму, с которой у меня дружеские отношения (что тоже легко: меня многие знают), и обставил все так, будто я заходил с фирмы в 12 ночи. Конечно, явный спуфинг. Но никого это не интересует, все мои вопли в адрес проректора о том, что я физически не мог находиться на фирме в 12 ночи услышаны не были. То, что мне закрыли доступ на сервер ни за что, мне самому глубоко безразлично, но хакер-то остался безнаказанным! На все мои попытки обратить на сей печальный факт внимание администрации университета, я получил немало ответов, самым вежливым из которых был: "Не надо искать несуществующих злоумышленников. Прочитайте рассказ Драгунского "Тайное всегда становится явным" и оставьте меня в покое!". Никакого расследования, обязательного в таких случаях, никто даже не собирается проводить! Ну что ж, от души надеюсь, что ушедший безнаказанным хакер еще им покажет...).

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

Если Вы знаете, как нападавший вошел (то есть, NFR сделал запись этого), заткните соответствующую дыру.

Не пытайтесь игнорировать атаку! Но в то же самое время имеется много людей, которые просто развлекаются в сети, и на которых не стоит тратить впустую время и силы администраторов (возможно, такая атака отвлекает их от более тонких нападений).

Также при отражении атаки неплохо быть в курсе стратегии Вашей компании. Еще одна хорошая идея в том, чтобы иметь готовый план на случай нападения то есть, что проверять сначала, ччто потом. Есть хорошая книга ?Practical Unix and Internet Security?, в которой все это рассмотрено очень подробно.

Неплохо данная тема расмотрена в документе (см.

приложение D) ?How to Handle and Identify Network Probes?.



IMP


IMP требует модуль Horde (доступен на его же сайте) и www-сервер, способный к поддержке PHP3. Вы можете загрузить IMP и Horde с http://www.horde.org/imp.



Inetd.conf


Файл /etc/inetd.conf, который управляет различными сервисами Internet, имеет старые и опасные включенные сервисы:

echo stream tcp nowait root internal echo dgram udp wait root internal discard stream tcp nowait root internal discard dgram udp wait root internal daytime stream tcp nowait root internal daytime dgram udp wait root internal chargen stream tcp nowait root internal chargen dgram udp wait root internal gopher stream tcp nowait root /usr/sbin/tcpd gn shell stream tcp nowait root /usr/sbin/tcpd in.rshd login stream tcp nowait root /usr/sbin/tcpd in.rlogind exec stream tcp nowait root /usr/sbin/tcpd in.rexecd talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd ntalk dgram udp wait nobody.tty /usr/sbin/tcpd in.ntalkd uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico ?l

Они все должны быть закомментированы (впишите ?#? в начало строки), после чего перезапустите inetd командой ?killall?1 inetd?.


Файл inetd.conf TurboLinux относительно нормален, однако некоторые услуги подобно rsh и rlogin допускаются по умолчанию, я советую их закрыть

shell stream tcp nowait root /usr/sbin/tcpd in.rshd login stream tcp nowait root /usr/sbin/tcpd in.rlogind talk dgram udp wait nobody.tty /usr/sbin/tcpd in.talkd ntalk dgram udp wait nobody.tty /usr/sbin/tcpd in.ntalkd

Они должны быть закомментированны (добавьте ?#? в начале каждой строки) и перезапустите inetd командой ?killall ?1 inetd?.



Информация о дистрибутивах


Информация для связи с поставщиками

Bastille Linux

Caldera

Kha0s

NetMAX

Red Hat

SuSE

TurboLinux

Back

Written by Kurt Seifried



Информация о пользователя


Обзор

Сервер Ident

Identd

Другие Identd daemons

Сервер Finger

Cfingerd

PFinger

The Finger Server



Inittab


TurboLinux (подобно большинству распределений) позволит Вам загружаться в однопользовательском режиме без пароля. Поместите команду ?restricted ? в файл lilo.conf и добавьте пароль, чтобы никто не мог получить root доступ к системе простой перезагрузкой машины.



INN


Сервер usenet INN имеет длинную и страшную историю, в течение длительного периода не было никаких новых версий, и состояние сервера было неопределенным. Сервер ответственнен за обработку потенциально огромной загрузки, если Вы берете полный newsfeed, ему придется обработать несколько сотен статей в секунду, каждая статья приблизительно несколько килобайт размером. Всех их надо проиндексировать, записать на диск и предоставить клиентам. INN сам по себе безвреден, поскольку работает в своем каталоге и не имеет доступа за его пределы. Однако, как и в кадой системе сообщений, пробемы начнутся при использовании частной/конфиденциальной информации. Сейчас INN поддерживается ISC и доступен на

http://www.isc.org/inn.html.

Одна из основных угроз защиты INN нехватка ресурсов сервера. Если кто-то решает затопить Ваш сервер поддельными статьями или имеется внезапная волна статей (что вполне законно и реально), Вы можете столкнуться с проблемой, если пропускная способность недостаточна. INN имел несколько плохих отверстий в защите, но на сегодняшний день программисты, кажется, нашли и заделали все. По некоторым причинам (не только из-за безопасности) рекомендуется помещать буфер новостей на отдельный диск, уже не говоря о разделе. Вы можете также использовать ulimit, чтобы ограничить объем памяти доступный программе, чтобы она не могла занять все ресурсы.

Что касается доступа, Вы не должны позволять общий доступ. Любой публичный сервер новостей будет быстро атакован людьми, использующими его, чтобы читать новости, посылать spam и т.п. Ограничьте чтение новостей Вашей сетью. Доступ клиентов к INN контролируется файлом nnrp.access. Можно указать IP-адрес(а), имена доменов (например, *.example.org) и их права доступа (read и post), задать username и пароль. Однако, поскольку пароль оказывается связан с хостом/доменом, он не особенно удобен.

Пример nnrp.access:

*:: -no - : -no- :!* # denies access from all sites, for all actions (post and read), to all groups. *.example.org::Read Post:::* # hosts in example.org have full access to all groups *.otherexample.org::Read:::*, !me.* # hosts in otherexample.org have read access to everything but the me hierarchy *.otherexample.org:Read Post:myname:mypassword:* # give me access from my AOL account using a username and password

Если Вы собираетесь запускать news-сервер, я очень рекомендую книгу O'Reilly book "Managin g Usenet". Usenet похож на Sendmail.

News должен быть закрыт firewallом как большинство серверов:

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

или

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



Installwatch


installwatch контролируют все, что делает программа, и регистрирует любые изменения, которые она делает в системе, через syslog. Вы выполняете программу например как ?installwatch /usr/src/something/make? (опционально можно задать ??o filename? для записи протокола в специальный файл filename). installwatch доступна на

http://datanord.datanord.it/~pdemauro/installwatch.



Instmon


instmon запускается до и после установки пакетов tarball/tgz. Он создает список измененных файлов, который можно потом использовать для отмены изменений. Доступен на:

http://hal.csd.auth.gr/~vvas/instmon.



InterScan VirusWall


Trend Micro портировала этот продукт под Linux, и его можно скачать с их сайта

http://www.antivirus.com/products/isvw.



Intrusion Detection Papers


FAQ: Network Intrusion Detection Systems, отличный FAQ, который покрывает все основные (и много мелких) проблем с IDS-системами. Доступен на

http://www.robertgraham.com/pubs/network-intrusion-detection.html.