İçeriğe geç
NetDevOps
12 dk okuma Güvenlik

rkhunter ile Linux Rootkit Tespit ve Koruma Rehberi

Rootkit Hunter Kurulumu

Linux sunucularınızı rootkit ve arka kapılara karşı korumanın ilk adımı, güvenilir bir tarama aracına sahip olmaktır. Rootkit Hunter (rkhunter), açık kaynaklı ve yaygın olarak kullanılan bir rootkit tespit aracıdır. Bu rehberde, rkhunter'ın kurulumundan otomatik taramalarına kadar tüm süreçleri detaylı olarak ele alacağız. rkhunter, sistem dosyalarının bütünlüğünü kontrol eder, bilinen rootkit imzalarını tarar ve şüpheli dosya izinlerini tespit eder. Bu özellikleri sayesinde, saldırganların sisteminize sızmasını engelleyebilir veya bir ihlal durumunda erken uyarı alabilirsiniz.

Rootkitler, standart sistem komutlarını (ps, ls, netstat gibi) değiştirerek varlıklarını gizleyen zararlı yazılımlardır. Bir rootkit sisteme yerleştiğinde, saldırgan logları silinebilir, şüpheli süreçler gizlenebilir ve ağ trafiği maskelenebilir. rkhunter bu manipülasyonları tespit etmek için kendi imza veritabanını ve dosya bütünlük kontrol mekanizmasını kullanır.

Debian ve Ubuntu Üzerine Kurulum

Debian tabanlı sistemlerde rkhunter kurulumu son derece basittir. APT paket yöneticisini kullanarak doğrudan kurabilirsiniz. Öncelikle paket listesini güncellemeniz önerilir:

sudo apt update

Bu komut, sistemdeki tüm paket kaynaklarını yeniler ve en güncel paket bilgilerini çeker. Güncelleme tamamlandıktan sonra rkhunter'ı kurabilirsiniz:

sudo apt install -y rkhunter

-y bayrağı, kurulum sırasında sorulan onay sorularını otomatik olarak "evet" yanıtlamak için kullanılır. Kurulum tamamlandıktan sonra sürüm kontrolü yaparak kurulumun başarılı olduğunu doğrulayın:

rkhunter --version

Bu komut, yüklü rkhunter sürümünü görüntüler. Çıktı genellikle "Rootkit Hunter 1.4.6" şeklinde olacaktır. Sürüm numarası, kullandığınız dağıtımın paket deposuna bağlı olarak değişiklik gösterebilir.

RHEL, Fedora ve Rocky Linux Üzerine Kurulum

Red Hat Enterprise Linux ve türevi sistemlerde rkhunter, EPEL (Extra Packages for Enterprise Linux) deposunda bulunur. Eğer EPEL deposu henüz etkinleştirilmediyse, öncelikle etkinleştirmeniz gerekir:

sudo dnf install -y epel-release

EPEL deposu etkinleştirildikten sonra rkhunter'ı kurabilirsiniz:

sudo dnf install -y rkhunter

Kurulum tamamlandığında, Debian/Ubuntu'daki gibi sürüm kontrolü yapın:

rkhunter --version

RHEL tabanlı sistemlerde kurulum birkaç dakika sürebilir çünkü sistem bağımlılıkları da otomatik olarak çözümlenir. Kurulum sonrası /var/log/rkhunter/ dizininin oluşturulduğunu ve rkhunter'ın sistem binary dosyalarına erişim hakkına sahip olduğunu doğrulayın.

İmza Veritabanı ve Baseline Güncelleme

rkhunter'ın etkin bir şekilde çalışabilmesi için iki kritik adım vardır: imza veritabanının güncellenmesi ve dosya özelliklerinin baseline değerlerinin oluşturulması. Bu adımlar atlandığında, rkhunter ya eski verilerle çalışır ya da sistemdeki meşru değişiklikleri tehdit olarak işaretler. Her iki adımı da doğru sırayla gerçekleştirmek, güvenilir tarama sonuçları için zorunludur.

İmza Veritabanının Güncellenmesi

rkhunter, bilinen rootkit imzalarını, şüpheli dosya yollarını ve ağ portu bilgilerini içeren veritabanı dosyaları kullanır. Bu veritabanını güncel tutmak, yeni ortaya çıkan tehditlere karşı koruma sağlar. Güncelleme komutu şu şekildedir:

sudo rkhunter --update

