Fail2ban'ı kurun ve SSH ve Nginx ile ilişkilendirin

Linux ile bir sunucu kurduğumuzda ve SSH uzaktan kumanda ile internetten yönetmek istediğimizde, sisteme girmek ve amacına uygun olarak kontrol edebilmek amacıyla saldırılar almaya başlayabiliriz. Bu saldırılar genellikle uzun süre kaba kuvvet kullanarak sisteme erişmeye çalışan bilgisayar programları (botlar) tarafından gerçekleştirilir.

Daha önceki yazılarımda SSH servisinin nasıl yapılandırılacağından bahsetmiştim fakat bazı gelişmiş botlar servise girmiyor fakat uzaktan erişimi devre dışı bırakarak sunucudaki SSH servisini öldürebiliyorlar.

SSH'nin (Secure Shell) eksiksiz kılavuzu

kullanarak önleyebiliriz. fail2ban aracı, çok pratiktir ve büyük bir güvenlik payı sunar. Nasıl çalıştığını biraz açıklamak için. Herhangi bir başarısız oturum açma girişiminden önce arka arkaya 5 defadan fazla iptables oluşturabilir ve yasaklandıktan sonra her türlü bağlantıyı reddedebilir.

Fail2ban'ı yükleyin


Kurulum doğrudan apt'den yapılabilir. Önce sistemi güncelliyoruz sonra Fail2ban kuruyoruz.
 apt-get güncelleme && apt-get -y yükseltme
 apt-get install fail2ban
Bu, yalnızca programı kurmakla kalmaz, aynı zamanda çalışır durumda bırakır ve sistemle başlar.

Fail2ban'ı Yapılandırma


Fail2ban hizmetinin ayarları dizinde bulunur. / etc / fail2ban. jail.conf'ta önceden yapılandırılmış bazı seçenekleriniz var, bu durumda en iyi şey dosyayı kopyalamak ve değişiklikleri doğrudan dosyada yapmamaktır, fail2ban'ı güncellerken bu dosyaların üzerine yazılır ve daha önce yapılmış tüm değişiklikleri kaybedebilirsiniz.

Bu durumda dosyayı kopyalıyoruz ve onu bulabilmesi için jail.local olarak adlandırıyoruz.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Kopyaladıktan sonra açıp nasıl çalıştığını görebiliriz.
 vim /etc/fail2ban/jail.local
Dosyanın içinde ayarlayabileceğimiz birkaç parametremiz var. [DEFAULT] etiketinin altındaki herhangi bir parametre SSH, NGINX, APACHE gibi Fail2ban tarafından etkinleştirilen tüm servislere uygulanacaktır, buna global diyeceğiz, ardından her servis için özel bölümlerimiz olacak.

Global bölüme parametreler ekleyerek başlayacağız.

 yok sayma = 127.0.0.1
Localhost'umuzu tüm yerel trafiği yok sayacak şekilde eklersek, onları bir boşlukla ayırarak ek adresler ekleyebiliriz.
 yasak süresi = 600
Bantime, müşterinin bloke edildikten sonra banlanacağı süredir. Birim saniye cinsinden 600 saniyedir, 10 dakika varsayılan değerdir.
 findtime = 600 maxretry = 3
Sonra findtime ve maxretry var. Bir müşterinin varsayılan olarak yasaklanması için koşulları oluşturmaktan sorumludurlar, 10 dakikadan daha kısa sürede 3'ten fazla başarısız deneme yapan herhangi bir kullanıcının yasaklanacağı okunabilir.
 destemail = root @ localhost gönderen adı = Fail2Ban mta = sendmail
Yasaklı kullanıcılar için uyarı oluşturmak istiyorsak bu 3 parametre gereklidir, uyarı e-postasının kime gönderileceğini, göndermekten kimin sorumlu olacağını ve son olarak hangi e-posta hizmetini kullanacağımızı belirlemek için mta tanımlayacağız. .
 eylem = $ (eylem_) s
