Malware ve Rootkit Tarama: rkhunter ve ClamAV Rehberi
Linux sunucunuzu malware ve rootkit'lere karşı koruyun. rkhunter ve ClamAV kurulumu, tarama yapılandırması, sonuç yorumlama ve zamanlanmış tarama rehberi.
Linux sunucu güvenliğini sağlamak için 10 temel adım: SSH anahtar doğrulama, güvenlik duvarı, Fail2ban, otomatik güncellemeler, DDoS koruması ve daha fazlası. Komutlarla açıklamalı rehber.
Yeni bir Linux sunucu kurduğunuzda, varsayılan yapılandırma güvenlik açısından optimize edilmemiştir. İnternete açık her sunucu, dakikalar içinde otomatik tarama araçlarının hedefi haline gelir. Bu rehber, sunucunuzu güvence altına almak için uygulamanız gereken 10 temel adımı komutlarla birlikte açıklar.
Bu adımları uygulamadan önce sunucunuza erişiminizi kaybetmemek için dikkatli olun. Özellikle SSH yapılandırmasını değiştirirken mevcut oturumunuzu açık tutun ve yeni bir terminal penceresiyle test edin.
Parola tabanlı SSH girişi, brute-force saldırılarına karşı savunmasızdır. SSH anahtar çifti kullanmak çok daha güvenlidir.
# RSA 4096-bit anahtar oluştur
ssh-keygen -t ed25519 -C "sunucu-adi@rexe"
# Veya RSA kullanmak istiyorsanız
ssh-keygen -t rsa -b 4096 -C "sunucu-adi@rexe"
# Yerel makineden çalıştırın
ssh-copy-id -i ~/.ssh/id_ed25519.pub kullanici@sunucu-ip
# Manuel yöntem
cat ~/.ssh/id_ed25519.pub | ssh kullanici@sunucu-ip \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# /etc/ssh/sshd_config dosyasını düzenleyin
sudo nano /etc/ssh/sshd_config
# Şu satırları değiştirin:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
X11Forwarding no
# SSH servisini yeniden başlatın
sudo systemctl restart sshd
SSH portunu varsayılan 22'den farklı bir porta (örn. 2222) değiştirmek, otomatik tarama araçlarının büyük çoğunluğunu engeller. Port 2222 satırını sshd_config'e ekleyin.
UFW (Uncomplicated Firewall), iptables'ın kullanımı kolay bir arayüzüdür.
# UFW'yi kur
sudo apt install ufw -y
# Varsayılan politikaları ayarla
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH'ye izin ver (portunu değiştirdiyseniz güncelleyin)
sudo ufw allow 22/tcp
# sudo ufw allow 2222/tcp # Özel port kullanıyorsanız
# Web sunucusu portları
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# UFW'yi etkinleştir
sudo ufw enable
# Durumu kontrol et
sudo ufw status verbose
# Belirli bir IP'den gelen bağlantılara izin ver
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
# SYN flood koruması
sudo iptables -A INPUT -p tcp --syn -m limit \
--limit 1/s --limit-burst 3 -j ACCEPT
# Kuralları kaydet
sudo iptables-save > /etc/iptables/rules.v4
Fail2ban, başarısız giriş denemelerini izler ve belirli bir eşiği aşan IP adreslerini otomatik olarak engeller.
# Fail2ban'ı kur
sudo apt install fail2ban -y
# Yapılandırma dosyası oluştur
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
# /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600 # 1 saat ban
findtime = 600 # 10 dakika içinde
maxretry = 5 # 5 başarısız deneme
ignoreip = 127.0.0.1/8 ::1 # Yerel IP'leri yoksay
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 3
bantime = 86400 # 24 saat ban
[nginx-http-auth]
enabled = true
[nginx-limit-req]
enabled = true
# Fail2ban'ı başlat
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Durumu kontrol et
sudo fail2ban-client status
sudo fail2ban-client status sshd
# Engellenen IP'leri listele
sudo fail2ban-client status sshd | grep "Banned IP"
Güncel olmayan yazılımlar, en yaygın güvenlik açığı kaynaklarından biridir.
# unattended-upgrades kur
sudo apt install unattended-upgrades apt-listchanges -y
# Yapılandır
sudo dpkg-reconfigure -plow unattended-upgrades
# Yapılandırma dosyasını düzenle
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
// Güvenlik güncellemelerini otomatik uygula
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
};
// Otomatik yeniden başlatma (gerekirse)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
// E-posta bildirimi
Unattended-Upgrade::Mail "admin@example.com";
Her çalışan servis potansiyel bir saldırı yüzeyidir.
# Çalışan servisleri listele
sudo systemctl list-units --type=service --state=running
# Açık portları kontrol et
sudo ss -tlnp
sudo netstat -tlnp
# Gereksiz servisleri durdur ve devre dışı bırak
sudo systemctl stop bluetooth
sudo systemctl disable bluetooth
sudo systemctl stop cups
sudo systemctl disable cups
# Gereksiz paketleri kaldır
sudo apt remove --purge telnet rsh-client rsh-redone-client
# Parola politikasını güçlendir
sudo apt install libpam-pwquality -y
sudo nano /etc/security/pwquality.conf
# Minimum 12 karakter
minlen = 12
# En az 1 büyük harf
ucredit = -1
# En az 1 küçük harf
lcredit = -1
# En az 1 rakam
dcredit = -1
# En az 1 özel karakter
ocredit = -1
# Google Authenticator PAM modülünü kur
sudo apt install libpam-google-authenticator -y
# Kullanıcı için yapılandır
google-authenticator
# PAM yapılandırmasını güncelle
sudo nano /etc/pam.d/sshd
# Şu satırı ekle:
# auth required pam_google_authenticator.so
# sshd_config'de ChallengeResponseAuthentication'ı etkinleştir
sudo nano /etc/ssh/sshd_config
# ChallengeResponseAuthentication yes
# AuthenticationMethods publickey,keyboard-interactive
sudo systemctl restart sshd
# rsync ile yerel yedekleme
rsync -avz --delete /var/www/ /backup/www/
# Uzak sunucuya yedekleme
rsync -avz -e ssh /var/www/ kullanici@yedek-sunucu:/backup/www/
# Otomatik yedekleme için cron job
crontab -e
# Her gece 02:00'de yedekle
0 2 * * * rsync -avz /var/www/ /backup/www/ >> /var/log/backup.log 2>&1
# Veritabanı yedekleme
mysqldump -u root -p --all-databases | gzip > /backup/db_$(date +%Y%m%d).sql.gz
3-2-1 yedekleme kuralını uygulayın: 3 kopya, 2 farklı medya, 1 farklı lokasyon.
# Önemli log dosyaları
tail -f /var/log/auth.log # Kimlik doğrulama logları
tail -f /var/log/syslog # Sistem logları
tail -f /var/log/nginx/access.log # Nginx erişim logları
tail -f /var/log/nginx/error.log # Nginx hata logları
# Başarısız SSH girişlerini izle
grep "Failed password" /var/log/auth.log | tail -20
# logwatch ile günlük rapor
sudo apt install logwatch -y
sudo logwatch --output mail --mailto admin@example.com --detail high
# Logrotate yapılandırması
sudo nano /etc/logrotate.d/custom
/var/log/myapp/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
}
# iptables ile temel DDoS koruması
# SYN flood koruması
sudo iptables -A INPUT -p tcp --syn -m limit \
--limit 1/s --limit-burst 3 -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -j DROP
# ICMP flood koruması
sudo iptables -A INPUT -p icmp -m limit \
--limit 1/s --limit-burst 5 -j ACCEPT
sudo iptables -A INPUT -p icmp -j DROP
# Bağlantı sayısı sınırı (IP başına)
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit \
--connlimit-above 50 -j REJECT
# Nginx rate limiting
# /etc/nginx/nginx.conf
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
# Location bloğunda:
limit_req zone=api burst=20 nodelay;
Yazılım tabanlı DDoS koruması, büyük ölçekli saldırılara karşı yetersiz kalabilir. REXE'nin Path.net altyapısı, ağ seviyesinde DDoS filtrelemesi sağlayarak sunucunuza ulaşmadan önce saldırı trafiğini temizler.
# Let's Encrypt ile ücretsiz SSL sertifikası
sudo apt install certbot python3-certbot-nginx -y
# Sertifika al
sudo certbot --nginx -d example.com -d www.example.com
# Otomatik yenileme
sudo certbot renew --dry-run
# Cron ile otomatik yenileme
0 12 * * * /usr/bin/certbot renew --quiet
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Güvenli SSL ayarları
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# HSTS
add_header Strict-Transport-Security "max-age=63072000" always;
# Güvenlik başlıkları
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "strict-origin-when-cross-origin";
}
# HTTP'yi HTTPS'e yönlendir
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
İlk bağlantıda şu adımları izleyin: 1) Sistemi güncelleyin (apt update && apt upgrade), 2) Yeni bir sudo kullanıcısı oluşturun, 3) SSH anahtar doğrulamayı ayarlayın, 4) Root SSH girişini kapatın, 5) UFW güvenlik duvarını yapılandırın, 6) Fail2ban'ı kurun. Bu temel adımlar sunucunuzun güvenliğini önemli ölçüde artırır.
Evet, Fail2ban ve UFW birlikte mükemmel çalışır. Fail2ban, başarısız giriş denemelerini tespit eder ve UFW aracılığıyla saldırgan IP'leri otomatik olarak engeller. Fail2ban'ın action.d dizininde ufw.conf dosyası mevcuttur ve Fail2ban'ı UFW ile entegre etmek için kullanılabilir.
Kısmen. SSH portunu değiştirmek, otomatik tarama araçlarının büyük çoğunluğunu engeller çünkü bu araçlar genellikle yalnızca 22. portu tarar. Ancak bu 'güvenlik yanılsaması' (security through obscurity) olarak değerlendirilir ve gerçek güvenlik önlemlerinin yerini tutmaz. SSH anahtar doğrulama ve Fail2ban çok daha etkilidir.
Şüpheli aktivite belirtileri: /var/log/auth.log'da çok sayıda başarısız giriş denemesi, beklenmedik yüksek CPU/RAM kullanımı, bilinmeyen ağ bağlantıları (netstat -tlnp ile kontrol), bilinmeyen cron job'lar, değiştirilmiş sistem dosyaları. Düzenli log izleme ve intrusion detection sistemleri (örn. AIDE, Tripwire) bu tür durumları erken tespit etmenize yardımcı olur.
Önce saldırının türünü ve kaynağını tespit edin (tcpdump, netstat). Saldırı devam ediyorsa REXE destek ekibini hemen bilgilendirin. REXE'nin Path.net DDoS koruması, ağ seviyesinde saldırıları filtreler. Yazılım tabanlı önlemler (iptables rate limiting, null routing) geçici çözüm olarak kullanılabilir ancak büyük ölçekli saldırılarda yetersiz kalır.
Linux sunucunuzu malware ve rootkit'lere karşı koruyun. rkhunter ve ClamAV kurulumu, tarama yapılandırması, sonuç yorumlama ve zamanlanmış tarama rehberi.
Fail2Ban ile SSH brute-force saldırılarına karşı sunucunuzu koruyun. Kurulum, jail.local yapılandırması, Nginx/Apache jail'leri, IP beyaz listesi ve e-posta bildirimleri.
WireGuard VPN sunucusu kurun: anahtar üretimi, sunucu ve istemci yapılandırması, IP yönlendirme, firewall kuralları ve Windows/Linux/Android istemci kurulumu.