Günümüz dijital dünyasında sunucular, iş sürekliliği ve veri güvenliği açısından kritik öneme sahiptir. Özellikle Linux sunucular, esneklikleri ve güçlü yapılarıyla tercih edilse de, doğru güvenlik önlemleri alınmadığında potansiyel risklere açık hale gelebilirler. Bu makale, Linux sunucularınızın güvenliğini artırmak için kullanabileceğiniz temel komutları, en iyi uygulamaları ve ipuçlarını detaylı bir şekilde ele alacaktır. Unutmayın, güvenlik tek seferlik bir işlem değil, sürekli bir süreçtir.
1. Kullanıcı ve Grup Yönetimi
Sunucu güvenliğinin temeli, kullanıcıların ve grupların doğru bir şekilde yönetilmesinden geçer. Her kullanıcının sadece ihtiyacı olan minimum yetkiye sahip olması (Least Privilege Prensibi) kritik öneme sahiptir.
Kullanıcı Ekleme ve Şifre Belirleme:
Yukarıdaki komutlar yeni bir kullanıcı oluşturur ve şifresini belirlemenizi sağlar. Güçlü ve karmaşık şifreler kullanmak esastır. Ayrıca, kullanıcıları belirli gruplara atayarak yetkilerini daha iyi yönetebilirsiniz. Örneğin, bir kullanıcının `sudo` yetkisine sahip olması gerekiyorsa, onu `sudo` grubuna ekleyebilirsiniz.
Kullanıcıları Gruplara Ekleme:
Yetkilendirme için kullanıcıları ilgili gruplara (örneğin `sudo` veya `wheel` grubu) eklemek önemlidir, ancak root yetkisini gereksiz yere vermekten kaçının. Root yetkisinin doğrudan kullanımı yerine, `sudo` ile belirli komutları çalıştırma yetkisi vermek daha güvenli bir yaklaşımdır.
Bu komut, `yeni_kullanici`'yı `sudo` grubuna ekleyerek ona ayrıcalıklı komutları `sudo` ile çalıştırma yetkisi verir. Root kullanıcısı yerine `sudo` kullanan ayrıcalıklı bir kullanıcı ile işlem yapmak, potansiyel hataların veya kötü niyetli saldırıların etkisini sınırlar.
Kullanıcı veya Grup Silme:
Kullanılmayan hesaplar potansiyel güvenlik açıklarıdır. Gereksiz hesapları silmek, sunucunuzun saldırı yüzeyini azaltır.
`-r` seçeneği, kullanıcının ana dizinini ve posta kutusunu da siler.
Dosya ve Dizin Sahipliği ve İzinleri:
Yanlış yapılandırılmış dosya izinleri, güvenlik açıklarının en yaygın nedenlerinden biridir. `chown` ve `chmod` komutları bu konuda size yardımcı olur. Doğru izinlerin verilmesi, yetkisiz erişimi engeller.
* `chown`: Dosya ve dizinlerin sahipliğini değiştirir. Örnekte `/var/www/html` dizininin ve altındaki her şeyin sahipliği `www-data` kullanıcısı ve `www-data` grubuna verilmiştir. Bu, web sunucusu (Apache/Nginx) tarafından erişilmesi gereken dosyalar için yaygın bir uygulamadır.
* `chmod`: Dosya ve dizin erişim izinlerini değiştirir. `755` (rwx r-x r-x) dizinler için yaygın ve güvenli bir izindir, bu da dizin sahibinin okuma, yazma ve çalıştırma, diğer kullanıcıların ise okuma ve çalıştırma iznine sahip olduğu anlamına gelir. `644` (rw- r-- r--) ise dosyalar için tipik bir izindir, sahibinin okuma ve yazma, diğerlerinin sadece okuma iznine sahip olduğunu gösterir. Hassas dosyalar için daha kısıtlı izinler kullanın (örn: `600` veya `400`).
2. SSH Güvenliği
Secure Shell (SSH), sunucunuza güvenli bir şekilde uzaktan erişim sağlamanın anahtarıdır. SSH'ı güvenli hale getirmek, dış saldırılara karşı ilk savunma hattınızdır. Zayıf SSH yapılandırmaları, sunuculara yönelik siber saldırıların en yaygın başlangıç noktalarındandır.
Varsayılan Portu Değiştirme:
Varsayılan SSH portu (22), sıkça taranan bir hedeftir ve botnet'lerin otomatik saldırılarına maruz kalır. Portu değiştirmek, otomatik bot saldırılarının birçoğunu engelleyebilir ve loglarınızdaki gürültüyü azaltır. Ancak, bu tek başına bir güvenlik önlemi değildir, sadece bir gizleme taktiğidir.
Değişikliği yaptıktan sonra SSH servisini yeniden başlatmayı unutmayın: `sudo systemctl restart sshd`. Yeni portu güvenlik duvarınızda da açtığınızdan emin olun.
Şifre Yerine Anahtar Tabanlı Kimlik Doğrulama:
Parola tabanlı kimlik doğrulama yerine SSH anahtar çiftleri kullanmak, çok daha güvenlidir. Bu yöntem, şifre kırma (brute-force) saldırılarını büyük ölçüde engeller, çünkü anahtarların kırılması pratik olarak imkansızdır. Bir SSH anahtar çifti bir genel anahtar ve bir özel anahtardan oluşur.
Bu ayarlar `/etc/ssh/sshd_config` dosyasında yapılmalıdır. Anahtar çifti oluşturma ve kopyalama adımları için resmi belgelere bakabilirsiniz. Özel anahtarınızı asla kimseyle paylaşmayın ve güvenli bir yerde saklayın.
Root Login'i Devre Dışı Bırakma:
Root kullanıcısının doğrudan SSH ile giriş yapmasını engellemek, sunucunuzun güvenliğini önemli ölçüde artırır. Bu, saldırganların doğrudan en yetkili hesabı hedeflemesini zorlaştırır.
Bu ayarı yaptıktan sonra, normal bir kullanıcı ile giriş yapıp `sudo` komutunu kullanarak root yetkisi gerektiren işlemleri gerçekleştirebilirsiniz.
3. Güvenlik Duvarı (Firewall)
Güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini kontrol ederek istenmeyen bağlantıları engeller. Sadece gerçekten ihtiyaç duyulan portların açık olması, saldırı yüzeyinizi önemli ölçüde daraltır. `ufw` (Uncomplicated Firewall) ve `firewalld` Linux'ta en yaygın kullanılan güvenlik duvarı yönetim araçlarıdır.
UFW ile Temel Kurallar:
UFW, özellikle Ubuntu ve Debian tabanlı sistemlerde kolayca kullanılabilen, kullanıcı dostu bir arayüze sahiptir.
Bu komutlar, UFW'yi etkinleştirir, varsayılan olarak tüm gelen bağlantıları reddeder ve sadece SSH (varsayılan port 22), HTTP (80) ve HTTPS (443) bağlantılarına izin verir. SSH portunuzu değiştirdiyseniz (örneğin 2222'ye), `sudo ufw allow 2222/tcp` şeklinde belirtmeniz gerekir. Güvenlik duvarınızı yapılandırırken dikkatli olun, aksi takdirde sunucunuza erişiminizi kaybedebilirsiniz.
Firewalld ile Temel Kurallar (CentOS/RHEL):
Firewalld, özellikle Red Hat tabanlı sistemlerde yaygın olarak kullanılır ve bölgeler (zones) kavramı ile daha esnek bir yapı sunar.
4. Yazılım Güncellemeleri
Güncel yazılımlar, bilinen güvenlik açıklarının kapatılması için hayati öneme sahiptir. Düzenli sistem güncellemeleri, sunucunuzu yeni tehditlere karşı korur ve potansiyel istismarları engeller. Güvenlik yamaları, keşfedilen zayıflıkları kapatmak için sık sık yayınlanır.
Debian/Ubuntu Tabanlı Sistemler:
CentOS/RHEL Tabanlı Sistemler:
Otomatik Güncellemeler:
Bazı kritik güvenlik güncellemelerini otomatik yapmak isteyebilirsiniz. Ubuntu'da `unattended-upgrades` paketi bunun için kullanılabilir. Ancak, otomatik güncellemelerin test ortamında denenmesi ve olası çakışmaların izlenmesi önerilir, çünkü bazı güncellemeler uyumluluk sorunlarına yol açabilir.
5. Sistem Logları ve İzleme
Sistem günlükleri (loglar), sunucunuzda neler olup bittiğini anlamak için değerli bir kaynaktır. Saldırı girişimlerini, anormal aktiviteleri veya sistem hatalarını tespit etmek için logları düzenli olarak incelemek çok önemlidir. Log yönetimi, güvenlik olaylarını hızlıca tespit etmenizi sağlar.
Logları Görüntüleme:
`journalctl` ve `tail` gibi araçlar, logları izlemek için kullanılır.
Auditd ile Kapsamlı İzleme:
`auditd` hizmeti, sistem üzerinde yapılan tüm önemli etkinlikleri (dosya erişimleri, sistem çağrıları, komut yürütmeleri vb.) kaydeder. Kritik dosyaların ve dizinlerin izlenmesi için kullanılabilir ve adli analizde büyük rol oynar.
6. Rootkit ve Malware Tarama
Sunucunuzun gizlice tehlikeye atılmadığından veya kötü amaçlı yazılımlarla enfekte olmadığından emin olmak için düzenli olarak rootkit ve malware taramaları yapmalısınız. Bu araçlar, saldırganların sistemde bıraktığı izleri tespit etmeye yardımcı olur.
Chkrootkit:
Chkrootkit, bilinen rootkit'leri tespit etmek için tasarlanmış basit bir araçtır.
Rkhunter (Rootkit Hunter):
Rkhunter, daha kapsamlı bir rootkit tarayıcısıdır ve aynı zamanda arka kapıları, yerel istismar yazılımlarını ve genel güvenlik açıklarını da kontrol eder.
Bu araçları düzenli olarak çalıştırmak ve sonuçlarını incelemek, sistemin güvenliğini korumak için önemlidir.
7. Ağ Güvenliği ve Açık Port Tespiti
Sunucunuzda hangi portların açık olduğunu ve hangi servislerin dinlediğini bilmek, güvenlik açısından hayati öneme sahiptir. Bilinmeyen açık portlar, potansiyel saldırı yüzeyleri oluşturur.
Açık Portları Görüntüleme:
Bu komutlar, istenmeyen veya bilmediğiniz bir servisin çalışıp çalışmadığını kontrol etmenizi sağlar. Düzenli olarak bu kontrolleri yaparak gereksiz servisleri kapatabilir veya güvenlik duvarı ile erişimlerini kısıtlayabilirsiniz.
Genel Güvenlik İpuçları ve Ek Komutlar:
* Hassas Dosyaların İzinlerini Kısıtlama: Özellikle yapılandırma dosyaları (`/etc/`, `/var/www/`, `/root/` altındaki özel dosyalar) veya SSH anahtarları gibi hassas veriler içeren dosyaların izinleri çok sıkı olmalıdır. Örneğin, SSH özel anahtarları için `chmod 600 ~/.ssh/id_rsa` kullanın. Bu sadece sahibinin okuma ve yazma iznine sahip olmasını sağlar.
* SELinux/AppArmor: Bu araçlar, Linux çekirdeği tarafından sağlanan zorunlu erişim kontrol (MAC) mekanizmalarıdır. Uygulamaların ve süreçlerin erişebileceği kaynakları kısıtlayarak ek bir güvenlik katmanı sağlar. Kullanımı karmaşık olsa da, kritik sunucular için öğrenmeye ve uygulamaya değerdir. Örneğin, bir web sunucusu uygulamasının sadece belirli dizinlere erişmesine izin verebilirsiniz.
* Sürekli Denetim ve Yedekleme: Güvenlik, tek bir yapılandırma ile sağlanamaz; sürekli bir denetim sürecidir. Düzenli yedeklemeler yapmak, bir saldırı veya felaket durumunda verilerinizi kurtarmanın tek yoludur. Yedeklerinizi ayrı bir konumda (off-site) saklayın ve kurtarılabilirliğini düzenli olarak test edin.
* Fiziksel Güvenlik: Sunucunuzun bulunduğu fiziksel ortamın da güvenli olduğundan emin olun. Yetkisiz fiziksel erişim, dijital güvenliği anlamsız hale getirebilir.
* Yazılım Envanteri: Sunucunuzda yüklü olan tüm yazılımların ve servislerin bir envanterini tutun. Kullanılmayan yazılımları kaldırarak saldırı yüzeyini azaltın.
(Debian/Ubuntu) veya
(CentOS/RHEL) gibi komutlarla yüklü paketleri listeleyebilirsiniz.
Bu alıntı, siber güvenliğin sürekli dikkat ve adaptasyon gerektiren dinamik bir alan olduğunu vurgular. Güvenlik, yalnızca tek bir yazılım veya yapılandırma ile sağlanamaz; sürekli izleme, güncelleme ve yeni tehditlere karşı hazırlıklı olmayı gerektirir. Sürekli öğrenme ve sistemlerinizi güncel tutma çabası, en büyük güvenlik yatırımınızdır.
Yukarıdaki görsel (örnektir), Linux sunucu güvenliğinin farklı katmanlarını ve birbiriyle nasıl etkileşimde bulunduğunu genel bir bakışla göstermektedir. Güvenlik, çok katmanlı bir yaklaşımla sağlanır; her katman, bir diğerinin zayıflıklarını kapatmaya yardımcı olur ve bütünsel bir koruma sağlar.
Sonuç:
Linux sunucu güvenliği, yalnızca komutları bilmekle sınırlı değildir; aynı zamanda bir güvenlik zihniyetine sahip olmayı ve proaktif adımlar atmayı gerektirir. Yukarıda belirtilen komutlar ve ipuçları, sunucunuzun temel güvenlik duruşunu önemli ölçüde güçlendirecektir. Ancak, yeni tehditler ortaya çıktıkça güvenlik stratejinizi güncellemeye devam etmeniz hayati önem taşımaktadır. Unutmayın, en zayıf halka, tüm sistemin güvenliğini riske atar. Bu nedenle, kullanıcı eğitiminden fiziksel güvenliğe kadar her detaya dikkat etmek gereklidir. Güvenliğiniz için attığınız her adım, dijital varlıklarınızın korunmasına yardımcı olacaktır. Düzenli denetimler ve bilinçli kullanım, siber saldırılara karşı en güçlü kalkanınızdır.
Bu makale ile Linux sunucu güvenliğine dair temel bilgileri ve kullanılabilecek pratik komutları sunmayı amaçladık. Unutmayın, bilgi ve sürekli öğrenme en büyük güvenlik aracınızdır. Daha derinlemesine bilgi için her zaman resmi dökümanlara ve uzman kaynaklara başvurunuz.
1. Kullanıcı ve Grup Yönetimi
Sunucu güvenliğinin temeli, kullanıcıların ve grupların doğru bir şekilde yönetilmesinden geçer. Her kullanıcının sadece ihtiyacı olan minimum yetkiye sahip olması (Least Privilege Prensibi) kritik öneme sahiptir.
Kullanıcı Ekleme ve Şifre Belirleme:
Kod:
useradd -m yeni_kullanici
passwd yeni_kullanici
Kullanıcıları Gruplara Ekleme:
Yetkilendirme için kullanıcıları ilgili gruplara (örneğin `sudo` veya `wheel` grubu) eklemek önemlidir, ancak root yetkisini gereksiz yere vermekten kaçının. Root yetkisinin doğrudan kullanımı yerine, `sudo` ile belirli komutları çalıştırma yetkisi vermek daha güvenli bir yaklaşımdır.
Kod:
usermod -aG sudo yeni_kullanici
Kullanıcı veya Grup Silme:
Kullanılmayan hesaplar potansiyel güvenlik açıklarıdır. Gereksiz hesapları silmek, sunucunuzun saldırı yüzeyini azaltır.
Kod:
userdel -r eski_kullanici
groupdel eski_grup
Dosya ve Dizin Sahipliği ve İzinleri:
Yanlış yapılandırılmış dosya izinleri, güvenlik açıklarının en yaygın nedenlerinden biridir. `chown` ve `chmod` komutları bu konuda size yardımcı olur. Doğru izinlerin verilmesi, yetkisiz erişimi engeller.
Kod:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chmod 644 /var/www/html/index.html
* `chmod`: Dosya ve dizin erişim izinlerini değiştirir. `755` (rwx r-x r-x) dizinler için yaygın ve güvenli bir izindir, bu da dizin sahibinin okuma, yazma ve çalıştırma, diğer kullanıcıların ise okuma ve çalıştırma iznine sahip olduğu anlamına gelir. `644` (rw- r-- r--) ise dosyalar için tipik bir izindir, sahibinin okuma ve yazma, diğerlerinin sadece okuma iznine sahip olduğunu gösterir. Hassas dosyalar için daha kısıtlı izinler kullanın (örn: `600` veya `400`).
- Minimum yetki prensibini uygulayın. Her kullanıcıya sadece işini yapmak için ihtiyaç duyduğu izinleri verin.
- Root kullanıcısının doğrudan SSH erişimini devre dışı bırakın. Daima ayrıcalıklı bir kullanıcı ile giriş yapıp `sudo` kullanın.
- Kullanılmayan kullanıcı hesaplarını ve grupları düzenli olarak silin veya kilitleyin. Bu, gereksiz saldırı vektörlerini ortadan kaldırır.
- Güçlü parola politikaları uygulayın ve kullanıcıları düzenli parola değiştirmeye teşvik edin.
2. SSH Güvenliği
Secure Shell (SSH), sunucunuza güvenli bir şekilde uzaktan erişim sağlamanın anahtarıdır. SSH'ı güvenli hale getirmek, dış saldırılara karşı ilk savunma hattınızdır. Zayıf SSH yapılandırmaları, sunuculara yönelik siber saldırıların en yaygın başlangıç noktalarındandır.
Varsayılan Portu Değiştirme:
Varsayılan SSH portu (22), sıkça taranan bir hedeftir ve botnet'lerin otomatik saldırılarına maruz kalır. Portu değiştirmek, otomatik bot saldırılarının birçoğunu engelleyebilir ve loglarınızdaki gürültüyü azaltır. Ancak, bu tek başına bir güvenlik önlemi değildir, sadece bir gizleme taktiğidir.
Kod:
sudo nano /etc/ssh/sshd_config
# Port 22
Port 2222
Şifre Yerine Anahtar Tabanlı Kimlik Doğrulama:
Parola tabanlı kimlik doğrulama yerine SSH anahtar çiftleri kullanmak, çok daha güvenlidir. Bu yöntem, şifre kırma (brute-force) saldırılarını büyük ölçüde engeller, çünkü anahtarların kırılması pratik olarak imkansızdır. Bir SSH anahtar çifti bir genel anahtar ve bir özel anahtardan oluşur.
Kod:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Root Login'i Devre Dışı Bırakma:
Root kullanıcısının doğrudan SSH ile giriş yapmasını engellemek, sunucunuzun güvenliğini önemli ölçüde artırır. Bu, saldırganların doğrudan en yetkili hesabı hedeflemesini zorlaştırır.
Kod:
PermitRootLogin no
3. Güvenlik Duvarı (Firewall)
Güvenlik duvarı, sunucunuza gelen ve giden ağ trafiğini kontrol ederek istenmeyen bağlantıları engeller. Sadece gerçekten ihtiyaç duyulan portların açık olması, saldırı yüzeyinizi önemli ölçüde daraltır. `ufw` (Uncomplicated Firewall) ve `firewalld` Linux'ta en yaygın kullanılan güvenlik duvarı yönetim araçlarıdır.
UFW ile Temel Kurallar:
UFW, özellikle Ubuntu ve Debian tabanlı sistemlerde kolayca kullanılabilen, kullanıcı dostu bir arayüze sahiptir.
Kod:
sudo ufw enable
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw status verbose
Firewalld ile Temel Kurallar (CentOS/RHEL):
Firewalld, özellikle Red Hat tabanlı sistemlerde yaygın olarak kullanılır ve bölgeler (zones) kavramı ile daha esnek bir yapı sunar.
Kod:
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
4. Yazılım Güncellemeleri
Güncel yazılımlar, bilinen güvenlik açıklarının kapatılması için hayati öneme sahiptir. Düzenli sistem güncellemeleri, sunucunuzu yeni tehditlere karşı korur ve potansiyel istismarları engeller. Güvenlik yamaları, keşfedilen zayıflıkları kapatmak için sık sık yayınlanır.
Debian/Ubuntu Tabanlı Sistemler:
Kod:
sudo apt update # Paket listelerini günceller
sudo apt upgrade -y # Yüklü paketleri yeni sürümlerine yükseltir
sudo apt dist-upgrade -y # Çekirdek yükseltmeleri gibi büyük sürüm yükseltmeleri için
sudo apt autoremove -y # Kullanılmayan bağımlılıkları ve paketleri temizler
CentOS/RHEL Tabanlı Sistemler:
Kod:
sudo yum update -y # Yüklü paketleri yeni sürümlerine yükseltir
sudo yum autoremove -y # Kullanılmayan bağımlılıkları temizler (Yum yerine DNF tercih edilebilir)
Bazı kritik güvenlik güncellemelerini otomatik yapmak isteyebilirsiniz. Ubuntu'da `unattended-upgrades` paketi bunun için kullanılabilir. Ancak, otomatik güncellemelerin test ortamında denenmesi ve olası çakışmaların izlenmesi önerilir, çünkü bazı güncellemeler uyumluluk sorunlarına yol açabilir.
5. Sistem Logları ve İzleme
Sistem günlükleri (loglar), sunucunuzda neler olup bittiğini anlamak için değerli bir kaynaktır. Saldırı girişimlerini, anormal aktiviteleri veya sistem hatalarını tespit etmek için logları düzenli olarak incelemek çok önemlidir. Log yönetimi, güvenlik olaylarını hızlıca tespit etmenizi sağlar.
Logları Görüntüleme:
`journalctl` ve `tail` gibi araçlar, logları izlemek için kullanılır.
Kod:
journalctl -f # Gerçek zamanlı sistem log takibi
tail -f /var/log/auth.log # Kimlik doğrulama loglarını gerçek zamanlı takip etme (SSH girişleri vb.)
grep 'Failed password' /var/log/auth.log # Başarısız giriş denemelerini bulma
awk '{print $11}' /var/log/auth.log | sort | uniq -c | sort -nr # En çok başarısız giriş denemesi yapan IP'leri bulma
Auditd ile Kapsamlı İzleme:
`auditd` hizmeti, sistem üzerinde yapılan tüm önemli etkinlikleri (dosya erişimleri, sistem çağrıları, komut yürütmeleri vb.) kaydeder. Kritik dosyaların ve dizinlerin izlenmesi için kullanılabilir ve adli analizde büyük rol oynar.
Kod:
sudo apt install auditd # Kurulum (Debian/Ubuntu)
sudo yum install audit # Kurulum (CentOS/RHEL)
sudo auditctl -w /etc/passwd -p wa -k passwd_changes # passwd dosyasındaki yazma erişimlerini izle
sudo service auditd restart # Kuralı etkinleştirmek için servisi yeniden başlatın
- Fail2ban gibi araçlarla otomatik IP engelleme yapın. Bu, tekrarlayan başarısız giriş denemelerini algılar ve kaynak IP'yi geçici veya kalıcı olarak engeller.
- Merkezi log yönetimi (ELK Stack, Splunk, Graylog) düşünün. Birden fazla sunucunun loglarını tek bir yerden izlemek, büyük altyapılar için vazgeçilmezdir.
- Kritik log dosyalarının bütünlüğünü kontrol edin ve yetkisiz değişikliklere karşı koruyun.
- Logları yeterli süre boyunca saklayın ve düzenli olarak yedekleyin.
6. Rootkit ve Malware Tarama
Sunucunuzun gizlice tehlikeye atılmadığından veya kötü amaçlı yazılımlarla enfekte olmadığından emin olmak için düzenli olarak rootkit ve malware taramaları yapmalısınız. Bu araçlar, saldırganların sistemde bıraktığı izleri tespit etmeye yardımcı olur.
Chkrootkit:
Chkrootkit, bilinen rootkit'leri tespit etmek için tasarlanmış basit bir araçtır.
Kod:
sudo apt install chkrootkit # Kurulum
sudo chkrootkit # Tarama
Rkhunter (Rootkit Hunter):
Rkhunter, daha kapsamlı bir rootkit tarayıcısıdır ve aynı zamanda arka kapıları, yerel istismar yazılımlarını ve genel güvenlik açıklarını da kontrol eder.
Kod:
sudo apt install rkhunter # Kurulum
sudo rkhunter --update # Veritabanını güncelle
sudo rkhunter --check # Tarama
7. Ağ Güvenliği ve Açık Port Tespiti
Sunucunuzda hangi portların açık olduğunu ve hangi servislerin dinlediğini bilmek, güvenlik açısından hayati öneme sahiptir. Bilinmeyen açık portlar, potansiyel saldırı yüzeyleri oluşturur.
Açık Portları Görüntüleme:
Kod:
sudo netstat -tulnp # Tüm TCP/UDP dinleme portlarını ve ilgili programları gösterir
sudo lsof -i -P -n | grep LISTEN # Daha detaylı bilgi verir, hangi sürecin hangi portu dinlediğini gösterir
Genel Güvenlik İpuçları ve Ek Komutlar:
* Hassas Dosyaların İzinlerini Kısıtlama: Özellikle yapılandırma dosyaları (`/etc/`, `/var/www/`, `/root/` altındaki özel dosyalar) veya SSH anahtarları gibi hassas veriler içeren dosyaların izinleri çok sıkı olmalıdır. Örneğin, SSH özel anahtarları için `chmod 600 ~/.ssh/id_rsa` kullanın. Bu sadece sahibinin okuma ve yazma iznine sahip olmasını sağlar.
* SELinux/AppArmor: Bu araçlar, Linux çekirdeği tarafından sağlanan zorunlu erişim kontrol (MAC) mekanizmalarıdır. Uygulamaların ve süreçlerin erişebileceği kaynakları kısıtlayarak ek bir güvenlik katmanı sağlar. Kullanımı karmaşık olsa da, kritik sunucular için öğrenmeye ve uygulamaya değerdir. Örneğin, bir web sunucusu uygulamasının sadece belirli dizinlere erişmesine izin verebilirsiniz.
* Sürekli Denetim ve Yedekleme: Güvenlik, tek bir yapılandırma ile sağlanamaz; sürekli bir denetim sürecidir. Düzenli yedeklemeler yapmak, bir saldırı veya felaket durumunda verilerinizi kurtarmanın tek yoludur. Yedeklerinizi ayrı bir konumda (off-site) saklayın ve kurtarılabilirliğini düzenli olarak test edin.
* Fiziksel Güvenlik: Sunucunuzun bulunduğu fiziksel ortamın da güvenli olduğundan emin olun. Yetkisiz fiziksel erişim, dijital güvenliği anlamsız hale getirebilir.
* Yazılım Envanteri: Sunucunuzda yüklü olan tüm yazılımların ve servislerin bir envanterini tutun. Kullanılmayan yazılımları kaldırarak saldırı yüzeyini azaltın.
Kod:
dpkg -l
Kod:
yum list installed
Güvenlik Uzmanı' Alıntı:# Güvenlik bir ürün değil, bir süreçtir. #
Bu alıntı, siber güvenliğin sürekli dikkat ve adaptasyon gerektiren dinamik bir alan olduğunu vurgular. Güvenlik, yalnızca tek bir yazılım veya yapılandırma ile sağlanamaz; sürekli izleme, güncelleme ve yeni tehditlere karşı hazırlıklı olmayı gerektirir. Sürekli öğrenme ve sistemlerinizi güncel tutma çabası, en büyük güvenlik yatırımınızdır.

