Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В

..pdf
Скачиваний:
123
Добавлен:
24.05.2014
Размер:
3.66 Mб
Скачать

Глава 18. PortSentry – программное обеспечение для атоматического ограничения доступа...

241

#192.168.0.0/16

#192.168.2.1/32

#Etc.

#If you don't supply a netmask it is assumed to be 32 bits.

127.0.0.0/8

0.0.0.0

172.16.181.100

172.16.181.101

192.168.14.85

ЗАМЕЧАНИЕ В данном конфигурационном файле строка 0.0.0.0 запрещает PortSentry блокировать

– в случае сканирования портов с фальсифицируемого IP-адреса 0.0.0.0 – доступ к вашей системе со всех возможных адресов.

Шаг 2

Установите права доступа к файлу и определите его владельцем пользователя root:

[root@www tmp]# chmod 600 /etc/portsentry/portsentry.ignore [root@www tmp]# chown 0.0 /etc/portsentry/portsentry.ignore

Конфигурационный файл /etc/portsentry/portsentry.modes

Файл служит для определения режима работы PortSentry. В версии portsentry-1.1 доступны следующие шесть опций, предназначенных для задания режимов работы:

tcp – основной режим обнаружения сканирования для протокола TCP;

udp – основной режим обнаружения сканирования для протокола UDP;

stcp – «незаметный» режим обнаружения сканирования для протокола TCP;

sudp – «незаметный» режим обнаружения сканирования для протокола UDP;

atcp – расширенный «незаметный» режим обнаружения сканирования для протокола TCP;

audp – расширенный «незаметный» режим обнаружения сканирования для протокола UDP. Одновременно для каждого протокола (TCP или UDP) может быть запущен только один режим. На-

пример, совместно не смогут работать два режима для TCP протокола – tcp и atcp. Для полного использования своих возможностей программу PortSentry лучше запускать в режимах atcp и audp. Более подробную информацию о режимах обнаружения сканирования можно найти в файлах readme.install и readme.stealth в корневом каталоге исходных кодов PortSentry.

Для задания режима работы PortSentry выполните простые операции.

Шаг 1

Создайте файл /etc/portsentry/portsentry.modes, содержащий следующие строки:

#These are the available startup modes for PortSentry. Uncomment the

#modes you want PortSentry to run in. For information about each

#available mode, please see the PortSentry documentation.

#

#Normal TCP/UDP scanning: #tcp

#udp

#Steal TCP/UDP scanning: #stcp

#sudp

#Advanced Stealth TCP/UDP scanning: atcp

audp

Шаг 2

Установите права доступа к файлу и определите его владельцем пользователя root:

[root@www tmp]# chmod 600 /etc/portsentry/portsentry.modes [root@www tmp]# chown 0.0 /etc/portsentry/portsentry.modes

242

Часть 4. Программное обеспечение для ограничения доступа к серверу...

Файл инициализации /etc/init.d/portsentry

Для автоматического запуска PortSentry при загрузке системы выполните следующие операции.

Шаг 1

Создайте файл /etc/init.d/portsentry, содержащий следующие строки:

#!/bin/bash

#This shell script takes care of starting and stopping the Port Scan Detector.

#chkconfig: 345 98 05

#description: PortSentry Port Scan Detector is part of the Abacus Project \

#

suite of tools. The Abacus Project is an initiative to re-

lease \

 

#

low-maintenance, generic, and reliable host based intru-

sion \

 

#

detection software to the Internet community.

#

 

#processname: portsentry

#config: /etc/portsentry/portsentry.conf

#pidfile: /var/run/portsentry.pid

#Source function library.

. /etc/rc.d/init.d/functions

#Source networking configuration.

. /etc/sysconfig/network

#Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="PortSentry"

start() { SENTRYDIR=/etc/portsentry

if [ -s $SENTRYDIR/portsentry.modes ] ; then modes=`cut -d "#" -f 1 $SENTRYDIR/portsentry.modes` else

modes="tcp udp" fi

for i in $modes ; do

action "Starting $prog -$i: " /usr/sbin/portsentry -$i RETVAL=$?

done

echo

[ $RETVAL = 0 ] && touch /var/lock/subsys/portsentry return $RETVAL

}

stop() {

echo -n "Shutting down $prog: " killproc portsentry

RETVAL=$? echo

[ $RETVAL = 0 ] && rm -f /var/lock/subsys/portsentry return $RETVAL

}

# See how we were called. case "$1" in

Глава 18. PortSentry – программное обеспечение для атоматического ограничения доступа...

243

start)

start

;;

stop)

stop

;;

restart|reload) stop start RETVAL=$?

;;

condrestart)

[ -f /var/lock/subsys/portsentry ] && restart || :

;;

status)

status portsentry

;;

*)

echo "Usage: portsentry {start|stop|restart|reload|condrestart|status}"

exit 1

esac

Шаг 2

Сделайте файл исполняемым и определите его владельцем пользователя root:

[root@www /]# chmod 700 /etc/irit.d/portsentry [root@www /]# chown 0.0 /etc/irit.d/portsentry

Шаг 3 Создайте необходимые символьные ссылки:

[root@www /]# chkconfig --add portsentry [root@www /]# chkconfig --level 345 portsentry on

Тестирование PortSentry

Для тестирования правильности установки настройки PortSentry необходимо выполнить следующие операции.

Шаг 1

Запустите PortSentry:

[root@www /]# /etc/init.d/portsentry start

Starting PortSentry [OK]

Шаг 2

Просканируйте порты системы, на которой установлен PortSentry, с помощью программы-сканера, например, Nmap:

[root@drwalbr /]# nmap -O www.dymatel.und

Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Insufficient responses for TCP sequencing (0), OS detection may be less accurate

Interesting ports on www.dymatel.und (172.16.181.100): (The 1553 ports scanned but not shown below are in state:

closed)

 

 

Port

State

Service

22/tcp

open

ssh

80/tcp

open

http

443/tcp

open

https

Remote operating system guess: Linux Kernel 2.4.0 - 2.4.18 (X86)

Nmap run completed -- 1 IP address (1 host up) scanned in 8 seconds

244

Часть 4. Программное обеспечение для ограничения доступа к серверу...

В нашем случае сканируется сервер www.dymatel.und c рабочей станции drwalbr.und. При этом также определяется тип операционной системы (опция -O). Для большей наглядности сервер был запущен со стандартным ядром версии 2.4.18, входящий в комплект поставки дистрибутива ASPLinux 7.3. Система сетевой защиты была выключена.

Шаг 3

Просканируйте порты системы, на которой установлен PortSentry, повторно:

[root@drwalbr /]# nmap -O www.dymatel.und

Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Note: Host seems down. If it is really up, but blocking our ping probes, try -P0

Nmap run completed -- 1 IP address (0 hosts up) scanned in 30 seconds

Nmap сообщает, что сканируемый компьютер, скорее всего, неработоспособен и для надежности рекомендует просканировать его скрытно, т. е. с использованием опции -P0. При этом сервер доступен с других систем, просто PortSentry обнаружил сканирование портов drwalbr.und и выполнил команду, определенную в конфигурационном файле/etc/portsentry/portsentry.conf в строке:

KILL_ROUTE="/sbin/route add -host $TARGET$ reject"

Шаг 4

Просканируйте порты системы, на которой установлен PortSentry в третий раз с использованием опции -P0:

[root@drwalbr /]# nmap -O -P0 www.dymatel.und

Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port

All 1556 scanned ports on www.dymatel.und (172.16.181.100) are: filtered

Too many fingerprints match this host for me to give an accurate OS guess

Nmap run completed -- 1 IP address (1 host up) scanned in 1946 seconds

Nmap выдает сообщение о том, что все порты на сканируемом сервере закрыты. Тем не менее, с других систем сервер www.dymatel.und доступен.

Шаг 5

Для определения компьютеров, доступ с которых к серверу с установленной программой PortSentry закрыт, c консоли сервера выполните команду:

[root@www /]# /sbin/route

 

 

 

 

 

 

255.255.255.255 !H 0 - 0 -

drwalbr.und

-

172.16.181.0

*

255.255.255.0

U 0

0

0

eth0

192.168.0.0

*

255.255.0.0

U 0

0

0

eth1

127.0.0.0

*

255.0.0.0

U 0

0

0

lo

default

172.16.181.1

0.0.0.0

UG 0

0

0

eth0

Шаг 6

Для снятия блокировки доступа с drwalbr.und выполните команду:

[root@www /]# route del -host drwalbr.und reject

и удалите строки, содержащие сведения о блокировке доступа c drwalbr.und.

Из файла /var/portsentry/portsentry.history – строку:

1051283728 - 04/25/2003 19:15:28 Host: 172.16.181.103/172.16.181.103

Port: 410 TCP Blocked

и строку:

1051283729 - 04/25/2003 19:15:29 Host: 172.16.181.103/172.16.181.103 Port: 1 UDP Blocked

Глава 18. PortSentry – программное обеспечение для атоматического ограничения доступа...

245

Из файла /var/portsentry/portsentry.blocked.atcp – строку:

1051283728 - 04/25/2003 19:15:28 Host: 172.16.181.103/172.16.181.103 Port: 410 TCP Blocked

Из файла /var/portsentry/portsentry.blocked.audp – строку:

1051283729 - 04/25/2003 19:15:29 Host: 172.16.181.103/172.16.181.103 Port: 1 UDP Blocked

Удаление этих строк необходимо для возможности осуществления повторной блокировки доступа с drwalbr.und, т. к. перед выполнением блокировки PortSentry осуществляет проверку наличия блокировки, руководствуясь содержимым файлов portsentry.history, portsentry.blocked.atcp

и portsentry.blocked.audp.

Для проверки восстановления доступа с drwalbr.und повторно выполните команду:

[root@www /]# /sbin/route

 

 

 

 

 

 

 

 

 

 

 

172.16.181.0

*

255.255.255.0

U 0 0 0 eth0

192.168.0.0

*

255.255.0.0

U 0

0

0

eth1

127.0.0.0

*

255.0.0.0

U 0

0

0

lo

default

172.16.181.1

0.0.0.0

UG 0

0

0

eth0

В выводе команды должна отсутствовать строка, содержащая запись для блокировки доступа с сис-

темы drwalbr.und, т. е.:

255.255.255.255 !H 0

 

 

 

drwalbr.und

-

- 0

-

246

Часть 4. Программное обеспечение для ограничения доступа к серверу...

Глава 19

Snort – программное обеспечение для обнаружения попыток вторжения

В этой главе:

1. Ограничения и допущения

2.Пакеты

3.Компиляция, оптимизация и инсталляция Snort

4.Конфигурирование Snort

5.Тестирование Snort

6.Выполнение Snort в среде chroot-jail

Глава 19. Snort – программное обеспечение для обнаружения попыток вторжения

247

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

Snort – это сетевая система обнаружения вторжений (Intrusion Detection Systems, IDS), способная выполнять в режиме реального времени анализ сетевого трафика с целью обнаружения попыток взлома или поиска уязвимостей вашей системы (например, таких, как переполнения буфера, CGI-атак, сканирования портов, определения типа операционной системы, идентификации версий используемых сетевых сервисов и т. п.).

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

Ограничения и допущения

Исходные коды находятся в каталоге /var/tmp.

Все операции выполняются пользователем с учетной записью root. Используется дистрибутив ASPLinux 7.3 (Vostok). Перекомпиляция ядра не требуется.

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

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта Snort по состоянию на 20.04.2003. Регулярно посещайте домашнюю страницу проекта http://www.snort.org/ и отслеживайте обновления. Исходные коды Snort содержатся в архиве snort-version.tar.gz (последняя доступная на момент написания главы стабильная версия snort-

1.9.1.tar.gz).

Для нормальной работы Snort необходимо программное обеспечение, разрабатываемое в рамках проекта tcpdump/libcap. Регулярно посещайте домашнюю страницу проекта http://www.tcpdump.org/ и отслеживайте обновления.

Snort использует функции библиотеки LIBCAP. Исходные коды библиотеки содержатся в архиве libpcap-version.tar.gz (последняя доступная на момент написания главы стабильная версия

libpcap-0.7.2.tar.gz);

Для реализации некоторых дополнительных настроек Snort необходима программа TCPDUMP, позволяющая переводить сетевую плату в режим promiscuous. В этом режиме фиксируется каждый пакет, проходящий по кабелю, к которому подключен сетевой интерфейс. В обычном режиме сетевые платы регистрируют только пакеты, адресованные на поддерживаемый ею адрес и широковещательные адреса. Исходные коды программы содержатся в архиве tcpdump-version.tar.gz (последняя доступная на момент написания главы стабильная версия tcpdump-3.7.2.tar.gz).

Компиляция, оптимизация и инсталляция Snort

Шаг 1 Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодами

с использованием процедур, описанных в шаге 1 раздела «Компиляция, оптимизация и инсталляция

OpenSSL» главы 12.

Шаг 2

Распакуйте архив с исходными кодами libpcap-0.7.2.tar.gz в каталоге /var/tmp, откомпилируйте и проинсталлируйте библиотеку:

[root@drwalbr tmp]# tar xzpf libpcap-0.7.2.tar.gz

[root@drwalbr tmp]# cd libpcap-0.7.2 [root@drwalbr libpcap-0.7.2]# ./configure [root@drwalbr libpcap-0.7.2]# make

[root@drwalbr libpcap-0.7.2]# find /* > /root/libcap1 [root@drwalbr libpcap-0.7.2]# make install [root@drwalbr libpcap-0.7.2]# find /* > /root/libcap2

[root@drwalbr libpcap-0.7.2]# diff /root/libcap1 /root/libcap2 >

/root/libcap.installed

[root@drwalbr libpcap-0.7.2]# mv /root/libcap.installed

/very_reliable_place/libcap.installed.YYYYMMDD

248

Часть 4. Программное обеспечение для ограничения доступа к серверу...

ЗАМЕЧАНИЕ Вы можете установить библиотеку из rpm-пакета libcap-1.10-8.i386.rpm, для этого перейдите в каталог, в котором находятся пакеты, входящие в состав дистрибутива ASPLinux 7.3, и выполните команду:

[root@drwalbr distrib]# rpm –ihv libcap-1.10-8.i386.rpm

Шаг 3

Распакуйте архив с исходными кодами tcpdump-3.7.2.tar.gz в каталоге /var/tmp, откомпилируйте и проинсталлируйте программу:

[root@drwalbr tmp]# tar xzpf tcpdump-3.7.2.tar.gz

[root@drwalbr tmp]# cd tcpdump-3.7.2 [root@drwalbr tcpdump-3.7.2]# ./configure [root@drwalbr tcpdump-3.7.2]# make

[root@drwalbr tcpdump-3.7.2]# find /* > /root/tcpdump1 [root@drwalbr tcpdump-3.7.2]# make install [root@drwalbr tcpdump-3.7.2]# find /* > /root/tcpdump1

[root@drwalbr tcpdump-3.7.2]# diff /root/tcpdump1 /root/ tcpdump2 >

/root/tcpdump.installed

[root@drwalbr tcpdump-3.7.2]# mv /root/libcap.installed

/very_reliable_place/libcap.installed.YYYYMMDD

ЗАМЕЧАНИЕ Вы можете установить программу из rpm-пакета tcpdump-3.6.2-12.asp.i386.rpm, для этого перейдите в каталог в котором находятся пакеты, входящие в состав дистрибутива ASPLinux 7.3, и выполните команду:

