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

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

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

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

251

предписывает подключить файл classification.config.

Шаг 2

Для запуска и остановки Snort создайте файл /etc/init.d/snort, содержащий следующие стро-

ки:

#!/bin/bash

#This shell script takes care of starting and stopping the snort IDS daemon.

#chkconfig: 2345 40 60

#description: Snort is a lightweight network intrusion detection tool that \

#

currently detects more than

1100 host and network \

#

vulnerabilities, portscans,

backdoors, and more.

#Source function library.

. /etc/init.d/functions

#Source networking configuration.

. /etc/sysconfig/network

#Check that networking is up.

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

# Specify your network interface here INTERFACE=eth0

RETVAL=0

prog="Snort"

start() {

echo -n $"Starting $prog: "

daemon /usr/bin/snort -A fast -u snort -g snort -b -s -z -d -D \ -i $INTERFACE -c /etc/snort/snort.conf

RETVAL=$? echo

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

}

stop() {

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

RETVAL=$? echo

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

}

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

start)

start

;;

stop)

stop

;;

status)

status snort

;;

restart) stop start

;;

252

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

condrestart)

[ -f /var/lock/subsys/snort ] && restart

;;

*)

echo $"Usage: $prog {start|stop|status|restart|condrestart}" exit 1

esac

exit $RETVAL

Шаг 3

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

[root@drwalbr /]# chmod 700 /etc/init.d/snort [root@drwalbr /]# chown 0.0 /etc/init.d/snort

Если вы хотите, чтобы Snort автоматически запускался при загрузке системы, создайте соответствующие ссылки:

[root@drwalbr /]# chkconfig --add sshd [root@drwalbr /]# chkconfig --level 2345 sshd on

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

Шаг 1 Запустите Snort:

[root@drwalbr snort]# /etc/init.d/snort start

Запускается Snort: eth0: Promiscuous mode enabled.

[ОК]

Шаг 2

Просканируйте какую-нибудь систему в локальной сети с помощью сканера портов, например, Nmap (http://www.insecure.org/) в режиме определения типа операционной системы:

[root@drwalbr snort]# nmap

-O 192.168.10.5

eth0: Promiscuous mode

enabled.

 

 

 

eth0: Promiscuous mode

enabled.

Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ )

Insufficient responses

for

TCP sequencing (3), OS detection may be less

accurate

 

 

 

Insufficient responses

for

TCP sequencing (3), OS detection may be less

accurate

 

 

 

Insufficient responses

for

TCP sequencing (3), OS detection may be less

accurate

 

 

 

Interesting ports on

(192.168.10.5):

(The 1548 ports scanned but not shown below are in state: closed)

Port

State

Service

21/tcp

open

ftp

 

22/tcp

filtered

ssh

 

25/tcp

filtered

smtp

 

80/tcp

open

http

 

110/tcp

filtered

pop-3

3000/tcp

open

ppp

 

3306/tcp

filtered

mysql

6667/tcp

open

irc

 

No exact OS matches for host (If you know what OS is running on it, see http://www.insecure.org/cgi-bin/nmap-submit.cgi).

TCP/IP fingerprint: SInfo(V=2.54BETA34%P=i386-asplinux-linux- gnu%D=4/10%Time=3E953AC4%O=21%C=1) T1(Resp=Y%DF=N%W=E000%ACK=S++%Flags=AS%Ops=M) T2(Resp=N)

T3(Resp=N)

T4(Resp=N)

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

253

T5(Resp=Y%DF=N%W=0%ACK=S++%Flags=AR%Ops=)

T6(Resp=Y%DF=N%W=0%ACK=O%Flags=R%Ops=)

T7(Resp=Y%DF=N%W=0%ACK=S%Flags=AR%Ops=)

PU(Resp=Y%DF=N%TOS=0%IPLEN=38%RIPTL=148%RID=E%RIPCK=E%UCK=0%ULEN=134%DAT=

E)

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

ЗАМЕЧАНИЕ Нужно осуществлять сканирование систем, не указанных в строке: preprocessor portscan-ignorehosts: 212.45.28.122 212.45.28.123 файла /etc/snort/snort.conf.

Шаг 3

В файле /var/log/snort/portscan.log:

Apr 10 13:32:33 192.168.2.99:39192 -> 192.168.10.5:21 SYN ******S*

Apr 10 13:32:35 192.168.2.99:39197 -> 192.168.10.5:21 SYN ******S*

Apr 10 13:34:28 192.168.2.99:37780 -> 192.168.10.5:2035 SYN ******S*

Apr 10 13:34:28 192.168.2.99:38239 -> 192.168.10.5:657 SYN ******S*

Apr 10 13:34:28 192.168.2.99:51081 -> 192.168.10.5:329 SYN ******S*

Apr 10 13:34:28 192.168.2.99:52548 -> 192.168.10.5:1516 SYN ******S*

Apr 10 13:34:28 192.168.2.99:59773 -> 192.168.10.5:1472 SYN ******S*

Apr 10 13:34:28 192.168.2.99:40720 -> 192.168.10.5:314 SYN ******S*

Apr 10 13:34:28 192.168.2.99:38440 -> 192.168.10.5:388 SYN ******S*

Apr 10 13:34:28 192.168.2.99:54059 -> 192.168.10.5:586 SYN ******S*

Apr 10 13:34:28 192.168.2.99:54856 -> 192.168.10.5:613 SYN ******S*

Apr 10 13:34:38 192.168.2.99:35300 -> 192.168.10.5:21 SYN *2****S* Apr 10 13:34:40 192.168.2.99:35301 -> 192.168.10.5:21 NULL ********

Apr 10 13:34:38 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:34:38 192.168.2.99:35304 -> 192.168.10.5:1 SYN ******S*

Apr 10 13:34:38 192.168.2.99:35306 -> 192.168.10.5:1 XMAS **U*P**F Apr 10 13:34:40 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:34:44 192.168.2.99:35299 -> 192.168.10.5:21 SYN ******S*

Apr 10 13:34:46 192.168.2.99:35300 -> 192.168.10.5:21 SYN *2****S* Apr 10 13:34:48 192.168.2.99:35301 -> 192.168.10.5:21 NULL ********

Apr 10 13:34:46 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:34:46 192.168.2.99:35304 -> 192.168.10.5:1 SYN ******S*

Apr 10 13:34:46 192.168.2.99:35306 -> 192.168.10.5:1 XMAS **U*P**F Apr 10 13:34:48 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:34:52 192.168.2.99:35297 -> 192.168.10.5:21 SYN ******S*

Apr 10 13:34:55 192.168.2.99:35300 -> 192.168.10.5:21 SYN ******S*

Apr 10 13:34:56 192.168.2.99:35301 -> 192.168.10.5:21 NULL ********

Apr 10 13:34:55 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:34:55 192.168.2.99:35304 -> 192.168.10.5:1 SYN ******S*

Apr 10 13:34:55 192.168.2.99:35306 -> 192.168.10.5:1 XMAS **U*P**F Apr 10 13:34:56 192.168.2.99:35302 -> 192.168.10.5:21 NMAPID **U*P*SF Apr 10 13:35:00 192.168.2.99:35298 -> 192.168.10.5:21 SYN ******S*

вы увидите информацию о пакетах, с помощью которых Nmap пытался обнаружить открытые порты и тип операционной системы на сервере 192.168.10.5.

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

Потенциальные уязвимости Snort, как и любого другого программного обеспечения, могут использоваться для реализации атак на вашу систему. Поэтому для повышения безопасности системы рекомендуется выполнять Snort в окружении chroot-jail. Для этого необходимо выполнить следующие операции.

Шаг 1

Создайте каталоги для размещения Snort в окружении chroot-jail, назначьте владельцем второго из них пользователя snort:

[root@drwalbr /]# mkdir -p /chroot/snort/etc/snort [root@drwalbr /]# mkdir -p /chroot/snort/var/log/snort

[root@drwalbr /]# chown -R snort.snort /chroot/snort/var/log/snort

254

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

ЗАМЕЧАНИЕ Для повышения безопасности вашей системы каталог /chroot/snort/ рекомендуется размещать на отдельном разделе диска.

Шаг 2

Переместите конфигурационные файлы Snort в соответствующие подкаталоги окружения chroot-jail:

[root@drwalbr /]# mv /etc/snort/* /chroot/snort/etc/snort [root@drwalbr /]# chmod 0644 /chroot/snort/etc/snort/*

Шаг 3

Для запуска и остановки Snort в окружении chroot-jail создайте файл /etc/init.d/snort, содержащий следующие строки:

#!/bin/bash

#This shell script takes care of starting and stopping the snort IDS daemon.

#chkconfig: 2345 40 60

#description: Snort is a lightweight network intrusion detection tool that \

#

currently detects more than

1100 host and network \

#

vulnerabilities, portscans,

backdoors, and more.

#Source function library.

. /etc/init.d/functions

#Source networking configuration.

. /etc/sysconfig/network

#Check that networking is up.

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

# Specify your network interface here INTERFACE=eth0

RETVAL=0

prog="Snort"

start() {

echo -n $"Starting $prog: "

daemon /usr/bin/snort -A fast -u snort -g snort -b -s -z -d -D \ -i $INTERFACE -c /etc/snort/snort.conf -t /chroot/snort/

RETVAL=$? echo

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

}

stop() {

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

RETVAL=$? echo

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

}

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

start)

