Python | Lynis Kullanan Sistem Kazanımı ve Uyumluluk Raporları

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

Lynis esnek olduğu için birkaç farklı amaç için kullanılır. Lynis için tipik kullanım örnekleri şunlardır:

  • Güvenlik Denetimi
  • Uyumluluk Testi (örn. PCI, HIPAA, SOx)
  • Penetrasyon Testi
  • Güvenlik açığı algılama
  • Sistem sağlamlaştırma

Sistem koruması — sisteminizi olası tehditlerden ve güvenlik açıklarından korur. Lynis, sisteminizdeki çeşitli tehditler ve güvenlik açıkları hakkında ayrıntılı bir rapor oluşturmak için kullanılabilir. Kullanıcı veya sistem yöneticisi daha sonra sistemin güvenliğini sağlamak için gerekli eylemi gerçekleştirebilir.

Lynis raporlarının okunması zordur ve genellikle çok fazla bilgi içerir. Bu nedenle, raporu ayrıştırmak, uyarılar, öneriler gibi ilgili bilgileri rapordan çıkarmak ve bunları rapor olarak bir Excel dosyasına kaydetmek için Bash ve Python komut dosyalarını kullanıyoruz.

Lynis için Önkoşullar —

    Ubuntu, Mac Os veya diğer herhangi bir Linux dağıtımı gibi Linux / Unix tabanlı bir işletim sistemi çalıştırıyor olmalısınız.

  • Lynis`i klonlayarak sisteminize kurun. github deposu: https://github.com/CISOfy/lynis
  • kullanarak pandalar kitaplığını kurun sudo pip3 pandaları yükle komutu .
  • Lynis`i sisteminize yükledikten sonra, Lynis adlı bir yürütülebilir dosyayla birlikte bir dizi dosya bulacağınız Lynis dizinine gidin.
  • Lynis raporunda verilen uyarı ve öneriler gibi ilgili bilgileri çıkarmak için bir bash betiği (aşağıdaki kod) kullanın. run.sh adında bir dosya oluşturun ve kopyalayın, bash kodunu o dosyaya yapıştırın ve bash betiğini çalıştırmak için sudo ./run.sh yazın.
  • Çıkarılan verileri temizlemek ve ayrıştırmak ve ilgili bilgileri bir Excel dosyası olarak çıkarmak için Python betiğini çalıştırın (kod aşağıda verilmiştir).

Aşağıda Bash ve Python komut dosyaları —

Script Bash:


#! / bin / bash


# rapor dosyasını temizlemek / ayrıştırmak için komut dosyası ve
# ilgili ayrıntıları çıkarın ve sunucuda ayrıntıları görüntülemek için
# Python betiğini çalıştırın.

echo "çalışıyor ..."

echo ""

sudo . / lynis denetim sistemi --hızlı


# uyarıları çalıştır. sudo ./warnings.sh

echo "Uyarı oluşturuluyor"

echo ""

echo "uyarılar:"

echo ""


sudo cat / var / log / lynis raporu . tarih | grep uyarı | sed - e "s / uyarı [] = // g"

sudo cat / var / log / lynis raporu . tarih | grep uyarı | sed - e "s / uyarı [] = // g" | cat > uyarılar.txt


echo ""

echo "uyarı oluşturuldu"

echo "çıktı dosyası: uyarılar.txt"


sudo chmod 755 uyarı .txt


# önerileri yürüt. sudo ./suggestions.sh

echo "Öneri oluşturma"

echo ""

echo "öneriler şunlardır:"

echo ""


sudo cat / var / log / lynis raporu . tarih | grep öneri | sed - e "s / öneri [] = // g"


sudo cat / var / log / lynis-report . tarih | grep öneri | sed - e "s / öneri [] = // g" | cat > öneriler.txt


echo ""

yankı "oluşturulan öneriler"

yankı "çıktı dosyası: öneriler.txt"


sudo chmod 755 öneri .txt



# paketleri çalıştır. sudo ./packages.sh

echo "Paket oluşturma"

echo ""

echo "paketler:"

echo ""


sudo cat / var / log / lynis raporu . tarih | grep install_package | sed - e "s / kurulu_paket [] = // g"

sudo cat / var / log / lynis raporu . tarih | grep install_package | sed - e "s / kurulu_paket [] = // g" | cat > package.txt


echo ""

echo "oluşturulan paketler"

sudo chmod 755 package.txt



# kabukları çalıştır. sudo ./shells.sh

echo "Mevcut kabuklar oluşturma"

echo ""

echo "kabuklar:"

echo ""


sudo cat / var / log / lynis-raporu . tarih | grep kullanılabilir_kabuk | sed - e "s / kullanılabilir_kabuk [] = // g"

sudo cat / var / log / lynis raporu . tarih | grep kullanılabilir_kabuk | sed - e "s / kullanılabilir_kabuk [] = // g" | cat > shells.txt


echo ""

yankı "oluşturulan kabuklar"


yankı "çıktı dosyası: kabuklar .txt "

sudo chmod 755 shells.txt

Python komut dosyası:


# import kitaplıkları

import pandaları pd olarak

pandalar import ExcelWriter

import os


# veri almak için fonksiyon.

def get_data():


uyarılar = ( ` Warnings.txt` , `r` )

öneriler = ( `suggestions.txt` < kod sınıfı = "düz">, `r` )

paketler = ( < kod sınıfı = "string"> `packages.txt` , ` r` )

kabuklar = ( `shells.txt` , ` r` )


warn_data = Warnings.readlines ()

sugg_data = öneriler.readlines ()

pack_dat a = package.read ( )

shell_data = shells.readlines ()


return warn_data, sugg_data, pack_data, shell_data



def clean_data ():


uyar, öner, paketle, kabuk = get_data()


warn_clean < kod sınıfı = "anahtar kelime"> = []

için satır in uyar:

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


için i aralık ( len (warn_clean)):

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

# print (warn_clean [i])


sugg_clean = []

için satır in sugg :

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


for i aralığında ( len (sugg_clean)):

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

# print (sugg_clean [i])

pack_clean = []

pack = pack.split ( `|` )

pack_clean = paket

del pack_clean [ 0 ]

shell_clean = []

for i aralığında ( len (kabuk)):

shell_clean.append (kabuk [i] .rstrip ( `` ))

# print (shell_clean [i])



dönüş warn_clean, sugg_clean, pack_clean, shell_clean

def convert_to_excel ():


uyarılar, öneriler, paketler , kabuklar = clean_data ()


deneyin :

os.mkdir ( `çıktılar` )

hariç (İstisna):

pass

os.chdir ( ` çıktılar` )


warn_packages = []

uyar_te xt = []

for i aralığında ( len (uyarılar)):

warn_packages.append (uyarılar [i] [ 0 ])


için i içinde range ( len ( uyarılar)):

warn_text.append (uyarılar [i] [ < kod sınıfı = "değer"> 1 ])

yazdır (warn_packages, warn_text)


uyar = pd.DataFrame ()


warn [ `Paketler` ] = warn_packages

warn [ `uyarılar` ] = warn_text


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


yazar = ExcelWriter ( `warnings.xlsx` )


warn.to_excel (yazar, ` Report1` , index = Yanlış )


çalışma kitabı = yazar.kitap

çalışma sayfası = yazar. sayfalar [ `report1` ]

# Fatura bilgileri sütunları

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

# Durum sütunu

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

# Posta kodu

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


writer.save ()


sugg_packages = []

sugg_text = []

için i aralığında ( len (öneriler)):

sugg_packages.append (öneriler [i] [ 0 ])


için i in aralık ( len (öneriler)): < / p>

sugg_text.append (öneriler [i] [ 1 ])


# print (sugg_packages, sugg_te xt)


anlamlı = pd.DataFrame ()

öneri [ `Paketler` ] = sugg_packages

[ `öneriler` ] = sugg_text


yazar1 = ExcelWriter ( `suggestions.xlsx` )


sugg.to_excel (writer1, `report2` , index = Yanlış )


çalışma kitabı = yazar1.book

çalışma sayfası = yazar1.sayfalar [ `rapor2` ]


# Fatura bilgi sütunları

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

# Durum sütunu

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

# Posta kodu

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

writer1.save ()


pack_data = pd.DataFrame ()

pack_data [ ` Paketler` ] = paketler

yazar1 < kod sınıfı = "anahtar kelime"> = ExcelWriter ( ` paketler.xlsx` >


pack_data.to_excel (yazar1, `report3` , index = False )

çalışma kitabı = writer1.book

çalışma sayfası = yazar1 .sheets [ `rapor2` ]

# Fatura bilgi sütunları

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

# Durum sütunu

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

# Posta kodu

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

yazar1.save ()