Bu komut çalıştırıldığında, rkhunter upstream sunucularından en güncel imza dosyalarını indirir. Her bir veritabanı dosyası için "OK" veya "Update failed" mesajı görüntülenir. Bazı sistemlerde ağ kısıtlamaları veya proxy ayarları nedeniyle güncelleme başarısız olabilir. Bu durumda, sistemdeki mevcut imzalarla tarama yapmaya devam edebilirsiniz ancak en kısa sürede ağ erişimini düzeltmeniz önerilir.

Güncelleme sırasında "Invalid WEB_CMD configuration option" hatası alırsanız, /etc/rkhunter.conf dosyasındaki WEB_CMD ayarını kontrol edin. Bazı dağıtımlar güvenlik nedeniyle bu değeri /bin/false olarak ayarlar. Bu durumda, WEB_CMD değerini boş bir dize olarak değiştirmeniz gerekebilir.

Dosya Özellikleri Baseline Değerlerinin Oluşturulması

Baseline oluşturma, rkhunter'ın en kritik özelliğidir. Bu adım, sisteminizdeki tüm önemli dosyaların (sistem binary dosyaları, kütüphaneler, yapılandırma dosyaları) hash değerlerini, izinlerini ve sahiplik bilgilerini kaydeder. Böylece sonraki taramalarda, bu değerlerdeki herhangi bir değişiklik şüpheli olarak işaretlenir.

Baseline'i mutlaka temiz, saldırıdan arınmış bir sistemde oluşturmalısınız. Saldırıya uğramış bir sistemde baseline oluşturursanız, saldırganın değişikliklerini "normal" olarak kaydetmiş olursunuz:

sudo rkhunter --propupd

Bu komut çalıştırıldığında, rkhunter sistemdeki yüzlerce dosyayı tarar ve özelliklerini /var/lib/rkhunter/db/rkhunter.dat dosyasına kaydeder. İşlem birkaç dakika sürebilir ve çıktı şu şekilde görünür:

[ Rootkit Hunter version 1.4.6 ]
File created: searched for 177 files, found 134

Her sistem güncellemesi sonrasında (özellikle kernel, glibc, OpenSSH, sudo gibi kritik paketler güncellendiğinde) baseline'i yenilemeniz gerekir. Bunu otomatikleştirmek için Debian/Ubuntu sistemlerde bir APT hook oluşturabilirsiniz:

sudo tee /etc/apt/apt.conf.d/99rkhunter-propupd 'EOF'
DPkg::Post-Invoke { "if [ -x /usr/bin/rkhunter ]; then /usr/bin/rkhunter --propupd --nocolors --quiet; fi"; };
EOF

Bu yapılandırma, her apt işlemi sonrasında otomatik olarak baseline'i günceller ve yanlış pozitif uyarıları önler.

Sistem Taraması Çalıştırma

rkhunter kurulumu ve baseline oluşturma tamamlandıktan sonra, sistem taraması gerçekleştirebilirsiniz. Tarama, sistem dosyalarını imza veritabanıyla karşılaştırır, şüpheli dosyaları ve izinleri kontrol eder ve rootkit belirtilerini arar. Etkili bir tarama için doğru parametreleri kullanmak önemlidir.

İlk Tarama ve Parametreler

İlk taramayı interaktif modda çalıştırarak rkhunter'ın ne kontrol ettiğini adım adım görebilirsiniz:

sudo rkhunter --check

Bu komut, her kontrol bölümünden sonra devam etmek için Enter tuşuna basmanızı ister. Tüm kontrolleri tek seferde çalıştırmak için --skip-keypress (veya -sk) parametresini kullanın:

sudo rkhunter --check --sk

Tarama sırasında renkli çıktı kullanmak isterseniz, ek bir parametre eklemeye gerek yoktur. Ancak otomatik taramalarda renkleri kapatmak için --nocolors parametresini ekleyebilirsiniz. Uyarıları yalnızca görmek istiyorsanız, --report-warnings-only parametresini kullanın:

sudo rkhunter --check --sk --nocolors --report-warnings-only

Bu parametre kombinasyonu, systemd servisi veya cron job olarak çalıştırmak için idealdir. Tarama süresi sistem özelliklerine bağlı olarak değişir; ancak genellikle birkaç dakika içinde tamamlanır.

Tarama Sonuçlarını Okuma ve Yorumlama

