На своих серверах столкнулся с такими ежедневными ложными срабатываниями rkhunter:
Warning: Differences found between sockstat and netstat output: Sockstat output (ports in use): 139 2094 2095 21 22 25 3306 445 47763 80 Netstat output (ports in use): 139 2094 2095 21 22 25 3306 445 80
Естественно, немного надоедает, и я решил в чем тут может быть причина, потому что хакеров у меня на серверах вроде бы нет 🙂
Дело в том, что rkhunter ложно срабатывает на процессы, в названии которых фигурирует их PID. Он считает, что это открытый порт. Чтобы решить проблему, нужно отредактировать файл /usr/local/bin/rkhunter. Найдите строки, содержащие SOCKSTAT_OUTPUT и NETSTAT_OUTPUT, вот эти:
12928 SOCKSTAT_OUTPUT=`${SOCKSTAT_CMD} ${RKHTMPVAR} | awk '{ print $6 }' | grep '[:.][0-9][0-9]*$' | sed -e 's/^.*[:.]\([0-9]*\)$/\1/' | sort | uniq` 12929 NETSTAT_OUTPUT=`${NETSTAT_CMD} -an | awk '{ print $4 }' | grep '[:.][0-9][0-9]*$' | sed -e 's/^.*[:.]\([0-9]*\)$/\1/' | sort | uniq`
И заменить их на вот такую магическую комбинацию:
12928 SOCKSTAT_OUTPUT=`${SOCKSTAT_CMD} ${RKHTMPVAR} -l | awk '{print substr($0,37,22)}' | grep '[:.][0-9][0-9]*\ *$' | sed -e 's/^.*[:.]\([0-9]*\)\ *$/\1/' | sort | uniq` 12929 NETSTAT_OUTPUT=`${NETSTAT_CMD} -an | grep -E '(^tcp.*LISTEN$)|(^udp.*)' | awk '{ print $4 }' |grep '[:.][0-9][0-9]*$' | sed -e 's/^.*[:.]\([0-9]*\)$/\1/' | sort | uniq`
Вкратце – мы добавили проверки только слушающих портов TCP и UDP, исключив какие-либо ложные срабатывания на номер PID процесса.
# sockstat -46 -l | awk ‘{print substr($0,37,22)}’ | grep ‘[:.][0-9][0-9]*\ *$’ | sed -e ‘s/^.*[:.]\([0-9]*\)\ *$/\1/’ | sort | uniq
111
123
21
22
25
53
772
880
953
955
[email protected]:~# netstat -an | grep -E ‘(^tcp.*LISTEN$)|(^udp.*)’ | awk ‘{ print $4 }’ |grep ‘[:.][0-9][0-9]*$’ | sed -e ‘s/^.*[:.]\([0-9]*\)$/\1/’ | sort | uniq
111
123
21
22
25
53
772
851
880
924
945
953
955
962
972
http://www.mail-archive.com/[email protected]/msg238000.html
Хм…