Linux’ta güvenlik, ağ trafiğini kontrol etmek ve saldırılara karşı korunmak için güvenlik araçlarının ve güvenlik duvarı yönetiminin etkili kullanımıyla sağlanır. Bu bölümde, iptables ve firewalld kullanarak güvenlik duvarı yönetimini öğrenirken, brute force saldırılarını engellemek için Fail2Ban aracını yapılandırmayı göreceğiz.
Iptables ve Firewalld ile Güvenlik Duvarı Yönetimi
Iptables Temel Kuralları ve Konfigürasyonu
Iptables, Linux sistemlerinde gelen ve giden trafiği yönetmek için kullanılan güçlü bir güvenlik duvarı aracıdır. Ağdaki paketlerin hangi kurallara göre işleneceğini belirler. Örneğin, belirli IP adreslerini veya portları engelleyebilir ya da izin verebilir. Temel iptables komutlarını anlamak, ağ güvenliğini sağlamanın ilk adımıdır.
Temel Iptables Komutları:
- Tablolar ve zincirler:
- Iptables, trafiği
INPUT
(gelen trafik),OUTPUT
(giden trafik), veFORWARD
(yönlendirme) gibi zincirler üzerinden işler. - Örnek: Tüm gelen bağlantıları engellemek
-A
: Yeni bir kural ekler.INPUT
: Gelen trafiği temsil eden zincirdir.-j DROP
: Trafiği reddeder.
- Iptables, trafiği
- Port yönetimi:
- Belirli bir portu açmak
-p tcp
: Trafiğin TCP protokolünü kullandığını belirtir.--dport 22
: SSH için kullanılan 22 numaralı portu hedefler.-j ACCEPT
: Trafiğe izin verir.
- Belirli bir portu açmak
- Durum takibi (Stateful filtering):
- Yalnızca var olan ya da ilgili bağlantılara izin vermek
-m state
: Paketlerin durumunu kontrol etmek için bir modül kullanır.--state RELATED,ESTABLISHED
: Yalnızca var olan ve ilgili bağlantılara izin verir (örneğin, bir web sunucusu yanıtı).
- Yalnızca var olan ya da ilgili bağlantılara izin vermek
Firewalld ile Dinamik Güvenlik Duvarı Yönetimi
Firewalld, iptables’in dinamik ve daha kullanıcı dostu bir alternatifidir. Ağ trafiğini dinamik olarak yönetir ve iptables kurallarını arka planda çalıştırır. Ayrıca, ağ bölgeleri oluşturup her bölgeye farklı güvenlik ayarları uygulayabilirsiniz.
Firewalld Temel Komutları:
- Firewalld durumunu kontrol etmek
--state
: Firewalld’nin çalışıp çalışmadığını kontrol eder.
- Bir servise izin vermek
--permanent
: Kuralı kalıcı hale getirir.--add-service=http
: HTTP servisine izin verir.--reload
: Firewalld’yi yeniden yükleyerek değişikliklerin uygulanmasını sağlar.
- Belirli bir portu açmak
--add-port=8080/tcp
: TCP üzerinden 8080 numaralı portu açar.
Fail2Ban ile Brute Force Saldırılarını Önleme
Brute force saldırıları, özellikle SSH gibi kritik servisler için ciddi bir tehdit oluşturabilir. Fail2Ban, bu tür saldırıları otomatik olarak engellemek için sunucu loglarını izler ve başarısız giriş denemelerini tespit ederek IP adreslerini geçici olarak yasaklar.
Fail2Ban Kurulumu ve Yapılandırılması
Fail2Ban’i kurmak ve yapılandırmak oldukça kolaydır ve çoğu Linux dağıtımında varsayılan paket yöneticileri ile birlikte gelir.
- Fail2Ban kurulumu
apt
veyayum
: Paket yöneticisi komutları ile Fail2Ban’i indirir ve kurar.
- Fail2Ban servisini başlatma ve etkinleştirme
systemctl start
: Fail2Ban servisini başlatır.systemctl enable
: Sistemin her açılışında Fail2Ban’in otomatik başlamasını sağlar.
Jail Konfigürasyon Dosyaları ve Log İzleme
Fail2Ban’in güvenlik kurallarını jail.conf
dosyası üzerinden yönetebilirsiniz. Brute force saldırılarına karşı SSH servisini korumak için jail.local
dosyasını yapılandırabilirsiniz:
Jail yapılandırmasını oluşturmak
cp
: jail.conf
dosyasını kopyalar.nano
: Dosyayı düzenlemeye yarayan metin düzenleyici.
SSH için yasaklama yapılandırması:
[sshd] enabled = true port = ssh logpath = /var/log/auth.log bantime = 600 findtime = 600 maxretry = 3
enabled = true
: SSH korumasını etkinleştirir.port = ssh
: SSH portu için güvenlik kurallarını uygulamak.logpath = /var/log/auth.log
: SSH giriş denemelerini kaydeden log dosyasını izler.bantime = 600
: IP adresinin yasaklanma süresi 600 saniyedir (10 dakika).findtime = 600
: 600 saniye (10 dakika) içinde belirlenen maksimum başarısız giriş sayısına ulaşıldığında yasaklama uygulanır.maxretry = 3
: Maksimum 3 başarısız giriş denemesine izin verilir.