rkhunter tarama sonuçları iki yerde saklanır: terminal çıktısında ve detaylı log dosyasında. Terminal çıktısı, genel bir özet sunarken, /var/log/rkhunter/rkhunter.log dosyası her kontrolün detaylarını içerir. Özet bölümünü görmek için log dosyasının sonundaki "System checks summary" bölümünü okuyun:

sudo grep -A6 'System checks summary' /var/log/rkhunter/rkhunter.log

Bu çıktı şu bilgileri içerir: kontrol edilen dosya sayısı, şüpheli dosya sayısı, taranan rootkit sayısı ve tespit edilen olası rootkit sayısı. "Possible rootkits: 0" mesajı, rkhunter'ın herhangi bir rootkit tespit etmediği anlamına gelir. Ancak bu, sistemin kesinlikle temiz olduğu anlamına gelmez; sadece rkhunter'ın bilinen imzalarla eşleşen bir şey bulamadığı anlamına gelir.

Uyarıları listelemek için grep komutunu kullanın:

sudo grep -i warning /var/log/rkhunter/rkhunter.log | tail -20

Bazı uyarılar meşru sistem yapılandırmalarından kaynaklanabilir. Örneğin, SSH root girişine izin veriliyorsa veya belirli sistem dosyaları gizliyse, rkhunter bu durumları uyarı olarak bildirir. Her uyarıyı araştırmak ve meşru mu yoksa şüpheli mi olduğunu belirlemek önemlidir.

Otomatik Tarama Zamanlaması

Sistem güvenliğini sağlamak için rkhunter taramalarını düzenli olarak çalıştırmak kritik öneme sahiptir. Manuel taramalar güvenlidir ancak unutulabilir veya atlanabilir. Otomatik taramalar, potansiyel tehditleri erken aşamada tespit etmenizi sağlar. İki ana yöntem vardır: systemd timer veya cron. Systemd timer, modern Linux sistemlerde tercih edilen yöntemdir çünkü daha iyi loglama ve bağımlılık yönetimi sunar.

Systemd Timer ile Otomatik Tarama

Systemd timer, cron'a göre daha güvenilir ve yönetilebilir bir zamanlama mekanizmasıdır. Öncelikle bir servis birimi oluşturmanız gerekir:

sudo tee /etc/systemd/system/rkhunter-scan.service 'EOF'
[Unit]
Description=rkhunter daily rootkit scan
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/rkhunter --check --sk --nocolors --quiet --report-warnings-only
StandardOutput=journal
StandardError=journal
EOF

Bu servis birimi, rkhunter'ı çalıştırır ve çıktıyı systemd journal'ına yönlendirir. Ardından timer birimini oluşturun:

sudo tee /etc/systemd/system/rkhunter-scan.timer 'EOF'
[Unit]
Description=Run rkhunter daily
[Timer]
OnCalendar=daily
RandomizedDelaySec=1800
Persistent=true
[Install]
WantedBy=timers.target
EOF

RandomizedDelaySec parametresi, taramaların her gün aynı anda çalışmasını önleyerek sistem yükünü dengeler. Persistent=true parametresi, sistemin bir dönem kapalı kaldığı durumlarda, bir sonraki açılışta atlanan taramayı çalıştırır. Şimdi servisi etkinleştirin ve başlatın:

sudo systemctl daemon-reload
sudo systemctl enable --now rkhunter-scan.timer

Zamanlayıcının durumunu kontrol etmek için:

systemctl list-timers rkhunter-scan.timer

Bu komut, bir sonraki çalışma zamanını ve son çalışma zamanını gösterir. Zamanlayıcı doğru şekilde çalışıyorsa, "NEXT" sütununda bir tarih ve saat görmeniz gerekir.

Cron ile Otomatik Tarama

Systemd kullanmayan sistemlerde (örneğin, Alpine Linux veya eski sistemler) cron kullanabilirsiniz. Günlük bir cron görevi eklemek için:

echo '0 3 * * * root /usr/bin/rkhunter --check --sk --nocolors --quiet --report-warnings-only 2>&1 | /usr/bin/mail -s "rkhunter report: $(hostname)" root' | sudo tee /etc/cron.d/rkhunter

Bu yapılandırma, her gün saat 03:00'te taramayı çalıştırır ve sonuçları root kullanıcısına e-posta ile gönderir. Mail gönderimi için sisteminizde bir MTA (Mail Transfer Agent) kurulu olmalıdır. mailutils veya s-nail paketlerini kurarak bu işlevselliği sağlayabilirsiniz.

