Pazar, Temmuz 26, 2009

ESX Server 3.5 Hatalı / şüpheli login işlemlerinin izlenmesi

Tüm işletim sistemlerinde olduğu gibi ESX sunucuları için de güvenliğin optimum düzeye yükseltilmesi sistem yöneticilerinin görevleri arasında yer alıyor. ESX OS üzerinde tanımlanmış kullanıcı hesaplarının logon / logoff / lockout aktivitelerinin izlenmesi de bu görevin bir parçası. Bu konuda fazla ahkam kesmeden deneyimlerimden bahsetmek istiyorum.

Test sunucusunda yaptığım çalışmalarda bir kaç kategoride log üretmek ve izlemek için denemeler yaptım.

  • Bir gün önceye ait başarılı login işlemlerinin izlenmesi ve epostayla bildirilmesi
  • Bir gün önceye ait başarısız / şüpheli login işlemlerinin izlenmesive epostayla bildirilmesi
  • Root login işlemlerinin gerçek zamanlı olarak sistem yöneticilerine bildirilmesi
  • Root cron scheduled task’lerinde oluşacak değişikliklerin izlenmesive epostayla bildirilmesi.

Başarılı login işlemlerinin izlenmesi (eposta gönderimi ayrıca anlatılacaktır)

# last -x| grep “`date -d y ‘+%B %d’`” >/tmp/last.log

Başarısız login işlemlerinin izlenmesi

# faillog| grep “`date -d y ‘+%B %d’`”

ESX 3.5′da faillog komutu çalıştırıldığında/var/log/faillog dosyasının oluşturulması istenmektedir.

# touch /var/log/faillog

# chmod 600 /var/log/faillog

# chown root:root /var/log/faillog

komutlarıyla dosyayı oluşturabilirsiniz.

Ancak bu da dosyaya kayıtların gelmesini sağlamayacaktır. Yaptığım araştırmalarda bunun ESX’te kullanılan OpenSSH sürümüne ilişkin bir bug olduğuna dair forum yazışmaları görmüştüm.

http://communities.vmware.com/message/1180677#1180677

Ancak kendi denemelerimde # esxcfg-auth –maxfailedlogins=3 komutu çalıştırıldıktan sonra şifresini yanlış girdiği için lockout konumuna düşen kullanıcı hesaplarına dair kayıtların bu log dosyasına yazıldığını gördüm. Ancak bu durum, sistemde tanımlı kullanıcı hesapları için gerçekleşiyor. Eğer bir saldırgan yetkili bir hesap bulabilmek için değişik isimler deniyorsa gördüğüm kadarıyla şu an bunu loglayabilecek bir mekanizma göremedim. Bilen ve bu bloga katkıda bulunmak isteyen varsa memnuniyetle yayınlayabiliriz.

Root login işlemlerinin gerçek zamanlı olarak sistem yöneticilerine bildirilmesi

Bunu yapmak bana çok daha kolay geldi. /root klasöründeki ./bash_profile dosyasının içine aşağıdaki komut setini ekleyince tüm root loginlerinden haberdar olduk.

# /usr/local/bin/smtp_send.pl -t linuxyonetimi@sirket.com.tr -s “`echo $HOSTNAME` Root login islemi” -f `echo $USER`@company.com.tr -r smtphost.sirket.local

SMTP hizmetinin nasıl kurulacağını ayrıca anlatacağız.

Root cron scheduled task’lerinde oluşacak değişikliklerin izlenmesi

Bir saldırganın ele geçirmek isteyebileceği veya fark ettirmeden değiştirerek root yetkilerine ulaşabilecek bir zaafiyet yaratabileceği noktalardan biri de zaman ayarlı görevlerdir. Bu nedenle root kullanıcısının crontab loglarını da izlemenin faydalı olacağını düşünüyorum.

Buradaki mantık çok basit. /var/log/cron log dosyasının dünkü ve bugünkü hallerini ‘diff’ komutuyla karşılaştırarak farklılık varsa epostayla sistem yöneticisine gönderiyoruz.

# tail -n 20 /var/log/cron|grep -v ‘hourly\|daily\|weekly’ >/root/cron_gunluk_durum

not : grep komutunda ‘içinde A veya B veya C’ geçen satırları filtrele diyebilmek için diziler arasına | konması gereklidir. | OR mantıksal operatörüdür. Ancak |’nin algılanabilmesi için önüne \ (backslash) konmasına da ihtiyaç var.

# /usr/local/bin/smtp_send.pl -t linuxyonetimi@sirket.com.tr -s “`echo $HOSTNAME` root Cron islemleri” -f `echo $USER`@sirket.com.tr -r smtphost.sirket.local -m “`cat /root/cron_gunluk_durum`”

ESX 3.5 konsoldan e-posta gönderimi

http://www.yellow-bricks.com/2008/01/23/howto-sending-html-email-from-the-service-console/

Hiç yorum yok: