Linux sunucular internete açıldığında sürekli saldırı altındadır. Brute force denemeleri, port taramaları, zararlı yazılım bulaştırma girişimleri her gün yaşanır. Kapsamlı bir ağ güvenliği stratejisi, tek bir önleme değil katmanlı savunmaya dayanır.
Katmanlı Güvenlik (Defense in Depth)
Tek bir güvenlik önlemi yeterli değildir. Saldırganlar bir katmanı geçse bile diğerleri devreye girmelidir.
Katmanlar:
- Güvenlik duvarı (ufw, nftables)
- SSH sertleştirme (anahtar tabanlı, root kapalı)
- Saldırı tespit ve önleme (Fail2Ban, IDS/IPS)
- Düzenli güncelleme ve yamalama
- Log izleme ve denetim
SSH Güvenliği
SSH, uzaktan erişimin temel yoludur ve saldırganların birincil hedefidir. Varsayılan ayarlarla bırakmayın.
Anahtar Tabanlı Kimlik Doğrulama
Parola yerine SSH anahtarı kullanmak en kritik adımdır. Brute force saldırılarını etkisiz kılar.
Anahtar oluşturma:
ssh-keygen -t ed25519 -C "[email protected]"
Sunucuya kopyalama:
ssh-copy-id kullanici@sunucu
SSH Daemon Sertleştirme
/etc/ssh/sshd_config dosyasında:
# Root girişini kapat PermitRootLogin no
# Parola ile girişi kapat PasswordAuthentication no
# Boş parola engelle PermitEmptyPasswords no
# Sadece belirli kullanıcılara izin AllowUsers admin deploy
# Protokol 2 (varsayılan, kontrol edin) Protocol 2
# Maksimum deneme MaxAuthTries 3
# Oturum zaman aşımı ClientAliveInterval 300 ClientAliveCountMax 2
# X11 forwarding kapat (gerekmiyorsa) X11Forwarding no
Değişiklik sonrası:
sudo sshd -t # Syntax kontrolü sudo systemctl restart sshd
Port Değişikliği
Varsayılan 22 portunu değiştirmek otomatik taramaları azaltır. Gerçek güvenlik sağlamaz ama log kirliliğini azaltır.
Port 2222
Fail2Ban
Fail2Ban, log dosyalarını izler ve başarısız giriş denemelerini tespit ederek IP'leri engeller. SSH brute force saldırılarına karşı etkilidir.
Kurulum
sudo apt install fail2ban sudo systemctl enable fail2ban
Yapılandırma
/etc/fail2ban/jail.local dosyası oluşturun:
[DEFAULT] bantime = 3600 findtime = 600 maxretry = 3 ignoreip = 127.0.0.1/8 192.168.1.0/24
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 86400
Ayarlar:
- maxretry: Kaç denemede ban
- findtime: Bu süre içinde (saniye)
- bantime: Ne kadar süre ban (saniye)
Durum kontrolü:
sudo fail2ban-client status sudo fail2ban-client status sshd
Banlı IP'leri görme:
sudo fail2ban-client get sshd banned
IP'yi serbest bırakma:
sudo fail2ban-client set sshd unbanip 10.0.0.5
Diğer Servisler İçin Fail2Ban
Apache için:
[apache-auth] enabled = true port = http,https logpath = /var/log/apache2/error.log maxretry = 5
Nginx için:
[nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log maxretry = 5
Güvenlik Duvarı
Gereksiz portları kapatın, sadece ihtiyaç duyulan servislere izin verin.
ufw ile Temel Kurulum
# Varsayılanları ayarla sudo ufw default deny incoming sudo ufw default allow outgoing
# SSH (port değiştirdiyseniz onu açın) sudo ufw allow ssh
# Web servisleri sudo ufw allow 80/tcp sudo ufw allow 443/tcp
# Etkinleştir sudo ufw enable
IP Kısıtlaması
SSH'yi sadece belirli IP'lerden:
sudo ufw allow from 192.168.1.0/24 to any port 22
Rate Limiting
sudo ufw limit ssh
Port Tarama Tespiti
psad (Port Scan Attack Detector):
sudo apt install psad
iptables loglarını izleyerek port taramalarını tespit eder ve engeller.
Saldırı Tespit Sistemleri (IDS)
IDS, ağ trafiğini izleyerek saldırı kalıplarını tespit eder.
Snort
Cisco tarafından geliştirilen, imza tabanlı IDS/IPS.
sudo apt install snort
Tek thread çalışır. Küçük-orta ölçekli ağlar için uygundur.
Suricata
Snort'un modern alternatifi. Çoklu thread desteği ile yüksek trafikli ağlarda daha iyi performans.
sudo apt install suricata sudo systemctl enable suricata
Kural güncelleme:
sudo suricata-update
Suricata hem IDS hem IPS modunda çalışabilir.
Hangisini Seçmeli?
Snort: Olgun, geniş topluluk, bol kaynak. Suricata: Yüksek performans, modern mimari.
Yüksek trafikli ortamlarda Suricata tercih edilir.
Önemli Not: Şifreli trafik (HTTPS) IDS tarafından incelenemez.
Antivirüs: ClamAV
Linux'ta virüs riski düşük olsa da mail sunucuları ve dosya paylaşımında antivirüs önemlidir.
Kurulum
sudo apt install clamav clamav-daemon sudo freshclam # Veritabanı güncelle
Tarama
sudo clamscan -r /home sudo clamscan -r -i /var/www # Sadece enfekte dosyaları göster
Otomatik Tarama
Cron ile günlük tarama:
0 3 * /usr/bin/clamscan -r /home --log=/var/log/clamav/daily.log
Rootkit Tespiti
rkhunter
sudo apt install rkhunter sudo rkhunter --update sudo rkhunter --check
chkrootkit
sudo apt install chkrootkit sudo chkrootkit
Düzenli olarak çalıştırın ve sonuçları inceleyin.
Log İzleme
Loglar saldırı belirtilerini gösterir. Düzenli inceleme şarttır.
Önemli Loglar
/var/log/auth.log: Kimlik doğrulama, SSH girişleri /var/log/syslog: Genel sistem logları /var/log/fail2ban.log: Fail2Ban aktivitesi /var/log/ufw.log: Güvenlik duvarı logları
Logwatch
Günlük log özeti e-posta ile gönderir:
sudo apt install logwatch sudo logwatch --detail High --mailto [email protected]
OSSEC
Host tabanlı saldırı tespit sistemi. Log analizi, dosya bütünlüğü kontrolü, rootkit tespiti yapar.
Dosya Bütünlüğü İzleme
AIDE (Advanced Intrusion Detection Environment)
Dosya değişikliklerini tespit eder.
sudo apt install aide sudo aideinit
Veritabanı oluşturulduktan sonra periyodik kontrol:
sudo aide --check
Kritik dosyalarda beklenmeyen değişiklikler saldırı belirtisi olabilir.
Güncelleme Politikası
Güvenlik yamalarını zamanında uygulayın.
Otomatik güvenlik güncellemeleri:
sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
Güvenlik Kontrol Listesi
- [ ] SSH anahtar tabanlı kimlik doğrulama
- [ ] SSH root girişi kapalı
- [ ] Parola ile giriş kapalı
- [ ] Fail2Ban aktif ve yapılandırılmış
- [ ] Güvenlik duvarı aktif, gereksiz portlar kapalı
- [ ] Otomatik güvenlik güncellemeleri açık
- [ ] Loglar düzenli izleniyor
- [ ] Rootkit taraması periyodik yapılıyor
- [ ] Dosya bütünlüğü izleniyor
Sonuç
Linux ağ güvenliği tek bir araçla sağlanmaz. SSH sertleştirme, Fail2Ban, güvenlik duvarı, IDS ve log izleme birlikte çalışmalıdır.
Anahtar tabanlı SSH kimlik doğrulama ve Fail2Ban ilk adımlardır. Güvenlik duvarını yapılandırın, gereksiz portları kapatın. Logları düzenli inceleyin.
Güvenlik sürekli bir süreçtir. Sistemleri güncel tutun, yeni tehditleri takip edin, güvenlik denetimlerini periyodik yapın.
0 Yorum
Yorum Yaz