Yapılandırma ve Hata Yönetimi

rkhunter'ı kurumsal ortamlarda veya çoklu sunucularda kullanırken, yapılandırma dosyasını özelleştirmeniz gerekebilir. /etc/rkhunter.conf dosyası, tarama davranışını, uyarı eşiklerini ve e-posta bildirimlerini kontrol eder. Ayrıca, yaygın hataları anlamak ve çözmek için bilgi sahibi olmak önemlidir.

Temel Yapılandırma Ayarları

/etc/rkhunter.conf dosyasını düzenleyerek rkhunter davranışını özelleştirebilirsiniz. En sık kullanılan ayarlardan bazıları şunlardır: e-posta bildirimi için MAIL-ON-WARNING parametresi, SSH yapılandırma kontrolleri için ALLOW_SSH_ROOT_USER, ve gizli port kontrolü için PORT_SCAN_THRESHOLD. Yapılandırma dosyasını düzenledikten sonra sözdizimini kontrol edin:

sudo rkhunter --config-check

Bu komut, yapılandırma dosyasındaki hataları tespit eder ve olası sorunları bildirir. Yapılandırma hatası varsa, tarama çalışmayabilir veya beklenmedik sonuçlar üretebilir.

Yaygın Uyarılar ve Yanlış Pozitifler

rkhunter çalıştırırken bazı yaygın uyarılarla karşılaşabilirsiniz. Bu uyarıların çoğu meşru sistem yapılandırmalarından kaynaklanır ve gerçek tehditler değildir. egrep veya fgrep'nin bir betik tarafından değiştirildiği uyarısı, birçok Linux dağıtımında normaldir çünkü bu dağıtımlar grep wrapper'ları kullanır. Bu tür uyarıları araştırdıktan sonra --propupd komutuyla baseline'i güncelleyebilirsiniz.

SSH root girişi uyarısı alırsanız, /etc/ssh/sshd_config dosyanızda PermitRootLogin ayarını kontrol edin. Eğer root girişine izin veriyorsanız ve bu bilinçli bir karar ise, /etc/rkhunter.conf dosyasında ALLOW_SSH_ROOT_USER=1 ayarını ekleyerek bu uyarıyı bastırabilirsiniz. Ancak bu yapılandırma değişikliğinin güvenlik politikalarınızla uyumlu olduğundan emin olun.

backdoorports.dat dosyasının eksik veya boş olduğu uyarısı, --update komutunun başarısız olduğunu gösterir. Ağ erişimini düzeltin veya paketi yeniden yükleyin. Ancak bu durumda bile tarama, diğer kontrolleri kullanarak devam eder.

Sorun Giderme İpuçları

rkhunter komutu bulunamıyorsa, paketin doğru şekilde kurulduğundan emin olun. Komutu tam yoluyla çalıştırmayı deneyin: /usr/bin/rkhunter. Tüm --update satırları "Update failed" gösteriyorsa, ağ bağlantınızı, proxy ayarlarınızı ve DNS çözümlemenizi kontrol edin. WEB_CMD parametresinin /etc/rkhunter.conf dosyasında doğru yapılandırıldığından emin olun.

Her dosya özelliği kontrolü uyarı veriyorsa, baseline oluşturulmamış demektir. Temiz bir sistemde --propupd komutunu bir kez çalıştırın. Tarama işlemi girdi bekleyerek takılıyorsa, interaktif moddasınızdır. --skip-keypress veya --cronjob parametrelerini ekleyerek bu sorunu çözebilirsiniz.

Container ortamlarında çok sayıda uyarı alıyorsanız, bu normaldir. Container'lar tam bir işletim sistemi olmadığından, rkhunter'ın beklediği birçok bileşen eksik olabilir. Bu ortamlarda ciddi güvenlik kontrolleri için ana makinede rkhunter çalıştırmanız önerilir.

Bu rehberdeki adımları izleyerek, Linux sunucularınızı rootkitlere karşı düzenli olarak tarayan güvenilir bir koruma mekanizması kurabilirsiniz. Unutmayın ki rkhunter tek başına kapsamlı bir güvenlik çözümü değildir; diğer güvenlik araçları (ClamAV, OSSEC, fail2ban gibi) ile birlikte kullanıldığında en iyi sonucu verir.