Оглавление Оглавление 1

Вид материалаДокументы

Содержание


Поддержание безопасности системы
Выполнение задач по поддержанию безопасности
Основы Kerberos
Как это работает
Быть в курсе
Выявление открытых почтовых ретрансляторов
Системы обнаружения вторжений
Emailreportlevel =3
Подобный материал:
1   ...   21   22   23   24   25   26   27   28   29

Упражнения


Упражнение 1 :
  • Когда вы аутентифицируетесь на новом сервере с помощью SSH, как вы можете узнать, что «отпечаток» ключа, предоставленный вам, корректен? Как вы можете в этом убедиться?
  • Работает ли асимметричная аутентификация с утилитой scp ?
  • Настройте вашу систему на использование алгоритма шифрования RSA и протокола SSH 2 для удаленного входа в систему
  • Используйте утилиты scp и sftp с асимметричной аутентификацией


      1. Решения


Решение 1 :
  • Проверив отпечаток сервера у его администратора (например, по телефону).
  • Да
  • Следуйте инструкциям этой главы
    1. Поддержание безопасности системы

                  1. Ключевые файлы, термины и утилиты:

Tripwire
telnet
nmap

      1. Выполнение задач по поддержанию безопасности

Введение


Безопасность – это не состояние и не результат, а непрекращающийся процесс. Это означает, что администратор должен просматривать файлы журналов каждый день, устанавливать обновления для системы, применять патчи, в частности, устраняющие проблемы с безопасностью, запускать сканеры, выявляющие потенциальные уязвимости (такие как Nessus), запускать системы обнаружения вторжений (на уровне хоста, такие как Tripwire или на уровне локальной сети как Snort) и т.п...


Работа администратора по обеспечению безопасности занимает полный рабочий день.

Основы Kerberos


Введение:

Kerberos - это механизм аутентификации, созданный в MIT (Massachusets Institute of Technology – Массачусетский Технологической Институт). Этот механизм использует сильное шифрование данных и аутентификацию для удостоверения обмена данными между клиентом и сервером или приложениями.


Каждое приложение, которое хочет использовать механизм аутентификации Kerberos, должно иметь встроенную поддержку Kerberos. Большинство приложений, таких как клиенты telnet или ftp были переписаны с поддержкой kerberos. Важно знать, что локальные приложения вашей компании могут потребовать доработки, чтобы сделать их совместимыми с kerberos.


Как это работает:

Клиент (или сервис, или пользователь) посылает запрос на получение билета (авторизации для клиента, позволяющей использовать определенный сервис в течение определенного периода времени) на сервер Kerberos, именуемый KDC (Key Distribution Center – центр распределения ключей – этот сервер содержит базу паролей клиентов). KDC генерирует билет (TGT : Ticket Granting Ticket), шифруя его паролем клиента, и отсылает обратно. Клиент расшифровывает билет и использует его для доступа к сервису.

Настройка:


Kerberos использует следующие конфигурационные файлы:
  • /etc/kerberos/krb5kdc/kdc.conf
  • /etc/kerberos/krb5kdc/kadm5.acl



Затем нужно предпринять следующие шаги:
  • Создать базу данных с помощью основной утилиты Kerberos: kdb5_util
  • Добавить администраторов Kerberos с помощью kadmin
  • Запустить демоны Kerberos:
  • /etc/rc.d/init.d/kadmin
  • /etc/rc.d/init.d/kprop
  • /etc/rc.d/init.d/krb524
  • /etc/rc.d/init.d/krb5kdc
  • /etc/rc.d/init.d/krb5server
  • Создать хосты и сервисы в базе KDC с помощью kadmin
  • Установить Kerberos на клиентские машины




Быть в курсе


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


Существует несколько списков рассылки, относящихся к безопасности:
  • BugTraq (ссылка скрыта) - наиболее известный список рассылки, посвященный компьютерной безопасности. Почти все уязвимости попадают в этот список, иногда с инструкциями по их эксплуатации или описанием.
  • CERT / CC (Computer Emergency Response Team / Coordination Center ссылка скрыта) - Центр экспертизы безопасности Интернета. Обрабатывает информацию об уязвимостях, поддерживая базу данных, а также предоставляют услуги по обучению в области безопасности (сертификация и т.п.)
  • CIAC (ссылка скрыта) - консультативная служба компьютерных сбоев, поддерживаемая Министерством Энергетики США. Выполняет почти ту же работу, что и CERT/CC, но для Министерства Энергетики.



Выявление открытых почтовых ретрансляторов


Открытый почтовый ретранслятор (open relay) - это почтовый сервер, принимающий соединения от всех и вся. Такие серверы используются спамерами для рассылки спама.


Проверка на то, что сервер является открытым релеем, довольно проста:

[user@test user]$ telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is ']'.

220 test@domain.org ESMTP Sendmail 8.12.11/8.12.11; Wed, 18 Aug 2004 22:06:55 +0200

HELO test

250 test@domain.org Hello localhost [127.0.0.1], pleased to meet you

mail from: spammer@whatever.com

250 2.1.0 spammer@whatever.com... Sender ok

rcpt to: someone@domain.org

250 2.1.5 someone@domain.org... Recipient ok

DATA

354 Enter mail, end with "." on a line by itself

test open relay

.

250 2.0.0 i7IK6tPp009873 Message accepted for delivery

]

telnet> Connection closed.

[user@test user]$


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



Системы обнаружения вторжений


Tripwire :


Tripwire - это утилита обнаружения вторжений. Эта программа осуществляет мониторинг изменений ключевых файлов, отслеживая контрольные суммы, размеры, и т.п.


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


Настройка:


Два конфигурационных файла:

/etc/tripwire/twcfg.txt

ROOT =/usr/sbin

POLFILE =/etc/tripwire/tw.pol

DBFILE =/var/lib/tripwire/$(HOSTNAME).twd

REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr

SITEKEYFILE =/etc/tripwire/site.key

LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key

EDITOR =/bin/vi

LATEPROMPTING =false

LOOSEDIRECTORYCHECKING =false

MAILNOVIOLATIONS =true

EMAILREPORTLEVEL =3

REPORTLEVEL =3

MAILMETHOD =SENDMAIL

SYSLOGREPORTING =false

MAILPROGRAM =/usr/sbin/sendmail -oi -t


Здесь мы задаем главные настройки Tripwire.


/etc/tripwire/twpol.txt

...

[пропущено]

...


@@section GLOBAL

TWROOT=/usr/sbin;

TWBIN=/usr/sbin;

TWPOL="/etc/tripwire";

TWDB="/var/lib/tripwire";

TWSKEY="/etc/tripwire";

TWLKEY="/etc/tripwire";

TWREPORT="/var/lib/tripwire/report";

HOSTNAME=localhost;


@@section FS

SEC_CRIT = $(IgnoreNone)-SHa ; # Critical files that cannot change

SEC_SUID = $(IgnoreNone)-SHa ; # Binaries with the SUID or SGID flags set

SEC_BIN = $(ReadOnly) ; # Binaries that should not change

SEC_CONFIG = $(Dynamic) ; # Config files that are changed infrequently but accessed often

SEC_LOG = $(Growing) ; # Files that grow, but that should never change ownership

SEC_INVARIANT = +tpug ; # Directories that should never change permission or ownership

SIG_LOW = 33 ; # Non-critical files that are of minimal security impact

SIG_MED = 66 ; # Non-critical files that are of significant security impact

SIG_HI = 100 ; # Critical files that are significant points of vulnerability


...

[SNIP]

...


(

rulename = "Kernel Administration Programs",

severity = $(SIG_HI)

)

