Python | Report sul guadagno di sistema e sulla conformità utilizzando Lynis

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

Poiché Lynis è flessibile, viene utilizzato per diversi scopi. I casi d`uso tipici di Lynis includono:

  • Controllo di sicurezza
  • Test di conformità (ad es. PCI, HIPAA, SOx)
  • Test di penetrazione
  • Rilevamento delle vulnerabilità
  • Rafforzamento del sistema

Protezione del sistema — protegge il tuo sistema da potenziali minacce e vulnerabilità. Lynis può essere utilizzato per generare un rapporto dettagliato su varie minacce e vulnerabilità del sistema. L`utente o l`amministratore di sistema possono quindi intraprendere le azioni necessarie per proteggere il sistema.

I report Lynis sono difficili da leggere e di solito contengono molte informazioni. Pertanto, utilizziamo gli script Bash e Python per analizzare il rapporto, estrarre informazioni rilevanti dal rapporto, come avvisi, suggerimenti e salvarle in un file Excel come rapporto.

Prerequisiti per Lynis —

    Devi eseguire un sistema operativo basato su Linux/Unix come Ubuntu, Mac Os o qualsiasi altra distribuzione Linux.

  • Installa Lynis sul tuo sistema clonando repository github: https://github.com/CISOfy/lynis
  • Installa la libreria panda usando il comando sudo pip3 install pandas .
  • Dopo aver installato Lynis sul tuo sistema, vai alla directory Lynis dove troverai una serie di file insieme a un eseguibile chiamato Lynis.
  • Utilizza uno script bash (codice sotto) per estrarre informazioni rilevanti come avvisi e suggerimenti forniti nel rapporto lynis. crea un file chiamato run.sh e copia, incolla il codice bash in quel file e digita: sudo ./run.sh per eseguire lo script bash.
  • Esegui lo script Python (il codice è riportato di seguito) per pulire e analizzare i dati estratti e restituire le informazioni rilevanti come file Excel.

Di seguito sono riportati gli script Bash e Python —

Script Bash:


#! / bin / bash


# script per pulire / analizzare il file di report e
# estrai i dettagli rilevanti ed esegui
# script Python per visualizzare i dettagli sul server.

echo "in esecuzione ......"

echo ""

sudo . / lynis sistema di audit --quick


# esegue avvisi. sudo ./warnings.sh

echo "Generazione avvisi"

echo ""

echo "gli avvisi sono:"

echo ""


sudo cat / var / log / lynis-report . data | grep avviso | sed - e "s / warning [] = // g"

sudo cat / var / log / lynis-report . data | grep avviso | sed - e "s / warning [] = // g" | cat > warnings.txt


echo ""

echo "avvisi generati"

echo "file di output: warnings.txt"


sudo chmod 755 warnings .txt


# esegue i suggerimenti. sudo ./suggestions.sh

echo "Generazione suggerimenti"

echo ""

echo "i suggerimenti sono:"

echo ""


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


sudo cat / var / log / lynis-report . data | grep suggerimento | sed - e "s / suggerimento [] = // g" | cat > suggerimenti.txt


echo ""

echo "suggerimenti generati"

echo "file di output: suggerimenti.txt"


sudo chmod 755 suggerimenti .txt



# esegue i pacchetti. sudo ./packages.sh

echo "Generazione di pacchetti"

echo ""

echo "i pacchetti sono:"

echo ""


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

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


echo ""

echo "pacchetti generati"

sudo chmod 755 packages.txt



# esegui shell. sudo ./shells.sh

echo "Generazione di shell disponibili"

echo ""

echo "shells are:"

echo ""


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

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


echo ""

echo "shell generate"


echo "file di output: shells .txt "

sudo chmod 755 shells.txt

Script Python:


# import librerie

import panda come pd

da panda import ExcelWriter

import os


# funzione per ottenere i dati.

def get_data ():


avvisi = apri ( ` warnings.txt` , `r` )

suggerimenti = open ( `suggestions.txt` , `r` )

pacchetti = open ( `packages.txt` , ` r` )

shell = open ( `shells.txt` , ` r` )


warn_data = warnings.readlines ()

sugg_data = suggerimenti.readlines ()

pack_dat a = packages.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 < classe codice = "parola chiave"> = []

for riga in warning:

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


for i in range ( len (warn_clean)):

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

# print (warn_clean [i])


sugg_clean = []

for riga in sugg :

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


for i in intervallo ( 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 in range ( 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 ():


avvisi, suggerimenti, pacchetti , shell = clean_data()


try :

os.mkdir ( `outputs` )

tranne (Eccezione):

pass

os.chdir ( ` outputs` )


warn_packages = []

avviso_te xt = []

for i in intervallo ( len (avvertenze)):

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


for i in range ( len ( avvisi)):

warn_text.append (avvisi [i] [ < codice classe = "valore"> 1 ])

print (warn_packages, warn_text)


warning = pd.DataFrame()


warning [ `Pacchetti` ] = warn_packages

warn [ `avvisi` ] = warn_text


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


scrittore = ExcelWriter ( `warnings.xlsx` )


warn.to_excel (scrittore, ` report1` , index = False )


cartella di lavoro = writer.book

foglio di lavoro = scrittore. fogli [ `report1` ]

# Colonne delle informazioni sulla fattura

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

# State column

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

# CAP

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


writer.save()


sugg_packages = []

sugg_text = []

for i in intervallo ( len (suggerimenti)):

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


for i in range ( len (suggerimenti)): < / p>

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


# print (sugg_packages, sugg_te xt)


suggestivo = pd.DataFrame()

sugg [ `Pacchetti` ] = sugg_packages

[ `suggerimenti` ] = sugg_text


scrittore1 = ExcelWriter ( `suggestions.xlsx` )


sugg.to_excel (writer1, `report2` , indice = False )


cartella di lavoro = writer1.book

foglio di lavoro = writer1.sheets [ `report2` ]


# Colonne delle informazioni sulla fattura

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

# Colonna di stato

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

# Codice postale

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

writer1.save()


pack_data = pd.DataFrame ()

pack_data [ ` Pacchetti` ] = pacchetti

writer1 = ExcelWriter ( ` packages.xlsx` )


pack_data.to_excel (writer1, `report3` < codice classe ="plain ">, indice = False )

cartella di lavoro = writer1.book

foglio di lavoro = writer1 .sheets [ `report2` ]

# Colonne delle informazioni sulla fattura

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

# Colonna Stato

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

# CAP

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

writer1.save()

Ci auguriamo che questo articolo ti abbia aiutato a risolvere il problema. Oltre a Python | Report sul guadagno di sistema e sulla conformità utilizzando Lynis, controlla altri argomenti relativi a __del__.

Vuoi eccellere in Python? Consulta la nostra recensione dei migliori corsi online Python 2022. Se sei interessato alla scienza dei dati, controlla anche come imparare a programmare in R.

A proposito, questo materiale è disponibile anche in altre lingue:



Boris OConnell

Singapore | 2022-11-29

Forse ci sono altre risposte? Cosa significa esattamente Python | Report sul guadagno di sistema e sulla conformità utilizzando Lynis significa esattamente?. Lo userò nella mia tesi di laurea

Carlo Chamberlet

San Francisco | 2022-11-29

Mi stavo preparando per il mio colloquio di codifica, grazie per aver chiarito questo punto - Python | Report sul guadagno di sistema e sulla conformità utilizzando Lynis in Python non è il più semplice. Controllato ieri, funziona!

Marie Chamberlet

Boston | 2022-11-29

Grazie per le spiegazioni! Sono rimasto bloccato con Python | Report sul guadagno di sistema e sulla conformità utilizzando Lynis per alcune ore, finalmente l'ho fatto 🤗. Tornerò domani con un feedback

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