HTTP 80 üzerinden sağlanmış toplam bağlantı sayısını gösterir.
for http in `netstat -antp | awk ‘{if($4 ~/80/) print $0}’ | uniq | sort -k 5 | wc -l`
do
echo Total HTTP Connection: $http
done
HTTP 80 üzerinden sağlanmış toplam bağlantı sayısını gösterir.
for http in `netstat -antp | awk ‘{if($4 ~/80/) print $0}’ | uniq | sort -k 5 | wc -l`
do
echo Total HTTP Connection: $http
done
messages.1 isimli dosyada “Jan 8″ ile başlayan tüm loglar, 3.kolonda bulunan time değerlerine göre sort edilir.
awk ‘{if($1 ~/Jan/) if($2 ~/8/) print $0}’ messages.1 | sort -k 3 |more
L ile başlayıp, ‘ux’ ile bitmiş tüm string değerleri ayırıp alt alta listeler.
grep -i ‘^L.*ux’ test.txt | uniq
Share on FacebookDaha önce sadece swap miktarını belli kritere göre kontrol edip mesaj gönderen bir bash betiği hazırlamıştım.İlgili scripti biraz daha geliştirip swap kontrolü sonrası memory miktarını kontrol eden ufak bir algoritma ekledim.Özellikle operating sistem üzerinde ki kontroller sadece bu kriterlere göre monitor edilecekse, Nagios gibi ciddi ve daha fazla sistem kaynağı tüketen monitoring programları kurulmadan istenilen yarar elde edilebilir.Yine script içerisinde bulunan memory ve swap gibi değerler isteğe göre güncellenip kullanılabilir, hatta ek aksiyonlar da dahil edilip daha efektif hale getirmek mümkün.
Scriptin işlevleri:
Check edilen swap miktarı 2GB’den büyük ise belirtilen adrese bir mesaj gönderir.Eğer swap kullanım miktarı 2 GB’dan az ise memory checking işlemi başlar ve kontrol edilen değerin 15MB’dan küçük olup olunmadığına bakılır.Eğer kontrol edilen değer, 15MB’dan az ise memory miktarının yükseldiğine dair ek bir bilgilendirme mesajı gönderir.(Bilgilendirme mesajını da güncellemeniz gerekli.)
Not: Bu testler product ortamında bulunan serverlar için yapılıyor.Kontrolünüz de bulunana işletim sistemlerinin genel durumlarına göre swap ve memory kullanım ortalamaları mutlaka değişecektir.Dolayısıyla bu tür notify mesajları almadan evvel mutlaka running durumda bir product serverin overload,ortalama memory ve swap değerlerini bilmelisiniz.
Test edişen işletim sistemleri:
Linux Centos 5.7 ve Linux Redhat 5.x
#!/bin/bash
#Author: Ugur Engin
server=`hostname`
swap_value=2097152
memory_value=15360
int_del=/bin/rm
email=”mail@ugurengin.com”
swap_check=`vmstat -s | grep ‘used swap’ | awk ‘{print $1}’ | sort -n`
function mesaj_swap() {
subject=”$server Swap miktari yukseldi!..”
swap_emailmessage=”0″
echo “Swap Uyari Mesaji:”> $swap_emailmessage
echo “$server isimli sunucunun suanki swap miktari: $swap_check KB” >> $swap_emailmessage
/bin/mail -s “$subject” “$email” < $swap_emailmessage
$int_del $swap_emailmessage
}
memory_check=`vmstat -s | grep ‘free memory’ | awk ‘{print $1}’ | sort -n`
function mesaj_memory() {
memory_emailmessage=”1″
subject2=”$server Memory miktari yukseldi!..”
echo “$server isimli sunucunun free memory miktari: $memory_check KB” >> $memory_emailmessage
/bin/mail -s “$subject2″ “$email” < $memory_emailmessage
$int_del $memory_emailmessage
}
if [ $swap_check -ge "$swap_value" ]; then
mesaj_swap
elif [ $memory_check -le "$memory_value" ]; then
mesaj_memory
else
exit
fi
File :
/etc/security/access.conf
Path:
/etc/pam.d/sshd
Added Library:
auth required pam_access.so
access.conf isimli dosya içerisinde bulunan kriterlerin aktif olabilmesi için pam’a gerekli library eklenir ve ssh servisi aşağıdaki şekilde reload edilir.
service sshd reload
access.conf isimli dosyaya yazılabilecek bir kaç kombinasyon aşağıda gösterilmiştir.SSHD servisi için yazılan kurallar access.conf dosyasında belirtilen kriterlere göre değerlendirilir.Eğer değerlendirme sonucu olumlu ise accept, olumsuz ise refuse edilir.
access.conf erişim yapısı:
permission:users:origins
Permission: “+” ile başlayan karakter ilgili kullanıcıya belirtilen doğrultuda yetki verirken “-” şeklinde bir negatif karakter ile kullanıcı yetkileri kısıtlanabilir.
Users: sistemde tanımlı olan (/etc/passwd) bir kullanıcı veya grup ismi olmalıdır.
Origins: Bir veya birden fazla tty tanımı yapılabilir. (host name,host adress, network adress with netmask)
ps -auxx | awk {‘print $1,$7,$11′} | sort (çalışan komutların hangi terminal ID’ye sahip olduklarını listeler.)
All: Tüm kriterler değerlendirilir.
Except: İstisna edilecek user,hostname ve network
Örnekler:
+ : ugurengin : 10.0.0.51 10.0.0.52 10.0.0.53
+ : ugurengin : 127.0.0.1
Tanımlı kullanıcılar sadece belirtilen host adreslerinden erişebilir.
+ : root : 10.0.0.
“.” ile network eşleştirmesi yapmak da mümkün. 10.0.0. şeklinde yapılan bir network tanımı, 10.0.0.0/24 veya 10.0.0.0/255.255.255.0 network adreslerini ifade eder.
+ : ugurengin : client01.ugurengin.com client02.ugurengin.com
+ : ugurengin : client03.ugurengin.com
Tanımlı kullanıcılar sadece belirtilen host isimlerinden erişim sağlayabilir.
- : ugurengin : ALL
Tanımlı kullanıcı hiç bir sistem kaynağına erişemez.
+ : @white redhat : ALL
Eğer netgroup isimli servis aktif ise white grubu’nun bir üyesi olan redhat isimli kullanıcı, sistem kaynaklarının tümüne erişebilir.
-:ALL EXCEPT root:tty1
tty1 terminal degeri üzerinden root erişimleri kapatılır.
-:user01 user01 user03 :ALL
Belirtilmiş birden fazla kullanıcının tüm sistem kaynaklarına erişmelerini engeller.
Erişim testi örneği:
-:ugurengin:ALL
Tüm erişim yetkileri kısıtlanan yukarıdaki kullanıcı, shell alıp geçerli kullanıcı bilgileri ile erişim sağlamaya çalıştığı esnada access.conf’da belirtilen kritere takılarak sistem tarafından refuse edilir.İlgili aksiyonlar gerçekleştiği esnada auditing servisi de aşağıdaki şekilde olan bitenleri logluyor olacaktır.
tail /var/log/audit/audit.log
type=CRYPTO_SESSION msg=audit(1324694948.615:77): user pid=6996 uid=0 auid=0 msg=’op=start direction=from-server cipher=aes256-ctr ksize=256 rport=17979 laddr=10.0.0.99 lport=22 id=4294967295 exe=”/usr/sbin/sshd” (hostname=?, addr=10.0.0.51, terminal=? res=success)‘
type=USER_AUTH msg=audit(1324694982.330:78): user pid=6996 uid=0 auid=0 msg=’PAM: authentication acct=”ugurengin” : exe=”/usr/sbin/sshd” (hostname=10.0.0.51, addr=10.0.0.51, terminal=ssh res=failed)’
Spesifik bir kullanıcıya ait ssh failed logları, aureport isimli komut ile aşağıdaki şekilde tespit edilebilir.
[root@base01 ~]# aureport -ts today -au --failed
Authentication Report
============================================
# date time acct host term exe success event
============================================
1. 12/25/2011 03:03:52 ugurengin 10.0.0.10 ssh /usr/sbin/sshd no 14
Share on Facebook
Redhat, swap alanı için ayrılması gereken minumum miktarı, memory ile orantılıyarak aşağıdaki şekilde formülüze etmiştir.
If M < 2 S = M *2 Else S = M + 2
M = Memory Miktarı
S = Swap Miktarı
İlgili formüle göre 2 GB hafıza miktarına sahip olan bir sistemin swap miktarı 4 GB iken 3 GB hafızaya sahip olan bir diğer sistemin swap miktarı 5 GB olmalıdır. Dolayısıyla her durumda swap alanı, memory miktarı’nın iki katına eşit değildir.
Share on FacebookSwap alanı belli bir miktara ulaştığı esnada, bilgi mesajı yollayan ufak bir bash betiği hazırlamak durumunda kaldım.Swap miktarı, 1GB’a eşit veya 1GB’dan büyük ise email ile bilgi mesajı gönderiyor.Siyah ile renklendirilmiş bölümler, isteğe göre güncellenip kullanılabilir.
#!/bin/bash #Author: Ugur Engin server=`hostname` cmd=`vmstat -s | grep 'used swap' | awk '{print $1}'` if [ $cmd -ge 1024000 ] then { subject="Uyari!" email="mail@ugurengin.com" emailmessage="1" echo "Swap kullanim miktari yukseliyor!"> $emailmessage echo "$server isimli sunucunun swap miktari: $cmd KB" >>$emailmessage /bin/mail -s "$subject" "$email" < $emailmessage } else exit -1 fi
Scriptin hangi zaman diliminde çalışacağı crontab’a yazılacak bir parametre ile belirlenebilir.15 dakika da bir çalışması istenen scriptin crontab içerisine yazılacak şekli aşağıda gibi olur.
*/15 * * * * sh /root/tools/swapcheck.sh
Scripti geliştirip, memory monitoring ve swap reducing gibi kriterler ekleyip daha efektif aksiyonlar almak da mümkün.Test amaçlı 200 MB ile kontrol edilen bir swap alanı için gelen bilgilendirme mesajının görüntüsü.
Share on Facebook