Yukarıdaki görsel (örnektir), Linux sunucu güvenliğinin farklı katmanlarını ve birbiriyle nasıl etkileşimde bulunduğunu genel bir bakışla göstermektedir. Güvenlik, çok katmanlı bir yaklaşımla sağlanır; her katman, bir diğerinin zayıflıklarını kapatmaya yardımcı olur ve bütünsel bir koruma sağlar.
Sonuç:
Linux sunucu güvenliği, yalnızca komutları bilmekle sınırlı değildir; aynı zamanda bir güvenlik zihniyetine sahip olmayı ve proaktif adımlar atmayı gerektirir. Yukarıda belirtilen komutlar ve ipuçları, sunucunuzun temel güvenlik duruşunu önemli ölçüde güçlendirecektir. Ancak, yeni tehditler ortaya çıktıkça güvenlik stratejinizi güncellemeye devam etmeniz hayati önem taşımaktadır. Unutmayın, en zayıf halka, tüm sistemin güvenliğini riske atar. Bu nedenle, kullanıcı eğitiminden fiziksel güvenliğe kadar her detaya dikkat etmek gereklidir. Güvenliğiniz için attığınız her adım, dijital varlıklarınızın korunmasına yardımcı olacaktır. Düzenli denetimler ve bilinçli kullanım, siber saldırılara karşı en güçlü kalkanınızdır.
- Kullanıcı ve parola yönetimi için güçlü politikalar uygulayın ve zorunlu karmaşık parolalar kullanın.
- SSH erişimini sadece anahtar tabanlı kimlik doğrulama ile kısıtlayın ve varsayılan portu değiştirin.
- Güvenlik duvarını etkinleştirerek sadece gerekli portlara ve IP adreslerine izin verin.
- Yazılımları ve işletim sistemini düzenli olarak güncelleyin ve otomatik güncelleme mekanizmalarını değerlendirin.
- Logları düzenli olarak izleyin ve anormallikleri tespit etmek için log analiz araçları kullanın.
- Rootkit ve malware taramalarını otomatikleştirmeyi ve düzenli olarak gerçekleştirmeyi düşünün.
- Kullanılmayan servisleri ve paketleri kaldırın. Minimal bir işletim sistemi kurulumu tercih edin.
- Düzenli yedeklemeler yapın ve yedeklerin kurtarılabilirliğini periyodik olarak test edin. Felaket kurtarma planı hazırlayın.
- DDoS saldırılarına karşı önlemler alın ve ağ trafiğinizi izleyin.
Bu makale ile Linux sunucu güvenliğine dair temel bilgileri ve kullanılabilecek pratik komutları sunmayı amaçladık. Unutmayın, bilgi ve sürekli öğrenme en büyük güvenlik aracınızdır. Daha derinlemesine bilgi için her zaman resmi dökümanlara ve uzman kaynaklara başvurunuz.