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 и "тяжелого железа".
Сетевые сервисы: 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.