Безопасность · 7 min read · Jan 30, 2026

Chkrootkit-Portsentry-Howto

Chkrootkit-Portsentry-Howto

Version 1.0
Author: Falko Timme

Этот документ описывает, как установить chkrootkit и portsentry. Он должен работать (возможно, с небольшими изменениями, касающимися путей и т. д.) на всех *nix операционных системах.

Chkrootkit “это инструмент для локальной проверки признаков руткита” (из http://www.chkrootkit.org).

“Инструменты Sentry предоставляют услуги безопасности на уровне хоста для платформы Unix. PortSentry, Logcheck/LogSentry и HostSentry защищают от сканирования портов, автоматизируют аудит файлов журналов и обнаруживают подозрительную активность входа на постоянной основе” (из http://sourceforge.net/projects/sentrytools/).

Этот howto предназначен как практическое руководство; он не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.

Этот документ предоставляется без каких-либо гарантий!

1 Получите источники

Нам нужно следующее программное обеспечение: chkrootkit, portsentry и logcheck. Мы установим программное обеспечение из директории /tmp.

cd /tmp
wget –passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/portsentry-1.2.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/sentrytools/logcheck-1.1.1.tar.gz

2 Установите Chkrootkit

mv chkrootkit.tar.gz /usr/local/
cd /usr/local/
tar xvfz chkrootkit.tar.gz
ln -s chkrootkit-0.43/ chkrootkit (замените 0.43 на правильный номер версии) cd chkrootkit/ make sense*

Теперь вы найдете программу chkrootkit в /usr/local/chkrootkit. Запустите ее, набрав

cd /usr/local/chkrootkit/ && ./chkrootkit

Ваш вывод будет выглядеть примерно так:

| ROOTDIR is `/` Checking `amd`... not found Checking `basename`... not infected Checking `biff`... not infected Checking `chfn`... not infected Checking `chsh`... not infected Checking `cron`... not infected Checking `date`... not infected Checking `du`... not infected Checking `dirname`... not infected Checking `echo`... not infected Checking `egrep`... not infected Checking `env`... not infected Checking `find`... not infected Checking `fingerd`... not found Checking `gpm`... not found Checking `grep`... not infected Checking `hdparm`... not found Checking `su`... not infected Checking `ifconfig`... not infected Checking `inetd`... not infected Checking `inetdconf`... not infected Checking `identd`... not found Checking `init`... not infected Checking `killall`... not infected Checking `ldsopreload`... not infected Checking `login`... not infected Checking `ls`... not infected Checking `lsof`... not infected Checking `mail`... not infected Checking `mingetty`... not found Checking `netstat`... not infected Checking `named`... not infected Checking `passwd`... not infected Checking `pidof`... not infected Checking `pop2`... not found Checking `pop3`... not found Checking `ps`... not infected Checking `pstree`... not infected Checking `rpcinfo`... not infected Checking `rlogind`... not found Checking `rshd`... not found Checking `slogin`... not infected Checking `sendmail`... not infected Checking `sshd`... not infected Checking `syslogd`... not infected Checking `tar`... not infected Checking `tcpd`... not infected Checking `tcpdump`... not infected Checking `top`... not infected Checking `telnetd`... not found Checking `timed`... not found Checking `traceroute`... not found Checking `vdir`... not infected Checking `w`... not infected Checking `write`... not infected Checking `aliens`... no suspect files Searching for sniffer's logs, it may take a while... nothing found Searching for HiDrootkit's default dir... nothing found Searching for t0rn's default files and dirs... nothing found Searching for t0rn's v8 defaults... nothing found Searching for Lion Worm default files and dirs... nothing found Searching for RSHA's default files and dir... nothing found Searching for RH-Sharpe's default files... nothing found Searching for Ambient's rootkit (ark) default files and dirs... nothing found Searching for suspicious files and dirs, it may take a while... /usr/lib/perl/5.6.1/auto/Test/Harness/.packlist /usr/lib/perl/5.6.1/auto/DB_File/.packlist Searching for LPD Worm files and dirs... nothing found Searching for Ramen Worm files and dirs... nothing found Searching for Maniac files and dirs... nothing found Searching for RK17 files and dirs... nothing found Searching for Ducoci rootkit... nothing found Searching for Adore Worm... nothing found Searching for ShitC Worm... nothing found Searching for Omega Worm... nothing found Searching for Sadmind/IIS Worm... nothing found Searching for MonKit... nothing found Searching for Showtee... nothing found Searching for OpticKit... nothing found Searching for T.R.K... nothing found Searching for Mithra... nothing found Searching for OBSD rk v1... nothing found Searching for LOC rootkit ... nothing found Searching for Romanian rootkit ... nothing found Searching for Suckit rootkit ... nothing found Searching for Volc rootkit ... nothing found Searching for Gold2 rootkit ... nothing found Searching for TC2 Worm default files and dirs... nothing found Searching for Anonoying rootkit default files and dirs... nothing found Searching for ZK rootkit default files and dirs... nothing found Searching for ShKit rootkit default files and dirs... nothing found Searching for AjaKit rootkit default files and dirs... nothing found Searching for zaRwT rootkit default files and dirs... nothing found Searching for anomalies in shell history files... nothing found Checking `asp`... not infected Checking `bindshell`... not infected Checking `lkm`... nothing detected Checking `rexedcs`... not found Checking `sniffer`... eth0: not promisc and no PF_PACKET sockets eth0:0: not promisc and no PF_PACKET sockets eth0:1: not promisc and no PF_PACKET sockets eth0:2: not promisc and no PF_PACKET sockets eth0:3: not promisc and no PF_PACKET sockets eth0:4: not promisc and no PF_PACKET sockets Checking `w55808`... not infected Checking `wted`... nothing deleted Checking `scalper`... not infected Checking `slapper`... not infected Checking `z2`... nothing deleted |

Если червь, руткит и т. д. найдены, это указывается строкой INFECTED (заглавными буквами).

Если вы хотите получать вывод chkrootkit раз в день по электронной почте в 3 часа ночи, вы можете добавить следующую строку в файл cron пользователя root (местоположение зависит от вашего дистрибутива; в Debian это находится в /var/spool/cron/crontabs/root; вы также можете найти это в /var/spool/cron/tabs/root или что-то подобное):

0 3 (cd /usr/local/chkrootkit; ./chkrootkit 2>&1 | mail -s “chkrootkit output” [email protected])*

Затем выполните

chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart

3 Установите Portsentry

*cd /tmp
tar xvfz portsentry-1.2.tar.gz
cd portsentry_beta/

  • make linux
    make install

Portsentry будет установлен в /usr/local/psionic/portsentry/.

Отредактируйте /usr/local/psionic/portsentry/portsentry.conf и укажите порты, которые вы хотите, чтобы portsentry защищал:

| # Уберите комментарий, если вы действительно педантичны: #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,[...]" #UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,[...]" # # Используйте это, если вы просто хотите быть в курсе: TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,[...]" UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,[...]" # # Используйте это для минимального набора #TCP_PORTS="1,11,15,110,111,143,540,635,1080,1524,2000,12345,12346,20034,32771,32772,32773,32774,[...]" #UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321" |

Это должны быть порты, которые не используются в системе. Например, если вы используете IMAP (порт 143 TCP) на сервере, вы должны удалить 143 из списка выше. Остальная часть portsentry.conf хорошо прокомментирована, но обычно значения по умолчанию должны работать.

Теперь нам нужно создать скрипт инициализации для portsentry ( /etc/init.d/portsentry). Мы будем запускать portsentry в режиме повышенной скрытности, так как это самый мощный способ обнаружения сканирования портов:

| #!/bin/bash case "$1" in start) echo "Запуск Portsentry..." ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -atcp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -atcp fi ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry -audp' | grep -iv 'grep' > /dev/null if [ $? != 0 ]; then /usr/local/psionic/portsentry/portsentry -audp fi echo "Portsentry теперь запущен!" ;; stop) echo "Остановка Portsentry..." array=(`ps ax | grep -iw '/usr/local/psionic/portsentry/portsentry' | grep -iv 'grep' \ | awk '{print $1}' | cut -f1 -d/ | tr ' ' ' '`) element_count=${#array[@]} index=0 while [ "$index" -lt "$element_count" ] do kill -9 ${array[$index]} let "index = $index + 1" done echo "Portsentry остановлен!" ;; restart) $0 stop && sleep 3 $0 start ;; *) echo "Использование: $0 {start|stop|restart}" exit 1 esac exit 0 |

chmod 755 /etc/init.d/portsentry

Чтобы запустить portsentry при загрузке, выполните следующее:

ln -s /etc/init.d/ portsentry /etc/rc2.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc3.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc4.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc5.d/S20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc0.d/K20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc1.d/K20 portsentry
ln -s /etc/init.d/
portsentry /etc/rc6.d/K20 portsentry*

Теперь мы запускаем portsentry:

/etc/init.d/portsentry start

Обратите внимание: Если вы запускаете portsentry, chkrootkit может жаловаться на зараженный bindshell:

Checking bindshell… INFECTED (PORTS: 31337)

Это нормально и не о чем беспокоиться.

4 Установите Logcheck

cd /tmp
tar xvfz logcheck-1.1.1.tar.gz
cd logcheck-1.1.1/systems/<ваш тип системы, например, linux>

Теперь измените переменную SYSADMIN в logcheck.sh. SYSADMIN — это человек, который будет получать вывод logcheck по электронной почте (это может быть адрес электронной почты или пользователь на системе, на которой вы устанавливаете logcheck):

| [...] # СЕКЦИЯ КОНФИГУРАЦИИ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/ucb:/usr/local/bin # Logcheck предварительно настроен для работы на большинстве систем, похожих на BSD, однако это # довольно глупая программа и может потребовать некоторой помощи для работы на других # системах. Пожалуйста, проверьте следующие пути команд, чтобы убедиться, что они # правильные. # Человек, которому отправлять активность журнала. [email protected] # Полный путь к программе logtail. # Эта программа необходима для запуска этого скрипта и идет в комплекте с пакетом. LOGTAIL=/usr/local/bin/logtail [...] |

cd ../../
mkdir -p /usr/local/etc/tmp
make <ваш тип системы, например, linux>

Это установит logcheck в /usr/local/etc.

Теперь нам нужно создать задание cron, чтобы запускать logcheck периодически. Отредактируйте файл cron пользователя root (например, /var/spool/cron/crontabs/root, см. раздел 2 “Установите Chkrootkit”) и введите следующую строку:

0 3 /usr/local/etc/logcheck.sh*

Затем выполните

chmod 600 /var/spool/cron/crontabs/root
/etc/init.d/cron restart

Это будет вызывать logcheck раз в день в 3 часа ночи. Теперь он будет информировать вас о необычных событиях в системе, нарушениях безопасности, атаках на систему и т. д. Если ваша система напрямую подключена к интернету, вы заметите, что в интернете происходит много злонамеренной активности, и вы поймете, почему безопасность очень важна.

Ссылки

Chkrootkit: http://www.chkrootkit.org/

Portsentry: http://sourceforge.net/projects/sentrytools/

Оригинальное местоположение этого документа:

http://www.falkotimme.com/howtos/chkrootkit_portsentry/

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.