Библиотека сайта rus-linux.net
Глава 10. Программы обеспечения безопасности (Утилиты контроля)
Linux sXid
SUID/SGID-файлы несут в себе риск для безопасности. Для уменьшения этого риска, мы убрали бит s с программ, владельцем которых является root, и которым эти полномочия не нужны, но возможно в будущем, на существующие программы может быть установлен этот бит без предупреждения. sXid это программа для контроля за SUID/SGID программами, запеускаемая из cron. В основном, она отслеживает любые изменения в suid-программах и папках. Если появились новые файлы, или у существующих программ этот бит снят, или в них изменились биты или другие режимы, то sXid сообщит об этом по электронной почте или в командной строке в удобочитаемом формате. sXid автоматизирует задачу поиска всех SUID/SGID-файлов на сервере и известит Вас о них. После ее инсталляции Вы можете забыть об этой работе, она сделает все за Вас.
Эти инструкции предполагают:
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
sXid версии 4.0.1.
Пакеты.
FTP сервер:
ftp://marcus.seva.net/pub/sxid.
Вы должны скачать: sxid_4.0.1.tar.gz.
Хорошей идеей будет создать список файлов, установленных в Вашей системе до инсталляции sXid и после в результате, с помощью утилиты diff Вы сможете узнать, какие именно файлы были установлены. Например, до инсталляции:
find /* > sXid1
После инсталляции:
find /* > sXid2
Для получения списка установленных файлов:
diff sXid1 sXid2 > sXid-Installed
[root@deep /]# cp sxid_version.tar.gz /var/tmp/ [root@deep /]# cd /var/tmp [root@deep tmp]# tar xzpf sxid_version.tar.gz
Переместитесь в новый каталог sXid и выполните следующие команды:
[root@deep tmp]# cd sxid-4.0.1 [root@deep sxid-4.0.1]# make install
Вышеприведенные команды будут конфигурировать программу, проверяя, что Ваша система имеет необходимые библиотеки и способна выполнять необходимые функции, компилирует все исходные файлы в исполняемые, а затем инсталлирует все двоичные и вспомогательные файлы в определенное место.
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf sxid-version/ sxid_version_tar.gz
Команда rm, использованная выше, удалит все исходные коды, которые Вы использовали при компиляции и инсталляции sXid. Она также удалит .tar.gz-архив.
Конфигурации.
Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве floppy.tgz, включающий все конфигурационные файлы для всех программ. Если Вы скачаете этот файл, то не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файл из архива и измените его под свои требования. Затем поместите его в соответствующее место на сервере так, как это показано ниже. Файл с конфигурациями Вы можете скачать с адреса: http://www.openna.com/books/floppy.tgz.
Для запуска sXid должен быть создан или скопирован файл sxid.conf в каталог /etc.
Настройка файла /etc/sxid.conf.
Конфигурационный файл /etc/sxid.conf позволяет установить опции, которые управляют действиями программы.
Шаг 1.
Редактируйте файл sxid.conf file (vi /etc/sxid.conf) и измените все, что нужно:
# Конфигурационный файл для sXid # Замечу, что все пути должны быть абсолютными без замыкающих / # Где начинать поиск файлов SEARCH = "/" # Какие каталоги исключить из поиска EXCLUDE = "/proc /mnt /cdrom /floppy" # Кому посылать отчеты EMAIL = "root" # Всегда посылать отчеты, даже если нет изменений? ALWAYS_NOTIFY = "no" # Где хранить промежуточные протоколы. Они будут циклически ротироваться # x раз согласно KEEP_LOGS LOG_FILE = "/var/log/sxid.log" # Как много протоколов хранить KEEP_LOGS = "5" # Сдвигать протоколы, когда не произошло никаких изменений? ALWAYS_ROTATE = "no" # Каталоги, где +s запрещены (они проверяются даже # если явно на прописнаы в SEARCH), правила EXCLUDE применяются FORBIDDEN = "/home /tmp" # Удалять -s у файлов, найденных в запрещенном каталоге? ENFORCE = "yes" # Это предполагает ALWAYS_NOTIFY. Будет посылаться полный список # элементов наряду с изменениями LISTALL = "no" # Игнорировать элементы для каталогов в этом пути # Это означает, что файлы будут только регистрироваться, Вы # можете эффективно игнорировать все элементы каталогов # установив это в "/". По умолчанию /home, так как # в некоторых системах /home имеет права g+s. IGNORE_DIRS = "/home" # Файл, который содержит список (каждый в новой строке) # других файлов, которые sxid должен проверять. Это полезно # для файлов, не имеющих +s, но относящихся к целостности # системы (tcpd, inetd, apache, ...). # EXTRA_LIST = "/etc/sxid.list" # Почтовая программа. Это опция изменяет определенную при компиляции # почтовую программу для отчетов. Эта опция нужно только если Вы изменили # месторасположение по умолчанию и не хотите перекомпилировать sxid. # MAIL_PROG = "/usr/bin/mail"
Шаг 2.
Поместите соответствующий элемент в файл crontab пользователя root, чтобы sXid выполнялся автоматически. sXid будет автоматически запускаться и отслеживать появление новых s[ug]id-программ, изменений произошедших с существующими (снятие этого бита, изменение режима доступа и пр.), их удаление, составляя отчет о произошедших событиях.
Для редактирования crontab введите команду:
[root@deep /]# crontab -e
И добавьте следующую строку в crontab (запуск каждый день в 4 часа утра):
0 4 * * * /usr/bin/sxid
Дополнительная документация.
Для получения большей информации, читайте соответствующие man-страницы:
$ man sxid.conf (5) конфигурационные устаноки для sxid
$ man sxid (1) проверяет изменения в s[ug]id файлах и каталогах
Административная утилита sXid
Эта программа предназначена для запуска с помощью cron. Она должна запускаться один раз в день, но можно и два раза.
Для запуска sxid вручную введите:
[root@deep /]# sxid -k sXid Vers : 4.0.1 Check run : Wed Dec 29 12:40:32 1999 This host : mail.openna.com Spotcheck : /home/admin Excluding : /proc /mnt /cdrom /floppy Ignore Dirs: /home Forbidden : /home /tmp No changes found
Она проверяет изменения в текущем рабочем каталоге. Ротации файлов регистрации и отправки сообщений по почте не происходит. Все результаты выводятся на stdout.
Инсталлированные файлы.
> /etc/sxid.conf > /usr/bin/sxid > /usr/man/man1/sxid.1 > /usr/man/man5/sxid.conf.5
Linux Logcheck
Одной из важнейших задач в мире обеспечения безопасности является анализ файлов регистраций. Часто повседневные работы администратора не оставляют ему время на это, что может привести к ряду проблем.
В кратком обзоре Logcheck сказано:
Ревизия и регистрация системных событий чрезвычайно важна. Системный администратор должен знать о происходящих событиях, чтобы суметь предотвратить возникновение проблем, особенно если система подключена к Интернет. К сожалению, для большинства версий UNIX регистрация событий не имеет значения, так как лог-файлы никто не просматривает. Это то, в чем Вам может помочь Logcheck. Он автоматизирует ревизию зарегистрированных событий, отфильтровывая нормальные сообщения, чтобы Вы могли концентрировано посмотреть на проблемы и потенциальных нарушителей.
Logcheck это программное обеспечение, которое создано, чтобы автоматически проверять системные журналы на предмет нарушений защиты и необычной активности. Она использует программу logtail, которая запоминает последнюю позицию, считанную из системного журнала, и использует ее при следующем запуске для получения новой информации.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Logcheck версии 1.1.1.
Пакеты.
Домашняя страница Logcheck:
http://www.psionic.com/abacus/logcheck.
Вы должны скачать: logcheck-1.1.1.tar.gz.
Архив.
find /* > Logcheck1
find /* > Logcheck2
diff Logcheck1 Logcheck2 > Logcheck-Installed
[root@deep /]# cp logcheck-version.tar.gz /var/tmp/ [root@deep /]# cd /var/tmp [root@deep tmp]# tar xzpf logcheck-version.tar.gz
Вы должны редактировать файл Makefile для Logcheck, чтобы определить инсталляционные пути, флаги компиляции и оптимизации для Вашей системы. Место, куда будет установлен Logcheck, должно соответствовать структуре расположения системных файлов Red Hat, а расположение скрипта Logcheck переменной окружения PATH.
Шаг 1.
Переместитесь в новый каталог Logcheck и выполните следующие команды:
Редактируйте файл Makefile (vi Makefile) и измените следующие строки:
CC = ccДолжна читаться:
CC = egcs
CFLAGS = -OДолжна читаться:
CFLAGS = -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro \ -march=pentiumpro -fomit-frame-pointer -fno-exceptions
INSTALLDIR = /usr/local/etcДолжна читаться:
INSTALLDIR = /etc/logcheck
INSTALLDIR_BIN = /usr/local/binДолжна читаться:
INSTALLDIR_BIN = /usr/bin
INSTALLDIR_SH = /usr/local/etcДолжна читаться:
INSTALLDIR_SH = /usr/bin
TMPDIR = /usr/local/etc/tmpДолжна читаться:
TMPDIR = /etc/logcheck/tmp
Вышеприведенные изменения настраивают на использование компилятора egcc, включают оптимизационные флаги, подходящие для Вашей системы, и определяют месторасположение файлов Logcheck, соответствующее структуре размещения системных файлов Red Hat.
Шаг 2
@if [ ! -d $(TMPDIR) ]; then /bin/mkdir $(TMPDIR); fiДолжна читаться:
@if [ ! -d $(TMPDIR) ]; then /bin/mkdir -p $(TMPDIR); fi
Вышеупомянутое изменение (-p) позволит инсталляционной программе создавать родительские каталоги, когда это необходимо.
Шаг 3.
Инсталляция Logcheck на Вашей системе:
[root@deep logcheck-1.1.1]# make linux
Вышеприведенная команда будут настраивать программу на операционную систему Linux, компилировать все исходные файлы в исполняемые двоичные, а затем инсталлировать все двоичные и вспомогательные файлы в определенное место.
[root@deep /]# cd /var/tmp [root@deep tmp]# rm -rf logcheck-version/ logcheck-version_tar.gz
Команда rm, использованная выше, будет удалять все исходные коды, которые Вы использовали при компиляции и инсталляции Logcheck. Она также удалит архив .tar.gz из временного каталога /var/tmp.
Конфигурация.
Так как Вы использовали альтернативное месторасположение файлов, необходимо изменить пути к logcheck.hacking, logcheck.violations, logcheck.ignore, logcheck.violations.ignore и logtail в основном скрипте logcheck.sh. Скрипт-файл для Logcheck /usr/bin/logcheck.sh позволяет настроить опции, которые модифицируют пути и действия программы. Он хорошо комментирован и очень прост.
Шаг 1.
Редактируйте файл logcheck.sh (vi /usr/bin/logcheck.sh) и измените следующее:
LOGTAIL=/usr/local/bin/logtailДолжна читаться:
LOGTAIL=/usr/bin/logtail
TMPDIR=/usr/local/etc/tmpДолжна читаться:
TMPDIR=/etc/logcheck/tmp
HACKING_FILE=/usr/local/etc/logcheck.hackingДолжна читаться:
HACKING_FILE=/etc/logcheck/logcheck.hacking
VIOLATIONS_FILE=/usr/local/etc/logcheck.violationsДолжна читаться:
VIOLATIONS_FILE=/etc/logcheck/logcheck.violations
VIOLATIONS_IGNORE_FILE=/usr/local/etc/logcheck.violations.ignoreДолжна читаться:
VIOLATIONS_IGNORE_FILE=/etc/logcheck/logcheck.violations.ignore
IGNORE_FILE=/usr/local/etc/logcheck.ignoreДолжна читаться:
IGNORE_FILE=/etc/logcheck/logcheck.ignore
Шаг 2.
Поместите соответствующий элемент в файл crontab пользователя root, чтобы Logcheck выполнялся автоматически каждый час (рекомендуется, можете запускать его чаще или реже).
Для редактирования crontab введите команду:
[root@deep /]# crontab -eЗатем добавьте следующие строки в crontab:
# Ежечасная проверка системных журналов на предмет # нарушений защиты и необычной активности. 00 * * * * /usr/bin/logcheck.sh
ЗАМЕЧАНИЕ. Запомните, что Logcheck не присылает отчеты по электронной почте, если ему нечего Вам сказать.
Проинсталлированные файлы.> /etc/logcheck > /usr/bin/logcheck.sh > /etc/logcheck/tmp > /etc/logcheck/logcheck.hacking > /etc/logcheck/logcheck.violations > /etc/logcheck/logcheck.violations.ignore > /etc/logcheck/logcheck.ignore > /usr/bin/logtail > /var/log/messages.offset > /var/log/secure.offset > /var/log/maillog.offset
Linux PortSentry
Краткий обзор
Брандмауэры помогают защитить сеть от вторжений. С их помощью Вы выбираете, какие порты открыть, а какие нет. Никто снаружи Вашей сети не владеет информацией об этом, но может попытаться организовать атаку при помощи программ сканирования портов. Они покажут, какие порты у Вас открыты.
Как сказано во введение к PortSentry:
Сканирование портов это симптом больших проблем, которые Вас ждут. Это часто является предвестником атак. PortSentry это программа, созданная для определения и ответа на сканирование портов в реальном времени. Когда сканирование портов обнаружено, могут последовать следующие ответы:
- Занесение информации об инциденте в системный журнал через syslog().
- Компьютер, замеченный в сканировании, автоматически заносится в файл /etc/host.deny для блокировки средствами TCP Wrappers.
- Локальный компьютер автоматически перенастраивается, чтобы направлять весь трафик от атакующего на несуществующий компьютер.
- Локальный компьютер автоматически перенастраивается, чтобы блокировать все пакеты от атакующего пакетным фильтром.
Эти инструкции предполагают.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
PortSentry версии 1.0.
Пакеты.
Домашняя страница PortSentry:
http://www.psionic.com/abacus/portsentry,
Вы должны скачать: portsentry-1.0.tar.gz.
find /* > Portsentry1
find /* > Portsentry2
diff Portsentry1 Portsentry2 > Portsentry-Installed
Раскрываем архив (tar.gz).
[root@deep /]# cp portsentry-version.tar.gz /var/tmp/ [root@deep /]# cd /var/tmp [root@deep tmp]# tar xzpf portsentry-version.tar.gz
Компиляция и оптимизация
Вы должны редактировать файл Makefile PortSentry, чтобы определить инсталляционные пути, флаги компиляции и оптимизации для Вашей системы. Место, куда будет установлен PortSentry, должно соответствовать структуре расположения системных файлов Red Hat.
Шаг 1.
Переместитесь в новый каталог PortSentry и выполните следующие команды:
Редактируйте файл Makefile (vi Makefile) и измените следующие строки:
CC = ccДолжна читаться:
CC = egcs
CFLAGS = -OДолжна читаться:
CFLAGS = -O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro \ -march=pentiumpro -fomit-frame-pointer -fno-exceptions -Wall
INSTALLDIR = /usr/local/psionicДолжна читаться:
INSTALLDIR = /usr/psionic
Вышеприведенные изменения настраивают на использование компилятора egcc, включают оптимизационные флаги, подходящие для Вашей системы, и определяют месторасположение файлов PortSentry, которое Вы выберите.
Шаг 2.
Так как Вы использовали альтернативное месторасположение файлов (не /usr/local/psionic), нужно изменить путь к конфигурационному файлу PortSentry в основном заголовочном файле portsentry_config.h.
Перемещаемся в новый каталог PortSentry и редактируем файл portsentry_config.h (vi portsentry_config.h), изменяя следующие строки:
#define CONFIG_FILE "/usr/local/psionic/portsentry/portsentry.conf"Должна читаться:
#define CONFIG_FILE "/usr/psionic/portsentry/portsentry.conf"
Шаг 3.
Инсталируем Portsentry на Вашей системе.
[root@deep portsentry-1.0]# make linux [root@deep portsentry-1.0]# make install
Вышеприведенныя команды будут настраивать программу на операционную систему Linux, компилировать, создавать и в заключение инсталлировать файлы в заданное место.
Очистка после работы
[root@deep /]# cd /var/tmp [root@deep tmp]# rm -rf portsentry-version/ portsentry-version_tar.gz
Команда rm, использованная выше, будет удалять все исходные коды, которые Вы использовали при компиляции и инсталляции PortSentry. Она также удалит архив .tar.gz из каталога /var/tmp.
Конфигурации
/usr/psionic/portsentry/portsentry.conf это основной конфигурационный файл для PortSentry. Вы можете определить, какие порты нужно слушать, какие IP-адреса отклонены, контролируются, игнорируются, для каких отключается автоматический ответ и т. д. Для получения большей информации читайте файл README.install в каталоге с исходными кодами PortSentry.
Редактируйте файл portsentry.conf (vi /usr/psionic/portsentry.conf) и измените опции, которые Вам нужны:
# Конфигурация PortSentry # # $Id: portsentry.conf,v 1.13 1999/11/09 02:45:42 crowland Exp crowland $ # # ВАЖНОЕ ЗАМЕЧАНИЕ: Вы не можете добавить пробелы между номерами портов. # По умолчанию настройки портов позволяют захватывать большое # количество основных проверок # # Все элементы должны быть в кавычках. ####################### # Конфигурации портов # ####################### # # Несколько примеров настроены для классического и основного Stealth-режимов. # # Я люблю всегда сохранить некоторые порты в нижнем конце диапазона. # Это позволит быстро обнаружить последовательное сканирование портов, # и обычно эти порты не используются (например, tcpmux порт 1) # # ** Пользователи X-Windows **: Если Вы запускаете X на Вашем сервере, Вам # нужно быть уверенным, что PortSentry не привязан к порту 6000 (или порту # 2000 для пользователей OpenWindows). # Сделав это Вы обеспечите правильный старт X-клиента. # # Эти привязанные порты игнорируются для режима # Advanced Stealth Scan Detection Mode. # # Раскомментируйте это для чрезвычайного анализа: #TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515 ,540,635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034, 30303,32771,32772,32773,32774,31337,40421,40425,49724,54320" #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,64 1,666,700,2049,32770,32771,32772,32773,32774,31337,54321" # # Используйте их, если Вы только хотите знать: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345, 12346,20034,31337,32771,32772,32773,32774,40421,49724,54320" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,32770,32771,32772,32773,3 2774,31337,54321" # # Используйте только для bare-bones #TCP_PORTS="1,11,15,110,111,143,540,635,1080,524,2000,12345,12346,20034,32 771,32772,32773,32774,49724,54320" #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,313 37,54321" ######################################### # Опции Advanced Stealth Scan Detection # ######################################### # Это номера портов, которые PortSentry должен контролировать в Advanced mode. # Любые порты "ниже" этого числа будут контролироваться. Оставьте это # для контроля всего ниже 1023. # # На многих Linux-системах нельзя привязать порты выше 61000. Это # потому, что эти порты используются как часть IP-маскарадинга. Я не # рекомендую Вам привязываться к этим номерам портов. Реальность: я не # рекомендую использовать порты за 1023, так как это будет приводить к # ошибочным предупреждениям. Вы были предупреждены! # Не пишите мне, если у Вас возникли проблемы потому, что я просто # высказываю Вам свое мнение. Не используйте ничего, выше порта 1023. ADVANCED_PORTS_TCP="1023" ADVANCED_PORTS_UDP="1023" # # Это поле говорит PortSentry, что порты (за исключением прослушиваемых # демонами) игнорируются. Это полезно для услуг, вызываемых ident, # например FTP, SMTP и wrappers, которые могут остаться незапущенными. # # По установленным здесь портам PortSentry будет просто не отвечать # на входящие запросы. Фактически, PortSentry будет их обрабатывать как # будто они привязаны к демонам. Заданные по умолчанию порты могут # выступать в отчетах, как возможно ложные сигналы тревоги и, вероятно, # должны быть оставлены для всех, кроме особо изолированных систем # TCP ident и NetBIOS-сервисы ADVANCED_EXCLUDE_TCP="113,139" # UDP route (RIP), NetBIOS, bootp broadcasts. ADVANCED_EXCLUDE_UDP="520,138,137,67" ########################## # Конфигурационные файлы # ########################## # Игнорируемые компьютеры IGNORE_FILE="/usr/psionic/portsentry/portsentry.ignore" # Компьютеры, которым было отказано в доступе (из истории работы) HISTORY_FILE="/usr/psionic/portsentry/portsentry.history" # Компьютеры доступ которым заблокирован только в этой сессии # (временно до следующей перезагрузки) BLOCKED_FILE="/usr/psionic/portsentry/portsentry.blocked" ################# # Опции ответов # ################# # Опции ликвидации атакующего. Каждое из этих действий будет выполняться, # если будет обнаружена атака. Если Вы не хотите отдельную # опцию, то закомментируйте ее, и она будет пропущена. # # Переменная $TARGET$ будет замещена целью атаки, когда атака обнаружена. # Переменная $PORT$ будет заменяться портом, который был сканирован. # ####################### # Опции игнорирования # ####################### # Эти опции позволяют допустить автоматические параметры ответа для # UDP/TCP. Это бывает полезно, если Вы хотите получить предупреждение о # соединениях, но не хотите реагировать на определенный протокол. # Для предотвращения возможных атак Denial of service через UDP и # определение stealth-сканирования для TCP, Вы можете пожелать отключить # блокирование, но оставить предупреждение. # Лично я предпочитаю ждать начала возникновения проблем до того как # что-нибудь предпринять, так как большинство атакующих ничего не делают. # Третья опция позволяет запускать внешнюю команду в случае сканирования. # Это может быть полезно, например, для администраторов, которые хотят # блокировать TCP, но для UDP будет высылаться предупреждение и т.д. # # 0 = Не блокировать UDP/TCP-сканирование. # 1 = Блокировать UDP/TCP-сканирование. # 2 = Запуск внешней команды (KILL_RUN_CMD) BLOCK_UDP="1" BLOCK_TCP="1" ################### # Сброс маршрутов # ################### # Эти команды используются для удаления маршрута или # хоста в локальную таблицу фильтрации. # # Шлюз (333.444.555.777) идеально должен быть неработающим хостом # в локальной подсети. На некоторых хостах вместо него используется # localhost (127.0.0.1), что дает тот же эффект. ЗАМЕТИМ ЧТО # 333.444.555.777 НЕ БУДЕТ РАБОТАТЬ, ИЗМЕНИТЕ ЭТО!! # # ВСЕ ОПЦИИ ОТКЛЮЧЕНИЯ МАРШРУТОВ ИЗНАЧАЛЬНО ЗАКОММЕНТИРОВАНЫ. # Убедитесь, что Вы раскомменировали # правильные строки для Вашей ОС. Если Вашей ОС нет в списке, # и Вы точно знаете команды, сбрасывающие маршруты, то, # пожалуйста, пришлите их мне. ТОЛЬКО ОДНА ОПЦИЯ KILL_ROUTE # МОЖЕТ БЫТЬ ИСПОЛЬЗОАНА ОДНОВРЕМЕННО, ТАК ЧТО # НЕ РАСКОММЕНТИРУЙТЕ БОЛЬШЕ ОДНОЙ СТРОКИ. # # ЗАМЕЧАНИЕ: route-команды это наименее оптимальная дорога блокирования, и # она не предоставляет полной защиты от UDP-атак и будет спокойно создавать # предупреждения для UDP и stealth-сканирований. Я всегда рекомендую # Вам использовать пакетный фильтр, потому что это соответствует замыслу. # # Общий #KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.777" # Общий для Linux #KILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.777" # Новые версии Linux поддерживают сейчас флаг reject. # Это лучше, чем вышестоящая опция KILL_ROUTE="/sbin/route add -host $TARGET$ reject" # Общие для BSD (BSDI, OpenBSD, NetBSD, FreeBSD) #KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.777" # Общий для Sun #KILL_ROUTE="/usr/sbin/route add $TARGET$ 333.444.555.777 1" # NEXTSTEP #KILL_ROUTE="/usr/etc/route add $TARGET$ 127.0.0.1 1" # FreeBSD (Оттестировано недостаточно хорошо) #KILL_ROUTE="route add -net $TARGET$ -netmask 255.255.255.255 \ # 127.0.0.1 -blackhole" # Digital UNIX 4.0D (OSF/1 / Compaq Tru64 UNIX) #KILL_ROUTE="/sbin/route add -host -blackhole $TARGET$ 127.0.0.1" # Общие для HP-UX #KILL_ROUTE="/usr/sbin/route add net $TARGET$ netmask 255.255.255.0 127.0.0.1" ## # Использование пакетного фильтра более предпочтительный метод. # Нижеперечисленные строки подходят для многих ОС. Помните, что Вы можете # раскомментировать только одну строку. # Опции KILL_ROUTE. ## ################ # TCP-Wrappers # ################ # Этот текст описывает внесение в файл hosts.deny для использования wrappers. # Здесь приводятся два формата для TCP wrappers: # # Формат 1: Старый стиль: по умолчанию, когда хост # не допускает обработки параметров. KILL_HOSTS_DENY="ALL: $TARGET$" # # Формат 2: Новый стиль: включение расширенной обработки протокола. # Вы можете просмотреть опции расширенной обработки, чтобы быть уверенными, # что перед символами "%" стоит символ "\" (например, \%c \%h). # #KILL_HOSTS_DENY="ALL: $TARGET$ : DENY" ################### # Внешние команды # ################### # Эта команда выполняется когда хост подключен, это может быть то, что Вам # нужно (пэйджер и т. д.). Эта команда выполняется перед очисткой маршрута. # Я НЕ РЕКОМЕНДУЮ ПОМЕЩАТЬ КАКИЕ-ЛИБО КАРАТЕЛЬНЫЕ ДЕЙСТВИЯ ПРОТИВ # ХОСТА, СКАНИРУЮЩЕГО ВАС. TCP/IP это протокол без подтверждения # подлинности, и люди могут организовать сканирование из ниоткуда. # Единственное, что можно безопасно запустить, это скрипт обратной # проверки, который использует классический -tcp-режим. Этот режим требует # полного соединения и очень труден для обмана (spoof). # #KILL_RUN_CMD="/some/path/here/script $TARGET$ $PORT$" ##################### # Значение триггеров сканирования # ##################### # Введите число соединений к портам, когда Вам будет выдано предупреждение. # По умолчанию значение равно 0: незамедлительная реакция. # Значения 1 или 2 будут уменьшать количество ложных срабатываний. В более # высоком значении нет необходимости. Это значение должно быть определено, # но как правило можно оставить 0. # # ЗАМЕЧАНИЕ: Если Вы используете продвинутые опции определения, # нужно быть внимательным, чтобы не создать ситуацию "спускового крючка, # требующего легкого нажатия". Поскольку расширенный режим будет # реагировать на любой удаленный компьютер, присоединяющийся с интервалом # ниже определенного здесь, Вы при определенных обстоятельствах # действительно разорвете что-нибудь (например, кто-то невинно пытается # соединиться с Вами через SSL [TCP-порт 443], а Вы сразу блокируете его). # Так что будьте внимательны. # SCAN_TRIGGER="0" ###################### # Секция заголовка (banner) порта # ###################### # # Введите здесь текст, который хотите показать оператору, отключаемому # PortSentry. Я не рекомендую насмехаться над ним, так как это может # его разозлить. Оставьте эти строки закомментироваными, чтобы # отключить эту возможность. # # Режим определения Stealth-сканирования не использует эту возможность. PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY." # EOF
Сейчас Вы должны проверить/изменить права, установленные по умолчанию, из соображения безопасности:
[root@deep /]# chmod 600 /usr/psionic/portsentry/portsentry.conf
Конфигурирование файла /usr/psionic/portsentry/portsentry.ignore.
В файл /usr/psionic/portsentry/portsentry.ignore Вы добавляете компьютеры, которые должны быть проигнорированы, если они присоединяются к порту. Он всегда должен содержать localhost-адрес (127.0.0.1) и адреса локальных машин. Не рекомендуется помещать в него все компьютеры из Вашей локальной сети. Редактируйте файл portsentry.ignore (vi /usr/psionic/portsentry.ignore) и добваьте в него все хосты, которые будут пропущены:
# Положите сюда адреса хостов, которые мы никогда не будем блокировать. # Здесь должны находится адреса всех локальных интерфейсов на # защищаемом сервере (например, virtual host, mult-home) # Сохраните здесь 127.0.0.1 и 0.0.0.0. 127.0.0.1 0.0.0.0Сейчас Вы должны проверить/изменить права доступа из соображений безопасности:
[root@deep /]# chmod 600 /usr/psionic/portsentry/portsentry.ignore
Запуск PortSentry
Программа PortSentry может быть сконфигурирована для работы в шести различных режимах, но запущена только для проверки одного протокольного режима за раз. Чтобы было более правильно, Вы можете запустить одни TCP-режим и один UDP-режим, так как два TCP и один UDP, для примера, не работают. Доступные режимы:
?portsentry -tcp (основной port-bound TCP-режим) ?portsentry -udp (основной port-bound UDP-режим) ?portsentry -stcp (определение Stealth TCP-сканирования) ?portsentry -atcp (продвинутое определение TCP stealth-сканирования) ?portsentry -sudp (определение "Stealth" UDP-сканирования) ?portsentry -audp (продвинутое определение UDP-сканирования)
В моем случае я предпочитаю запускать TCP в протокольном режиме "продвинутое определение TCP-stealth-сканирования" и UDP в протокольном режиме "определение Stealth UDP-сканирования". Для получения большей информации о других протокольных режимах, пожалуйста, прочитайте файлы README.install и README.stealth в каталоге с исходными кодами PortSentry. Для TCP-режима я выбираю:
-atcp продвинутое определение TCP stealth-сканирования
В режиме продвинутого определения TCP stealth-сканирования PortSentry будет
вначале смотреть, какие порты Вы запустили на сервере, а затем выведет их
из-под наблюдения и начнет следить за остальными портами. Это очень полезно и
очень быстро реагирует на сканирование портов. Этот режим, также,
потребляет мало времени CPU.
Для UDP режима я выбрал:
-sudp режим определения "Stealth" UDP-сканирования
В режиме определения "Stealth" UDP-сканирования UDP-порты сперва будут
формироваться в список, а затем контролироваться.
Для запуска PortSentry в двух вышеприведенных режимах используйте команды:
[root@deep /]# /usr/psionic/portsentry/portsentry -atcp [root@deep /]# /usr/psionic/portsentry/portsentry -sudp
ЗАМЕЧАНИЕ: Вы можете добавить вышеприведенные строки в файл /etc/rc.d/rc.local, чтобы они автоматически запускались при каждой перезагрузке системы.
Инсталлированные файлы.> /usr/psionic > /usr/psionic/portsentry > /usr/psionic/portsentry/portsentry.conf > /usr/psionic/portsentry/portsentry.ignore > /usr/psionic/portsentry/portsentry