[root@drwalbr distrib]# rpm –ihv tcpdump-3.6.2-12.asp.i386.rpm

Шаг 4

Распакуйте архивы с исходными кодами Snort в каталоге /var/tmp:

[root@drwalbr tmp]# tar xzpf snort-1.9.1.tar.gz

[root@drwalbr tmp]# cd snort-1.9.1

Шаг 5

Создайте специального пользователя, от имени которого будет запускаться Snort:

[root@drwalbr snort-1.9.1]# groupadd -g 69 snort > /dev/null 2>&l || : [root@drwalbr snort-1.9.1]# useradd -u 69 -g 69 -s /bin/false -M -r -d

/var/log/snort snort > /dev/null 2>&l || :

Шаг 6

Проверьте наличие, а при необходимости добавьте в конец файла /etc/shells строку:

/bin/false/

Шаг 7

Отконфигурируйте исходные коды Snort:

[root@drwalbr snort-1.9.1]# CFLAGS="-O2 -march=i686 -funroll-loops"; export CFLAGS

./configure \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ --mandir=/usr/share/man \ --with-openssl

Шаг 8

Откомпилируйте и проинсталлируйте Snort, создайте список проинсталлированных файлов и сохра-

ните его в надежном месте:

make

[root@drwalbr snort-1.9.1]#

[root@drwalbr snort-1.9.1]#

