🔐 Как найти список популярных IP-адресов, обращающихся к Apache или Nginx |

🔐 Как найти список популярных IP-адресов, обращающихся к Apache или Nginx

Мануал

Как безопаснику веб-сервера важно отслеживать и анализировать трафик, поступающий на ваш веб-сервер, в том числе определять основные IP-адреса, чтобы получить представление о структуре трафика и потенциальных угрозах безопасности.

Одним из положительных моментов в определении основных IP-адресов, обращающихся к вашему веб-серверу, является наличие файла(ов) журнала доступа, в котором хранится информация о каждом действии, происходящем на сервере.

Работа с лог-файлами всегда очень важна, потому что они дают вам отчет обо всем, что произошло в системе или приложении, в данном случае на вашем веб-сервере Apache.

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

В этой статье мы рассмотрим, как найти 10 популярных IP-адресов, обращающихся к вашему веб-серверу Apache или Nginx, используя команды в Linux.

🌐 Как парсить логи доступа nginx

Доступ к лог-файлам веб-сервера

Первым делом необходимо получить доступ к файлам журнала, генерируемым вашим веб-сервером, которые содержат подробную информацию о каждом запросе к серверу, включая IP-адреса клиентов, обращающихся к нему.

По умолчанию путь к журналу веб-сервера Apache следующий:

/var/log/httpd/access_log      [Для систем на базе RedHat]
/var/log/apache2/access.log    [Для систем на базе Debian]

Путь по умолчанию логов веб-сервера Nginx:

/var/log/nginx/access_log

Для просмотра журналов используйте любой текстовый редактор по вашему выбору.

Если ваш сервер Apache использует другой файл журнала или другое местоположение, настройте команду соответствующим образом.

Поиск популярных IP-адресов веб-сервера

Чтобы узнать 10 IP-адресов, обращающихся к вашему веб-серверу для домена, вы можете использовать команду awk.

Чтобы найти уникальные IP-адреса веб-сервера Apache, используйте:

awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10

Чтобы найти уникальные IP-адреса веб-сервера Nginx, используйте:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

Образец вывода:

5482 103.28.37.178
5356 66.249.78.168
1977 66.249.93.145
1962 157.55.39.251
1924 66.249.93.142
1921 66.249.93.148
1890 64.233.173.178
1860 108.61.183.134
1841 64.233.173.182
1582 157.55.39.251

Пояснение к приведенной выше команде:

  • awk ‘{print $1}’ – Извлечение первого столбца (IP-адреса) из журнала.
  • sort – помогает сортировать строки в файле access.log, опция -n сравнивает строки на основе числового значения строк, а опция -r меняет результат сравнения на противоположный.
  • uniq – помогает сообщать о повторяющихся строках, а опция -c – о префиксации строк в соответствии с количеством их повторений.
  • head -n 10 – отображает 10 лучших IP-адресов.

Кроме того, можно использовать команду grep для фильтрации журнала доступа по определенному временному диапазону или по шаблону.

grep "2023-10-10 12:00" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

Чтобы автоматизировать этот процесс, можно создать скрипт, который будет запускаться через регулярные промежутки времени для извлечения и анализа журналов доступа.

Скрипт может отправлять результаты по электронной почте или запускать оповещения, когда определенные IP-адреса превышают установленные пороги.

#!/bin/bash

# Define variables
LOG_FILE="/var/log/nginx/access.log"
OUTPUT_FILE="/path/to/output.txt"

# Run the command and save the output
result=$(awk '{print $1}' "$LOG_FILE" | sort | uniq -c | sort -nr | head -10)

# Save the result to a file
echo "$result" > "$OUTPUT_FILE"

# Optionally, you can also send an email with the result
# mail -s "Top 10 IP Addresses Report" your@email.com < "$OUTPUT_FILE"

Не забудьте настроить переменные в скрипте в соответствии с вашим конкретным окружением.

Заключение

Для достижения этой цели можно использовать множество методов, если вы знаете какой-либо лучший способ, поделитесь им в комментариях, а также в случае возникновения каких-либо предложений или вопросов, не забудьте оставить комментарий в разделе комментариев ниже, и мы обсудим это вместе.

см. также:

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий