Centos sunucuyu Fail2ban ile saldırılara karşı koruyun

Centos’a ssh ile bağlanmak için genellikle varsayılan port 22’yi kullanırız. Bilgisayarı korsanları saldırmak için çok kolay bir açık (delik) yol sunar. Açık port taraması oldukça basit olur. Fail2ban, bu tehlikelere karşı VDS’yi korumanın en iyi yoludur. Bu program, günlük dosyalarını tarayıp başarısız oturum açma girişimlerinin tekrar eden eylemlerine yanıt vererek çalışır.

Taramanın açık ssh durumunu sona erdiren çözüm, Centos saldırıya uğradığında IP’leri otomatik olarak engellemek için Fail2Ban aracını kullanmaktır.

Linux yöneticisi için önemli bir görev birisi gayrimeşru saldırı veya erişime karşı sunucuyu korumaktır. Varsayılan olarak Linux sistem saldırıları birçok türde engeller vb IPTables, Uncomplicated Firewall (Komplike olmayan Firewall)  (UFW), ConfigServer Security Firewall (ConfigServer Güvenlik Güvenlik Duvarı) (BOS) yanı yapılandırılmış bir güvenlik duvarı ile geliyor.

İnternete bağlı herhangi bir makine zararlı saldırıları için potansiyel bir hedeftir. Sunucuda gayrimeşru erişimini azaltmak için fail2ban denilen bir aracı yoktur.

Centos Fail2ban

Fail2ban Nedir?

Fail2ban, sunucuyu saldırılarına karşı koruyan bir saldırı önleme yazılımıdır. Python programlama dili ile yazılmıştır. Fail2ban, auth log dosyalarını temel alarak çalışır, varsayılan olarak /var/log/auth.log, /var/log/apache/access.log, vb. Gibi auth günlük dosyalarını tarar ve kötü amaçlı işaretleri gösteren IP’leri yasaklar ve çok fazla şifre arızası, istismar arar.

Genellikle fail2Ban, belirli bir süre IP adreslerini reddetmek için güvenlik duvarı kurallarını güncellemek için kullanılır. Ayrıca posta bildirimi de gönderecektir. Fail2ban, ssh, apache, nginx, squid, named, mysql, nagios, etc vb. gibi çeşitli hizmetler için birçok filtre ile birlikte gelir.

Fail2Ban yanlış kimlik doğrulama girişimlerinin oranını düşürebilir, ancak zayıf kimlik doğrulama sunma riskini ortadan kaldıramaz. Saldırılarını önleyecek sunucu güvenliği çok iyi vermektedir.

Centos’ta Fail2ban Nasıl Kurulur

Fail2ban, Linux dağıtımının çoğuyla birlikte zaten paketlenmiştir bu nedenle yüklemek için dağıtım paketi yöneticisini kullanın.

CentOS/RHEL sistemleri için EPEL Repository veya RPMForge Repository’yi etkinleştirin ve Terminalden kurmak için YUM Command (komutunu) kullanın.

Fail2ban Nasıl Yapılandırılır?

Varsayılan olarak, Fail2ban tüm yapılandırma dosyalarını /etc/fail2ban/ dizininde tutar. Ana yapılandırma dosyası jail.conf olup önceden tanımlanmış bir dizi filtre içerir. Bu nedenle dosyayı düzenlemeyin, çünkü yeni güncelleme geldiğinde yapılandırma varsayılan olarak sıfırlanır.

Aynı dizinde jail.local adlı yeni bir yapılandırma dosyası oluşturun ve istediğiniz gibi değişiklik yapın.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Varsayılan olarak seçeneklerin çoğu mükemmel bir şekilde yapılandırılmıştır ve belirli bir IP’ye erişimi etkinleştirmek istiyorsanız o zaman IP adresini ignoreip alanına ekleyebilirsiniz, çünkü birden fazla IP, IP adresi arasında geçiş yapacaktır.

DEFAULT bölümünde, Fail2Ban’ın izlediği temel kurallar seti bulunmaktadır ve istediğiniz herhangi bir parametreyi istediğiniz gibi ayarlayabilirsiniz.

# nano /etc/fail2ban/jail.local