{

/sbin/adjtimex -> $(SEC_CRIT) ;

/sbin/ctrlaltdel -> $(SEC_CRIT) ;

/sbin/depmod -> $(SEC_CRIT) ;

/sbin/insmod -> $(SEC_CRIT) ;

/sbin/insmod.static -> $(SEC_CRIT) ;

/sbin/insmod_ksymoops_clean -> $(SEC_CRIT) ;

/sbin/klogd -> $(SEC_CRIT) ;

/sbin/ldconfig -> $(SEC_CRIT) ;

/sbin/minilogd -> $(SEC_CRIT) ;

/sbin/modinfo -> $(SEC_CRIT) ;

#/sbin/nuactlun -> $(SEC_CRIT) ;

#/sbin/nuscsitcpd -> $(SEC_CRIT) ;

/sbin/pivot_root -> $(SEC_CRIT) ;

/sbin/sndconfig -> $(SEC_CRIT) ;

/sbin/sysctl -> $(SEC_CRIT) ;

}


Здесь мы задаем то, какие атрибуты и для каких файлов мы собираемся проверять.


Каждый файл является объектом, для которого задается маска свойств :



Свойство

Атрибут объекта

Свойство

Атрибут объекта

a

Время доступа

p

Права и режим доступа

b

Число занятых на диске блоков

r

ID устройства, на которое указывает дескриптор
(допустимо только для файлов устройств)

c

Время создания/изменения дескриптора файла

s

Размер файла

d

ID устройства, на котором находится дескриптор файла

t

Тип файла

g

ID группы, владельца файла

u

ID владельца файла

i

Номер дескриптора

C

Хэш CRC-32

l

Файл увеличивается в размере

H

Хэш Haval

m

Время модификации

M

Хзш MD5

n

Число ссылок

S

Хзш SHA



В Tripwire существует набор предопределенных переменных – комбинаций свойств:



Переменная

Маска свойств

Что делает

$(ReadOnly)

+pinugtsdbmCM-rlacSH

Переменная ReadOnly подходит для доступных всем файлов, которые, тем не менее, должны оставаться доступными только для чтения.

$(Dynamic)

+pinugtd-srlbamcCMSH

Dynamic подходит для мониторинга каталогов и файлов, которые имеют тенденцию к изменению.

$(Growing)

+pinugtdl-srbamcCMSH

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

$(Device)

+pugsdr-intlbamcCMSH

Device хорош для устройств или других файлов, которые Tripwire не должен пытаться открыть.

$(IgnoreAll)

-pinugtsdrlbamcCMS

IgnoreAll отслеживает присутствие или отсутствие файла, но не проверяет другие свойства.

$(IgnoreNone)

+pinugtsdrbamcCMSH-l

IgnoreNone проверяет все свойства, и предоставляет разумный начальный вариант для задания вашей собственной маски.  (Например, mymask = $(IgnoreNone) -ar;). Имейте в виду, что свойство l (растущий файл) не отслеживается маской $(IgnoreNone).



Третий конфигурационный файл: /etc/tripwire/twinstall.sh. Этот скрипт должен быть запущен после установки.

[root@test tripwire]# ./twinstall.sh


----------------------------------------------

The Tripwire site and local passphrases are used to

sign a variety of files, such as the configuration,

policy, and database files.


Passphrases should be at least 8 characters in length

and contain both letters and numbers.


See the Tripwire manual for more information.


----------------------------------------------

Creating key files...


...

[пропущено]

...


----------------------------------------------

Signing policy file...

Please enter your site passphrase:

Wrote policy file: /etc/tripwire/tw.pol


A clear-text version of the Tripwire policy file

/etc/tripwire/twpol.txt

has been preserved for your inspection. This implements

a minimal policy, intended only to test essential

Tripwire functionality. You should edit the policy file

to describe your system, and then use twadmin to generate

a new signed copy of the Tripwire policy.


[root@test tripwire]#


На следующем шаге необходимо инициализировать базу tripwire:

[root@test tripwire]# tripwire --init

Please enter your local passphrase:

Parsing policy file: /etc/tripwire/tw.pol

Generating the database...

*** Processing Unix File System ***


...

[пропущено]

...


Wrote database file: /var/lib/tripwire/test.twd

The database was successfully generated.

[root@test tripwire]#


Теперь мы можем проверить систему с помощью этой базы:

[root@test tripwire]# tripwire --check

