Python | Raportowanie zysków i zgodności systemu za pośrednictwem Lynis

| | | | | | | | | | | |

Ponieważ Lynis jest elastyczny, służy do kilku różnych celów. Typowe przypadki użycia programu Lynis obejmują:

  • Audyt bezpieczeństwa
  • Testowanie zgodności (np. PCI, HIPAA, SOx)
  • Testowanie penetracyjne
  • Wykrywanie luk w zabezpieczeniach
  • Wzmocnienie systemu

Ochrona systemu — chroni Twój system przed potencjalnymi zagrożeniami i lukami w zabezpieczeniach. Lynis może być użyty do wygenerowania szczegółowego raportu na temat różnych zagrożeń i luk w systemie. Użytkownik lub administrator systemu może następnie podjąć niezbędne działania, aby zabezpieczyć system.

Raporty Lynis są trudne do odczytania i zwykle zawierają dużo informacji. Dlatego używamy skryptów Bash i Python do analizowania raportu, wyodrębniania z niego odpowiednich informacji, takich jak ostrzeżenia, sugestie, i zapisywania ich w pliku Excel jako raportu.

Wymagania wstępne programu Lynis —

    Musisz mieć system operacyjny oparty na Linuksie/Unixie, takim jak Ubuntu, Mac Os lub dowolna inna dystrybucja Linuksa.

  • Zainstaluj Lynis w swoim systemie, klonując Repozytorium github: https://github.com/CISOfy/lynis
  • Zainstaluj bibliotekę pandy za pomocą polecenie sudo pip3 zainstaluj pandy .
  • Po zainstalowaniu programu Lynis w systemie przejdź do katalogu Lynis, w którym znajdziesz zestaw plików wraz z plikiem wykonywalnym o nazwie Lynis.
  • Użyj skryptu bash (kod poniżej), aby wyodrębnić istotne informacje, takie jak ostrzeżenia i sugestie podane w raporcie lynis. utwórz plik o nazwie run.sh i skopiuj, wklej kod basha do tego pliku i wpisz: sudo ./run.sh , aby uruchomić skrypt bash.
  • Uruchom skrypt Pythona (kod jest podany poniżej), aby wyczyścić i przeanalizować wyodrębnione dane oraz wyprowadzić odpowiednie informacje w postaci pliku Excel.

Poniżej znajdują się skrypty Bash i Python —

Script Bash:


#! / bin / bash


# skrypt do czyszczenia / parsowania pliku raportu i
# wyodrębnij odpowiednie szczegóły i uruchom
# skrypt Python, aby wyświetlić szczegóły na serwerze.

echo "running ......"

echo ""

sudo . / lynis system audytu --quick


# wykonaj ostrzeżenia. sudo ./warnings.sh

echo "Generowanie ostrzeżeń"

echo ""

echo "ostrzeżenia to:"

echo ""


sudo cat / var / log / lynis-report . dat | grep ostrzeżenie | sed - e "s / ostrzeżenie [] = // g"

sudo cat / var / log / lynis-report . dat | grep ostrzeżenie | sed - e "s / ostrzeżenie [] = // g" | cat > warnings.txt


echo ""

echo "wygenerowane ostrzeżenia"

echo "plik wyjściowy: warnings.txt"


sudo chmod 755 ostrzeżeń .txt


# wykonaj sugestie. sudo ./suggestions.sh

echo "Generowanie sugestii"

echo ""

echo "sugestie to:"

echo ""


sudo cat / var / log / lynis-report . dat | grep sugestia | sed - e "s / sugestia [] = // g"


sudo cat / var / log / lynis-report . dat | grep sugestia | sed - e "s / sugestia [] = // g" | cat > sugestie.txt


echo ""

echo "sugestie wygenerowane"

echo "plik wyjściowy: sugestie.txt"


sudo chmod 755 sugestii .txt



# wykonaj pakiety. sudo ./packages.sh

echo "Generowanie pakietów"

echo ""

echo "pakiety to:"

echo ""


sudo cat / var / log / lynis-report . dat | grep installed_package | sed - e "s / installed_package [] = // g"

sudo cat / var / log / lynis-report . dat | grep installed_package | sed - e "s / installed_package [] = // g" | cat > packages.txt


echo ""

echo "wygenerowane pakiety"

sudo chmod 755 packages.txt



# wykonuj powłoki. sudo ./shells.sh

echo "Generowanie dostępnych powłok"

echo ""

echo "powłoki to:"

echo ""


sudo cat / var / log / lynis-report . dat | grep available_shell | sed - e "s / available_shell [] = // g"

sudo cat / var / log / lynis-report . dat | grep available_shell | sed - e "s / available_shell [] = // g" | cat > shells.txt


echo ""

echo "wygenerowane powłoki"


echo "plik wyjściowy: powłoki .txt "

sudo chmod 755 shells.txt

Skrypt Pythona:


# importuj biblioteki

importuj pandy jako pd

z pandy import ExcelWriter

import os


Funkcja # do pobierania danych.

def get_data ():


ostrzeżenia = open ( ’ warnings.txt’ , ’r’ )

sugestie = open ( ’suggestions.txt’ , ’r’ )

pakiety = open ( ’packages.txt’ , ’ r’ )

powłoki = open ( ’shells.txt’ , ’ r’ )


warn_data = warnings.readlines ()

sugg_data = sugestie.readlines ()

pack_dat a = package.read ( )

shell_data = shells.readlines ()


return warn_data, sugg_data, pack_data, shell_data



def clean_data ():


warn, sugg, pack, shell = get_data ()


warn_clean = []

for line w warn:

warn_clean.append (line.split ( ’|’ ) )


for i w zakres ( długość (warn_clean)):

warn_clean [i] = warn_clean [i] [: 2 ]

# print (warn_clean [i])


sugg_clean = []

for line in sugg :

sugg_clean.append (line.split ( ’|’ ))


for i w zakres ( len (sugg_clean)):

sugg_clean [i] = sugg_clean [i] [: 2 ]

# print (sugg_clean [i])

pack_clean = []

pack = pack.split ( ’|’ )

pack_clean = pack

del pack_clean [ 0 ]

shell_clean = []

for i w zakresie ( len (shell)):

shell_clean.append (shell [i] .rstrip ( ’’ ))

# print (shell_clean [i])



return warn_clean, sugg_clean, pack_clean, shell_clean

def convert_to_excel ():


ostrzeżenia, sugestie, pakiety, powłoki = clean_data ()


spróbuj :

os.mkdir ( „wyjścia” )

z wyjątkiem (Wyjątek):

pass

os.chdir ( ’ outputs’ )


warn_packages = []

warn_te xt = []

for i w zakresie ( (ostrzeżenia)):

warn_packages.append (warnings [i] [ 0 ])


for i in range ( len ( ostrzeżenia)):

warn_text.append (ostrzeżenia [i] [ 1 ])

print (warn_packages, warn_text)


ostrzegaj = pd.DataFrame ()


warn [ ’Pakiety’ ] = warn_packages

warn [ ’warnings’ ] = warn_text


# warn.to_excel (& # 39; warnings.xlsx & # 39 ;, index = False)


pisarz = ExcelWriter ( ’warnings.xlsx’ )


warn.to_excel (writer, ’ report1’ , index = False )


skoroszyt = writer.book

arkusz = pisarz. arkusze [ ’raport1’ ]

# kolumny informacji o fakturze

worksheet.set_column ( ’A: A’ , 15 )

# Kolumna Stan

worksheet.set_column ( ’B: B’ , 45 )

# kod pocztowy

# worksheet.set_column (& # 39; F: F & # 39 ;, 10)


writer.save ()


sugg_packages = []

sugg_text = []

for i in zakres ( len (sugestie)):

sugg_packages.append (sugestie [i] [ 0 ])


for i in zakres ( len (sugestie)): < / p>

sugg_text.append (sugestie [i] [ 1 ])


# print (sugg_packages, sugg_te xt)


sugestywne = pd.DataFrame ()

sugg [ ’Pakiety’ ] = sugg_packages

[ ’sugestie’ ] = sugg_text


writer1 = ExcelWriter ( ’suggestions.xlsx’ )


sugg.to_excel (writer1, ’raport2’ , index = False )


skoroszyt = writer1.book

arkusz = writer1.sheets [ ’raport2’ ]


# Kolumny informacji o fakturze

worksheet.set_column ( ’A: A’ , 25 )

# Kolumna stanu

worksheet.set_column ( ’B: B’ , 120 )

# Kod pocztowy

# worksheet.set_column (& # 39; F: F & # 39 ;, 10)

writer1.save ()


pack_data = pd.DataFrame ()

pack_data [ ’ Pakiety’ ] = pakiety

writer1 = ExcelWriter ( ’ packages.xlsx’ )


pack_data.to_excel (writer1, ’raport3’ , index = False )

skoroszyt = writer1.book

arkusz = writer1 .sheets [ ’raport2’ ]

# Kolumny informacji o fakturze

worksheet.set_column ( ’A: A’ , 25 )

# Kolumna stanu

worksheet.set_column ( ’B: B’ , 120 )

# Kod pocztowy

# worksheet.set_column (& # 39; F: F & # 39 ;, 10)

writer1.save ()

Mamy nadzieję, że ten artykuł pomógł Ci rozwiązać problem. Oprócz Python | Raportowanie zysków i zgodności systemu za pośrednictwem Lynis sprawdź inne tematy związane z __del__.

Chcesz się wyróżniać w Pythonie? Zobacz naszą recenzję najlepszych kursów online Pythona 2022. Jeśli interesujesz się Data Science, sprawdź także, jak nauczyć się programowania w R.

Nawiasem mówiąc, ten materiał jest również dostępny w innych językach:



Olivia Chamberlet

San Francisco | 2022-11-29

Dzięki za wyjaśnienie! Utknąłem z Python | Raportowanie zysków i zgodności systemu za pośrednictwem Lynis przez kilka godzin, w końcu się udało 🤗. Sprawdzane wczoraj, działa!

Julia Chamberlet

Singapore | 2022-11-29

rstrip to wszystko jest trochę zagmatwane 😭 Python | Raportowanie zysków i zgodności systemu za pośrednictwem Lynis to nie jedyny problem jaki napotkałam. Sprawdzane wczoraj, działa!

Angelo Chamberlet

Vigrinia | 2022-11-29

Dzięki za wyjaśnienie! Utknąłem z Python | Raportowanie zysków i zgodności systemu za pośrednictwem Lynis przez kilka godzin, w końcu się udało 🤗. Wykorzystam to w mojej pracy licencjackiej

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically