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 fail2banBu, 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.localKopyaladıktan sonra açıp nasıl çalıştığını görebiliriz.
vim /etc/fail2ban/jail.localDosyanı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.1Localhost'umuzu tüm yerel trafiği yok sayacak şekilde eklersek, onları bir boşlukla ayırarak ek adresler ekleyebiliriz.
yasak süresi = 600Bantime, müşterinin bloke edildikten sonra banlanacağı süredir. Birim saniye cinsinden 600 saniyedir, 10 dakika varsayılan değerdir.
findtime = 600 maxretry = 3Sonra 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 = sendmailYasaklı 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_) sBurada 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ğruVarsayı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.logArtı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 nginxsendmail olabileceği bildirimleri için bir posta servisi kuracağız
apt-get install sendmailson 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 DROPDeğişiklikleri şu şekilde görebiliriz:
iptables -SBenzer 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.localBir kullanıcının yasaklanma süresini en az 30 dakika uzatabiliriz, değeri saniye cinsinden ayarlamayı unutmayın.
yasak süresi = 1800Tü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) sArdından [SSH] bölümüne gideceğiz ve yasaklamadan önceki maksimum deneme sayısını düzenleyebiliriz, 5'te bırakacağız:
maxretry = 522 dışında bir portta SSH hizmetimiz varsa ki bu şiddetle tavsiye edilir, onun portunu belirtmeliyiz.
bağlantı noktası = 45024Ardından [nginx-http-auth] etiketini arayacağız, olduğu gibi bırakacağız.
[nginx-http-auth] etkin = doğruBitirdik ve dosyayı kaydedip kapatabiliriz.
Fail2ban hizmetini yeniden başlatma
Uygulanacak tüm değişiklikler için hizmeti durdurmanızı tavsiye ederim.
hizmet fail2ban durdurmaSonra 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.