Burada yasaklama gerektiğinde hangi işlemin yapılacağını tanımlayacağız. action_ değeri, yasaklama süresi dolana kadar herhangi bir istemci trafiğini reddetmeye dayalı varsayılan eylemdir.

Posta ile bir uyarı göndermek istiyorsak, değeri action_mw olarak değiştirmeliyiz, ancak aynı zamanda günlük satırlarını postanın gövdesine eklemesini istiyorsak action_mwl kullanacağız. Bu değeri değiştirmeden önce mail ayarlarının doğru olduğundan emin olmalıyız.

Servise Göre Ayarlar


Global konfigürasyonlar tamamlandıktan sonra, özel olarak uygulanacak parametreleri ekleyeceğiz.

SSH hizmeti, seçenekleri [SSH] etiketinin altına eklemeye özen gösteriyoruz.

 etkin = doğru
Varsayılan olarak SSH hizmeti etkindir, ancak gerekirse bu seçenekte değiştirebiliriz.

Tüm bu bölüm, daha sonra detaylandıracağım değerlerle çalışabilir, ancak ihtiyaçlarınıza uyarlamak için değiştirebilir veya hepsini varsayılan olarak bırakabilirsiniz.

Yapılandırmalardan bir diğeri, oturum açmanın doğru olup olmadığını ve diğer hizmetler için eklenebileceğini gösteren filtrelerdir, örneğin nginx'li bir sunucumuz var ve sayfanın bir kısmı parola korumalı, ancak bir istemci kaba kuvvetle saldırıyor , [nginx-http-auth] etiketinin altına aşağıdakileri ekleyerek bunu durdurabiliriz.

 [nginx-http-auth] etkin = gerçek filtre = nginx-http-auth bağlantı noktası = http, https logpath = /var/log/nginx/error.log
Artık bir kullanıcının 3'ten fazla başarısız oturum açma denemesi varsa, bu günlüklere yansıtılır ve fail2ban harekete geçerek tüm kullanıcı trafiğini engeller.

Test ortamı


Temelleri anladıktan sonra, yasaklanan IP'yi bize bildirecek bir yasaklama politikası oluşturarak SSH ve Nginx'i Fail2ban üzerinden koruyacağımız küçük bir test ortamı yapacağız.

Kurulu değilse önce Nginx'i kuracağız

 apt-get install nginx
sendmail olabileceği bildirimleri için bir posta servisi kuracağız
 apt-get install sendmail
son olarak, bir açılıştan sonra iptables'imizin kalıcı olmasını istiyoruz, ya bir rc.0 betiği oluşturabilir ya da iptables-persistent paketini kurabiliriz.
 apt-get install iptables-kalıcı
Kurulacak.

Güvenlik Duvarımızı Kurmak


Yukarıdakileri kurduktan sonra, trafiği engelleyebilmesi için bir güvenlik duvarı uygulamamız gerekiyor. Temel bir güvenlik duvarı oluşturacağım sonraki yazılarda iptables hakkında daha fazla konuşacağım.

Kurulan bağlantılara, güncellemeler gibi sunucu trafiğine ve SSH ve Nginx bağlantı noktalarına yönelik trafiğe izin vereceğiz. Kalan tüm trafik reddedilecek.

 sudo iptables -A INPUT -i lo -j KABUL sudo iptables -A INPUT -m conntrack --ctstate KURULDU, İLGİLİ -j KABUL ET sudo iptables -A INPUT -p tcp --dport 22 -j KABUL sudo iptables -A INPUT -p tcp --dport 80 -j KABUL sudo iptables -A INPUT -j DROP
Değişiklikleri şu şekilde görebiliriz:
 iptables -S
Benzer bir sonuç vermelidir.
 -P GİRİŞ KABUL -P İLERİ KABUL -P ÇIKIŞ KABUL -N fail2ban-ssh -A GİRİŞ -p tcp -m multiport --dports 22 -j fail2ban-ssh -A GİRİŞ -i lo -j KABUL -A GİRİŞ -m bağlantı --ctstate İLGİLİ, KURULU -j KABUL -A GİRDİ -p tcp -m tcp --dport 22 -j KABUL -A GİRİŞ -p tcp -m tcp --dport 80 -j KABUL -A GİRDİ -j DROP -A fail2ban -ssh -j DÖNÜŞ

Fail2ban Ayarlarını Ayarlama


Şimdi jail.local dosyasını uygun bir şekilde yapılandırmamız gerekiyor.
 vi /etc/fail2ban/jail.local
Bir kullanıcının yasaklanma süresini en az 30 dakika uzatabiliriz, değeri saniye cinsinden ayarlamayı unutmayın.
 yasak süresi = 1800
Tüm fail2ban ban uyarılarını alacak bir e-posta yapılandırmamız gerekiyor, e-postanın değerini dosyada arayalım ve e-postayı koyalım.
 destemail = [email protected]
Genelde verdiğim uyarıyı gönderecek göndericiyi fail2ban adıyla değiştirebiliriz, böylece tüm günlükler arasında daha iyi filtre uygulayabiliriz.

Eylemin değerini değiştirdikten sonra 2 seçeneğimiz var:

  • action_mw: yasaklanan istemcinin whois komutuna benzer bir raporla uyarı gönderir.
  • action_mwl: mesajın gövdesine bir günlük ekleyerek çok daha ayrıntılı bir uyarı gönderin.

Bunda ikinci seçeneği kullanacağız:

 eylem =% (action_mwl) s 
Ardından [SSH] bölümüne gideceğiz ve yasaklamadan önceki maksimum deneme sayısını düzenleyebiliriz, 5'te bırakacağız:
 maxretry = 5
22 dışında bir portta SSH hizmetimiz varsa ki bu şiddetle tavsiye edilir, onun portunu belirtmeliyiz.
 bağlantı noktası = 45024
Ardından [nginx-http-auth] etiketini arayacağız, olduğu gibi bırakacağız.
 [nginx-http-auth] etkin = doğru
Bitirdik ve dosyayı kaydedip kapatabiliriz.

Fail2ban hizmetini yeniden başlatma


Uygulanacak tüm değişiklikler için hizmeti durdurmanızı tavsiye ederim.
 hizmet fail2ban durdurma 
Sonra onları tekrar başlatabiliriz
 hizmet fail2ban başlangıcı
Bu biraz zaman alacak, yaklaşık 5 dakika sonra kurallarımızı tekrar görebiliriz.
 iptables -S
 -P GİRDİ KABUL -P İLERİ KABUL -P ÇIKIŞ KABUL -N fail2ban-nginx-http-auth -N fail2ban-ssh -A GİRİŞ -p tcp -m multiport --dports 80,443 -j fail2ban-nginx-http-auth -A GİRİŞ -p tcp -m çoklu bağlantı noktası --dports 22 -j fail2ban-ssh -A GİRİŞ -i lo -j KABUL -A GİRİŞ -m bağlantı --ctstate İLGİLİ, KURULMUŞ -j KABUL -A GİRDİ -p tcp -m tcp - -dport 22 -j KABUL -A GİRİŞ -p tcp -m tcp --dport 80 -j KABUL -A GİRİŞ -j DROP -A fail2ban-nginx-http-auth -j DÖNÜŞ -A fail2ban-ssh -j DÖNÜŞ
fail2ban'ın nasıl yeni ilkeler eklediğini görüyoruz, /etc/fail2ban/jail.local içinde tanımladığınız yapılandırmaya bağlı olarak değişebilir.

Sonuçlarfail2ban'ı kurduk ve SSH ve NGINX ile çalışacak şekilde yapılandırdık, APACHE durumunda etiketleri ve günlüklerin dizinini değiştirmeliyiz, ancak nginx'e çok benzer. Biz sadece temelleri yapılandırdık, filtreler ve çok daha gelişmiş kurallar oluşturabilirsiniz, kılavuz sayfalarını biraz okumanızı tavsiye ederim, yapılandırma dosyaları iyi yorumlanmıştır, tüm fonksiyonlarını keşfetmek için yavaş yavaş gitmenizi tavsiye ederim.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave