fail2ban kullanımı

Fail2ban, log dosyalarini inceleyerek, fazla hatalı veya başarısız islem yapan ip adresini belirli bir sure engellemek icin kullanılan uygulamadır. Tercihinize göre iptables veya tcpwrapper kullanarak DROP kurallarını otomatik olarak ekler veya kaldırır ve sizi email yoluyla bilgilendirebilir.

EPEL deposunda bulunan fail2ban’ı kurmak için

#yum install fail2ban

Varsayılan olarak /etc/fail2ban/jail.conf dosyasinda yapılandırmak istedigimiz servisin log dosyasinin bulundugu bolum duzenlenir ya da eklenir. Örnek olarak ;

[sasl-iptables]

enabled  = true
filter   = sasl
action   = iptables[name=sasl, port=smtp, protocol=tcp]
           sendmail[name=sasl, dest=email@address.com]
logpath  = /var/log/maillog

[postfix]

enabled = true
filter  = postfix
action  = iptables[name=SMTP, port=smtp, protocol=tcp]
          sendmail[name=Postfix, dest=email@address.com]
logpath = /var/log/maillog


[dovecot]
enabled = true
filter = dovecot
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]
 	mail[name=dovecot, dest=email@address.com]
logpath = /var/log/dovecot.log 
maxretry = 20
findtime = 1200
bantime = 1200

fail2ban.conf ve jail.conf dosyalarındaki diğer ayarları düzenledikten sonra, uygulamayı başlatmanız gerekecektir.

# service fail2ban restart

Fail2ban log örneği ise aşağıdaki gibi olacaktır;

2013-03-28 04:52:35,474 fail2ban.actions: WARNING [dovecot] Ban 122.226.212.222
2013-03-28 05:12:36,194 fail2ban.actions: WARNING [dovecot] Unban 122.226.212.222
2013-03-28 05:59:13,869 fail2ban.actions: WARNING [sasl-iptables] Ban 174.50.235.244
2013-03-28 06:09:13,956 fail2ban.actions: WARNING [sasl-iptables] Unban 174.50.235.244
2013-03-28 07:15:37,082 fail2ban.actions: WARNING [postfix] Ban 5.47.155.176
2013-03-28 07:25:37,178 fail2ban.actions: WARNING [postfix] Unban 5.47.155.176

centos 6 da ipv6 yı devre dışı bırakmak için

Bazı durumlarda ipv6 ya ihtiyacınız olmayabilir. Vereceğiniz karar doğrultusunda oluşabilecek performans ve bağlantı sorunlarını gidermek için kaldırmak veya kapatmak isteyebilirsiniz. Bunun için

/etc/sysctl.conf dosyasında aşağıdaki gibi değişiklik yapmak;

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

Devre dışı bırakmak için;

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

Yaptığımız değişikliği kontrol etmek içinse;

sysctl net.ipv6.conf.all.disable_ipv6
sysctl net.ipv6.conf.default.disable_ipv6

komutlarını çalıştırmak yeterli olacaktır.

centos/redhat açılış sırası değiştirmek

Sisteminizin açılışındaki sıralamayı doğru bulmuyor değiştirmek istediğinizde “initlevel” ınıza göre ilgili klasöre girdiğinizde scriptler yerine sembolik bağlantı olduğunu göreceksiniz.

/etc/rc3.d/S85httpd -> /etc/init.d/httpd

Eğer “chkconfig httpd on” şeklinde açılacak şekilde ayarlandıysa, chkconfig init.d klasörünün içinde ilgili dosyanın içinde “# chkconfig:” parametrelerini arar ve açılış ve kapanış sıralamasını ona göre yapar.

örnek olarak;

[root@thehive]# cat /etc/init.d/httpd |grep chkconfig
# chkconfig: - 85 15

Buradaki 85 açılış 15 ise kapanış sırasıdır. Script içinde değişiklik yapılarak sıralama değiştirilebilir.

logrotate düzgün çalışmıyorsa

Bildiğiniz gibi logrotate çok fazla ve büyük sistem kaydı üreten sistemlerin yönetimini kolaylaştırmak için dizayn edilmiş crontab kullanılarak günlük olarak çalışan, kayıt dosyalarının içeriğinin başka bir dosyaya aktarılıp boşaltılmasına(rotate), sıkıştırılmasına, silinmesine veya e-posta olarak gönderilmesine yaramaktadır.

Sistem kayıtlarınızı logrotate kullanarak düzenlemek istediniz /etc/logrotate.d/ klasörüne gerekli ayar dosyanızı oluşturdunuz fakat “rotate” işleminin düzgün çalışmadığını, bazı dosyaların düzgünçe “rotate” olduğunu bazılarının da göz ardı edildiğini gördünüz. Bu durumda göz atmanız gereken dosya /var/lib/logrotate.status dosyasıdır. Bu dosyada “rotate” edilecek dosyalar ve zaman bilgileri bulunmaktadır. Bir şekilde bu dosya bozulursa /etc/cron.daily/logrotate betiği düzgün çalışmayacaktır.

Örneğin:

"/var/log/boot.log" 2011-7-21
"
/var/log/cron" 2011-8-7
"/var/log/rkhunter.log" 2011-8-7

Örnekte rkhunter ve cron dosyaları “rotate” işlemine girmeyecektir. Bunu çözmek için basitçe /etc/cron.daily/logrotate dosyasının üstüne aşağıdaki satırları ekliyorum.

/bin/cat /var/lib/logrotate.status |/bin/egrep -vi '"$|^/' > /var/lib/logrotate.status.temp
/bin/cat /var/lib/logrotate.status |/bin/grep '^/' | /bin/awk '{print """$0}' >> /var/lib/logrotate.status.temp
/bin/cat /var/lib/logrotate.status.temp > /var/lib/logrotate.status

Böylelikle logrotate çalışmadan düzenlemiş logrotate.status dosyasını düzeltmiş ve sorunu gidermiş oluyorum.