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

         

Roxen


Roxen еще один коммерческий www-сервер с поддержкой https, доступен по GPL. Вы можете свободно скачать его, если Вы находитесь в Объединенной Европе, Австралии, Канаде, Японии, Новой Зеландии, Норвегии, США или Швейцарии. Версия со ?слабой? (40 бит) криптографией может быть загружена из любой страны без проблем. Roxen доступен на http://www.roxen.com.



RPM


RPM утилита для управления софтом, первоначально создана Red Hat, позже опубликована под лицензией GNU (

http://www.rpm.org). Она составляет ядро администрирования на многих системах, решая задачи обновления софта и его установки. Своевременное обновление может быть трудной задачей, поскольку средний сервер 200-400 пакетов, а ведь основная причина взломов серверов старые пакеты.

man-страница для RPM не очень хороша, с другой стороны, есть отличная книга " Maximum RPM" (ISBN: 0-672-31105-4), свободно доступная на http://www.rpm.org в формате post script. Пакеты в rpm-формате именуются по простому соглашению:

package_name-package_version-rpm_build_version-architecture.rpm

nfs-server-2.2beta29-5.i386.rpm

означает пакет ?nfs-server?, версии ?2.2beta29? пятый билд этого rpm (то есть, он был пересобран с небольшими модификациями 5 раз), для архитектуры Intel architecture и он в формате rpm.

Команды и их назначение

-q Запрос пакета/базы данных для сведений о пакете

-i Установить пакет

-U Обновить или установить пакет

-e Как я понял, удалить пакет из системы

-v Сообщать дополнительные данные

-h Линейка прогресса



Пример команды Действие
rpm -ivh package.rpm Установит 'package.rpm' с линейкой прогресса и дополнительной информацией
rpm -Uvh package.rpm Обновит 'package.rpm' с линейкой прогресса и дополнительной информацией
rpm -qf /some/file Проверит какому пакету принадлежит файл file неизвестного происхождения
rpm -qpi package.rpm Запросит информацию о пакете 'package.rpm'
rpm -qpl package.rpm Запросит информацию о пакете 'package.rpm', список всех файлов
rpm -qa Запросит базу данных RPM на предмет списка всех установленных пакетов
rpm -e package-name Удалит из системы пакет 'package-name' (как перечислен в выводе команды rpm -qa)

Red Hat Linux 5.1 поставляется с 528 пакетами, а Red Hat Linux 5.2 с 573, это не так много (SuSE 6.0 поставляется на 5 CD, я не считал сколько там пакетов). Обычно Вы будете иметь дел с 2-300 пакетами. RPM-пакеты Red Hat обычно довольно хорошие, требуется 6-12 месяцев на их устаревание.

Список URL и списков рассылки с информацией об ошибках и обновленниях пакетов доступны дальше в этом документе.



RPM integrity


RPM-пакеты могут иметь (и обычно имеют) PGP-подпись автора. Она может быть проверена, и в случае несовпадения, пакет, скорее всего, троянский. Это подробно описано в главе 7 в ?Maximum RPM? (online-версия на http://www.rpm.org), проверка состоит из добавления ключей разработчиков к общему PGP-брелку, и затем использования опции -K, которая захватит соответствующий ключ и проверит сигнатуру.



RpmWatch


RpmWatch простой Perl-скрипт, который установит модификации. Обратите внимание, что пакеты должны быть доступны локально, хотя бы через NFS или CODA. RpmWatch лежит на

http://www.iaehv.nl/users/grimaldo/info/scripts.



RSBAC


Rule Set Based Access Control всесторонний набор заплат и утилит, чтобы управлять различными аспектами системы. Доступен на http://www.rsbac.de/rsbac.



Rsync


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



Ручная связь


Сначала мы установим связь, использующую ручную настройку (для простоты), Вы будете должны редактировать ipsec.conf и правила firewall. Большинство значений по умолчанию в файле ipsec.conf прекрасны, но Вы должны изменить следующее:

conn sample type=tunnel left= leftnexthop= leftsubnet= right= rightnexthop= rightsubnet= spibase=0x200 esp=3des-md5-96 espenckey= espauthkey=

Замените espenckey и espauthkey на новые ключи (используя ranbits для генерации чисел, не забудьте вписать префикс 0x, который указывает, что число шестнадцатиричное):

conn my-tunnel type=tunnel left=1.2.3.4 leftnexthop=1.2.3.1 leftsubnet=10.0.0.0/24 right=5.6.7.8 rightnexthop=5.6.7.1 rightsubnet=192.168.0.0/24 spibase=0x200 esp=3des-md5-96 espenckey=some_auth_key_here (ranbits 192) espauthkey=some_other_key_here (ranbits 128)

Скоируйте исправленные файлы ipsec.conf и ipsec.secrets на другой сервер каким-нибудь безопасным способом. Теперь все, что остается, это добавление некоторых правил firewall так, чтобы пакеты не получили masqueraded (мы просто хотим их послать).

На сервере 1.2.3.4 Вы должны добавить следующие правила:

ipchains -A forward -p all -j ACCEPT -s 10.0.0.0/24 -d 192.168.0.0/24 ipchains -A forward -p all -j ACCEPT -s 192.168.0.0/24 -d 10.0.0.0/24

Удостоверьтесь, что эти правила заданы перед правилом masquerading, это должно выглядеть следующим образом:

# FORWARD RULES # ipchains -P forward DENY # ipchains -A forward -p all -j ACCEPT -s 10.0.0.0/24 -d 192.168.0.0/24 ipchains -A forward -p all -j ACCEPT -s 192.168.0.0/24 -d 10.0.0.0/24 ipchains -A forward -p all -j MASQ -s 10.0.0.0/24 -d 0.0.0.0/0

На сервере 5.6.7.8 Вы в основном повторяете процесс:

ipchains -A forward -p all -j ACCEPT -s 192.168.0.0/24 -d 10.0.0.0/24 ipchains -A forward -p all -j ACCEPT -s 10.0.0.0/24 -d 192.168.0.0/24

Удостоверьтесь, что эти правила заданы перед правилом masquerading, это должно выглядеть следующим образом:

# FORWARD RULES # ipchains -P forward DENY # ipchains -A forward -p all -j ACCEPT -s 192.168.0.0/24 -d 10.0.0.0/24 ipchains -A forward -p all -j ACCEPT -s 10.0.0.0/24 -d 192.168.0.0/24 ipchains -A forward -p all -j MASQ -s 192.168.0.0/24 -d 0.0.0.0/0

Теперь Вы должны быть способны создать ipsec-туннель на обеих машинах вручную, и машины в сети A должны быть способны разговаривать с машинами в сети B без проблем.

ipsec manual ?up my-tunnel

Вывод должен быть похож на:

/usr/local/lib/ipsec/spi: message size is 36 /usr/local/lib/ipsec/spi: message size is 132 /usr/local/lib/ipsec/spi: message size is 132

Для роверки попробуйте ping 192.168.0.2 с клиента 10.0.0.2. Если это работает, Вы все установили правильно. Если это не работает, проверьте сеть чтобы удостовериться, что 1.2.3.4 может связаться с 5.6.7.8, что TCP-IP forwarding допускается, и что никакие правила firewall не блокируют пакеты, или пробуют к маскировать их. Как только Вы установили подключение и успешно проверили его, Вы должны переходить на автоматический вариант связи.



Runas


runas очень похож на sudo и Super с некоторыми отличиями. Вы создаете файл настройки в котором указываете кто, как и что может выполнять. В дополнение к этому однако Вы можете ограничивать использование параметров, и Вы можете запрашивать пользователя о причинах (ответы пишутся в syslog). Это одно из моих любимых свойств. Загрузить runas можно с

http://www.mindspring.com/~carpinello/runas/index.html.



Saint


Saint продолжение Satan, сетевой сканер защиты. Saint также использует архитектуру client/server, но с www-интерфейсом вместо клиентской программы. Saint производит очень простой в чтении и понимании вывод с описанием проблем защиты, градуируемыми приоритетом (хотя не всегда правильными) и также поддерживает add-in модули сканирования, делающих его очень гибким. Saint доступен на

http://www.wwdsi.com/saint.



Samba


SMB (server message block) текущий протокол совместного использования файлов в windows. Samba делает невероятную работу для обеспечения всех услуг, требуемых, чтобы правильно совместно использовать файлы windows (например, поддерживает сервисы Primary и Backup Domain Controller). Вы также можете предоставить windows-доступ к принтерам через Samba и обращать через smbclient к Windows-принтерам.


SAMBA позволяет совместно использовать файлы и принтеры между Windows и *NIX. SAMBA не всегда правильно работает с windows-клиентами (часто поврежденными), но причина здесь в хитростях реализпции протокола в windows, а не в самом пакете SAMBA, который имеет очень много поправок для налаживания работы с такими ненормальными клиентами. Увы, получается не всегда. SAMBA просто дает доступ к файловой системе через протокол SMB (Server Message Block), протоко используемый Windows, чтобы совместно использовать файлы и принтеры. Он проверяет username и пароль (если требуется) и затем дает доступ к файлам согласно разрешениям файла. Я собираюсь описывать только Samba 2.x, Samba 1.x довольно стар.

Samba 2.x управляется через smb.conf, обычно в /etc (man smb.conf). В /etc/smb.conf есть 4 основных области переключателей конфигурации: [globals], [printers], [homes] и каждый разделяемый ресурс имеет свою зону [sharename]. Имеется сотня или около того переключателей, они подробно рассмотрены на man-странице smb.conf. Некоторые из них (важные для защиты):

security = xxxx где xxxx имеет значение server или domain. Предназначено для ресурсов, закрытых паролем. При значении server сервер samba непосредственно опознает пользователей через /etc/password или smbpasswd. Если Вы устанавливаете значение domain, samba опознает пользователя через контроллер домена NT, таким образом интегрируясь в существующую NT-сеть.

guest account = xxxx где xxxx задает username, отведенный для гостевого входа. Если разделяемый ресурс задан как public, все запросы к нему пойдут от имени данного пользователя.

hosts allow = xxxx где xxxx представляет собой разделенный пробелами список хостов/IP, которым дозволено соединяться с сервером.

hosts deny = xxxx где xxxx представляет собой разделенный пробелами список хостов/IP, которым НЕ дозволено соединяться с сервером.

interfaces = xxxx где xxxx представляет собой разделенный пробелами список хостов/IP, которые адресует samba

SMB использует разные порты, обычно 137, 138 и 139, протоколы udp и tcp для всех за исключением 139.




Samba полезен для деления www-каталогов Windows-клиентами, Вы можете хранить usernames и пароли, отдельно от системы (использование smbpasswd, лучше системной passwd) и шифрование входов в систему не проблема. Просто создайте non-browseable разделяемый ресурс и используйте директиву ? valid users?, чтобы ограничить, какие пользователи могут рассматривать общие данные. Например:

[www-example] path = /www/www.example.org valid users = someuser read only = No browseable = No

Будет установлен довольно безопасный общий ресурс для каталога ?/www/www.example.org?, к которому только пользователь ?example? сможет обращаться.



SARA


Security Auditor?s Research Assistant (SARA) похож на SATAN и Saint. SARA поддерживает многопоточное сканирование, хранит свои данные в базе данных для простого доступа и строит хорошие HTML-отчеты. SARA свободна для использования и доступна с

http://home.arc.com/sara.



Secret-share


secret-share позволяет Вам разрывать файл на так много кусков, на сколько Вы посчитаете нужным. Все части шифруются и необходимы для прочтения файла. Скачать можно с

http://www.mindrot.org/code/secret-share.php3.



Secure CRT


Коммерческий клиент Telnet/SSH от Vandyke software. Скачать/купить можно на http://www.vandyke.com.



Secure Internet Programming


Secure Internet Programming (SIP) лаборатория (из-за отсутствия лучшего слова) которая изучает компьютерную защиту, и более определенно проблемы с подвижным кодом типа Java и ActiveX. Они имеют ряд интересных проектов и много интерактивных публикаций, которые дают превосходное чтение. Если Вы собираетесь программировать на Java, посетите их сайт:

http://www.cs.princeton.edu/sip.



Secure Linux Programming FAQ


Эта энциклопедия описывает много приемов безопасного программирования вообще, и специфики Linux в частности. Скачать можно с

http://www.dwheeler.com/secure-programs.



Secure-syslog


Основная проблема, это исправленные журналы. Можно установить режим append only с помощью ?chattr +a?, но с правами root его также легко снять и поставить на место после необходимой правки журнала. Есть безопасная версия syslogd, доступная на

http://www.core-sdi.com/english/freesoft.htm (эти парни вообще делают хорошие инструментальные средства и имеют хорошую репутацию). Здесь есть возможность криптоподписи файла протокола, что гарантировано обеспечит данные о том, что его никто не трогал. В конечном счете, однако, нападавший может все же удалять журналы, так что хорошая идея послать их другому хосту, особенно в случае firewall, чтобы предотвратить диск от переполнения.



Secure UNIX Programming FAQ


Этот документ освещает вопросы безопасного программирования, в том числе ряд низкоуровневых моментов: inherited trust, sharing credentials и подобное. Документ доступен на

http://www.whitefang.com/sup и я очень рекомендую почитать его всем, кто собирается что-то писать для Linux (или UNIX вообще).



Sendmail


Sendmail наиболее распространенный сервер почты. Но сейчас его активно вытесняет пакет Postfix.

Sendmail заработал себя очень плохую репутацию защиты, однако новые версии исправили почти все ошибки. К тому же, добавлена система противоспамовой обороны. Подробности о Sendmail и исходниках есть на http://www.sendmail.org.

Chrooting Sendmail хорошая опция, но требует много работы, и так как он все равно работает как root, довольно спорно относительно эффективности (так как root может убегать из тюрьмы chroot'ed).

Обновление Sendmail не особенно трудная задача. Лучше всего использовать ряд 8.9 из-за минимума ошибок и противоспамовой обороны. Можно скачать исходники с ftp://ftp.sendmail.org, но откомпилировать Sendmail не так просто.

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

Для такого запуска поправьте скрипт запуска Sendmail, и замените в нем строку:

sendmail -bd -q1h

на строку:

sendmail -q1h

Пожалуйста обратите внимание: если Вы используете систему, чтобы послать большое количество email, Вы можете установить время обработки очереди ниже, возможно, "-q15m" (обрабатывать очередь каждые 15 минут).

Теперь о системе противоспамовой обороны. В одной из win-программ я встретил настройку по умолчанию "Посылать в ответ файл", а в качестве имени файла было прописано "c:\windows\win386.swp". Здесь все не настолько радикально. Sendmail настраивается несколькими файлами настройки (применительно к Sendmail 8.9.x):

/etc/sendmail.cf

Основной файл настройки, также сообщает, где искать другие файлы конфигурации.

/etc/mail

Вы можете определять расположение файлов конфигурации в sendmail.cf, обычно люди помещают их в /etc или в /etc/mail.

access

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


10.0.0 RELAY spam.com REJECT

Что означает 10.0.0.* ( хостам моей внутренней сети) разрешено использовать сервер для передачи почты куда угодно, а все со *.spam.com будет отклонено. Имеются интерактивные списки известных спамеров, обычно они 5-10,000 записей в длину, что может серьезно препятствовать эффективности sendmail (поскольку каждое подключение проверяется по этому списку), с другой стороны использование Вашей sendmail-машины, чтобы посылать spam куда хуже.

aliases

Файл псевдонимов, позволяет Вам управлять доставкой почты, локальной для системы. Большинство пакетов списков рассылки используют данный файл, чтобы получить почту, посланную спискам, и направить ее программам, которые фактически обрабатывают их. Не забудьте выполнить команду "newaliases" после редактирования этого файла и затем перезапустить sendmail.

domaintable

Таблица обрабатываемых доменов (полезно для виртуальных хостов).

majordomo

Файл конфигурации для majordomo.

sendmail.cw

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

sendmail.hf

расположение справочного файла (зайдите в telnet на 25 и введите "HELP")

virtusertable

Таблица виртуальных пользователей для отображения их в реальные (например, sales@example.org в john@example.org).

Sendmail 8.9.x (и предыдущие версии) реально не поддерживал регистрацию всего email. Обещана такая поддержка в Sendmail 8.10.x. До тех пор имеются 2 пути регистрации email, первый изящный и регистрирует email приходящий пользователям на основании имени пользователя. Второй метод не изящен и включает простой необработанный файл регистрации всех SMTP транзакций, Вы должны написать некоторый сортировщик (вероятно, на perl) чтобы сделать файл регистрации полезным.

Почта (входящие SMTP подключения, чтобы быть более точным) сначала фильтруется файлом доступа, здесь мы можем отклонить почту из некоторого домена/IP и передать почту из некоторых хостов (например, с внутренней сети машин под windows). Все локальные домены будут проверены через файл sendmail.cw. Почта будет обработана в соответствии с заданными правилами и поставлена в очередь для локальной доставки, затем будет проверен файл virtusertable, который представляет соответствия адресов именам пользователя, например так:



seifried@seifried.org alias-seifried listuser@seifried.org listuser @seifried.org mangled-emails

Последнее правило перехватывает письма с поврежденными адресами и пересылает их в специально выделенный ящик. Будет также проверен файл псевдонимов и почта будет доставлена в соответствии с записями в нем. Например, мой псевдоним для seifried такой:

alias-seifried: seifried, "/var/backup-spool/seifried"

Этим путем мой email попадает в мой основной и резервный почтовые ящики. Если я удалю письмо, оно уцелеет в другом ящике! Microsoft Outlook... Приведу перевод данной фразы, который дал пакет Stylus, по-моему, это один из тех, увы, немногих случаев, когда машинный перевод себя оправдал: "Перспектива Microsoft решает к рвоте когда-нибудь и брандспойту мои почтовые ящики.". Кратко и выразительно... И, увы, очень правильно. Это также полезно для корпораций, поскольку Вы теперь имеете копию всего входящего email на основании имени пользователя, и можете позволять (или не позволять) им обращаться к файлу, содержащему сохраненную почту.

Одна проблема при использовании правила catch-all для домена (то есть, для @seifried.org): Вы должны создать псевдоним для КАЖДОГО пользователя и списка рассылки. Иначе при просмотре списка, если не будет найдена запись для конкретного адреса (например, mailing-list@seifried.org), вся почта для него окажется в ящике для почты с поврежденным адресом. Так что с этим правилом надо поосторожней.

Второй метод очень прост, Вы просто запускаете sendmail с -X опцией и определяете файл, чтобы регистрировать все транзакции. Этот файл будет становиться очень большим очень быстро, я не рекомендовал бы использовать этот метод регистрации почты без крайней необходимости.

Dynamic Relay Authorization Control

Dynamic Relay Authorization Control (DRAC) связывается с Вашим сервером POP/IMAP, чтобы временно предоставить доступ к SMTP хостам, которые успешно авторизуются и обрабатывают почту. Вы можете получить пакет с

http://mail.cc.umanitoba.ca/drac/index.html
.


Sendmail Pro


Sendmail Pro представляет собой коммерческую версию Sendmail с поддержкой. Доступен на http://www.sendmail.com. Я так и не смог получить демонстрашку или найти того, кто получил, так что не могу сказать, какая тут разница. Но компания сообщила мне, что он использует то же самое ядро кода.



Sentinel


Sentinel сканирует жесткий диск и создает контрольные суммы файлов для которых Вы их запрашиваете. Это использует не патентованный алгоритм (RIPEMD-160bit MAC ), и имеет факультативный графический внешний интерфейс (nice). Доступно на:

http://zurk.netpedia.net/zfile.html.



Сервер Cistron RADIUS


http://www.miquels.cistron.nl/radius

Back

Written by Kurt Seifried



Сервер Finger


Finger одна из тех вещей, которые многие администраторы отключает и игнорирует. Это полезный инструмент при случае, но если Вы хотите позволить другим администраторам вычислять, который из Ваших пользователей в настоящее время пробует раскалывать их машины, используйте identd. Finger позволяет доступ к большой информации и является любимым инструментом хакеров для начальных исследований. Есть опасность DoS-атаки. Лучше не использовать finger. Многие дистрибутивы поставляются с включенной по умолчанию поддержкой этого сервиса, но вот что написано в inetd.conf из дистрибутива Red Hat:

# Finger, systat и netstat предоставляют много информации о пользователях, # полезной для "system crackers." Многие сайты выключают некоторые # или все эти сервисы по соображениям безопасности.

Если Вы все еще имеете убеждение, что Вы абсолютно должны выполнить это, используйте опцию -u для отклонения запросов finger @host, которые часто используются чтобы собрать информацию для будущих нападений. Finger работает на порте 79, а cfingerd на порте 2003, оба используют протокол tcp.

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

или

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



Сервер Ident


Сервис ident используется, чтобы отобразить пользователей/процессы на используемые ими порты. Например большинство IRC серверов пытается выяснять, кто соединяется с ними, используя поисковую таблицу ident, которая в основном состоит из выяснения у ident-сервера на компьютере пользователя, какую информацию он имеет относительно номера порта. Ответ может варьироваться от пустого (если никто не использует этот специфический порт) до username, groupname, process id и другой интересной информации. Значение по умолчанию в большинстве дистрибутивов: identd включен (irc-сервера и новые версии sendmail проверяют ответы identd), и выдаст только username. Первичное использование identd должно дать удаленным системам некоторые средства прослеживать пользователей, которые подключаются к их серверам irc, telnet, mail или другим для опознавательных целей (плохо придумано, так как очень просто сфальсифицировать). Университет в Edmonton требует, чтобы Вы выполнили identd, если Вы хотите зайти через telnet на любой из основных shell-серверов, так что они могут проследить взломанные логины довольно быстро.

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

Identd работает на порте 113, протокол tcp, и обычно Вы будете нуждаться в нем только если Вы хотите работать с IRC (многие irc-сети требуют ответа identd) или работаете с системами, управляющими daemons (типа tcp_wrapped telnet или sendmail), которые делают поисковые таблицы identd при подключениях к ним.

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

или

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



Сервер Moreton Bay DHCP


http://www.moretonbay.com/dhcpd

Back

Written by Kurt Seifried



Серверы файлов и печати


Обзор

Сетевая загрузка

tftp

Совместное исппользование файлов в UNIX

NFS

rsync

Печать под Linux

lpd

CUPS

LPRng

pdq

Разделение файлов и печать в Windows

Samba

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

Coda

Drall

AFS

Разделение исходников

CVS



Серверы FTP


Есть много серверов ftp для Linux. Популярные (Wu-FTPD и ProFTPD) имели серьезное число проблем, так что удостоверитесь, что ваша версия современна.



Сетевая аутенфикация


Обзор

NIS / NIS+

Kerberos

Radius

ICRADIUS

Livingston Radius

Ascend RADIUSd SQL патч

perlradius

Сервер Cistron RADIUS



Сетевая безопасность


Обзор

Защита PPP

Защита TCP-IP

IPSec: IPSec посвящена отдельная глава

IPv6

HUNT Project

Основные файлы настройки и утилиты

/etc/inetd.conf

/etc/services

TCP_WRAPPERS

Кто это запустил?

ps

netstat

lsof

Безопасность маршрутизации

routed

gated

MRT

zebra



Сетевое разделение файлов -AFS


Есть коммерческий протокол разделения файлов по сети для больших инсталляций с высокой защитой и требованиями к эффективности. FAQ доступно на:

http://www.angelfire.com/hi/plutonic/afs-faq.html. Свободная клиентская реализация AFS для ряда систем (включая Linux, конечно) доступна на:

http://www.stacken.kth.se/projekt/arla/.

Back

Written by Kurt Seifried



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


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

К счастью в Linux эти инструментальные средства свободны и легко доступны, я буду рассматривать opensource инструментальные средства, так как идея относительно firewall с закрытыми исходниками довольно подозрительна. Первая линия защиты должна быть хорошим firewall, сопровождаемого фильтрами пакета на всех Internet-машинах, либеральное использование TCP-WRAPPERS, подробная регистрация событий и автоматический анализ протоколов.



Сетевые серверы: DHCP


Обзор

DHCP-серверы

ISC DHCPD

Сервер Moreton Bay DHCP



Сетевые сервисы


Аутентификация: NIS/NIS+, Kerberos,

Radius

Сертификация: OpenCA, pyCA

DHCP: ISC DHCP, Moreton Bay DHCP Server

DNS

Email: SMTP, POP, IMAP, SPOP, SIMAP

File / print - NFS, Samba, LPD

FTP: Wu-FTPD, ProFTPD

LDAP - OpenLDAP

News - Usenet news, INN

proxy - Socks, Squid, DeleGate

Shell - Telnet, SSH, SSL-Telnet

SNA

SNMP

Time - NTP

Пользовательская информация: Finger, Identd

WWW - HTTP, HTTPS

WWWmail

X Window System

Back

Written by Kurt Seifried



Сетевые сервисы: CVS


CVS позволяет многим разработчикам работать вместе над большими проектами и поддерживать целостность проектов на уровне исходного кода. Внутренние механизмы защиты CVS довольно просты; фактически многие назовут бы слабыми, и тут я буду должен согласиться. Аутенфикация CVS обычно достигается в сети, использующей pserver, username передаются открытым текстом, а пароли просто хешируются (никакой реальной защиты нет).

Чтобы обойти это, Вы имеете несколько хороших параметров. В Unix среде вероятно самый простой метод состоит в том, чтобы использовать SSH для туннельных подключений между машинами пользователей и сервером. "Tim TimeWaster" (Tim Hemel) написал об этом превосходную страницу: http://cuba.xs4all.nl/~tim/scvs . Несколько более сложный подход (но лучший в конечном счете для больших инсталляций) состоит в kerberize CVS-сервера и клиентов.

Обычно большие сети (особенно в университетских средах) уже имеют установленную Kerberos-инфраструктуру. Детали относительно kerberizing CVS доступны на

http://www.cyclic.com/cyclic-pages/security.html. Кроме этого я настоятельно советую использовать firewall для CVS, если Вы не используете его для некоторой общей цели (типа открытого исходного проекта в Internet).

Другой инструмент для обеспечения безопасности CVS, только что появившийся ?cvsd?, обеспечивает для pserver chroot и/или suid pserver безобидному пользователю. cvsd доступен на http://cblack.mokey.com/cvsd в формате rpm и tarball с исходниками.

Имеются другие менее очевидные моменты, которые Вы должны знать. Имея дело с исходниками, надо следить, чтобы в них не попали троянцы. В открытом исходном проекте это относительно просто, его все изучают, и такие вещи будут довольно оперативно выявлены. Позаботьтесь также о резервировании исходников. CVS использует порт 2401, протокол tcp.

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

или

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

Back

Written by Kurt Seifried



Сетевые сервисы: FTP


Обзор

Серверы FTP

ProFTPD

Wu-FTPD

NcFTPD

BSD ftpd

Muddleftpd

Troll ftpd

BetaFTPD

FTP4ALL

FTP - SSL

FTP - SRP

sftp



Сетевые сервисы: HTTP/HTTPS


Обзор

Серверы WWW

Apache

thttpd

AOL Server

webfs

Simple Web Server

Flash Web Server

Безопасные серверы WWW

Apache-SSL

Apache with mod-ssl

Red Hat Secure Server

Roxen

Zeus

Netscape Enterprise

IBM HTTP Server

Доступ к файлам WWW-сервера

FTP

Samba

FrontPage

RearSite

Fast Webpage Exchanger

WebRFM



Сетевые сервисы: NFS


NFS (Network File System) является хорошим способом разделять файловые системы по сети. NFS прежде всего создан для использования в сети с высокой пропускной способностью. Если Вы нуждаетесь в высоком уровне защиты, типа передачи зашифрованных данных между серверами, NFS не самый лучший выбор. Я лично использую это в моей внутренней LAN. Более безопасные варианты включают SAMBA (свободный), и IBM переносит AFS на Linux (дорогостоящий, но AFS того стоит).

NFS имеет несколько рудиментарных средств управления защиты. Первым был firewalling; использование NFS через публичную медленную сеть (под такое определение прекрасно подходит Internet) плохая мысль. NFS работает как набор демонов daemons, TCP_WRAPPERS использовать бесполезно, если NFS не откомпилирована для их использования. Файл настройки NFS имеет несколько директив, большая часть которых имеет дело с идентификатором пользователя и группирует параметры настройки идентификатора, но никаких реальных механизмов для авторизации тут нет (пользователь может утверждать, что был UID 0). NFS-экспорт только для чтения довольно безопасен, Вы должны волноваться только относительно того, что прочитает данные не тот, кому можно.

Поддержка записи должна применяться очень аккуратно, так как единственная 'аутенфикация' основана на IP/hostname (что легко подделать: называется спуфинг) и UID (Вы можете выполнять Linux и иметь UID 0 на своей машине).

Так как же обезопасить NFS? Сначала, используем firewall, особенно если машина с интерфейсом, связанным с публично доступной сетью (Internet. Если Вы планируете выполнять NFS по публично доступной сети, лучше сделать сервис доступным только для чтения.

Вторая и наиболее интересная часть: файл /etc/exports. Он контролирует, как и что позволено делать клиентам.

Пример файла exports:

# Allow a workstation to edit web content /www 10.0.0.11(rw,no_root_squash) # # Another share to allow a user to edit a web site /www/www.example.org 10.0.0.202(rw,no_root_squash) # # Public ftp directory /home/ftp *.example.org(ro,all_squash)


Структура файла exports очень проста: каталог, который Вы желаете экспортировать, пользователь (всегда используйте IP, hostname может легко быть фальшивым) и параметры. Пользователь может быть одиночным IP (10.0.0.1), hostname (gomer.example.org), подсетью (10.0.0.0/255.255.255.0) или подстановочными знаками (*.example.org). Некоторые из наболее интересных и полезных директив для файла exports:

secure: nfs-сеанс должен происходить из привилегированного порта, то есть принадлежащего root.

ro: доступ только для чтения.

noaccess: используется чтобы отключить доступ, то есть экспортируя /home, сделайте noaccess на /home/root

root_squash: считать root UID анонимным UID/GID (обычно 'nobody'), очень полезно для серверов, которым Вы не доверяете на 100% (root может почти всегда читать любой файл)

no_root_squash: полезно, если все-таки доступ root к экспортируемым каталогам (например, чтобы менять права доступа на www-сайте)

squash_uids и squash_gids: считать UID(s) или GID(s) анонимным пользователем, в Red Hat хорошим примером будет 500-10000 (по умолчанию Red Hat присваивает идентификаторы пользователям и группам, начиная с 500), пользователям с меньшим UID (специальным пользователям) имеет смысл расширить права доступа для выполнения специальных задач.

all_squash: все привилегии отменяются, все гости.

anonuid и anongid: определенно устанавливают UID/GID для анонимного пользователя (Вы могли бы сделать специальную 'anonnfs').

Очень много полезной информации можно найти на man-странице для exports.

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

NFS должен быть ограничен по доступу из внешнего мира, он работает через порт 2049, протокол udp, также использует RPC на порте 111, протоколы udp/tcp, и использует mountd, который выполняется на порте 635, протокол udp. Замените 2049 на 111 и 635 udp и tcp, чтобы обезопасить данный сервис (самая лучшая идея: вообще закрыть порты от 1 до 1024, или еще лучше по умолчанию закрывать все лишние порты).

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

или

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

Back



Written by Kurt Seifried


Сетевые сервисы: NNTP


Обзор

NNTP-серверы

INN

Diablo

DNews

Cyclone

Typhoon



Сетевые сервисы: NTP


Обзор

NTP-сервер

XNTP

NTP-клиент

ntpdate

Обзор

NTP (Network Time Protocol) довольно прост: он синхронизирует часы компьютеров. Как? NTP-клиент соединяется с сервером, вычисляет задержку передачи между ними, запрашивает время и устанавливает часы клиента.

Сигнал времени обычно бывает сгенерирован атомными часами или сигналом GPS, измеряется компьютером ?stratum 1?, сервером времени, ниже него стоит в иерархии сервер времени stratum 2, который обычно доступен всем.

Данные NTP не очень чувствительны, однако атака на них может сделать непригодными все протоколы, логины будут выдыхаться раньше времени (или позже), cron-задачи начнут выполняться в самое неожиданное время... Если опасность велика, стоит рассмотреть покупку своего модуля GPS time.

Хорошей идеей является прикрыть сервис firewall, поскольку атака denial of service вредна для Вашей сети. В дополнение к этому, если возможно, Вы должны использовать шифрование, доступное в ntpd, основанном на DES. NTP работает через порт 123, протокол udp (при соединении с серверами они будут передавать данные со своего порта 123 на Ваш порт 123), так что firewall для него довольно прост:

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

или

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



Сетевые сервисы: Proxy


Обзор

Серверы proxy уровня приложений

SQUID

Cut the crap

WWWOFFLE

Серверы proxy уровня сессии

SOCKS

Dante

DeleGate

Proxy Gallery

Обзор

Как обычно, есть несколько пакетов proxy для Linux. Некоторые работают на уровне приложений (SQUID), другие на уровне сессии (SOCKS).

Серверы proxy уровня приложений



Сетевые сервисы: rsync


rsync чрезвычайно эффективный метод для зеркального отражения файлов. Он сохраняет связи, права доступа, время файла и прочее. В дополнение к этому, rsync поддерживает анонимный режим (который я использую для зеркального отражения этого документа). Программа rsync может работать как клиент (при запуске из командной строки или скрипта) или как сервер (обычно при запуске из inetd.conf). Программа непосредственно совершенно безопасна: не требуется привилегий root для работы как клиент или сервер (хотя это возможно, если Вы действительно хотите этого) и поддерживает chroot, заменяя корневой каталог на каталог зеркалирования (это однако требует привилегий root и может быть более опасно, чем работа без такой поддержки). Вы можете также задать user id и group id для обращения к системе (обычно nobody для большинства precompiled-пакетов rsync, и, вероятно, это самый лучший выбор). В неанонимном режиме rsync поддерживает username и пароли, которые зашифрованы с использованием 128-битного MD4. man-страница для rsyncd.conf совершенно ясно описывает установку rsync как сервера и настройку его, как относительно безопасного. Заданный по умолчанию файл конфигурации: /etc/rsyncd.conf. Он имеет глобальный раздел и разделы модулей (в основном, каждый разделенный каталог представляет собой модуль).

Пример файла rsyncd.conf:

motd file = /etc/rsync.motd # specifies a file to be displayed, # legal disclaimer, etc. max connections = 5 # maximum number of connections so you don't # get flooded [pub-ftp] comment = public ftp area # simple comment path = /home/ftp/pub # path to the directory being exported read only = yes # make it read only, great for exported # directories chroot = yes # chroot to /home/ftp/pub uid = nobody # explicitly set the UID gid = nobody # explicitly set the GID [secret-stuff] comment = my secret stuff path = /home/user/secret # path to my stuff list = no # hide this module when asked for a list secrets file = /etc/rsync.users # password file auth users = me, bob, santa # list of users I trust to see my # secret stuff hosts allow = 1.1.1.1, 2.2.2.2 # list of hosts to allow


Как Вы можете видеть, rsync легко настроить, и он очень безопасен, кроме передачи файлов, которые никогда не шифруются. Если Вы нуждаетесь в защите, я предлагаю, чтобы Вы использовали SSH для туннелирования подключения или некоторое VPN-решение подобне FreeS/WAN. Также удостоверитесь, что Вы работаете с rsync 2.3.x или выше, поскольку в 2.2.x была сияющая дыра в защите. Rsync доступен на

http://rsync.samba.org
. Rsync работает через порт 873, протокол tcp.

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

или

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

Back



Written by Kurt Seifried


Сетевые сервисы: SNA


Обзор

Программное обеспечение SNA

ICE Linux-SNA

Обзор

SNA очень общий сетевой протокол, который напоминает возвращение назад к дням IBM и "тяжелого железа".

Программное обеспечение SNA



Сетевые сервисы: Tftp


tftp (Trivial File Transfer Protocol) используется для устройств, которые требуют информации из сети, обычно при начальной загрузке. Это чрезвычайно простая форма ftp, в которой нет большинства средств защиты и продвинутых команд, это в основном позволяет устройству отыскивать и передавать файлы с сервера очень простым способом. Tftp почти исключительно используется для автоматизированных рабочих мест без диска, данных конфигурации маршрутизатора, и любых устройств, которые загружаются и требуют информации, которую не могут хранить постоянно. Это также огромная дыра в защите. Только представьте что будет, если кто-то подсоединится к серверу и захватит настройки маршрутизатора!



Сетевые сервисы: WWWemail


Обзор

Некоммерческие серверы

AtDot

acmemail

IMHO

IMP

MailMan

SquirrelMail

TWIG

WebMail

Коммерческие серверы

Coconut WebMail Pro

DmailWeb

WebImap



Сетевые сканеры


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



Sftp


sftp работает поверх ssh, что позволяет использовать безопасные ftp-сеансы. Доступен на

http://www.xbill.org/sftp.

Back

Written by Kurt Seifried



Shell-протоколы


Ряд оболочек имеет встроенные возможности регистрации.



Shell-серверы


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

Telnet

Telnet - SSL

SSLtelnet и MZtelnet

Slush

SSH: клиент и сервер

SSH

OpenSSH

LSH

OSSH

SSH: клиенты

Fresh Free FiSSH

Tera Term

putty

mindterm

Secure CRT

Fsh

SSH Win32 ports

SRP

NSH

R-сервисы



Шифрование данных и почты


Имеется много программ для шифрования. Часть работает на уровне файла (PGP, GnuPG), часть на уровне устройства (Cryptographic File System). Это используется в основном для хранения данных. Передача сопряжена с рядом проблем: одинаковые программы, совместимые версии программ и обмен ключами по защищенному каналу, что сложно. Системы дисковой защиты наподобие CFS (Cryptographic FileSystem) просты в использовании и требуют только чтобы пользователь ввел определенный ключ для доступа к файлам. Хорошая статья о выборе размеров ключа есть на

http://www.cryptosavvy.com, рекомендую ознакомиться, так как там рассмотрен ряд несколько неожиданных проблем.



Шифрование сервисов и данных


Шифрование данных и почты

PGP (Pretty Good Privacy)

GnuPG (Gnu Privacy Guard)

pgp4pine

HardEncrypt

secret-share

Шифрование жесткого диска

CFS (Cryptographic Filesystem)

TCFS

PPDD

Encrypted Home Directory

BestCrypt

Сетевое шифрование

IPSec: IP Sec посвящен целый раздел.

SSL

Источники случайных данных

Как спрятать данные на диске

StegFS

StegHide

OutGuess



Шифрование сетевых сервисов


Весь сетевой трафик может быть легко прочитан, поскольку он не шифруется. Разные механизмы существуют или создаются для шифрования трафика на разных уровнях стека протоколов. Некоторые схемы только шифруют данные, посланные (типа GnuPG, шифрующего email), некоторые шифруют сеанс (SSL) и некоторые шифруют полезный груз данных пакетов (IPSEC и другие VPN). В конечном счете самым лучшим решением будет IPSEC (мое мнение), поскольку не требуется никаких модификаций прикладных программ, и обеспечивается очень высокий уровень защиты между компьютерами. Сейчас единого протокола, используемого всеми, частично из-за интриг фирмы Microsoft, которая поддерживает только свои стандарты (справедливости ради надо заметить, что поддержка IPSec в тестовом варианте у нее есть, но тестовый вариант Microsoft...), частично из-за ряда законодательных проблем. Самая лучшая схема в настоящее время SSL, Secure Sockets Layer, первоначально предложенная Netscape. SSL шифрует данные на уровне сеанса, таким образом, если прикладная программа и сервер поддерживают SSL, Вы сможете защититься. Большинство www браузеров, некоторые email/news читатели, и несколько ftp и telnet клиентов поддерживает SSL в настоящее время. Для Linux большинство услуг может быть защищено SSL. Библиотеки SSL доступны на

http://www.openssl.org. Для работы через firewall может потребоваться NAT box (Linux с IP Masquerading), подробности в

разделе о firewall.



Simple Web Server


Simple Web Server полностью соответствует своему названию. Базовые функции и никаких наворотов. Скачать можно с http://linuxstuffs.cjb.net.