find /* > /root/snort1

[root@drwalbr snort-1.9.1]#

make install

[root@drwalbr snort-1.9.1]#

mkdir -p /var/log/snort

[root@drwalbr snort-1.9.1]#

mkdir -p /etc/snort

[root@drwalbr snort-1.9.1]#

chown -R snort.snort /var/log/snort/

[root@drwalbr snort-1.9.1]#

cd etc/

[root@drwalbr etc]# install

classification.config /etc/snort/

[root@drwalbr etc]# cd ../rules

Глава 19. Snort – программное обеспечение для обнаружения попыток вторжения

249

[root@drwalbr rules]# install snort.conf *.rules /etc/snort/ [root@drwalbr rules]# chmod 0644 /etc/snort/*

[root@drwalbr rules]# strip /usr/bin/snort [root@drwalbr rules]# cd /var/tmp/snort-1.9.1 [root@drwalbr rules]# find /* > /root/snort2

[root@drwalbr rules]# diff /root/snort1 /root/snort2 >

/root/snort.installed

[root@drwalbr rules]# mv /root/snort.installed

/very_reliable_place/snort.installed.YYYYMMDD

Шаг 9 Удалите архивы и каталоги с исходными кодами программ:

[root@drwalbr snort-1.9.1]# cd /var/tmp

[root@drwalbr tmp]# rm –r snort-1.9.1.tar.gz tcpdump-3.7.2.tar.gz libpcap-0.7.2.tar.gz

[root@drwalbr tmp]# rm –rf snort-1.9.1 tcpdump libpcap-0.7.2

Конфигурирование Snort

Конфигурирование Snort осуществляется с использованием следующих файлов:

основного конфигурационного файла /etc/snort/snort.conf;

файла инициализации /etc/init.d/snort.

Шаг 1 Отредактируйте в соответствии с приведенными ниже рекомендациями и вашими потребностями

файл /etc/snort/snort.conf:

var HOME_NET $eth0_ADDRESS var EXTERNAL_NET any

var SMTP $HOME_NET

var HTTP_SERVERS $HOME_NET var SQL_SERVERS $HOME_NET var DNS_SERVERS $HOME_NET var RULE_PATH ./ preprocessor frag2

preprocessor stream4: detect_scans,detect_state_problems preprocessor stream4_reassemble: both,ports all preprocessor http_decode: 80

preprocessor rpc_decode: 111 32771 preprocessor bo

preprocessor telnet_decode

preprocessor portscan: $HOME_NET 4 3 portscan.log

preprocessor portscan-ignorehosts: 212.45.28.122 212.45.28.123 output alert_syslog: LOG_AUTH LOG_ALERT

include classification.config

где строка:

var HOME_NET $eth0_ADDRESS

определяет прослушиваемый сетевой интерфейс. Строка:

var EXTERNAL_NET any

определяет отслеживаемые IP-адреса. В рассматриваемом примере отслеживаются все адреса. Строка:

var SMTP $HOME_NET

предписывает отслеживать атаки на службы SMTP на системах вашей сети. Строка:

var HTTP_SERVERS $HOME_NET

предписывает отслеживать атаки на службы HTTP на системах вашей сети. Строка:

var SQL_SERVERS $HOME_NET

предписывает отслеживать атаки на службы SQL на системах вашей сети. Строка:

var DNS_SERVERS $HOME_NET

предписывает отслеживать атаки на службы DNS на системах вашей сети.

250 Часть 4. Программное обеспечение для ограничения доступа к серверу...

Строка:

var RULE_PATH ./

определяет путь к файлам, содержащим правила Snort. Строка:

preprocessor frag2

предписывает обнаруживать дефрагментацию IP-пакетов и основанных на ней атаках. Строка:

preprocessor stream4: detect_scans,detect_state_problems

предписывает осуществлять детальный анализ TCP и регистрировать на его основе попытки сканирования портов, определения типа операционной системы и др. Для конфигурирования используются следующие опции:

detect_scans – используется для обнаружения незаметных сканирований портов и выдачи предупреждений;

detect_state_problems – используется для обнаружения сбоев в работе TCP;

keepstats – используется для сохранения статистики сеанса;

noinspect – используется только для выключения режима детального анализа трафика TCP;

timeout – используется для установки или изменения заданного по умолчанию счетчика времени блокировки сеанса;

memcap – используется для ограничения объема памяти;

log_flushed_streams – используется для записи всей информации, накопленной в буфере, на

диск.

В рассматриваемом примере используются только опции detect_scans и

detect_state_problems, позволяющие регистрировать сканирование портов и сбои TCP. Строка:

preprocessor stream4_reassemble: both, ports all

предписывает использовать дополнительные возможности детального анализа трафика TCP. Для конфигурирования дополнительных возможностей используются следующие опции:

clientonly – используется для детального анализа трафика только со стороны клиента;

serveronly – используется для детального анализа трафика только со стороны сервера;

both – используется для детального анализа трафика, как со стороны клиента, так и сервера;

noalerts м используется для выключения всех предупреждений во время анализа трафика;

ports – используется для задания отслеживаемых номеров портов.

В рассматриваемом примере используются только опции detect_scans и detect_state_problems, позволяющие осуществлять детальный анализ трафика как со стороны клиента, так и сервера для всех номеров портов.

Строка:

preprocessor http_decode: 80

предписывает отслеживать деструктивные воздействия на вашу систему по протоколу HTTP. Строка:

preprocessor rpc_decode: 111 32771

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

Строка:

preprocessor bo

предписывает отслеживать трафик Back Orifice. Строка:

preprocessor telnet_decode

предписывает отслеживать деструктивные воздействия на вашу систему по протоколу TELNET и FTP. Строка:

preprocessor portscan: $HOME_NET 4 3 portscan.log

предписывает обнаруживать и регистрировать сканирование портов с использованием UDP или TCPпакетов с SYN-битом. В рассматриваемом примере регистрируются пакеты, обращающиеся к четырем различным портам за время меньшее, чем три секунды.

Строка:

preprocessor portscan-ignorehosts: 212.45.28.122 212.45.28.123

предписывает не анализировать и не регистрировать трафик с IP-адресов 212.45.28.122 и 212.45.28.123. Строка:

output alert_syslog: LOG_AUTH LOG_ALERT

предписывает регистрировать все обращения Snort с помощью syslogd. Строка:

include classification.config

Соседние файлы в предмете Информатика