Python | Lynisを介したシステムの利益とコンプライアンスのレポート

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

Lynisは柔軟性があるため、いくつかの異なる目的で使用されます。 Lynisの一般的な使用例は次のとおりです。

  • セキュリティ監査
  • コンプライアンステスト(PCI、HIPAA、SOxなど)
  • 侵入テスト
  • 脆弱性の検出
  • システムの強化

システムの保護—潜在的な脅威や脆弱性からシステムを保護します。 Lynisを使用して、システムのさまざまな脅威と脆弱性に関する詳細なレポートを生成できます。その後、ユーザーまたはシステム管理者は、システムを保護するために必要なアクションを実行できます。

Lynisレポートは読みにくく、通常は多くの情報が含まれています。したがって、BashおよびPythonスクリプトを使用してレポートを解析し、警告や提案などの関連情報をレポートから抽出して、レポートとしてExcelファイルに保存します。

Lynisの前提条件—

    Ubuntu、Mac Os、その他のLinuxディストリビューションなどのLinux/UnixベースのOSを実行している必要があります。

  • クローンを作成してシステムにLynisをインストールします。 githubリポジトリ: https://github.com/CISOfy/lynis
  • を使用してpandasライブラリをインストールしますコマンドsudopip3install pandas
  • システムにLynisをインストールしたら、Lynisディレクトリに移動します。ここには、Lynisという名前の実行可能ファイルとともに一連のファイルがあります。
  • bashスクリプト(以下のコード)を使用して、lynisレポートに記載されている警告や提案などの関連情報を抽出します。 run.shというファイルを作成してコピーし、そのファイルにbashコードを貼り付けて、 sudo ./run.shと入力してbashスクリプトを実行します。
  • Pythonスクリプト(コードを以下に示します)を実行して、抽出されたデータをクリーンアップおよび解析し、関連情報をExcelファイルとして出力します。

以下はBashおよびPythonスクリプトです—

スクリプトBash:


#! / bin / bash


#レポートファイルをクリーンアップ/解析するスクリプトと
#関連する詳細を抽出し、
#Pythonスクリプトを実行して、サーバーに詳細を表示します。

echo "running ......"

echo ""

sudo / lynis 監査システム--quick


#警告を実行します。 sudo ./warnings.sh

echo "警告の生成"

echo ""

echo "警告は次のとおりです:"

echo ""


sudo cat / var / log / lynis-report 。データ| grep 警告| sed --e "s / warning [] = // g"

sudo cat / var / log / lynis-report 。データ| grep 警告| sed --e "s / warning [] = // g" | cat > warnings.txt


echo ""

echo "警告が生成されました"

echo "出力ファイル:warnings.txt"


sudo chmod 755警告.txt


#提案を実行します。 sudo ./suggestions.sh

echo "提案の生成"

echo ""

echo "提案は次のとおりです:"

echo ""


sudo cat / var / log / lynis-report 。データ| grep 提案| sed --e "s / Suggestion [] = // g"


sudo cat / var / log / lynis-report 。データ| grep 提案| sed --e "s / Suggestion [] = // g" | cat > Suggestions.txt


echo ""

echo "提案が生成されました"

echo "出力ファイル:suggestions.txt"


sudo chmod 755の提案.txt



#パッケージを実行します。 sudo ./packages.sh

echo "パッケージの生成"

echo ""

echo "packages are:"

echo ""


sudo cat / var / log / lynis-report 。データ| grep installed_package | sed --e "s / installed_package [] = // g"

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


echo ""

echo "パッケージが生成されました"

sudo chmod 755 packages.txt



#シェルを実行します。 sudo ./shells.sh

echo "使用可能なシェルの生成"

echo ""

echo "shells are:"

echo ""


sudo cat / var / log / lynis-report 。データ| grep available_shell | sed --e "s / available_shell [] = // g"

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


echo ""

echo "シェルが生成されました"


echo "出力ファイル:shells .txt"

sudo chmod 755 shells.txt

Pythonスクリプト:


#ライブラリをインポート

import pandas as pd

from pandas import ExcelWriter

import os


#データを取得する関数。

def get_data():


警告 = open ’warnings.txt’ ’r’

提案 = open ’suggestions.txt’ ’r’

パッケージ = open ’packages.txt’ ’r’

シェル = open ’shells.txt’ ’r’


warn_data = warnings.readlines()

sugg_data = Suggestions.readlines()

pack_dat a = packages.read( )

shell_data = shells.readlines()


return warn_data、sugg_data、pack_data、shell_data



def clean_data():


警告、提案、パック、シェル = get_data()


warn_clean = []

for in 警告:

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 line in sugg :

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


for i in range len (sugg_clean)):

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

#print(sugg_clean [i])

pack_clean = []

パック = pack.split( ’|’

pack_clean = パック

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():


警告、提案、パッケージ、シェル = clean_data()


try

os.mkdir( ’出力’

(例外)を除く:

pass

os.chdir( ’出力’


warn_packages = []

warn_te xt = []

for i in range len (警告)):

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


for i in range len (警告)):

warn_text.append(warnings [i] [ 1 ])

print (warn_packages、warn_text)


warn = pd.DataFrame()


警告[’パッケージ’ ] = warn_packages

警告[’警告’ ] = warn_text


#warn.to_excel(' warnings.xlsx'、index = False)


writer = ExcelWriter( ’warnings.xlsx’


warn.to_excel(writer、 ’report1’ 、index = False


ワークブック = writer.book

ワークシート = ライター。シート[’report1’ ]

#請求書情報の列

worksheet.set_column( ’A:A’ 15

#状態列

worksheet.set_column( ’B:B’ 45

#郵便番号

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


writer.save()


sugg_packages = []

<コードクラス= "plain"> sugg_text = []

for i in 範囲 len (提案)):

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


for i in 範囲 len (提案)): < / p>

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


#print(sugg_packages、sugg_te xt)


示唆的 = pd.DataFrame()

sugg [ ’パッケージ’ ] = sugg_packages

[ ’suggestions’ ] = sugg_text


writer1 = ExcelWriter( ’suggestions.xlsx’


sugg.to_excel(writer1、 ’report2’ 、インデックス = False


ワークブック = writer1.book

ワークシート= writer1.sheets [ ’report2’ ]


#請求書情報の列

worksheet.set_column( ’A:A’ 25

#状態列

worksheet.set_column( ’B:B’ 120

#郵便番号

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

writer1.save()


pack_data = pd.DataFrame()

pack_data [ ’パッケージ’ ] = パッケージ

writer1 = ExcelWriter( ’packages.xlsx’


pack_data.to_excel(writer1、 ’report3’ 、index = False

ワークブック = writer1.book

ワークシート = writer1 .sheets [ ’report2’ ]

#請求書情報列

worksheet.set_column( ’A:A’ 25

#状態列

worksheet.set_column( ’B:B’ 120

#郵便番号

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

writer1.save()

この記事が問題の解決に役立つことを願っています。 Python | Lynisを介したシステムの利益とコンプライアンスのレポート とは別に、他の __del__ 関連のトピックを確認してください。

Python で上達したいですか?  最高の Python オンライン コース 2022 のレビューをご覧ください。 データ サイエンスに興味がある場合は、R でプログラミングを学ぶ方法も確認してください。

ちなみに、この資料は他の言語でも利用できます:



Boris Robinson

Abu Dhabi | 2022-11-29

説明ありがとうございました 何時間かPython | Lynisを介したシステムの利益とコンプライアンスのレポートで詰まってました、やっと出来ました🤗。. それが最良の方法であるかどうかはわかりません

Angelo Chamberlet

New York | 2022-11-29

シンプルにまとめられていて分かりやすい。シェアしてくださってありがとうございます。Python | Lynisを介したシステムの利益とコンプライアンスのレポートや__del__の問題はいつも私の弱点でした😁。. 卒論で使わせていただきます

Manuel Robinson

San Francisco | 2022-11-29

_filesはちょっと混乱する😭 Python | Lynisを介したシステムの利益とコンプライアンスのレポートは私が遭遇した唯一の問題ではありません。. 昨日確認したところ、動作しています!

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