[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.1.101/23

bantime = 600

findtime = 600

maxretry = 3

destemail = internetkafa.com@gmail.com

 

ignoreip: Bu bölüm, IP adresi listesini beyaz listeye eklememizi sağlar ve Fail2ban, bu listede bir adresle eşleşen bir ana bilgisayarı yasaklamaz.

bantime: Bir sunucunun yasaklandığı saniye sayısıdır.

findtime: Son bir “findtime” saniye sırasında “maxretry” oluşturduysanız bir ana makine yasaklandırır.

maxretry: “maxretry”, bir barınak yasaklanmadan önceki başarısızlıkların sayısıdır.

Hizmet Nasıl Yapılandırılır

Fail2ban, ssh, apache, nginx, squid, named, mysql, nagios, etc vb. gibi çeşitli hizmetlere yönelik önceden tanımlanmış filtreler seti ile birlikte gelir. Konfigürasyon dosyasında herhangi bir değişiklik yapmak istemiyoruz ve hizmet alanındaki herhangi bir servise etkinleştirmek için sadece enabled = true satırını eklemelisiniz. Devre dışı bırakmak için, çizgiyi false yapın.

# SSH servers

[sshd]

enabled = true

port    = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

enabled: Hizmetin açılıp kapatılmadığını belirler.

port: Belli bir servise atıfta bulunuyor. Varsayılan bağlantı noktasını kullanıyorsanız, servis adı buraya yerleştirilebilir. Geleneksel olmayan bir bağlantı noktası kullanılıyorsa, bu bağlantı noktası numarası olmalıdır.

logpath: Hizmetin günlüklerinin konumunu verir. / li>

backend: “backend”, dosya değişiklikleri yapmak için kullanılan arka planı belirtir.

Fail2Ban’ı Yeniden Başlatma:

Değişiklik yaptıktan sonra Fail2Ban’ın yeniden başlatılmasını sağlayın.

[For SysVinit Systems]

# service fail2ban restart

 

[For systemd Systems]

# systemctl restart fail2ban.service

 

Fail2Ban iptables kurallarını doğrulama

Aşağıdaki komutu kullanarak Fail2Ban iptables kurallarının güvenlik duvarına eklenip eklenmediğini teyit edebilirsiniz.

# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

f2b-apache-auth  tcp  —  anywhere             anywhere             multiport dports http,https

f2b-sshd   tcp  —  anywhere             anywhere             multiport dports 1234

ACCEPT     tcp  —  anywhere             anywhere             tcp dpt:1234

 

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

 

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

 

Chain f2b-apache-auth (1 references)

target     prot opt source               destination

RETURN     all  —  anywhere             anywhere

 

Chain f2b-sshd (1 references)

target     prot opt source               destination

RETURN     all  —  anywhere             anywhere

 

Fail2ban Nasıl Test Edilir?

Test etmek için bazı başarısız girişimlerde bulunmuştum. Bunu onaylamak için, /var/log/fail2ban.log dosyasını doğrulayacağım.

2017-11-05 14:43:22,901 fail2ban.server         [7141]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6

2017-11-05 14:43:22,987 fail2ban.database       [7141]: INFO    Connected to fail2ban persistent database ‘/var/lib/fail2ban/fail2ban.sqlite3’

2017-11-05 14:43:22,996 fail2ban.database       [7141]: WARNING New database created. Version ‘2’

2017-11-05 14:43:22,998 fail2ban.jail           [7141]: INFO    Creating new jail ‘sshd’

2017-11-05 14:43:23,002 fail2ban.jail           [7141]: INFO    Jail ‘sshd’ uses poller {}

2017-11-05 14:43:23,019 fail2ban.jail           [7141]: INFO    Initiated ‘polling’ backend

2017-11-05 14:43:23,019 fail2ban.filter         [7141]: INFO    Set maxRetry = 5

2017-11-05 14:43:23,020 fail2ban.filter         [7141]: INFO    Set jail log file encoding to UTF-8

2017-11-05 14:43:23,020 fail2ban.filter         [7141]: INFO    Added logfile = /var/log/auth.log

2017-11-05 14:43:23,021 fail2ban.actions        [7141]: INFO    Set banTime = 600

2017-11-05 14:43:23,021 fail2ban.filter         [7141]: INFO    Set findtime = 600

2017-11-05 14:43:23,022 fail2ban.filter         [7141]: INFO    Set maxlines = 10

2017-11-05 14:43:23,070 fail2ban.server         [7141]: INFO    Jail sshd is not a JournalFilter instance

2017-11-05 14:43:23,081 fail2ban.jail           [7141]: INFO    Jail ‘sshd’ started

2017-11-05 14:43:23,763 fail2ban.filter         [7141]: INFO    [sshd] Found 103.5.134.167

2017-11-05 14:43:23,763 fail2ban.filter         [7141]: INFO    [sshd] Found 103.5.134.167

2017-11-05 14:43:23,764 fail2ban.filter         [7141]: INFO    [sshd] Found 181.129.54.170

2017-11-05 14:43:23,764 fail2ban.filter         [7141]: INFO    [sshd] Found 181.129.54.170

2017-11-05 14:43:23,765 fail2ban.filter         [7141]: INFO    [sshd] Found 181.129.54.170

2017-11-05 14:43:23,765 fail2ban.filter         [7141]: INFO    [sshd] Found 181.129.54.170

2017-11-05 15:19:06,192 fail2ban.server         [7141]: INFO    Stopping all jails

2017-11-05 15:19:06,874 fail2ban.jail           [7141]: INFO    Jail ‘sshd’ stopped

2017-11-05 15:19:06,879 fail2ban.server         [7141]: INFO    Exiting Fail2ban

2017-11-05 15:19:07,123 fail2ban.server         [8528]: INFO    Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6

2017-11-05 15:19:07,123 fail2ban.database       [8528]: INFO    Connected to fail2ban persistent database ‘/var/lib/fail2ban/fail2ban.sqlite3’

2017-11-05 15:19:07,126 fail2ban.jail           [8528]: INFO    Creating new jail ‘sshd’

2017-11-05 15:19:07,129 fail2ban.jail           [8528]: INFO    Jail ‘sshd’ uses poller {}

2017-11-05 15:19:07,141 fail2ban.jail           [8528]: INFO    Initiated ‘polling’ backend

2017-11-05 15:19:07,142 fail2ban.actions        [8528]: INFO    Set banTime = 60

2017-11-05 15:19:07,142 fail2ban.filter         [8528]: INFO    Set findtime = 60

2017-11-05 15:19:07,142 fail2ban.filter         [8528]: INFO    Set jail log file encoding to UTF-8

2017-11-05 15:19:07,143 fail2ban.filter         [8528]: INFO    Set maxRetry = 3

2017-11-05 15:19:07,144 fail2ban.filter         [8528]: INFO    Added logfile = /var/log/auth.log

2017-11-05 15:19:07,144 fail2ban.filter         [8528]: INFO    Set maxlines = 10

2017-11-05 15:19:07,189 fail2ban.server         [8528]: INFO    Jail sshd is not a JournalFilter instance

2017-11-05 15:19:07,195 fail2ban.jail           [8528]: INFO    Jail ‘sshd’ started

2017-11-05 15:20:03,263 fail2ban.filter         [8528]: INFO    [sshd] Found 103.5.134.167

2017-11-05 15:20:05,267 fail2ban.filter         [8528]: INFO    [sshd] Found 103.5.134.167

2017-11-05 15:20:12,276 fail2ban.filter         [8528]: INFO    [sshd] Found 103.5.134.167

2017-11-05 15:20:12,380 fail2ban.actions        [8528]: NOTICE  [sshd] Ban 103.5.134.167

2017-11-05 15:21:12,659 fail2ban.actions        [8528]: NOTICE  [sshd] Unban 103.5.134.167

 

Prison (hapishane) listesini kontrol edin, aşağıdaki komutu çalıştırın.

# fail2ban-client status

Status

|- Number of jail:             2

`- Jail list:             apache-auth, sshd

 

Aşağıdaki komutu çalıştırarak engellenen IP adresini elde etmek için.

 

# fail2ban-client status ssh

Status for the jail: ssh

|- filter

|  |- File list:    /var/log/auth.log

|  |- Currently failed: 1

|  `- Total failed: 3

`- action

|- Currently banned: 1

|  `- IP list:   192.168.1.115

`- Total banned: 1

 

Bloke IP adresini Fail2Ban’dan kaldırmak için aşağıdaki komutu çalıştırın.

# fail2ban-client set ssh unbanip 192.168.1.111

Umarım Fail2ban SSH koruması kurma talimatlarıyla Fail2ban’ı başarıyla kurmanıza ve sunucuyu SSH bağlantı noktasını taramadan korumanıza yardımcı olacaktır.

Hzırlayan: İsmail Fiden

Kaynak Çevirisi: İsmail Fiden

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir