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 Facebook

Swap 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

wget http://ugurengin.com/wordpress-firewall.tar.gz –output-document=wpfw.tar.gz
–2011-12-06 00:26:30–  http://ugurengin.com/wordpress-firewall.tar.gz
Resolving ugurengin.com… 46.20.150.57
Connecting to ugurengin.com|46.20.150.57|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 6983 (6.8K) [application/x-gzip]
Saving to: `wpfw.tar.gz’

100%[======================================>] 6,983       –.-K/s   in 0.02s

2011-12-06 00:26:30 (413 KB/s) – `wpfw.tar.gz‘ saved [6983/6983]

Share on Facebook

named.conf isimli dosya açılarak options içerisine aşağıdaki şekilde bir acl tanımı yapılır.

blackhole { blacklist; };

Örnek:

options {
           blackhole { blacklist; };

                      };

Sonrasında, named.conf içerisinde boş olan herhangi bir alana dns sunucu’nun cevap vermesini istemediğiniz network adresleri girilir.

acl blacklist
{
#black networks
81.8.*.*/24;

};

Test etmek için Bind servisini reload edip, kısıtlama yapılan network üzerinden ilgili dns sunucuya bir A kaydı requesti yapalım.
service named reload

81.8.*.*/24 nolu network üzerinden yapılan dns kontrolü.

[root@base04 ~]# dig A sitename.com.tr @ns1.dnsserver.com

; <<>> DiG 9.3.6-P1-RedHat-9.3.6-16.P1.el5 <<>> A sitename.com.tr @ns1.dnsserver.com
;; global options:  printcmd
;; connection timed out; no servers could be reached

Hedef network’un paket gönderdiği esnada dns sunucu üzerinde tcpdump ile yakalanan paket aşağıda incelenebilir.Bu kısımda sadece bir A kaydı isteğinin  dns sunucuya geldiği, erişimin ise  dns sunucu üzerinde kısıtlandığı için ilgili network’e doğru herhangi bir paket dönmediği gözlemlenmiştir.

[root@ns1 etc]# tcpdump -ttnnn -i eth0 port 53
1322493943.363610 IP 81.8.*.*.46779 > 46.20.*.*.53:  5199+ A? sitename.com.tr. (32)
Share on Facebook
dig +noquestion +nostats +noadditional +answer ugurengin.com @ns25.domaincontrol.com | awk '{print $2} '

<<>>
global
Got
->>HEADER<<-
flags:

ANSWER
3600

AUTHORITY
3600
3600

Share on Facebook
bash -n logsign2.sh
logsign2.sh: line 68: unexpected EOF while looking for matching ``'
logsign2.sh: line 105: syntax error: unexpected end of file
Share on Facebook