up index search

   UP: 10.18 Краткий справочник по командам UNIX

10.18.1 Сервер Apache и сетевая безопасность в Red Hat
Семенов Ю.А. (ГНЦ ИТЭФ)

Сервер Apache доступен бесплатно (http://www.apache.org). Сначала надо загрузить сервер после чего следует вызвать сценарий configure (включен в дистрибутив), который автоматически определяет тип операционной системы, а также устанавливает соответствующие файлы сборки проекта. Потребуется указать каталог, где должен располагаться сервер Apache. Для этого предназначена опция -prefix:

%./configure -prefix=/usr/local/apache/

Некоторые компоненты сервера Apache могут включаться и отключаться с помощью опций -enable-module= и -disable-module = сценария configure. Установленный по умолчанию набор модулей вполне приемлем, но имеются и дополнительные модули (см. табл. ниже).

Таблица. Дополнительные модули Apache, которые по умолчанию не включены

Модуль Назначение
auth_dbm Использует базу данных DBM для управления доступом со стороны пользователей/групп (рекомендуется этот или следующий модуль, но не оба сразу)
auth_db Использует базу данных DB для управления доступом со стороны пользователей/групп
usertrack Позволяет отслеживать щелчки мышью в броузерах, поддерживающих технологию “cookie”
rewrite Переписывает URL-адреса, используя регулярные выражения
expires Позволяет включить в документ дату его истечения
proxy Конфигурирует Apache в качестве прокси-сервера

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

Таблица. Модули Apache, которые могут быть отключены

Модуль Функция
asis Позволяет посылать файлы указанных типов без использования HTTP-заголовков
autoindex Индексирует каталоги, в которых отсутствует начальная HTML-страница (например, index.html)
env Позволяет устанавливать специальные переменные среды для >CGI-сценариев
include Разрешает использовать серверные вставки (старый способ создания динамического содержимого)
userdir Разрешает пользователям иметь собственные HTML-каталоги

Полный перечень стандартных модулей можно найти в файле src/Configuration, входящем в дистрибутив Apache, либо по адресу www.apache.org/docs/mod/index.html.

После выполнения сценария configure запустите сценарии make и make install для фактической компиляции и установки соответствующих файлов.

После установки сервера необходимо сконфигурировать его с учетом выполняемых функций. Все файлы конфигурации находятся в каталоге /conf (например, /usr/local/apache/conf). Необходимо проверить и настроить три различных файла конфигурации: httpd.conf, srm.conf и access.conf.

Файл httpd.conf определяет, каким образом демон Apache (httpd) взаимодействует с системой. В этом файле задается TCP-порт приема запросов. На одном компьютере можно запустить несколько HTTP-серверов, подключенных к разным портам.

Ресурсы, доступ к которым необходим серверу, настраиваются в файле smr.conf. В нем располагается самая важная директива - DocumentRoot, которая задает корневой каталог для обслуживания документов. В этом файле также содержится ряд дополнительных установок, связанных с обработкой специальных URL-адресов (например, http://www.xor.com/~steve).

Параметры безопасности устанавливаются в файле access.conf. Он включает директивы, которая позволяют управлять доступом на уровне каталога или файла. Вызовы сценариев осуществляется только из каталога cgi-bin. Для установки этого ограничения следует задать опцию ExecCGI в файле srm.conf.

Если требуется, чтобы демон httpd запускался автоматически на этапе начальной загрузки, нужно вставить следующий фрагмент в функцию localrc() стартовых сценариев, либо включить его в файл /etc/rc.local, если используется отдельный локальный сценарий.

if [ -x /usr/local/apache/httpd ]; then

/usr/local/apache/apachetl start

echo =n ‘www_server’

fi

Протокол HTTP 1.1 реализует функциональные возможности виртуальных интерфейсов, в том числе не имеющих IP-адресов. Каждый из виртуальных сетевых интерфейсов может иметь доменное имя, под которым он известен пользователям Интернет. Это позволяет одному UNIX-серверу обслуживать сотни WEB-узлов. Настройка виртуального интерфейса происходит в два этапа. Сначала требуется создать виртуальный интерфейс на уровне TCP/IP. На втором этапе необходимо сообщить серверу Apache об инсталлированных виртуальных интерфейсах.

Виртуальные интерфейсы в RedHat обозначаются в том же формате интерфейс:экземпляр, что и в Solaris и HP-UX. Например, если интерфейс Ethernet называется eth0, то связанные с ним виртуальные интерфейсы конфигурируются с помощью команды ifconfig. Так команда:

# ifconfig eth0:0 128.138.243.150 netmask 255.255.255.192 up

настраивает интерфейс eth0:0 и назначает ему адрес в сети 128.138.243.128/26. Чтобы назначенные виртуальные адреса стали постоянными, необходимо создать для них файлы в каталоге /etc/sysconf/network-scripts. Файл ifcfg-eth0:0, соответствующий приведенной выше команде ifconfig, может содержать следующие строки:

DEVICE=eth0:0
IPADDR=128.138.243.150
NETMASK=255.255.255.192
NETWORK=128.138.243.128
BROADCAST=128.138.243.191
ONBOOT=yes

После создания виртуального интерфейса с помощью команды ifconfig требуется сообщить серверу Apache о том, какие документы должны обрабатываться при попытке подключения клиента к каждому интерфейсу. Это можно сделать посредством конструкции VirtualHost из файла httpd.conf. Каждому сконфигурированному виртуальному интерфейсу должна соответствовать одна конструкция VirtualHost. Например:

<VirtualHost 192.225.33.37>
ServerAdmin webmaster@www.deneg.net
DocumentRoot/usr/local/apache/htdocs/company
ServerName www.deneg.net
ErrorLog Logs/www.deneg.net-error_log
TransferLog logs/www.deneg.net-access_log
</VirtualHost>

После подключения клиента к виртуальному узлу 192.225.33.37 будет обрабатываться документы из каталога /usr/local/apache/htdocs/company.


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

Модель аутентификации в RedHat основана на подключаемых модулях аутентификации РАМ. В связи с этим команда passwd подчиняется набору правил имеющегося модуля, описанных в файле /etc/pam.d/passwd. Получить более подробную информацию о модулях РАМ можно по адресу:

http://pare.power.net/morgen/Linux-PAM/index.html

Единственная отличительная черта пользователя root состоит в том, что его идентификатор равен нулю. Поскольку в файле /etc/passwd может быть несколько элементов, для которых установлен этот идентификатор, то существует много способов входа в систему в качестве суперпользователя. Одним из способов, который используют хакеры, получив доступ к интерпретатору команд суперпользователя, заключается в редактировании файла passwd путем ввода в него новых регистрационных имен с идентификатором пользователя, равным нулю. Спасение от такого трюка является применение мини-сценария, подобного тому, который используется для поиска учетных записей без паролей:

perl -F: -ane ‘print if not $F[2];’ /etc/passwd

Этот сценарий отображает любые элементы файла passwd, в которых идентификатор пользователя не указан или равен нулю. Пристального внимания заслуживают элементы файла passwd, в которых нет имени пользователя, либо вместо имени стоят знаки препинания. Часто такие записи позволяют свободно входить в систему.

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

Если нужно всего лишь ограничить доступ к файлу или базе данных, достаточно добавить в файл /etc/passwd псевдопользователя, единственным назначением которого является владение требуемыми ресурсами. Следует следовать обычным правилам по созданию псевдопользователей, используя низкое значение UID. В поле пароля прописывается звездочка, а начальным каталогом такого пользователя делается каталог /dev/null.

Полезно периодически сканировать диски на предмет выявления новых программ с установленным битом SUID. C такой задачей справится команда find:

/usr/bin/find / -ser root -perm -4000 -print |

/bin/mail -s “Setuid root files” netadmin

В данном случае пользователь netadmin по электронной почте направляется список всех файлов, принадлежащих пользователю root и имеющих установленный бит SUID. Если в вашей системе файл /dev/kmem могут читать все пользователи, немедленно исправьте этот промах. Следует проверить также права доступа к файлам /dev/drum и /dev/mem, если они присутствуют в системе.

С помощью программы nmap можно просмотреть, какие порты активированы на заданном сервере. Например:

% nmap -sT host1.uexample.com
…………….

Port State Protocol Service
7 open tcp echo
9 open tcp discard
13 open tcp daytime
19 open tcp chargen
21 open tcp ftp
23 open tcp telnet
25 open tcp smtp
     
513 open tcp login

Для поиска ненадежных паролей можно использовать программу crack, доступную по адресу ftp://coast.cs.purdue.edu/pub/tools/unix/pwdutils/crack/.

Программа tcpd (ftp://ftp.porcupine.org), часто называемая пакетом “TCP-оболочек”, позволяет регистрировать подключения к таким ТСР-сервисам, как telnetd, rlogind и fingerd. Кроме того, она позволяет задавать перечень систем, которые имеют право устанавливать подключения. Программа находится в каталоге /usr/ports/security/tcp_wrapper. Программа tcpd легко инсталлируется и не требует внесения изменений в действующие утилиты. Она работает в связке с демоном inetd. Достаточно модифицировать файл /etc/inetd.conf, чтобы вместо реального сетевого сервера выполнялась tcpd.

Посредством программы tripwire можно контролировать изменения в системных файлах. Она контролирует права доступа и контрольные суммы всех важных системных файлов. Это позволяет выявлять подмененные, поврежденные и подделанные файлы.

Весьма полезным может оказаться диагностический пакет программ ТСТ (http://www.fish.com/security), позволяющих анализировать систему после проникновения в нее нарушителя.

Общие правила безопасности

  1. Файлы, привлекательные для преступников и просто любопытных сослуживцев (персональные досье, экзаменационные задания, результаты выборов накануне их проведения и т.д.) следует шифровать, а не пытаться защитить от несанкционированного доступа. Смотри RFC-2196.
  2. Закрывайте все известные “дырки” сразу, как только становится известно их существование. Читайте бюллетени фирм производителей и сообщения, рассылаемые через подписные листы безопасности. Отключайте ненужные сервисы.
  3. Следите за надежностью паролей, исключайте анонимные FTP-каталоги с возможностью записи, групповые учетные записи.
  4. Установите ловушки для обнаружения фактов или попыток вторжения, такие средства как tripwire, tcpd и crack.
  5. Просматривайте журналы, генерируемые этими программами.
  6. Постоянно следите за отклонениями в нормальной работе системы. Обращайте внимание на все необычное, например, на непонятные журнальные сообщения или изменение характера использования некоторой учетной записи (изменение активности, работа во внеурочное время, во время отпуска владельца учетной записи).

Серверы по проблемам безопасности LINUX

По материалам книги Дэвида Бэндла “Защита и безопасность в сетях LINUX”, Питер, 2002.

Наиболее полезными серверами по проблемам безопасности являются в данный момент серверы: http://www.linuxberg.com/ и http://freshmeat.net/

AIDE http://www.cs.tut.fi/~rammer/aide.html Свободно распространяемая замена tripwire
BASS http://www.securityfocus.com/data/tools/network/bass-1.0.7.tar.gz Balk Auditing Security Scanners
Bastille Linux http://bastille-linux.souceforge.net/ Программа усиления защиты Red Hat
Chech.pl http://checkps.alcom.o.uk/ Средство аудита разрешений доступа к файловой системе
firesoft http://www.unix.gr/ Для просмотра LOG-файлов ipchain и snort
Firewall Manager http://www.tectrip.net/arg/ Графический интерфейс для Firewall
FreeS/WAN http://www.xs4all.nl/~freeswan/ Безопасная сеть WAN для ядер Linux
Fwctl http://indev.insu.com/Fwctl/ Средство конфигурирования для пакетных фильтров Linux
gfcc http://icarus.autostock.co.kr/ Firewall GTK+ (ipchains)
gSentiel http://zurk.netpedia.net/zfile.html Графический интерфейс для Sentiel, основанный на GTK
gShield http://muse.linuxgeek.org/ Модульный Firewall Godot
HostSentry http://www.psionic.com/abacus/hostsentry/ Обнаружение анормальных подключений к системе
hping2 http://www.kyuzz.org/antirez/ Аудит и тестирование сети
ipchains http://www.rustcorp.com/linux/ipchains/ Управление пакетным фильтром Linux
ipchains-firewall http://ipchains.nerdherd.org/ Сценарии для формирования правил ipchains и маскирования IP
ipfa http://www.soaring-bird.com.cn/oss_proj/ipfa/ Управление для Firewall
ISIC http://expert.cc.purdue.edu/~frantzen/ Программа посылки частично случайных пакетов для тестирования стеков IP и Firewall
Ripper http://www.openwall.com/john/ Взломщик паролей
Linux Intrusion Detection System http://www.soaring-bird.com.cn/oss_proj/lids/ Обнаружение проникновения злоумышленников
Logcheck http://www.psionic.com/ Анализ LOG для обнаружения нарушений
maillog http://old.dhs.org/ По cron передает по почте LOGs
Mason http://www.pobox.com/~wstearns/mason/ Формирование Firewall на основе ipwadm или ipchain
Nessus http://www.nessus.org/ Аудит безопасности
netfilter http://www.samba.org/netfilter/ Программный фильтр пакетов
nmap http://www.insecure.org/nmap/ Сканирование сети
nstream http://www.hsc.fr/cabinet/products/index Анализатор сетевых потоков
OpenSSH http://www.openssh.com/ Защищенная оболочка Secure Shell с открытым кодом
Ping String http://www.ksrt.org/pstring/ Идентификатор трафика ICMP
PMFirewall http://www.pointman.org/ Конфигурирование ipchains в Firewall и маскирования IP
PortSentry http://www.psionic.com/abacus/portsentry/ Регистрация сканирования портов в реальном времени и реагирование
PSPG http://members.xoom.com/miscreants/ Pretty Simple Password Generator/ Генерация паролей
QIPchains http://www.vano.odessa.net/software/ Сценарий оболочки для быстрого добавления/удаления правила Firewall Linux
redir http://sammy.net/~sammy/hacks/ Перенаправляет порт ТСР на другой IP-адрес и порт
S/key ftp://thumper.bellcore.com/pub/nmh/ Система одноразовых паролей
SAINT http://www.wwdsi.com/saint/ Security Administrator’s Integrated Network Tool - Инструмент администратора безопасности
samhain http://samhain.netpedia.net Средство проверки целостности файлов
SARA http://home.arc.com/sara/index.html Аудит безопасности (как SATAN/SAINT), если в системе установлена программа nmap
secure delete http://thc.pimmel.com/files/thc/secure_delete-2.1.tar.gz Безопасное удаление файлов, безопасная перезапись виртуальной памяти и незанятого дискового пространства
Secure Remote Password Protocol http://srp.stanford.edu/srp/ Протокол аутентификации и обмена ключами, основанный на использовании паролей
Secure Shell (ssh) ftp://ftp.cs.hut.fi/pub/ssh/ http://www.ssh.fi/ Средство для защищенных подключений с использованием шифрования и взаимной авторизации
Secure-Linux Patch http://www.openwall.com/linux/ Исправление ядра Linux для блокировки атак, основанных на переполнении стека
Sentiel http://zurk.netpedia.net/zfile.html Быстрое сканирование системных файлов
sifi http://www.ifi.unizh.ch/ikm/SINUS/firewall Пакетный фильтр TCP/IP для Linux, основанный на состояниях
Slinux Kernel http://www.slinux.cx/ Безопасное ядро Linux
snort http://www.clark.net/~roesh/security.html Система обнаружения несанкционированного проникновения
sslwrap http://www.rickk.com/sslwrap/ SSL-оболочка для серверных приложений, таких как демоны РОР3/IMAP
Sportal http://sportal.sourceforge.net/ Слежение за файлами с графическим интерфейсом GTK
sXid ftp://marcus.seva.net/pub/sxid/ Слежение за suid/sgid, написанное на С
TARA http://home.arc.com/tara/index.html/ Tiger Analytical Research Assistant - набор сценариев для проверки локальной безопасности
Phreak Firewall http://bewoner.dma.be/Phreak/ Установка настройки Firewall с использованием к маскировки IP
TheBox http://yak.airwire.net/ Сценарии для установки, настройки и управления маскировкой IP и прозрачного кэширования
Triplight http://linux.rice.edu/magic/triplight/ Обнаружение несанкционированного проникновения и целостности файлов, использует md5 sum
Tripwire http://www.tripwiresecurity.com/ Обнаружение несанкционированного доступа
Wipe http://gsu.linux.org.tr/wipe/ Безопасное удаление файлов с магнитных носителей
ya-wipe http://www.erols.com/thomassr/zero/download/wipe Безопасное удаление файлов

Информацию об атаках и различных средствах противодействия читатель может найти на в:

http://www.cert.org/reports/dsit_workshop-final.html

Существует много средств для детектирования DDoS (Distributed denial-of-service). Каждое из этих средств имеет свои слабости, и ни одно не является универсальным решением. Некоторые из них можно найти:

http://www.fbi.gov/nipc/trinoo.htm
http://staff.washington.edu/dittrich/misc/stacheldraht.analysis
http://www.iss.net/cgi-bin/dbt-display.exe/db_data/press_rel/release/122899199.plt
http://www.sans.org/y2k/stacheldraht.htm

Информацию о том, как корректно сконфигурировать сеть можно найти в RFC-2267

Архив средств для детектирования DDoS атак можно найти по адресу

http://packetstorm.securify.comdistributed/

CERT/CC публикует справочные материалы и другие документы по данной проблематике, например

http://www.cert.org/advisories/CA-2000-01.html
http://www.cert.org/advisories/CA-99-17-denial-of-service-tools.html
http://www.cert.org/tech_tips


   UP: 10.18 Краткий справочник по командам UNIX