Лаборатория Maint, Настройка защиты от сканирования портов с помощью PSAD
Maint Laboratory

Лаборатория Maint

 
  Главная     Программы     RPM пакеты     Библиотеки     Документация     Услуги     Контакты  

 

Настройка защиты от сканирования портов с помощью PSAD

  Cтатья посвящена настройке защиты портов от сканирования с помощью PSAD на Fedora. Для начала необходимо разместить в начале файервола команду


$IPTABLES -A INPUT -i $INET_IFACE -j LOG --log-level info --log-prefix "Inbound:"
 

где $INET_IFACE - интерфейс выходящий в интернет. В моем случае это adsl через ppp0, а $IPTABLES - полный путь к команде /sbin/iptables. Поскольку в Fedora 15 мы обладаем таким мощьным средством ведения протоколов, как rsyslog, перебросим протоколы из стандартного
/var/log/messages в отдельное место. С моей точки зрения, это необходимо, что бы не мусорить в /var/log/messages и облегчить работу PSAD. Для этого в каталоге /etc/rsyslog.d создадим файл iptables.conf со следующим содержимым:


:msg, contains, "Inbound:" -/var/log/iptables.log
& ~
 

После перезапуска rsyslog, необходимые записи будут производится в /var/log/iptables.log.
  Сама настройка достаточно прозрачна. Приведу пример основных параметров, которые следует поправить для нормальной блокировки.

# Параметр указывает получателей уведомлений о событиях psad.
# Поддерживается указание нескольких почтовых адресов, отделенных друг от друга запятой.
EMAIL_ADDRESSES user@example.ru;

# Доменное имя компьютера
HOSTNAME example.ru;

# HOME_NET определяет локальную сеть.
# Вы должны указать сети которые проходят через цепочку FORWARD iptables.
# Например для небольшой сети с двумя независимыми подсетями определяем
HOME_NET [192.168.0.0/24,192.168.1.0/24];

# Остальное внешние сети
EXTERNAL_NET any;

# Данный параметр указывает какая служба syslog используется в системе.
# Возможные значения параметра syslogd, syslog-ng, ulogd, metalog.
SYSLOG_DAEMON syslogd;

# Определяем уровни опасности, по которым будет происходить классификация событий.
# Значения после параметра определяют количество пакетов, которые должны прийти с атакующего узла
# прежде чем psad установит тот или иной уровень важности события.
DANGER_LEVEL1 5; ### Number of packets.
DANGER_LEVEL2 15;
DANGER_LEVEL3 150;
DANGER_LEVEL4 1500;
DANGER_LEVEL5 10000;

# Параметр определяет промежуток времени в секундах,
# через который psad будет просматривать новые сообщения от iptables. в протоколе
CHECK_INTERVAL 5;

# Определяет количество сетевых портов защищаемого компьютера, которые должны быть сканированы
# прежде чем psad пошлет уведомление тревоги. По умолчанию значение 1 означает, что должно быть
# сканировано более 1 порта (т.е. 2 и более) прежде чем сработает тревога. Можно установить
# значение в 0 , но тогда любой пакет пришедший на порт будет генерировать сигнал тревоги.
PORT_RANGE_SCAN_THRESHOLD 1;

# Если данный параметр установлен в Y, тогда информация о сканировании вашего компьютера
# никогда не устаревает. Данная опция полезна в случае когда атакующий пытается сканировать каждый
# из портов через достаточно длительный промежуток времени.
# Стоит учесть, что при установке данного параметра в Y вы заносите атакующего в черный список
# до перезагрузки psad.
ENABLE_PERSISTENCE N;

# Данная опция имеет смысл только при параметре ENABLE_PERSISTENCE равным N.
# С помощью данной опции задается интервал в секундах через который информация о сканировании
# обнуляется. По умолчанию данный параметр установлен в значение 3600 секунд,
# что означает Если с момента последнего события о сканировании порта атакующим прошло более 1 часа
# и более событий сканирования не было, тогда сбросить результаты сканирования
SCAN_TIMEOUT 3600; ### seconds

# Если данный параметр установлен в Y тогда показывать все сигнатуры с момента начала сканирования,
# а не только последнюю сигнатуру.
SHOW_ALL_SIGNATURES N;

# Указываем PSAD откуда он будет черпать информацию о сканировании
IPT_SYSLOG_FILE /var/log/iptables.log;

# Только при установке данного параметра в Y psad автоматически будет блокировать сканирующий хост.
ENABLE_AUTO_IDS Y;

# Задает значение времени в секундах, на которое будет заблокирован сканирующий хост.
AUTO_BLOCK_TIMEOUT 3600;

# Параметр задает способ, которым будет заблокирован трафик от атакующего
# В нашем случае трафик от атакующего будет заблокирован средствами iptables.
IPTABLES_BLOCK_METHOD Y;

# Следующие директивы имеют смысл только при установленном параметре IPTABLES_BLOCK_METHOD Y.
# Они задают правила, которые будут выполняться при осуществлении автоматического блокирования
# средствами iptables
IPT_AUTO_CHAIN1 DROP, src, filter, INPUT, 1, PSAD_BLOCK_INPUT, 1;
IPT_AUTO_CHAIN2 DROP, dst, filter, OUTPUT, 1, PSAD_BLOCK_OUTPUT, 1;
IPT_AUTO_CHAIN3 DROP, both, filter, FORWARD, 1, PSAD_BLOCK_FORWARD, 1;

# Данный параметр задает поведение psad при запуске, указывая нужно ли обновлять правила для iptables
FLUSH_IPT_AT_INIT N;

  Остальные параметры работы программы определяются по вкусу.Описанная здесь конфигурация достаточно хорошо блокирует попытки сканирование вашего хоста. Для проверки можно зайти на удаленный хост и любым сканнером портов ( например nmap ) определить корректность настройки. В каталоге /var/log/psad и/или почтовом ящике указанном в настойках должна появится информация о заблокированных адресах. Если вы зашли консолью через ssh, то она будет заблокирована. Кроме того можно посмотреть, что заблокировано в данный момент с помощью:


iptables-save | grep PSAD
 

При параметрах

ENABLE_SIG_MSG_SYSLOG Y;
SYSLOG_FACILITY LOG_LOCAL7;

PSAD пишет свои логи в /var/log/boot.log и /var/log/messages. Что бы не мусорить в эти файлы и иметь все протоколы в одном месте рекомендую в каталоге /etc/rsyslog.d создать файл psad.conf со следующим содержимым


:programname, contains, "psad" -/var/log/psad/psad.log & ~
 

Теперь все сообщения, которые выдаст PSAD будут находится в одном месте, что более удобно для их анализа

© Елохин И.Ю. (Maint Laboratory)