start

;;

stop)

stop

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

255

;;

status)

status snort

;;

restart) stop start

;;

condrestart)

[ -f /var/lock/subsys/snort ] && restart

;;

*)

echo $"Usage: $prog {start|stop|status|restart|condrestart}" exit 1

esac

exit $RETVAL

и установите права доступа к файлу:

[root@drwalbr /]# chmod 700 /etc/init.d/snort

Шаг 4 Запустите Snort:

[root@drwalbr /]# /etc/init.d/snort start

Запускается Snort: eth0: Promiscuous mode enabled. [ОК]

Шаг 5

Проверьте, запущен ли Snort, и определите соответствующий номер процесса:

[root@drwalbr /]# ps -ax | grep snort

6171 ? R 0:02 /usr/bin/snort -A fast -u snort -g snort -b -s -z -d

Шаг 6

Проверьте, запущен ли Snort в окружении chroot-jail:

[root@drwalbr /]# ls -la /proc/6171/root/

Если вы получите вывод вида (отображающий ссылку на корневой каталог среды chroot-jail):

lrwxrwxrwx

1

root

root

0 Апр 23 21:01 /proc/6171/root -

> /chroot/snort

 

 

 

то Snort корректно работает в окружении chroot-jail.

Если вы получите вывод вида (отображающий корневой каталог системы, на которой он установлен):

итого 124

drwxr-xr-x

19

root

root

1024

Апр 23 20:01 .

drwxr-xr-x

19

root

root

1024

Апр 23 20:01 ..

-rw-r--r--

1

root

root

0

Апр 23 20:01

.autofsck

drwxr-xr-x

2

root

root

2048

Апр 22 12:13

bin

drwxr-xr-x

5

root

root

1024

Апр

5

17:31

boot

drwxr-xr-x

5

root

root

1024

Апр 15 18:57

chroot

drwxr-xr-x

19

root

root

82944

Апр 23 20:01

dev

drwxr-xr-x

28

root

root

3072

Апр 23 20:01

etc

drwxr-xr-x

37

root

root

4096

Апр 23 19:02

home

drwxr-xr-x

2

root

root

1024

Июн 21

2001

initrd

drwxr-xr-x

7

root

root

3072

Апр

5

14:16

lib

drwx------

2

root

root

12288

Апр

5

03:10

lost+found

drwxr-xr-x

5

root

root

1024

Апр

4

23:20

mnt

drwxr-xr-x

2

root

root

1024

Авг 23

1999

opt

dr-xr-xr-x

45

root

root

0

Апр 24

2003

proc

drwxr-x---

5

root

root

1024

Апр 22 12:05

root

drwxr-xr-x

2

root

root

3072

Апр

4

23:23

sbin

drwxrwxrwt

4

root

root

2048

Апр 23 20:01

tmp

drwxr-xr-x

15

root

root

4096

Апр

7

21:30

usr

drwxr-xr-x

16

root

root

1024

Апр 16 20:29

var

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

256

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

Глава 20

ucspi-tcp – программное обеспечение для запуска обычных программ в режиме сервера

В этой главе:

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

2.Пакеты

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

4.Использование ucspi-tcp

Глава 20. ucspi-tcp – программное обеспечение для запуска обычных программ в режиме сервера 257

Программное обеспечение ucspi-tcp (UNIX Client-Server Program Interface), разработанное Д. Берн-

штейном (D.R. Bernstein), содержит пакет программ. Эти программы используются при создании различных клиент-серверных приложений и позволяют запускать в режиме сервера различные программы, которые не могут быть запущены в режиме службы. Программы tcpserver и tcpclient, наиболее часто используемые из данного пакета, являются более быстродействующей и безопасной альтернативой для таких широко известных программ, как inet и xinetd.

При этом программа tcpserver позволяет ограничивать максимальное количество одновременных соединений, ограничивать доступ к запущенной службе в соответствии с заданными правилами, выполнять проверку легитимности IP-адреса через DNS и регистрировать соединения в файле регистрации.

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

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

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

Перекомпиляция ядра не требуется.

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

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта ucspi-tcp по состоянию на 11.05.2003. Регулярно посещайте домашнюю страницу проекта

http://cr.yp.to/ucspi-tcp/install.html и отслеживайте обновления.

Исходные коды ucspi содержатся в архиве ucspi-tcp-version.tar.gz (последняя доступная на момент написания главы стабильная версия ucspi-tcp-0.88.tar.gz).

Компиляция, оптимизация и инсталляция ucspi-tcp

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

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

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

OpenSSL» главы 12.

Шаг 2

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

[root@drwalbr /]# cd /var/tmp/ [root@drwalbr tmp]# tar xzpf

и перейдите во вновь созданный каталог, содержащий исходные коды ucspi-tcp:

[root@drwalbr tmp]# cd ucspi-tcp-0.88/

Шаг 3

В файле /var/tmp/ucspi-tcp-0.88/conf-home замените строку:

/usr/local

на:

/usr

Шаг 4

В файле /var/tmp/ucspi-tcp-0.88/conf-cc замените строку: gcc -О2

на:

gcc -O2 -march=i686 -funroll-loops

Шаг 5

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

[root@drwalbr ucspi-tcp-0.88]# make

[root@drwalbr ucspi-tcp-0.88]# find /* > /root/ucspi1 [root@drwalbr ucspi-tcp-0.88]# make setup check [root@drwalbr ucspi-tcp-0.88]# chmod 0510 /usr/bin/tcpserver

258

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

[root@drwalbr ucspi-tcp-0.88]# chmod 0510 /usr/bin/tcpclient [root@drwalbr ucspi-tcp-0.88]# find /* > /root/ucspi2 [root@drwalbr ucspi-tcp-0.88]# diff /root/ucspi1 /root/ucspi2 >

/root/ucspi.installed

[root@drwalbr ucspi-tcp-0.88]# mv /root/ucspi.installed

/very_reliable_place/ucspi.installed.YYYYMMDD

Шаг 6

Удалите архив и каталог с исходными кодами ucspi-tcp:

[root@drwalbr /]# cd /var/tmp/

[root@drwalbr tmp]# rm -rf ucspi-tcp-0.88/ [root@drwalbr tmp]# rm -f ucspi-tcp-0.88.tar.gz

Использование ucspi-tcp

Как уже отмечалось, программы из пакета ucspi-tcp могут быть использованы для запуска ряда служб. Подробные инструкции по их использованию приведены в документации на соответствующее программное обеспечение. В этой главе рассматриваются простейшие варианты использования программы tcpserver, носящие иллюстративно-ознакомительный характер.

Запуск службы с помощью программы tcpserver осуществляется с использованием команды:

[root@drwalbr /]# tcpserver opts host port /path/prog

где:

opts – набор опций;

host – имя системы, на которой требуется запустить службу; port – номер порта, на котором будет выполняться служба; prog – полный путь и имя исполняемого файла службы.

Опция -c используется для определения максимального количества одновременных соединений, обрабатываемых tcpserver. Значение по умолчанию – 40 . Т. е. не более 40 одновременных подключений могут обрабатываться tcpserver. Очевидно, что для высокопроизводительного и сильно загруженного сервера необходимо увеличить это значение.

Опции -u и -g используется для определения пользователя и соответствующей ему группы пользователей, от имени которого должна быть запущена соответствующая служба.

Опции –D, -H, -R и -I используются для повышения производительности системы. Для запуска vsFTPd FTP-сервера используется команда:

[root@drwalbr /]# tcpserver -c 4096 –DRHl localhost 0 21 /usr/sbin/vsftpd

В результате выполнения команды будет запущен FTP-сервер, ожидающий соединений на 21 порту всех сетевых интерфейсов локальной системы. При этом максимально возможное число устанавливаемых одновременно соединений не должно превышать 4096.

Для запуска ipop3d POP3-сервера используется команда:

[root@drwalbr /]# tcpserver -c 1024 –DRH1 localhost 195.2.72.152 110

/usr/sbin/ipop3d

В результате выполнения команды будет запущен POP3-сервер, ожидающий подключений на 110 порту сетевого интерфейса с IP-адресом 195.2.72.152. При этом максимально возможное число одновременно устанавливаемых соединений не должно превышать 1024.

Глава 21. xinetd – программное обеспечение для запуска обычных программ в режиме сервера

259

Глава 21

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

В этой главе:

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

2.Пакеты

3.Инсталляция с помощью rpm-пакетов

4.Компиляция, оптимизация и инсталляция xinetd

5.Конфигурирование xinetd

6.Конфигурационный файл /etc/xinetd.conf

7.Каталог /etc/xinetd.d

8.Конфигурационный файл /etc/xinetd.d/pop3s

9.Конфигурационный файл /etc/xinet.d.d/time

10. Конфигурационный файл /etc/xinetd.d/chargen

11. Конфигурационный файл /etc/xinetd.d/echo

12. Конфигурационный файл /etc/xinetd.d/daytime

13. Конфигурационный файл /etc/xinetd.d/imaps

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

260

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

Программа хinetd, так же как и программа tcpserver из пакета ucspi-tcp, предназначена для запуска приложений, которые не могут выполняться в режиме демона.

Данная программа обладает следующими возможностями:

обеспечивает механизмы управления доступом;

предотвращает атаки отказа в обслуживании;

обеспечивает возможность регистрации большого количества пользователей;

обеспечивает повременной доступ службам;

ограничивает число запускаемых серверов.

К сожалению, xinetd недостаточно корректно работает с рядом служб, например, ftp и ssh. Поэтому авторы рекомендуют использовать для запуска служб, которые не могут выполняться в режиме сервера, программы из пакета ucspi-tcp, обладающие большим быстродействием, надежностью и приемлемыми показателями безопасности.

Желающие протестировать xinetd могут воспользоваться рекомендациями настоящей главы.

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

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

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

Перекомпиляция ядра не требуется.

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

Пакеты

Последующие рекомендации основаны на информации, полученной с домашней страницы проекта xinetd по состоянию на 02.05.2003. Регулярно посещайте домашнюю страницу проекта http://www.xinetd.org/ и отслеживайте обновления.

Исходные коды xinetd содержатся в архиве xinetd-version.tar.gz (последняя доступная на момент написания главы стабильная версия xinetd-2.3.11.tar.gz).

Инсталляция с помощью rpm-пакетов

Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением, установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие операции.

ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исходных кодов.

Шаг 1

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

[root@drwalbr /]# rpm –iq xinetd

Шаг 2

В случае его отсутствия перейдите в каталог, где находится пакет xinetd-2.3.5- 1.asp.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог /home/distrib, то выполните команду:

[root@drwalbr /]# cd /home/distrib

и установите:

[root@drwalbr distrib]# rpm –ihv xinetd-2.3.5-1.asp.i386.rpm

или обновите пакет:

[root@drwalbr distrib]# rpm –Uhv xinetd-2.3.5-1.asp.i386.rpm

После установки пакета перейдите к настройке программы.

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

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

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