CentOS/RHEL'de Denetim Aracı ile Linux Sistem Denetimini Öğrenin


Sistem denetimi, basitçe hedeflenen belirli bir sistemin derinlemesine analizini ifade eder: Denetim, farklı ilgi alanlarındaki kritik değerlendirme (ve gerekirse test) ile bu sistemi oluşturan çeşitli parçaların incelenmesinden oluşur.

Ayrıca Okuyun: Lynis – Linux Sistemleri için Güvenlik Denetim ve Tarama Aracı

Auditd olarak bilinen Linux denetim sistemindeki RHEL/CentOS'taki kritik alt sistemlerden biri. Bir sistemdeki güvenlikle ilgili bilgileri izlemek için bir araç uygular: Sistemde meydana gelen olaylar hakkında büyük miktarda bilgi toplamak için önceden yapılandırılmış kuralları kullanır ve bunları bir günlük dosyasına kaydederek bir denetim denemesi oluşturur.

Bir olayın tarihi, saati, türü ve sonucu gibi bilgileri kaydedebilir; olaya neden olan kullanıcılar, dosyalarda/veritabanlarında yapılan değişiklikler; PAM, LDAP, SSH ve diğerleri gibi sistem kimlik doğrulama mekanizmalarının kullanımı.

Auditd ayrıca denetim yapılandırma dosyalarında yapılan değişiklikleri veya denetim günlük dosyalarına erişme girişimlerini ve sisteme veya sistemden bilgi içe veya dışa aktarma çabalarının yanı sıra güvenlikle ilgili diğer birçok bilgiyi de kaydeder.

Linux Denetim Sistemi Neden Önemlidir?

  1. Kendi kendine yeten bir sistem üzerinde çalışmak için herhangi bir harici program veya süreç gerektirmez.
  2. Son derece yapılandırılabilir olduğundan istediğiniz herhangi bir sistem işlemini/işlemlerini görüntülemenizi sağlar.
  3. Bir sistemin olası risklerini tespit etmeye veya analiz etmeye yardımcı olur.
  4. Bağımsız bir tespit sistemi olarak çalışabilme özelliğine sahiptir.
  5. Saldırı tespitini sağlamak için Saldırı Tespit Sistemleri ile birlikte çalışabilir.
  6. Adli tıp soruşturmalarının denetimi için hayati bir araçtır.

Linux Denetim Sistemi Bileşenleri

Denetim sisteminin iki temel bileşeni vardır:

  • kullanıcı alanı uygulamaları ve yardımcı programlar/araçlar ve
  • çekirdek tarafı sistem çağrısı işleme - bu, kullanıcı alanı uygulamalarından gelen sistem çağrılarını kabul eder ve bunları üç tür filtreden geçirir: kullanıcı, görev, çıkış< veya hariç tut.

En önemli kısım, çekirdekten önceden yapılandırılmış kurallara dayalı olarak bilgi toplayan ve bir günlük dosyasında girişler oluşturan kullanıcı alanı denetim arka plan programıdır (auditd): varsayılan günlük: /var/log/audit/audit.log.

Ek olarak, audispd (audit sevk programı), auditd ile etkileşime giren ve olayları gerçek zamanlı gerçekleştirmek isteyen diğer programlara gönderen bir olay çoklayıcıdır. olay işleme.

Denetim sisteminden bilgi almak ve yönetmek için bir dizi kullanıcı alanı aracı vardır:

  • auditctl – çekirdeğin denetim sistemini kontrol etmeye yönelik bir yardımcı program.
  • ausearch – belirli olaylara ilişkin denetim günlüğü dosyalarını aramaya yönelik bir yardımcı program.
  • aureport – kaydedilen olayların raporlarını oluşturmaya yönelik bir yardımcı program.

RHEL/CentOS/Fedora'da Denetim Aracı Nasıl Kurulur ve Yapılandırılır

Öncelikle rpm komutunu ve grep yardımcı programını kullanarak denetim aracının sisteminizde kurulu olduğundan emin olun:

rpm -qa | grep audit

Yukarıdaki paketler yüklü değilse, bunları yüklemek için bu komutu kök kullanıcı olarak çalıştırın.

yum install audit

Daha sonra, auditd'nin etkin ve çalışır durumda olup olmadığını kontrol edin, terminalde aşağıdaki systemctl komutlarını verin.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Şimdi ana yapılandırma dosyası /etc/audit/auditd.conf'u kullanarak auditd'yi nasıl yapılandıracağımızı göreceğiz. Buradaki parametreler, günlük dosyasının konumu, maksimum günlük dosyası sayısı, günlük formatı, dolu disklerle nasıl başa çıkılacağı, günlük rotasyonu ve daha birçok seçeneğin tanımlanması gibi hizmetin nasıl çalıştığını kontrol etmenize olanak tanır.

vi /etc/audit/auditd.conf

Aşağıdaki örnek çıktıdaki parametreler açıklayıcıdır.

Denetim Kurallarını Anlamak