...

[пропущено]

...

Tripwire(R) 2.3.0 Integrity Check Report


Report generated by:

Report created on: Thu Aug 19 11:06:11 2004

Database last updated on: Never


=============================================================================

Report Summary:

=============================================================================


Host name: test

Host IP address: Unknown IP

Host ID: None

Policy file used: /etc/tripwire/tw.pol

Configuration file used: /etc/tripwire/tw.cfg

Database file used: /var/lib/tripwire/test.twd

Command line used: tripwire --check


=============================================================================

Rule Summary:

=============================================================================


-----------------------------------------------------------------------------

Section: Unix File System

-----------------------------------------------------------------------------


Rule Name Severity Level Added Removed Modified

--------- -------------- ----- ------- --------

Invariant Directories 66 0 0 0

Temporary directories 33 0 0 0

* Tripwire Data Files 100 1 0 0

Critical devices 100 0 0 0


...

[SNIP]

...

-----------------------------------------------------------------------------

*** End of report ***


Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered

trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;

for details use --version. This is free software which may be redistributed

or modified only under certain conditions; see COPYING for details.

All rights reserved.

Integrity check complete.

[root@test tripwire]#


После проверки tripwire генерирует отчет с именем – временем запуска. Этот отчет находится в каталоге /var/lib/tripwire/report :

[root@test root]# ls /var/lib/tripwire/report/

test-20040819-110611.twr

[root@test root]#


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


Обновление базы tripwire:

[root@test tripwire]# /usr/sbin/tripwire --update --twrfile /var/lib/tripwire/report/test-20040819-110611.twr


Please enter your local passphrase:

Wrote database file: /var/lib/tripwire/test.twd

[root@test tripwire]#


Snort :


Введение:


Snort - это система обнаружения вторжений с открытым исходным кодом, способная выполнять анализ трафика в реальном времени и регистрацию пакетов в IP-сетях. Утилита может выполнять анализ протоколов, поиск определенного содержимого и может быть использована для обнаружения различных атак и зондирований, таких как переполнение буфера, сканирование портов, атак на CGI, зондирований SMB, попыток определения операционной системы и многого другого.


Snort также может быть использован для прослушивания трафика:

[root@test root]# snort -v

Running in packet dump mode

Log directory = /var/log/snort


Initializing Network Interface eth0


--== Initializing Snort ==--

Initializing Output Plugins!

Decoding Ethernet on interface eth0


--== Initialization Complete ==--


-*> Snort! <*-

Version 2.1.0 (Build 9)

By Martin Roesch (roesch@sourcefire.com, www.snort.org)

08/19-12:15:15.663264 0.0.0.0:68 -> 255.255.255.255:67

UDP TTL:128 TOS:0x0 ID:17587 IpLen:20 DgmLen:328

Len: 300

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


08/19-12:15:19.668662 0.0.0.0:68 -> 255.255.255.255:67

UDP TTL:128 TOS:0x0 ID:17589 IpLen:20 DgmLen:328

Len: 300

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


08/19-12:15:21.192426 ARP who-has 192.168.0.254 tell 192.168.0.42


08/19-12:15:21.192587 ARP reply 192.168.0.254 is-at 0:C0:9F:2F:7E:DD


08/19-12:15:21.192598 192.168.0.42:33122 -> 199.107.65.177:80

TCP TTL:64 TOS:0x0 ID:34789 IpLen:20 DgmLen:60 DF

******S* Seq: 0x2D71BAF6 Ack: 0x0 Win: 0x16D0 TcpLen: 40

TCP Options (5) => MSS: 1460 SackOK TS: 10370323 0 NOP WS: 0

=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

...

[пропущено]

...


более подробный вывод:

[root@test root]# snort -vde

Running in packet dump mode

Log directory = /var/log/snort


Initializing Network Interface eth0


--== Initializing Snort ==--

Initializing Output Plugins!

Decoding Ethernet on interface eth0


--== Initialization Complete ==--


-*> Snort! <*-

Version 2.1.0 (Build 9)

By Martin Roesch (roesch@sourcefire.com, www.snort.org)

08/19-12:16:23.135164 0:40:F4:98:D2:D9 -> 0:C0:9F:2F:7E:DD type:0x800 len:0x62

192.168.0.42 -> 4.2.2.1 ICMP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:84 DF

Type:8 Code:0 ID:35600 Seq:1 ECHO

F7 7D 24 41 E3 0F 02 00 08 09 0A 0B 0C 0D 0E 0F .}$A............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567


=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


08/19-12:16:23.441050 0:C0:9F:2F:7E:DD -> 0:40:F4:98:D2:D9 type:0x800 len:0x62

4.2.2.1 -> 192.168.0.42 ICMP TTL:244 TOS:0x0 ID:17833 IpLen:20 DgmLen:84 DF

Type:0 Code:0 ID:35600 Seq:1 ECHO REPLY

F7 7D 24 41 E3 0F 02 00 08 09 0A 0B 0C 0D 0E 0F .}$A............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567


=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+


Настройка:


Мы хотим запустить snort в режиме демона, обнаруживающего внешние вторжения.


Главный конфигурационный файл snort /etc/snort/snort.conf :

#--------------------------------------------------

# .org Snort 2.1.0 Ruleset

# Contact: snort-sigs@lists.sourceforge.net

#--------------------------------------------------

# $Id: snort.conf,v 1.133 2003/12/18 17:05:07 cazz Exp $

#

###################################################

# This file contains a sample snort configuration.

# You can take the following steps to create your own custom configuration:

#

# 1) Set the network variables for your network

# 2) Configure preprocessors

# 3) Configure output plugins

# 4) Customize your rule set

#

###################################################


...

[пропущено]

...


Эти комментарии отражают главные шаги настройки Snort:
  • Задание локальной сети: мы сообщаем snort наш IP-адрес, а также, что является нашей сетью, а что внешней
  • Настройка процессоров: процессоры - это расширения snort выполняющие какие-либо действия. Например, существуют процессоры, декодирующие HTTP-трафик. Как правило, работа процессоров занимает существенную часть процессорного времени.
  • Настройка подключаемых модулей вывода данных: позволяют выбрать, осуществлять ли регистрацию данных в текстовом файле, базе данных SQL или где-либо еще.
  • Настройка набора правил: правила задают то, что должен отслеживать snort. Правила помещаются в несколько файлов, в зависимости от их типа. В этом месте мы должны выбрать, что мы хотим отслеживать (например, деактивируйте мониторинг сервера IIS, если его нет в вашей сети)



Правила Snort обычно находятся в /etc/snort/rules :

[root@test root]# ls /etc/snort/rules/

attack-responses.rules experimental.rules local.rules p2p.rules shellcode.rules web-cgi.rules

backdoor.rules exploit.rules misc.rules policy.rules smtp.rules web-client.rules

bad-traffic.rules finger.rules multimedia.rules pop2.rules snmp.rules web-coldfusion.rules

chat.rules ftp.rules mysql.rules pop3.rules sql.rules web-frontpage.rules

ddos.rules icmp-info.rules netbios.rules porn.rules telnet.rules web-iis.rules

deleted.rules icmp.rules nntp.rules rpc.rules tftp.rules web-misc.rules

dns.rules imap.rules oracle.rules rservices.rules virus.rules web-php.rules

dos.rules info.rules other-ids.rules scan.rules web-attacks.rules x11.rules

[root@test root]#


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

alert tcp $EXTERNAL_NET any -> $HOME_NET 21 (msg:"FTP CWD ..."; flow:to_server,established; content:"CWD"; nocase; content:"..."; classtype:bad-unknown; sid:1229; rev:5;)


Это правило означает, что snort должен подать сигнал тревоги, если он получит пакет, пришедший из внешней сети и адресованный нашей локальной сети, предназначенный для порта FTP и содержащий строку “CWD”.


Чтобы запустить демон snort:

[root@test root]# /etc/init.d/snortd start

Starting snort: [ OK ]

[root@test root]#