Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Аналіз журналів NGINX за допомогою Python

Автор:   •  Декабрь 5, 2023  •  Лабораторная работа  •  2,154 Слов (9 Страниц)  •  42 Просмотры

Страница 1 из 9

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ІКТА

кафедра БІТ

[pic 1]

З В І Т

до лабораторної роботи №1

з курсу: «Програмування скриптовими мовами»

на тему: « Аналіз журналів NGINX за допомогою Python»

Виконав: ст. гр. КБ-309

Шаповалов Б.Д.

Прийняв: Павликевич А.М.

Львів 2023

Завдання:

Проаналізувати записи журналу web-сервера NGINX на наявність запитів з IP адрес з негативною репутацією, використовуючи інформацію з публічної системи агрегації індикаторів загроз MalLverse

Результат роботи скрипта має видати перелік знайдених унікальних IP адрес доповнених інформацією з MalLverse

Журнал NGINX з даними для аналізу https://drive.google.com/file/d/1PzZCDA8NCgJOg4yBQwVMhCxxuUK0smch/view?usp=share_li nk 

Довідкові матеріали:

1. Часто вживані формати журналів (log files)

hUps://www.crowdstrike.com/cybersecurity-101/observability/log-file-formats/

2. Формат журналу NGINX

hUp://fileformats.archiveteam.org/wiki/Combined_Log_Format

3. Приклади скриптів-парсерів

a. hUps://linuxtech.in/efficiently-parsing-nginx-log-files-using-python/

b. hUps://dev.to/ksndeveloper/parsing-nginx-logs-using-python-1m6k

4. Система MalLverse hUps://whaLs.malLverse.com

5. Модуль Python для роботи з MalLverse API hUps://github.com/malLverse/pythonmalLverse#table-of-contents

6. Аналіз інформації з MalLverse на Python hUps://infosecwriteups.com/python-threathunLng-tools-part-3-interacLng-with-apis-1b133d9a7ada

(копія - hUps://drive.google.com/file/d/1VGld5yVs422_Ej9Em10js4018Xn45Bk/view?usp=share_link

Виконання роботи:

Скрипт:

import ipaddress

import colorama
import pandas as pd
from maltiverse import Maltiverse

api = Maltiverse(
auth_token='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjIzMjU0NDIwNTYsImlhdCI6MTY5NDcyMjA1Niwic3ViIjoxNjc1OSwidXNlcm5hbWUiOiJhbmRyaWkua3VraGFydWsua2IiLCJhZG1pbiI6ZmFsc2UsInRlYW1faWQiOjI3OSwidGVhbV9uYW1lIjoibHBudSIsInRlYW1fbGVhZGVyIjpmYWxzZSwidGVhbV9yZXNlYXJjaGVyIjpmYWxzZSwidGVhbV9pbmRleCI6ImlvYy1scG51LWI3MTk2NDk2LTUxYTItMTFlZS1iOWQwLTAyNDJhYzEyMDAwNyIsImFwaV9saW1pdCI6MjUwMDB9.iAJBdU0T0tn142nZyF0L7SWe3TqOeOOOYyM92ghH4GI')

def log_error(exception):
   
print(colorama.Fore.RED + str(exception) + colorama.Style.RESET_ALL)

def get_ips_dataframe(log_file_name):
   
global log_file
   ip_addresses = []

   
try:
       log_file =
open(log_file_name, 'r')
   
except FileNotFoundError as e:
       log_error(e)
       
exit(1)

   
for line in log_file:
       ip_addresses.append(line.split(
' ')[0].strip())
   log_file.close()

   ip_addresses =
list(set(ip_addresses))
   
return pd.DataFrame(ip_addresses, columns=['ip'])

def validate_ip(ip_df):
   ip_df[
'valid'] = ip_df['ip'].apply(lambda x: True if ipaddress.ip_address(x) else False)
   
return ip_df

def main():
   ips_df = get_ips_dataframe(
'career_nginx_all.log')
   ips_df = validate_ip(ips_df)

   valid_ip_df = ips_df[ips_df[
'valid'] == True]
   valid_ip_df = valid_ip_df.drop(
columns=['valid'])

   
for ip in valid_ip_df['ip']:
       
print(api.ip_get(ip))

if __name__ == '__main__':
   main()

Результат:

{'address': '132 24 Wonmi-2dong Wonmi-gu Buchoen-shi\nKYONGGI Korea', 'as_name': 'AS3786 LG DACOM Corporation', 'asn_cidr': '61.32.0.0/13', 'asn_country_code': 'KR', 'asn_date': '2000-09-18 00:00:00', 'asn_registry': 'apnic', 'cidr': ['61.37.198.0/26'], 'city': 'Suwon', 'classification': 'neutral', 'country_code': 'KR', 'creation_time': '2023-09-13 18:29:59', 'email': ['b4029573@users.bora.net'], 'ip_addr': '61.37.198.1', 'is_cdn': False, 'is_cnc': False, 'is_distributing_malware': False, 'is_hosting': False, 'is_iot_threat': False, 'is_known_attacker': False, 'is_known_scanner': False, 'is_mining_pool': False, 'is_open_proxy': False, 'is_sinkhole': False, 'is_tor_node': False, 'is_vpn_node': False, 'location': {'lat': 37.2859, 'lon': 127.0099}, 'modification_time': '2023-09-13 18:29:59', 'number_of_blacklisted_domains_resolving': 0, 'number_of_domains_resolving': 0, 'number_of_offline_malicious_urls_allocated': 0, 'number_of_online_malicious_urls_allocated': 0, 'number_of_whitelisted_domains_resolving': 0, 'registrant_name': 'LEEBOCHEON\nPC Game Plaza User in\nWonmi-gu Buchoen-shi KYONGGI', 'type': 'ip'}

...

Скачать:   txt (28 Kb)   pdf (242.1 Kb)   docx (41.2 Kb)  
Продолжить читать еще 8 страниц(ы) »
Доступно только на Essays.club