Различие между журналом Netstat и доступа

Когда я проверял статистику в терминал SSH для моего VPS, я заметил, что журнал netstat и доступа дает различные результаты.

Когда я использовал:

netstat -anp

Я видел что один взломщик, имеющий 32 параллельных соединения для портирования 80 с 123.217.100.19 IP-адресами.

Между тем в журнале доступа (/var/www/vhosts/domain.com/statistics/logs/access_log), были записи в журнале только к 123.217.100.199 (существуют еще 9 в конце), IP-адрес. Никакие определенные 123.217.100.19 IP-адреса не были доступны в журнале доступа.

Какова причина такого вида IP различия между журналом доступа и netstat?

2
задан 2 September 2014 в 00:33
2 ответа

Полегче. netstat - это инструмент командной строки, показывающий реальный/живой сетевой трафик, происходящий в реальном времени. Но когда вы говорите access_log и указываете на полный путь так:

/var/www/vhosts/domain.com/statistics/logs/access_log

Этот лог генерируется веб-службой на сервере. Моя лучшая догадка - это то, что Apache генерирует эти логи. И причина, по которой вы видите лог с меньшим количеством данных в access_log по сравнению с Apache, исходит непосредственно от способности Apache обрабатывать эти соединения.

В Apache есть возможность поддерживать соединение, если оно исходит от того же самого браузера на том же самом IP-адресе, которому я верю. Так что если вы устанавливаете 32 элемента, соединяющихся с 80 портом, то это может быть логикой "keep alive".

Или, скорее всего, атака - это классическая DDoS-атака, при которой выполняется поток запросов на соединение, но они обрываются еще до того, как соединение вообще происходит. Это работает в DDoS смысле, так как Apache должен быть способен отвечать на эти запросы, но если атакующие поток соединений "зависают" до того, как соединение установлено... Тогда никакие соединения не будут регистрироваться.

Так что на самом деле Apache использует ваши примерные данные в качестве примера-9 соединений. Но оставшиеся 23 запроса просто падают, прежде чем Apache сможет что-то сделать.

.
3
ответ дан 3 December 2019 в 09:35

Да, есть принципиальная разница.

В netstat вы видите сырые данные о соединении. Не имеет значения, будет ли выполнено квитирование верхнего протокола или нет, если придет SYN-пакет, netstat занесет его в журнал.

С другой стороны, access_log занесет в журнал только те соединения, которые завершили квитирование HTTP. Если кто-то устанавливает соединение, но не посылает никаких данных, access_log никогда его не увидит.

Запустите tail -f access_log и telnet к вашему серверу на порту 80. После установления соединения запустите netstat и закройте telnet-соединение, ничего не посылая. Вы увидите свой IP на netstat, но не на access_log.

.
2
ответ дан 3 December 2019 в 09:35

Теги

Похожие вопросы