Административные инструментальные средства
Обзор
Локальные инструментальные средства
YaST
sudo
Super
runas
Инструментальные средства, основанные на WWW
Webmin
Linuxconf
COAS
WebRAT
Инструментальные средства, основанные на сети
Pikt
VNC
cfengine
Storm Administration System (SAS)
Administravia
Contributors
Contributions
PGP-ключи
Как это делалось
Afbackup
Afbackup еще один клиент-серверный пакет, распространяется по GPL с одной оговоркой: разработка сервера под Windows запрещена. Afbackup имеет серверы под Linux, HP-UX и Solaris, а также клиенты под данные системы и windows. Скачать можно с
ftp://ftp.zn-gmbh.com/pub/linux.
AFS
Коммерческий протокол совместного использования файлов для крупных систем с очень большими требованиями к защите и эффективности.
AIDE
AIDE замена tripwire, которая пытается быть лучше самого tripwire. GPL делает данный пакет более привлекательным с точки зрения доверия. Он поддерживает несколько алгоритмов хеширования, и Вы можете загрузить его с
http://www.cs.tut.fi/~rammer/aide.html.
Alien
alien возможно лучшая утилитав для конвертации файлов. Поддерживает rpm, deb и tarball. Скачать можно с http://kitenet.net/programs/alien .
Amanda
Amanda клиент-серверный пакет для резервирования с поддержкой многих возможностей и Windows (через SAMBA). Amanda распространяется по BSD-style лицензии и доступна на
http://www.amanda.org.
AMaViS
AMaViS использует программы третьих фирм (например, McAfee) для проверки на вирусы входящей почты. Получить AMaViS можно на http://aachalon.de/AMaViS. Обязательно берите последнюю версию!
Sendmail
Использование AMAVIS с Sendmail относительно просто, он имеет программу, названную "scanmail", который действует как замена для procmail (обычно программа, которая обрабатывает локальную доставку email). Когда email приходит вместо того, чтобы использовать procmail, чтобы доставить почту, Sendmail вызывает scanmail, который распаковывает и декодирует любые вложения и затем использует вирусный сканер (по Вашему выбору), чтобы просмотреть вложения. Если никакой вирус не найден, то доставка почты идет как обычно. Если вирус найден, email послан назад отправителю с сообщением, что они послали вирус, и будет послан email получателю, сообщающий о человеке, который послал им вирус. Инструкции смотрите на
http://satan.oih.rwth-aachen.de/AMaViS/amavis.html.
Postfix
Так как Postfix может использовать procmail, чтобы делать локальную доставку почты, это должно работать в теории без проблем. Практически требуется приложить несколько больше усилий, чтобы работать правильно. Замените строку в файле main.cf:
mailbox_command = /usr/bin/procmail
на строку:
mailbox_command = /usr/sbin/scanmails
и перезапустите postfix. Для локального предупреждения (предполагаемому адресату вируса) имя машины (sundog, mailserver01) должно быть упомянуто в ?mydestination? в файле main.cf, иначе предупреждение не будет послано вовсе. Вы должны (и большинство сайтов так делают) переназначить root email на пользователя использующего файл псевдонимов, иначе предупреждения не будут доходить до него. По умолчанию также почта к ?virusalert? перенаправлена к root, Вы должны также переназначить эту почту нормальному пользователю.
Amd
Еще одни сервис, установленный по умолчанию в OpenLinux 2.2, Auto Mount Daemon (amd). Он позволяет Вам определять каталоги и устройства nfs, так что я могу определять /auto/cdrom как /dev/cdrom, так что когда Вы ?cd /auto/cdrom? система смонтирует /dev/cdrom как /auto/cdrom с соответствующими параметрами (только для чтения, и т.д.). Сервис amd использует полупроизвольный номер порта, обычно в диапазоне 600-800. Этот сервис определенно очень полезно на автоматизированном рабочем месте, так как избавляет пользователей от необходимости вручную монтировать каждое сменное устройство, которое они желают использовать (cdrom или дискета обычные примеры таких устройств). Однако я не рекомендовал бы его на серверных машинах, из-за хронологии проблем с amd. Выключение amd простое: переименуйте ссылки ?S30amd? в ?K70amd?:
mv /etc/rc.d/rc3.d/S30amd /etc/rc.d/rc3.d/K70amd mv /etc/rc.d/rc5.d/S30amd /etc/rc.d/rc5.d/K70amd
AntiSniff
Как упомянуто выше, AntiSniff инструмент, который исследует сетевые устройства, чтобы увидеть, работают ли они в ином режиме, чем нормальный режим работы. Это, возможно, эффективно, и будет работать против большинства перехватчиков. Скачать можно с
http://www.l0pht.com/antisniff.
Back
Written by Kurt Seifried |
AntiVir
AntiVir еще один коммерческий сканер, работает на разных Windows и Linux. Скачать можно с http://www.hbedv.com.
AOL Server
Я знаю, это звучит странно, но это правда. AOL Server это свободный www-сервер с доступными исходными кодами. К тому же, он поддерживает SSL и несколько других продвинутых свойств. Определенно, стоит посмотреть... Скачать можно с http://aolserver.com.
После установки и настройки www-сервера надо предоставить доступ к файловой системе, чтобы пользователи могли выкладывать странички. Для этого есть 4 наиболее популярных способа, но о них позже.
Apache
По умолчанию Apache работает как пользователь 'nobody', давая очень небольшой доступ к системе, и вообще говоря группа авторов Apache сделала превосходную работу по обеспечению безопасности. Вообще-то все www-серверы безопасны, все что они делают, это получают данные из системы и отсылают их. Опасность ждет Вас со стороны плохих CGI, server side includes и тому подобного.
Многие серверы, основанные на Apache (Red Hat Secure Server, Stronghold и другие) имеют исправленные ошибки, но в них появились другие проблемы. Скачать Apache можно с
http://www.apache.org. Он также входит почти во все дистрибутивы как пакет программ.
Chroot'ing Apache
Если Вы хотите быть параноидальными, я предложил бы запускать Apache в chroot'ed среде, но это иногда создает больше проблем, чем решает. Выполнение этого разорвет очень многие вещи. Вы должны также установить многочисленные библиотеки, Perl и любые другие утилиты, которые Apache будет использовать, также как любые файлы конфигурации, к которым Вы желаете иметь доступ. Использование CGI также превратится в проблему.
Самый простой путь к установке chroot'ed просто поставить его, переместить и отредактировать некоторые файлы. Хорошая мысль: создайте каталог (например, /chroot/apache), предпочтительно на отдельной файловой системе и создать структуру файлов для Apache. В примере ниже просто поменяйте /chroot/apache на Ваш выбор. Вы должны, конечно, выполнить эти шаги как root. RPM поддерживает директиву ?--root /some/dir?, что позволяет легко поставить Apache и все нужные библиотеки с помощью rpm. Используйте ldd, чтобы выяснить какие именно библиотеки нужны, и переместите их в каталог /chroot/apache (если Ваша система не поддерживает rpm).
[seifried@host seifried]$ ldd /usr/bin/httpd libm.so.6 => /lib/libm.so.6 (0x40017000) libc.so.6 => /lib/libc.so.6 (0x40060000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Apache протоколирует запросы и свою работу сам, так что не нужно ставить pseudo logging daemons вроде holelogd для передачи данных в syslog.
Apache с mod_ssl
http://www.modssl.org. Я его почти не тестировал.
Создание сертификатов
Это простая часть, следующий шаг должен создать набор ключей и затем конфигурировать httpsd.conf, чтобы использовать их. Найдите, где установлен "openssl" и убедитесь, что он прописан в path, затем cd туда, где лежат файлы настройки Apache. Если нужно создать тестовый сертификат для внутреннего пользвания, скомандуйте:
openssl genrsa -des3 > httpsd.key openssl req -new -x509 -key httpsd.key > httpsd.crt
Браузеры будут громко жаловаться относительно этого сертификата, потому что он создан человеком, который его подписал, и они недоверяют ему. Если Вы хотите генерировать сертификат и запрос удостоверения, чтобы послать кому-то подобно Thawte или Verisign, скомандуйте:
openssl genrsa -des3 > httpsd.key openssl req -new -key httpsd.key > httpsd.csr
Вы можете также получать реальные сертификаты с ограниченным сроком действия (обычно неделя или две) от Verisign, чтобы использовать для тестирования их в среде "реального мира".
Настройка Apache для работы с SSL
Имеется несколько вещей, которые Вы будете должны добавить к Вашему файлу конфигурации Apache, чтобы получить Apache с SSL-расширениями, фактически делающими что-нибудь полезное с Вашими сертификатами. Вы будете должны добавить некоторые глобальные параметры настройки конфигурации (обратите внимание, что они применимы для 1.3.9 и не будут работать в более ранних версиях Apache):
# you will need to tell apache to listen to port 443, by default # it only goes for 80 Listen 443 # if you use more then one secure site on an IP (BAD IDEA) you will need: NameVirtualHost 10.1.1.1:443 #it's a good idea to disable SSL globally and enable it on a per host basis SSLDisable # SSL cache server, without this your server will die SSLCacheServerPath /usr/bin/gcache # port the cache server runs on SSLCacheServerPort 12345 # timeout for the SSL cache, set shorter for testing, 300 is a good # "real world" value SSLSessionCacheTimeout 300
Создайте виртуальный хост с поддержкой SSL:
<VirtualHost www.example.com:443> DocumentRoot /www/secure ServerName www.example.com ServerAdmin example@example.com ErrorLog logs/https_error.log TransferLog logs/https_access.log # enable SSL for this virtual host SSLEnable # this forbids access except when SSL is in use. Very handy for defending # against configuration errors that expose stuff that should be protected SSLRequireSSL SSLCertificateFile /usr/conf/httpsd.crt # if the key is not combined with the certificate, use this # directive to point at the key file. [OPTIONAL] SSLCertificateKeyFile /usr/conf/httpsd.key # If you want to require users to have a certificate you will need # a bundle of root certificates so you can verify their personal certificates #SSLCACertificateFile /etc/ssl/ca-cert-bundle.pem SSLVerifyClient none </VirtualHost>
Apache-SSL
Это то, которое я в настоящее время использую (просто потому, что я пробовал прежде Apache с mod_ssl, и это работало). Вам понадобится счкачать Open-SSL, откмпилировать и поставить его, а затем поставить патч Apache-SSL для Apache и пересобрать Apache. Open-SSL доступен на http://www.openssl.org, просто скачайте последний tarball, распакуйте его и выполните:
./config make make test make install
Затем получите Apache-SSL stuff с
http://www.apache-ssl.org, распакуйте куда-нибудь исходники Apache, cd в каталог верхнего уровня (например, /usr/local/src/apache_1.3.9) и распакуйте сюда же Apache-SSL stuff. Затем просто запустите:
./FixPatch
Это должно работать (если не работает, прочтите инструкцию в README.SSL), затем настройте Apache как обычно, выполните make, затем make install. Теперь читайте раздел "Создание сертификатов".
Arkeia
Arkeia очень мощная резервная программа с архитектурой клиент-сервер и поддержкой многих платформ. Ориентирована на крупные системы и рассмотрена в Linux Journal (April 1999, page 38). Загрузить shareware-версию можно с http://www.arkeia.com.
AtDot
AtDot доступен по лицензии GNU и написан на perl. Он имеет несколько режимов работы, делающих его подходящим для ряда ситуаций (провайдеры в стиле hotmail, ISP, и т.п.). Загрузить можно с
http://www.nodomainname.net/software/atdot.
Auditd
auditd позволяет Вам использовать регистрирующие средства на уровне ядра (очень мощный инструмент). Вы можете регистрировать сообщения почты, события системы и нормальные элементы, что делает и syslog, но в дополнение к этому Вы можете отслеживать события типа специфических пользователей, открывающих файлы, выполнение программ, setuid-программ, и так далее. Если Вы нуждаетесь в твердом контрольном следе, значит этот инструмент для Вас! Вы можете получить его с
ftp://ftp.hert.org/pub/linux/auditd.
Аутенфикация
PAM
Модуль PAM Cryptocard
Модуль Pam Smart Card
Модули PAM для SMB
Пароли
Вскрытие паролей
John the ripper
Crack
VCU
Хранение паролей
Gpasman
Strip
AutoRPM
AutoRPM вероятно самый лучший инструмент для обновления rpm. Вам надо просто указать каталог ftp, после чего будут скачаны и установлены пакеты, которые являются более новыми чем те, которые Вы имеете. Пожалуйста имейте в виду что если кто-то отравляет Ваш кэш DNS, Вы легко попадете в неприятную историю, так что удостоверьтесь, что используете IP-адрес ftp-сайта, а не имя. AutoRPM требует установки пакета libnet Net::FTP для Perl и доступен на
http://www.kaybee.org/~kirk/html/linux.html.
AVP
Kaspersky lab's тоже портировала свой антивирусный сканер под Linux. Скачать его можно с
http://www.kasperskylab.ru/eng/products/linux.html
Автоматическая связь
В автоматическом режиме Вы имеете 256-битный ключ на обоих концах туннеля. Его время действия ограничено 8 часами.
ipsec.secrets хранит разделяемый ключ. Этот файл должен сохраниться безопасным любой ценой. Для соединения между серверами 1.2.3.4 и 5.6.7.8 нужна строка, подобная:
1.2.3.4 5.6.7.8 ?0xa3afb7e6_20f10d66_03760ef1_9019c643_a73c7ce0_91e46e84_ef6281b9_812392bf?
Эта строка должна быть в файле ipsec.secrets на обеих машинах. Затем в ipsec.conf надо поправить настройку туннеля:
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 keyexchange=ike keylife=8h keyingtries=0
Pluto daemon будет запускаться, пробовать соединиться с Pluto daemon на другом конце туннеля и устанавливать подключение. Pluto работает на порте 500, протокол UDP, так что придется открыть доступ через firewall:
ipchains -A input -p udp -j ACCEPT -s 0.0.0.0/0 -i eth0 -d 0.0.0.0/0 500
По-моему, удобно использовать ключевое слово ?%search? вместо того, чтобы указывать tunnel, добавляя:
auto=start
к каждой туннельной конфигурации и редактировать ipsec.secrets:
plutoload=%search plutostart=%search
Это в конечном счете сделает Вашу жизнь проще. Если все идет хорошо, Вы должны видеть что-то вроде этого в /var/log/messages:
Jun 26 02:10:41 server ipsec_setup: Starting FreeS/WAN IPSEC... Jun 26 02:10:41 server ipsec_setup: /usr/local/lib/ipsec/spi: message size is 28. Jun 26 02:10:41 server ipsec_setup: KLIPS debug `none' Jun 26 02:10:41 server ipsec_setup: KLIPS ipsec0 on eth0 1.2.3.4/255.255.255.0 broadcast 24.108.11.255 Jun 26 02:10:42 server ipsec_setup: Disabling core dumps: Jun 26 02:10:42 server ipsec_setup: Starting Pluto (debug `none'): Jun 26 02:10:43 server ipsec_setup: Loading Pluto database `my-tunnel': Jun 26 02:10:44 server ipsec_setup: Enabling Pluto negotiation: Jun 26 02:10:44 server ipsec_setup: Routing for Pluto conns `my-tunnel': Jun 26 02:10:45 server ipsec_setup: Initiating Pluto tunnel `my-tunnel': Jun 26 02:10:45 server ipsec_setup: 102 "my-tunnel" #1: STATE_MAIN_I1: initiate Jun 26 02:10:45 server ipsec_setup: 104 "my-tunnel" #1: STATE_MAIN_I2: from STATE_MAIN_I1; sent MI2, expecting MR2 Jun 26 02:10:45 server ipsec_setup: 106 "my-tunnel" #1: STATE_MAIN_I3: from STATE_MAIN_I2; sent MI3, expecting MR3 Jun 26 02:10:45 server ipsec_setup: 003 "my-tunnel" #1: STATE_MAIN_I4: SA established Jun 26 02:10:45 server ipsec_setup: 110 "my-tunnel" #2: STATE_QUICK_I1: initiate Jun 26 02:10:45 server ipsec_setup: 003 "my-tunnel" #2: STATE_QUICK_I2: SA established Jun 26 02:10:46 server ipsec_setup: ...FreeS/WAN IPSEC started
А в файле /var/log/ secure Вы должны видеть нечто вроде:
Jun 26 02:10:42 server Pluto[25157]: Starting Pluto (FreeS/WAN Version snap1999Jun14b) Jun 26 02:10:44 server Pluto[25157]: added connection description "my-tunnel" Jun 26 02:10:44 server Pluto[25157]: listening for IKE messages Jun 26 02:10:44 server Pluto[25157]: adding interface ipsec0/eth0 1.2.3.4Jun 26 02:10:44 server Pluto[25157]: loading secrets from "/etc/ipsec.secrets" Jun 26 02:10:45 server Pluto[25157]: "my-tunnel" #1: initiating Main Mode Jun 26 02:10:45 server Pluto[25157]: "my-tunnel" #1: ISAKMP SA established Jun 26 02:10:45 server Pluto[25157]: "grumpy-seifried" #2: initiating Quick Mode POLICY_ENCRYPT+POLICY_TUNNEL+POLICY_PFS Jun 26 02:10:45 server Pluto[25157]: "my-tunnel" #2: sent QI2, IPsec SA established Jun 26 02:11:12 server Pluto[25157]: "my-tunnel" #3: responding to Main Mode Jun 26 02:11:12 server Pluto[25157]: "my-tunnel" #3: sent MR3, ISAKMP SA established Jun 26 02:11:12 server Pluto[25157]: "my-tunnel" #4: responding to Quick Mode Jun 26 02:11:12 server Pluto[25157]: "my-tunnel" #4: IPsec SA established Jun 26 02:31:31 server Pluto[25157]: "my-tunnel" #5: responding to Main Mode Jun 26 02:31:32 server Pluto[25157]: "my-tunnel" #5: sent MR3, ISAKMP SA established Jun 26 02:31:32 server Pluto[25157]: "my-tunnel" #6: responding to Quick Mode Jun 26 02:31:32 server Pluto[25157]: "my-tunnel" #6: IPsec SA established
В дополнение к этому Вы можете просмотреть вывод ?eroute?, чтобы удостовериться что туннели правильно сконфигурированы:
10.0.0.0/24 -> 192.168.0.0/24 => tun0x114@1.2.3.4
И если Вы рассматриваете Ваши маршруты (?route?) Вы должны увидеть:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
1.2.3.4 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 10.0.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth 11.2.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 1.2.3.0 0.0.0.0 255.255.255.0 U 0 0 0 ipsec0 192.168.0.0 1.2.3.1 255.255.255.0 UG 0 0 0 ipsec0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo0.0.0.0 1.2.3.1 0.0.0.0 UG 0 0 0 eth0
Автообновление и dpkg
Менеджер пакетов Debian (dpkg и apt-get) поддерживает автообновление пакетов и всех их зависимостей с ftp-сервера. Просто создайте скрипт, который будет ежедневно вызываться из cron:
#!/bin/bash PATH=/usr/bin apt-get update apt-get upgrade
Единственная дополнительная вещь, которую Вы будете должны сделать, выбрать конфигурацию места загрузки в списке /etc/apt/sources.list и общую настройку apt в /etc/apt/apt.conf, скачать все это можно с
http://www.debian.org/Packages/stable/admin/apt.html.
Автообновление и tarballs/tgz
Я не знаю никаких утилит, так что если знаете, сообщите мне (утилита должна хотя бы зеркалировать, автоматически распаковывать и выполнять ?./configure; make; make install?).
Backups
Многое забывается, но Вы можете сравнивать текущие файлы с их резервными копиями. Поддерживается много носителей (ленты, дискеты, CD-R...). Носитель может быть сделан доступным только для чтения, так что копия недавно установленной системы обеспечивает хороший эталонный тест. Утилиты ?diff ? и ?cmp? могут использоваться, чтобы сравнить файлы друг с другом. См. в разделе Резервирование список программного обеспечения.
Baselines
Главная оплошность большинства людей при обеспечении безопасности их машин в том, что они забывают создать опорную линию системы, которая является профилем системы, схемой использования ресурсов и т.п. в нормальной работе. Например, простой "netstat -a -n > netstat-output" может дать Вам много полезной информации (в частности о всех открытых портах, которые может быть стоит закрыть). Использование памяти и диска также полезно для изучения системы. Внезапное колебание в использовании памяти может кончиться нехваткой ресурсов в системе. Для отслеживания использования памяти и диска есть несколько команд: vmstat, free, df, du, все они подробно описаны на их man-страницах.
Как минимум, резервируйте систему и все файлы протоколов, что поможет выявить что же происходит. Не забывайте, что совсем не факт, что система атакована! Часто причиной может оказаться какая-нибудь новая программа, которая ничего плохого не делает. Также ведите журнал важных событий в системе (пользователь "rewt" был добавлен в резервной копии от 4 апреля, так что его наличие в копии от 20 марта выглядит странно). Если систему все-таки кто-то вскрыл, в ней обычно стоит "rootkit", содержащий в себе троян или целый выводок троянов. Удалить их часто бывает почти невозможно, не развалив при этом систему целиком. Так что в ряде случаев проще отформатировать диск и установить все заново. Правда, если Вы используете инструментальные средства контроля целостности файла/каталога вроде L5, Вы будете способны точно определить измененные файлы и иметь дело только с ними.
Имеется также ряд инструментальных средств, которые не входят ни в одну из рассматриваемых в данном разделе категорий, но нацелены на обнаружение и отражение нападения. Одно из них, проект Linux Intrusion Detection System (LIDS).
Bash
Я рассмотрю bash поскольку это заданная по умолчанию оболочка в большинстве версий Linux. bash имеет большое количество переменных, которые Вы можете конфигурировать во время выполнения. Можно настроить все: от стиля приглашения ко вводу команды, до того сколько строк хранить в журнале.
HISTFILE
имя файла протокола, по умолчанию ~username/.bash_history
HISTFILESIZE
максимальное количество команд, хранимых в файле, обеспечивается прокрутка при необходимости.
HISTSIZE
сколько команд помнить (при использованни клавиши up arrow).
Переменные обычно задаются в /etc/profile, который настраивает bash для всех пользователей глобально, но они могут быть перекрыты в файле ~username/.bash_profile вручную используя команду export чтобы установить переменные типа export EDITOR=emacs. Это одна из причин того, почему каталоги пользователей не должны быть всемирно читаемыми; файл .bash_history может содержать много ценной информации. Вы можете запретить запись в него, выключить ведение протокола через свой файл .bash_profile или связать его с /dev/null, дабы не дать bash вести протокол. Для root я рекомендую задать минимальные значения HISTFILESIZE и HISTSIZE (например 10). С другой стороны, если Вы хотите регистрировать хронологию оболочки пользователей для анализа их действий задайте для этих файлов атрибуты immutable и append only, используя команду .bash_history. Правда, такой подход создаст еще ряд проблем, так что заручитесь согласием пользователей.
Back
Written by Kurt Seifried |
Bash имеет встроенный ограничитель, к которому обращаются через ? ulimit?. Любые жесткие ограничения не могут быть установлены выше, если Вы имеете ограничения, определенные в /etc/profile. Это полезно для старых дистрибутивов без поддержки PAM. Вы должны также гарантировать, что пользователь не может изменять оболочку. Параметры настройки ограничений подобны методу PAM&:
ulimit ?Sc 0 ulimit ?Su 100 ulimit ?Hu 150
Эти три правила достигли бы того же результата как вышеприведенные в примере с PAM. Первое правило отключает дампы ядра, второе правило устанавливает soft-ограничение в 100 процессов, и третье правило устанавливает жесткое ограничение в 150 процессов. Справка по ulimit доступна по команде ?help ulimit? на приглашение bash.
BASS
BASS is the ?Bulk Auditing Security Scanner? позволяет просмотреть internet на предмет известных эксплойтов. Скачать можно с
http://www.securityfocus.com/data/tools/network/bass-1.0.7.tar.gz
Bastille Linux
Bastille Linux представляет собой укрепляющий скрипт для Red Hat Linux. Вы можете найти подробности о нем на:
http://www.bastille-linux.org/, и загрузить с: ftp://ftp.bastille-linux.org/.
Back
Written by Kurt Seifried |
Если Вы запустили Red Hat Linux попробуйте использовать укрепляющий скрипт Bastille Linux, доступный на: http://www.bastille-linux.org/.
Back
Written by Kurt Seifried |
BestCrypt
BestCrypt коммерческий продукт с исходниками доступными для Windows и Linux. Скачать можно с http://www.jetico.com .
BetaFTPD
BetaFTPD однопоточный маленький сервер. Скачать можно с
http://members.xoom.com/_XOOM/sneeze/betaftpd.html.
Безопасная настройка Apache
Самый простой способ ограничить доступ: создайте каталог /www или подобный и разместите в его иерархии ВСЕ данные, доступные для web-сервера: все сайты, cgi и прочее. Затем установите в access.conf запрет доступа к / и разрешите доступ к /www и разлиным его каталогам cgi-bin.
Пример httpd.conf:
<Directory /> Options None AllowOverride None </Directory>
<Directory /www > Options Indexes FollowSymLinks Includes AllowOverride None </Directory>
Контроль доступа
Доступ к каталогам может также легко управляться, Apache поддерживает определение и размещение файлов (обычно упоминаемых как htaccess-файлы), которые могут управлять доступом, основываясь на username и пароле, IP-адресе происхождения и т.д. Это определено в файле srm.conf:
AccessFileName .htaccess
Формат этого файла подробно описан в документации на Apache и идентичен директивам в access.conf. Авторизация пользователей по username и паролю также подробно описана на
http://www.apacheweek.com/features/userauth.
Если Вы хотите, чтобы никто не мог просмотреть файлы .htaccess, впишите в srm.conf:
<Files .htaccess> order allow,deny deny from all; </Files>
Это запретит просмотр файлов с именем '.htaccess'.
apache-userdirldap
apache-userdirldap позволяет использовать каталог LDAP для просмотра домашних каталогов пользователей. Другими словами, можно переместить всех пользователей в структуру LDAP directory, и они будут авторизоваться через нее. Скачать можно с
http://horde.net/~jwm/software/apache-userdirldap.
Безопасное программирование
Основной проблемой защиты в Linux является то, что программы либо написаны с дырами, либо опасно поставлены. Большинство дыр (в том числе наиболее популярная buffer overruns) вызваны именно этим. Проблемы становятся еще заметней, когда программа выполняется через механизм etuid как root. Есть ряд приемов, которые позволяют программисту избежать проблем.
Безопасное удаление файлов
Одна из вещей, которые обычно забывают, в том, что если файл удаляется, то реально-то он никуда не денется, и если его не уничтожить каким-то способом, то восстановить данные из него в принципе возможно. Есть программы, которые переписывают файл при удалении, что делает гарантированно невозможным восстановление его содержимого.
Безопасность файлов и файловых систем
Обзор
Безопасное удаление файлов
wipe (durakb@crit2.univ-montp2.fr)
wipe (thomassr@erols.com)
Списки контроля доступа (ACL)
RSBAC
Проект Linux trustees (ACL) project
Системные файлы
/etc/passwd
/etc/shadow
/etc/groups
/etc/gshadow
/etc/login.defs
/etc/shells
/etc/securetty
Безопасность и настройка X-сервера
Имеется ряд методов гарантировать безопасный доступ к X-серверу.
Безопасность маршрутизации
Есть несколько программ маршрутизации (routing) для Linux. Многие из них поддерживают новые протоколы маршрутизации, которые имеют хорошие возможности защиты, наравне со старыми протоколами, например, RIP.
Безопасные серверы WWW
Имеется несколько свободных и несколько коммерческих вариантов Apache с SSL. Здесь Вас ждут бюрократические рогатки, связанные с политикой разных государств относительно стойкой криптографии. Что ж, регулирование интернета пока ни у кого не получилось, хотя и пытались... Есть несколько статей в которых подробно рассматриваются защищенные серверы:
Web server round-up, часть 1
Web server round-up, часть 2
Bind
Большинство дистрибутивов включают bind 8.x, однако ни один (насколько мне известно) не использует установку для не-root, по умолчанию использован chroot. Исправить данное упущение просто:
-u
указывает с каким UID bind будет работать как только свяжется с портом 53 (я использую пользователя 'named' без каких-либо прав, аналог 'nobody').
-g
указывает с каким GID bind будет работать как только свяжется с портом 53 (я использую группу 'named'без каких-либо прав, аналог 'nobody').
-t
указывает каталог, который bind будет использовать после запуска, в этом каталоге, Вы должны разместить все нужные для bind библиотеки, и файлы конфигурации. Хорошим выбором является /home/named.
Еще один способ: скачать пакет bind-chroot, доступный для большинства дистрибутивов и поставить его. Перед установкой создайте (можно с помощью groupadd и useradd) группу и пользователя, на UID/GID которых bind сменит свои после запуска. Многие пакеты используют holelogd для протоколирования данных bind в /var/log/messages (нормальный режим работы bind). Файл настроек обычно безопасен (то есть, Вы не сможете запросить версию bind).
Другой аспект bind: он хранит данные о Вашей сети. Когда делается запрос DNS обычно посылается маленькая просьба о части информации. Например, что является адресом IP для www.seifried.org? Но есть доменные запросы, где DNS запрашивает всю информацию для, скажем, seifried.org, захватывает ее и может затем делать ее доступной другому (в случае вторичного DNS-сервера). Это потенциально очень опасно. Bind версии 4 толковой защиты не имел. Вы могли ограничивать передачи некоторым сервером, но толку было мало. Это изменилось в Bind 8, документация есть на
http://www.isc.org/bind.html. Помните, что обезопасить придется ВСЕ зональные серверы (как master, так и secondaries), поскольку secondary могут прекрасно передать данные за пределы зоны.
Имеется относительно безопасный файл named.conf (из пакета bind-chroot с ftp://ftp.tux.org):
options { // The following paths are necessary for this chroot directory "/var/named"; dump-file "/var/tmp/named_dump.db"; // _PATH_DUMPFILE pid-file "/var/run/named.pid"; // _PATH_PIDFILE statistics-file "/var/tmp/named.stats"; // _PATH_STATS memstatistics-file "/var/tmp/named.memstats"; // _PATH_MEMSTATS // End necessary chroot paths check-names master warn; /* default. */ datasize 20M; };
zone "localhost" { type master; file "master/localhost"; check-names fail; allow-update { none; }; allow-transfer { any; }; };
zone "0.0.127.in-addr.arpa" { type master; file "master/127.0.0"; allow-update { none; }; allow-transfer { any; }; };
// Deny and log queries for our version number except from localhost zone "bind" chaos { type master; file "master/bind"; allow-query { localhost; }; };
zone "." { type hint; file "named.zone"; };
zone "example.org" { type master; file "zones/example.org"; allow-transfer { 10.2.1.1; 10.3.1.1; }; };
DNS работает на порте 53, используя протоколы udp и tcp, udp используется для нормальных запросов (это легко и быстро), tcp используется для зональных передач и больших запросов (скажем, dig www.microsoft.com). Таким образом, firewalling tcp относительно безопасен и определенно остановит любые зональные передачи, но случайный запрос DNS не сможет работать. Лучше использовать named.conf, чтобы управлять зональными передачами.
ipfwadm -I -a accept -P tcp -S 10.0.0.0/8 -D 0.0.0.0/0 53 ipfwadm -I -a accept -P tcp -S some.trusted.host -D 0.0.0.0/0 53 ipfwadm -I -a deny -P tcp -S 0.0.0.0/0 -D 0.0.0.0/0 53
или
ipchains -A input -p tcp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 53 ipchains -A input -p tcp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 53 ipchains -A input -p tcp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 53
Блокирует зональные передачи и большие запросы, следующие команды блокируют нормальные запросы (но не зональные передачи, так что при блокировке не забывайте использовать оба набора правил):
ipfwadm -I -a accept -P udp -S 10.0.0.0/8 -D 0.0.0.0/0 53 ipfwadm -I -a accept -P udp -S some.trusted.host -D 0.0.0.0/0 53 ipfwadm -I -a deny -P udp -S 0.0.0.0/0 -D 0.0.0.0/0 53
или
ipchains -A input -p udp -j ACCEPT -s 10.0.0.0/8 -d 0.0.0.0/0 53 ipchains -A input -p udp -j ACCEPT -s some.trusted.host -d 0.0.0.0/0 53 ipchains -A input -p udp -j DENY -s 0.0.0.0/0 -d 0.0.0.0/0 53
Chroot'ing DNS
http://www.etherboy.com/dns/chrootdns.html
BIOS
BIOS состоит из нескольких низкоуровневых компонентов, управляющих загрузкой компьютера и другими подобными задачами. Старые BIOS имеют универсальные пароли для доступа к системе, убедитесь, что у Вас такого нет. Bios может использоваться, чтобы настроить загрузку только с диска C:, что в общем хорошая мысль. Можно также использовать bios для блокировки floppy-дисковода. Также имеет смысл вылючить лишние последовательные порты, они едят лишние IRQ. Кстати, это упростит и настройку системы за счет уменьшения числа конфликтов IRQ и тому подобного. Есть программы, которые вытаскивают пароль из BIOS, одна такая есть на
http://www.esiea.fr/public_html/Christophe.GRENIER, в версиях для DOS и Linux.
BRU
BRU (Backup and Restore Utility) предоставляет относительно полный набор инструментальных средств в хорошем объединенном формате, с командной строкой и внешним графическим интерфейсом. Это средство поддерживает полные, инкрементные и дифференциальные копии и может писать данные в файл или на ленту. BRU доступно на
http://www.estinc.com/features.html.
BSD ftpd
BSD ftp server (ftpd) также был перенесен к Linux, так что если Вы хотите использовать именно его, Вы можете это сделать. Доступен на
ftp://quatramaran.ens.fr/pub/madore/ftpd-BSD.
Burt
Burt основан на Tcl/Tk, предназначен для простого копирования рабочих станций под Unix, работает везде и на всем. Burt имеет архитектуру клиент-сервер и является довольно легко масштабируемым. Доступен на
http://www.cs.wisc.edu/~jmelski/burt.
Быстрый старт Red Hat
Red hat обеспечивает средство для автоматизации установки, которое может быть очень полезным. Просто создайте текстовый файл с различными спецификациями установки, и положите его к установщику Red Hat, после чего сидите и смотрите на процесс установки. Это очень полезно при установке на несколько машин или при восстановлении машин пользователей (предполагается, что их данные зарезервированы). Подробности смотрите на:
http://www.redhat.com/mirrors/LDP/HOWTO/KickStart-HOWTO.html.
Caldera OpenLinux
Bugs: bugs@caldera.com
http://www.calderasystems.com/support/security
Support: support@caldera.com
Caldera имеет графическую программу установку для 2.2, названную ?lizard?, с рядом хороших свойств. В течение установки Вам придется создать пользователя, что позволяет не входить постоянно как root. Также имеется запись для ?sulogin? в файле /etc/inittab, так что нельзя просто ввести на приглашение lilo: ?linux single?, чтобы попасть в систему как root, Вы должны сначала ввести root-пароль. Имеются несколько проблем с заданной по умолчанию установкой, которую Вы должны исправить.
CD ISO-образы
Если Вы хотите жечь ваш собственный CD с дистрибутивом X, то образ можно взять на
http://freeiso.linuxsw.net и записать его на CD.
Cfengine
cfengine набор инструментальных средств для автоматизации задач администрации и контроля сети. Доступен на
http://www.iu.hioslo.no/cfengine/.
Cfingerd
Cfingerd (configurable fingerd) отличная замена для обычного fingerd, он сделан с учетом безопасности, работает обычно как не-root пользователь, и пользователи могут настроить как именно они будут представлены этим сервисом, Cfingerd можно скачать с
http://ftp.bitgate.com/cfingerd.
CFS (Cryptographic Filesystem)
CFS хранит все аднные на жестком диске в зашифрованном виде и просто использует для их шифрования какую-либо программу (например, PGP). Официальный сайт: http://www.cryptography.org, RPM доступен на
ftp://ftp.zedz.net/pub/replay/linux/redhat, а Debian binaries есть на
http://www.debian.org/Packages/unstable/non-us/cfs.html.
Check.pl
check.pl хорошая программа на Perl которая проверяет права доступа к каталогам и файлам и сообщает обо всех странностях и несоответствиях, которые найдет. Скачать можно с
http://opop.nols.com/proggie.html.
Cheops
Вообще-то, это не сканер, но позволяет быстро определить тип ОС на большом числе машин. Cheops представляет собой усиленный вариант "network neighborhood", он создает образ домена или IP-блока с указанием ОС и подобной инофрмации. Это чрезвычайно полезно для подготовки начального просмотра, поскольку Вы можете быстро найти интересные элементы (HP-принтеры, Ascend-роутеры и тому подобное). Cheops доступен на
http://www.marko.net/cheops.