Вопрос или проблема
OS — Debian. Я использую nginx в качестве веб-сервера. Логирование включено в блоке http с помощью:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
Я наблюдаю сотни подключений в iftop от моего веб-сервера на порт 443 к 191-242.x.x.alivenet.com.br для нескольких сотен различных IP.
Странные вещи заключаются в следующем:
- Ни один из IP-адресов, перечисленных в iftop, не отображается в моих логах nginx, которые я сохраняю с момента создания сервера.
- Эти подключения отображаются в iftop, даже если nginx не работает. Как это возможно? Я пробовал останавливать nginx, затем подтверждал с помощью netstat, что ничего не прослушивает порты 80 или 443, но я все равно вижу сотни этих подключений, перечисленных в iftop. Как iftop может показывать эти подключения, если ничего не прослушивает эти порты? Я даже пробовал отключать nginx и перезагружать сервер, но они все равно появляются.
lsof -a -i4 -i6 -itcp
каким-то образом не показывает ни одного из этих подключений.- В nethogs я вижу строку:
? root <ip моего веб-сервера>:443-191.242.x.x:<случайный порт>
. Работает от имени root? Вопросительный знак для pid? Это кажется абсолютно безумным для меня. Означает ли это, что в моей системе запущен какой-то процесс, которому почему-то не присвоен pid, работающий от имени root, каким-то образом прослушивающий порт 443, несмотря на то, что предположительно nginx использует этот порт, который отправляет трафик на один из этих бразильских IP?
Что именно здесь происходит? Нужно ли мне беспокоиться? Мой сервер взломали? Что еще я должен проверить, чтобы убедиться, что с сервером все в порядке? Нужно ли мне заблокировать эти IP через iptables? Как отличить попытки взлома от легитимного трафика веб-сервера? (например, кто-то в Бразилии пытается зайти на мой сайт) Как nethogs может не показывать pid? Как iftop может показывать подключения на портах, которые не прослушиваются? Как эти подключения могут не отображаться в логах nginx?
Также, как сделать так, чтобы iftop перестал называть порты? Я вижу "https", "domain", "bootps", "bootpc", просто дайте мне номер порта, я не хочу разгадывать это, кто знает, какие предположения делает iftop. Может, iftop считает, что "https" включает 8080 или какой-то случайный диапазон портов.
Все, что я думал, что знаю о Linux, теперь ушло в никуда.
Ответ или решение
Похоже, что ваша система столкнулась с проблемой, которая требует немедленного внимания и тщательного анализа. Давайте рассмотрим ситуацию более детально.
Понимание проблемы:
-
Сетевые соединения на порту 443: iftop показывает сотни соединений с IP-адресами из домена alivenet.com.br на порт 443, даже когда Nginx не работает. Это уже является аномалией, поскольку порт 443 обычно ассоциируется с SSL/TLS трафиком, который обрабатывается веб-серверами.
-
Отсутствие записей в логах Nginx: IP-адреса, которые отображаются в iftop, не фиксируются в логах доступа и ошибок Nginx, что может говорить о том, что данные соединения не проходят через ваш веб-сервер легитимным образом.
-
Запросы без указания PID: В nethogs вы видите соединения с участием IP вашего сервера, но не идентифицируется PID процесса. Это может свидетельствовать о либо повреждении, либо скрытности данного процесса.
Потенциальные причины:
-
Зловредное ПО или руткит: Наличие процессов, которые могли быть замаскированы или повреждены с целью скрытия. Учитывая, что они не отображаются в стандартных утилитах, это может указывать на высокую вероятность заражения.
-
Компрометация сервера: Учитывая данную активность, можно предположить, что сервер скомпрометирован и используется в качестве промежуточного звена для атаки.
Рекомендуемые действия:
-
Аудит безопасности:
- Проверьте хэш суммы всех исполняемых файлов с известными образцами для выявления модификаций.
- Используйте антивирусные решения Linux или специальные утилиты типа ‘rkhunter’ для поиска руткитов.
-
Проверка исходящих соединений:
- Используйте команду
iptables -L -v -n
для просмотра всех текущих правил и выявления аномалий. - Временно блокируйте подозрительные IP-адреса:
iptables -A OUTPUT -d 191.242.0.0/16 -j DROP
.
- Используйте команду
-
Мониторинг системы:
- Используйте
tcpdump
для захвата и анализа реального сетевого трафика. Это может дать более четкое понимание того, из какого конкретного процесса идут эти соединения.
- Используйте
-
Журналирование и анализ:
- Расширьте записи журналов, включив параметры verbose, чтобы собрать больше данных.
- Проверьте
/var/log/syslog
и/var/log/messages
на предмет подозрительных записей.
-
Обновление всех пакетов и ядер:
- Обновите систему командой
apt-get update && apt-get upgrade
до самых последних стабильных версий для устранения известных уязвимостей.
- Обновите систему командой
-
Изменение конфигурации iftop:
- Чтобы iftop показывал номера портов вместо имен, вы можете запустить команду с флагом:
iftop -nP
.
- Чтобы iftop показывал номера портов вместо имен, вы можете запустить команду с флагом:
Заключение:
Ваша ситуация вызывает серьезные опасения за безопасность сервера. Рекомендую приступить к детальному анализу системы и, возможно, рассмотреть вопрос о переустановке ОС, если подтвердится компрометация. Также полезным будет создание резервных копий критически важных данных до того, как выполнять серьезные изменения в системе. Эта проблема требует комплексного подхода и своевременных действий для предотвращения дальнейших последствий.