Daha önce de belirttiğimiz gibi auditd, çekirdekten belirli bilgileri toplamak için kuralları kullanır. Bu kurallar temel olarak /etc/audit/rules.d/audit.rules dosyasında (CentOS'ta) kuralları önceden yapılandırabileceğiniz auditctl seçenekleridir (man sayfasına bakın). 6'da, başlangıçta yüklenmeleri için /etc/audit/audit.rules dosyasını kullanın.

Tanımlayabileceğiniz üç tür denetim kuralı vardır:

  • Kontrol kuralları – bunlar, denetim sisteminin davranışının ve birkaç yapılandırmasının değiştirilmesine olanak tanır.
  • Dosya sistemi kuralları (dosya izleme olarak da bilinir) – belirli bir dosyaya veya dizine erişimin denetlenmesini sağlar.
  • Sistem çağrısı kuralları – herhangi bir program tarafından yapılan sistem çağrılarının günlüğe kaydedilmesine izin verir.

Şimdi düzenlemek için ana yapılandırma dosyasını açın:

vi /etc/audit/rules.d/audit.rules

Bu dosyanın ilk bölümünün kontrol kuralları içermesi gerektiğini unutmayın. Daha sonra orta bölüme denetim kurallarınızı (dosya izleme ve sistem çağrı kuralları) ekleyin ve son olarak son bölüm aynı zamanda kontrol kuralları olan değişmezlik ayarlarını içerir.

Denetim Kontrol Kurallarına Örnekler

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Denetim Dosya Sistemi Kurallarına Örnekler

Bu sözdizimini kullanarak dosya izlemelerini tanımlayabilirsiniz:

-w /path/to/file/or/directory -p permissions -k key_name

Seçenek nerede:

  • w – izlenecek dosya veya dizini belirtmek için kullanılır.
  • p – günlüğe kaydedilecek izinler, r – okuma erişimi için, w – yazma erişimi için, x – için yürütme erişimi ve a – dosya veya yönetici özelliğinin değiştirilmesi için.
  • -k – belirli bir günlük girişini hangi kuralın (veya bir kural kümesinin) oluşturduğunu belirlemek için isteğe bağlı bir dize ayarlamanıza olanak tanır.

Bu kurallar, denetimin bu kritik sistem dosyalarında değişiklik yapan olayları izlemesine olanak tanır.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Denetim Sistemi Çağrı Kurallarına Örnekler

Aşağıdaki formu kullanarak bir sistem çağrısı kuralı belirleyebilirsiniz:

-a action,filter -S system_call -F field=value -k key_name

Neresi :

  • eylem – iki olası değeri vardır: her zaman veya asla.
  • filtre – etkinliğe uygulanan çekirdek kural eşleştirme filtresinin (görev, çıkış, kullanıcı ve hariç tutma) belirtir.
  • sistem çağrısı – sistem çağrısı adı.
  • alan – kuralı değiştirmek için mimari, PID, GID vb. gibi ek seçenekleri belirtir.

İşte tanımlayabileceğiniz bazı kurallar.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Ardından son olarak değişmezlik ayarlarını dosyanın sonuna ekleyin, örneğin:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Örnek Denetim Kuralları Yapılandırma Dosyası

Auditctl Yardımcı Programını Kullanarak Denetim Kuralları Nasıl Ayarlanır

Alternatif olarak, aşağıdaki örneklerde olduğu gibi auditctl'yi kullanarak seçenekleri çalışırken auditd'ye gönderin. Bu komutlar, yapılandırma dosyasındaki kuralları geçersiz kılabilir.

Şu anda yüklü olan tüm denetim kurallarını listelemek için -l işaretini iletin:

auditctl -l

Daha sonra birkaç kural eklemeyi deneyin:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Denetim Günlük Dosyalarını Anlamak

Tüm denetim mesajları varsayılan olarak /var/log/audit/audit.log dosyasına kaydedilir. Günlük girişi formatını anlamak için bir kural yükleyeceğiz ve kuralla eşleşen bir etkinlikten sonra oluşturulan günlük girişini kontrol edeceğiz.

Gizli bir yedekleme dizinimiz olduğunu varsayarsak, bu denetim kuralı, bu dizine erişme veya bu dizini değiştirme girişimlerini günlüğe kaydedecektir:

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Şimdi başka bir sistem hesabını kullanarak yukarıdaki dizine geçmeyi ve ls komutunu çalıştırmayı deneyin:

cd /backups/secret_files/
ls

Günlük girişi şu şekilde görünecektir.

Yukarıdaki olay üç tür denetim kaydından oluşur. İlki type=SYSCALL'dur:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

İkincisi type=CWD'dir.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

Sonuncusu da type=PATH'dir:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Tüm olay alanlarının (msg, arch, ses vb.) ve anlamlarının tam listesini Denetim Sistemi Referansında bulabilirsiniz.

Şimdilik bu kadar. Bir sonraki makalede, denetim günlüğü dosyalarını sorgulamak için ausearch'ün nasıl kullanılacağına bakacağız: denetim günlüklerinden belirli bilgilerin nasıl aranacağını açıklayacağız. Sorularınız varsa aşağıdaki yorum kısmından bize ulaşabilirsiniz.