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

         

Административные инструментальные средства


Обзор

Локальные инструментальные средства

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


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

Security:

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.