Когда я проверял статистику в SSH-терминале для своего VPS, я заметил, что netstat и журнал доступа дает разные результаты.
Когда я использовал:
netstat -anp
Я видел, как один нападающий 32 одновременные подключения к порту 80 с участием 123.217.100.19 айпи адрес.
Между тем в журнале доступа (/var/www/vhosts/domain.com/statistics/logs/access_log
), в журнале были записи только 123.217.100.199 (есть дополнительный 9 в конце) IP-адрес. Нет конкретных 123.217.100.19 IP-адрес был доступен в журнале доступа.
В чем причина такой разницы IP между netstat и журналом доступа?
Легко. netstat
- это инструмент командной строки, который показывает вам текущий / реальный сетевой трафик в режиме реального времени. Но когда вы говорите access_log
и укажите на полный путь вот так:
/var/www/vhosts/domain.com/statistics/logs/access_log
Этот журнал создается веб-службой на сервере. Я предполагаю, что эти журналы будет генерировать Apache. И причина, по которой вы видите журнал с меньшим количеством данных в access_log
по сравнению с Apache напрямую зависит от способности Apache обрабатывать эти соединения.
В Apache есть возможность поддерживать соединение, если оно исходит из того же браузера на том же IP-адресе, как я полагаю. Таким образом, если вы устанавливаете 32 элемента, подключающиеся к порту 80, это может быть логика «сохранения активности».
Или, что более вероятно, атака представляет собой классическую DDoS-атаку, при которой делается поток запросов на соединение, но они отбрасываются еще до того, как соединение произойдет. Это работает в смысле DDoS, поскольку Apache должен иметь возможность отвечать на эти запросы, но если поток соединений злоумышленников «зависнет» до того, как соединения будут установлены… Тогда никакие соединения не будут регистрироваться.
Итак, используя ваш образец данных в качестве примера, на самом деле выполняется 9 подключений к Apache. Но оставшиеся 23 запроса просто отбрасываются, прежде чем Apache сможет что-либо сделать.
Да, есть принципиальная разница.
В netstat вы видите сырой данные подключения. Не имеет значения, выполняется ли рукопожатие верхнего протокола или нет, если приходит SYN-пакет, netstat регистрирует его.
С другой стороны, access_log будет регистрировать только соединения, завершающие рукопожатие HTTP. Если кто-то устанавливает соединение, но не отправляет никаких данных, журнал access_log никогда этого не увидит.
Запустить tail -f access_log
и telnet к вашему серверу через порт 80. После установления соединения запустите netstat
и закройте соединение Telnet, ничего не отправляя. Вы увидите свой IP-адрес в netstat, но не в access_log.