SSH Brute Force ve Önlem (fail2ban)

Merhaba arkadaşlar,

Her konuda olduğu gibi SSH için de brute yazılımları mevcut. Bugün bahsedeceğim ssh brute yazılımı Beleth.

İlgili yazılımı buradan indirebilirsiniz.

Kullanımı gayet basit derledikten sonra ./beleth -h ile nasıl kullanıldığını öğrenebilirsiniz. Biraz kullanımından bahsedecek olursak.

./beleth -h dediğinizde gelen ekranın Türkçeleştirilmiş hali aşağıdaki gibidir.;

Usage: ./beleth [OPTIONS]
    -c [payload]    Server'a login olunduğunda yapılacak işlem. (mail attırabilirsiniz, bir url'e login oldurup bilgileri buraya otomatik kayıt ettirebilirsiniz)
    -h              Yardımı gösterir
    -l [threads]    Thread sayısı (default 4)
    -p [port]       Farklı port belirtmek için kullanabileceğiniz parametre
    -t [target]     Hedef server
    -u [user]       Hedef kullanıcı adı
    -v              -v (Denemeleri göster) -vv (Debug et)
    -w [wordlist]   Şifrelerin bulunduğu dosya. Default olarak wordlist.txt

Yukarıda kısaca açıklamaları belirttiğim için pek fazla detaya girmicem, basit bir örnek yapacak olursak;

./beleth -l 10 -t 192.168.1.99 -u root -w pass.txt

Peki iyi güzel ama bundan nasıl korunucaz ?

Öncelikle tabii ki güvenli bir şifre kullanmak brute force’a karşı alınabilecek en önemli önlemlerden biridir ama bu tabii ki yeterli değil. Biz biraz daha ileri giderek serverımıza belirli sayıda yapılan yanlış denemelerin ardından iptables ile kullanıcıyı engelleyen bir yazılım kurucaz.

İlgili yazılımın adı ise Fail2ban.

yum install fail2ban

Diyerek ilgili yazılımı kuruyoruz.

Ardından favori editörünüz ile /etc/fail2ban/jail.conf dosyasını düzenliyoruz benim ki nano.

nano /etc/fail2ban/jail.conf

Açılan conf dosyasında bizim için önemli olan birkaç ayar var nedir bunlar ? ignoreip, bantime, findtime, maxretry

Bu ayarları özetleyecek olursak;

ignoreip: Bu alana yazdığınız IP adresleri güvenli IP’ler olarak yer alıp, bunlarda denetim yapılmayacak. Dolayısıyla local ip adreslerinizi buraya yazabilirsiniz 127.0.0.1, 192.168… gibi. maxretry: Bir kullanıcının yapabileceği maksimum yanlış şifre deneme hakkı. findtime: Session süresi. Yani kullanıcının kaç dakika içerisindeki yanlış denemelerinin banlanacağını belirtiyor. bantime: Belirtilen süre aralığında (findtime) maksimum sayıda (maxretry) yanlış şifre girilmesi durumunda kullanıcının serverdan banlanacağı süre.

İlgili ayarları kendimize göre değiştirdikten sonra;

chkconfig fail2ban on
service fail2ban start

Komutları yardımıyla fail2ban’ın her restartta otomatik çalışmasını ve şu andan itibaren devreye girmesini sağlıyoruz.

Bu işlemleri yaptıktan sonra fail2ban otomatik olarak bizim belirlediğimiz kriterlerde kullanıcıları sistemden uzaklaştıracaktır.

Not: herhangi bir sebepten dolayı iptables’ı devre dışı bıraktıysanız, tekrar devreye almanız gerekmektedir. Aksi taktirde banlama işlemini gerçekleştiremeyecektir. Iptables’in durumunu service iptables status ile kontrol edip, service iptables start komutu ile başlatabilir, chkconfig iptables on komutu ile de başlangıçta çalışmasını sağlayabilirsiniz.

Peki banlanan kullanıcıları nasıl göreceğim ?

fail2ban’ın conf dosyasında az alt kısımda ssh-iptables alanı var orada dikkat ederseniz logpath var ve /var/log/secure konumunu işaret ediyor.

Bu durumda yapmanız gereken tek şey; cat /var/log/secure | grep 'Failed'

Komutunu çalıştırmak.

Takıldığınız bir kısım olursa, yorumlardan sormanız durumunda yardımcı olmaya çalışırım.