Linux ­Kurulu­m ve Y­onetim­i
  • Döküman Hakkında
  • Linux ve GNU'nun Geçmişi
    • CentOS, Debian ve FreeBSD Ana Sürümlerin Farkları
  • Temel Komutlar
    • Temel Terminal Komutları
    • Yardım Dosyaları
    • Dosya İzinleri, Yetkiler, Kullanıcılar ve Gruplar
    • Dosya Düzenleme Araçları
      • nano ve pico
      • vi
    • Sıkıştırılmış Dosyalar
  • Standart Girdi ve Çıktı
    • Standart Çıktı
    • Standart Girdi
    • UNIX Pipeline
    • Olmazsa Olmaz: stdio.h
    • Standart Hata ve File Descriptor
    • Forkbomb
    • Named Pipe
  • Gelişmiş Terminal Komutları
    • Tarih ve Saat Ayarlama
    • Sistem Yükünü İzleme
    • patch ve diff
    • xargs
    • awk ve sed
    • egrep ve Regular Expressions
    • rename
    • Imagemagick ve Görüntü Dosyaları
    • wget
    • Python ile Dosya Sunuculuğu
  • Temel Dağıtımlar
    • RHEL Tabanlı (CentOS, Rocky, Alma)
      • rpm Paketleri
      • DNF Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • Debian
      • deb Paketleri
      • apt Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • FreeBSD
      • Ports ve pkg Yönetimi
      • Güncelleme Teknikleri
      • Network Ayarları
    • Arch Linux
      • pacman ve AUR
      • Network Ayarları
    • Ortak Network Dosyaları
  • SSH
    • Uzak Sunucuya Bağlanma
    • sshd Sunucu Ayarları
    • Private ve Public Anahtarlar
    • Güvenli Dosya Aktarımı
    • sshfs
  • Kernel Boot
    • Sunucu Başlangıcına Genel Bakış
    • Çekirdeğin Yüklenmesi ve Boot Seçenekleri
    • Çekirdek Parametreleri
    • Bootloader Nedir?
  • User Space
    • Başlangıç: Init
    • Init Versiyonunu Belirlemek
    • System V
      • Servislerin Yönetimi
      • Çalışma Seviyeleri (Run Levels)
      • Örnek System V Servis Oluşturma
    • systemd
      • Servislerin Yönetimi
      • Birimler ve Birim Tipleri
      • Örnek systemd Servis Oluşturma
    • Acil Durumlar ve Tek Kullanıcı Modu
  • BASH Programlama
    • Döngüler ve Diğer Kontrol Yöntemleri
    • Menüler
  • Log Dosyaları
    • Log İnceleme ve Filtreleme
  • İnternet Servisleri
    • Bir sayfanın İnternetteki Serüveni
    • Nameserver Servisleri
    • Apache
    • PHP-FPM
    • FTP/FTPS/SFTP
      • vsftpd
      • ProFTPD
      • SFTP
      • Komut Satırından ftp Kullanımı
  • Zamanlanmış Görevler
    • crontab
    • at
  • Veritabanı
    • MySQL
      • MySQL Kurulumu
      • MySQL Servisini Çalıştırmak
      • Veritabanı ve Tablo oluşturmak
      • SQL Tablosuna Veri Eklemek
      • Temel SQL Sorgularına Giriş
        • Birinci bölüm
      • mysqldump ile yedekleme
      • Replikasyon teknikleri
      • Yedekleri içeri alma
    • PostgreSQL
      • PostgreSQL Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • MongoDB
      • MongoDB Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • Redis
      • Redis Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
  • Temel Network Yapılandırması
  • Gelişmiş Network Komutları
    • ip
    • ifconfig
    • route
    • ping
    • traceroute
    • dig
    • nslookup
    • netcat
    • nmap
    • tcpdump
    • Wireshark (Giriş)
    • Bantgenişliği Ölçümü
  • Güvenlik
    • Firewalld
    • IPTables
      • Temel İzinler
      • IP ve Port Engelleme
    • selinux
  • Disk Sistemleri
    • ext
    • zfs
    • lvm
  • RAID
    • RAID Biçimleri
    • Verinin Disklere Yayılması
    • Cache
    • Terimler ve Tavsiyeler
  • Örnek Kurulumlar ve Modern Yaklaşımlar
    • CentOS 7 Tam Sistem Kurulumu (Arşiv)
    • AlmaLinux ile Hosting Ortamı Kurulumu
    • Ubuntu ile Hosting Ortamı Kurulumu
    • Modern Hosting Yaklaşımları (PaaS, Coolify vb.)
  • Konteynerleştirme (Docker / Podman)
  • Yapılandırma Yönetimi (Ansible)
  • İzleme ve Uyarı (Prometheus / Grafana)
  • Nginx Web Sunucusu
  • Kubernetes (Giriş)
  • PCI-DSS ve Linux Sistemleri
  • İndeks
  • Kaynaklar
Powered by GitBook
On this page

Güvenlik

PreviousBantgenişliği ÖlçümüNextFirewalld

Last updated 1 month ago

Linux sistemlerinin güvenliği, modern bilişim altyapılarının temel taşlarından biridir. Ancak güvenlik, tek seferlik bir işlem değil, sürekli dikkat ve güncelleme gerektiren bir süreçtir. Güvenlik açıkları çeşitli nedenlerle ortaya çıkabilir:

  • Teknolojik Değişimler: Yazılımlarda ve protokollerde zamanla keşfedilen yeni zafiyetler (örn. kütüphanelerdeki açıklar, işlemci açıkları).

  • Yapılandırma Hataları: Servislerin veya sistemin yanlış veya eksik yapılandırılması (örn. gereksiz açık portlar, zayıf şifreler, yanlış izinler).

  • Kullanıcı Hataları: Güvenli olmayan yazılımların kullanılması, kimlik bilgilerinin zayıf olması veya paylaşılması, sosyal mühendislik saldırıları.

Bu bölümde, Linux sistemlerinin güvenliğini artırmak için alınabilecek temel önlemler ve dikkat edilmesi gereken noktalar ele alınacaktır. Bu öneriler %100 güvenlik garantisi vermese de, yaygın saldırıların ve hataların büyük bir kısmını engellemeye yardımcı olabilir.

Genel Güvenlik Önerileri

1. Ağ Güvenliği ve Güvenlik Duvarı (Firewall)

  • Firewall Kullanımı: Sunucu üzerinde mutlaka bir güvenlik duvarı (firewall) etkinleştirilmelidir. Modern dağıtımlar genellikle firewalld (RHEL tabanlı) veya ufw (Uncomplicated Firewall - Debian/Ubuntu tabanlı) gibi daha kullanıcı dostu araçlar sunar. Bunlar arka planda iptables veya nftables gibi çekirdek mekanizmalarını yönetir.

    • Prensip: Varsayılan olarak tüm gelen bağlantıları engelle (DROP veya REJECT) ve sadece gerekli olan servislere (örn. SSH - 22, HTTP - 80, HTTPS - 443) belirli kaynaklardan izin ver (ACCEPT).

    • İçeriden dışarıya giden trafiği de kısıtlamak (egress filtering) güvenliği artırabilir.

    • (Daha düşük seviyeli, güçlü ama karmaşık)

  • Donanımsal Firewall/Ağ Segmentasyonu: Mümkünse, sunucuları donanımsal bir güvenlik duvarının arkasına yerleştirin. Farklı işlevlere sahip sunucuları (örn. web, veritabanı, yönetim) ayrı ağ segmentlerine (VLAN'lar) ayırın ve aralarındaki trafiği firewall ile kontrol edin. NAT kullanımı da dışarıdan doğrudan erişimi kısıtlayarak ek bir katman sağlayabilir.

  • Gereksiz Servisleri Kapatma/Kaldırma: Sistemde çalışmasına gerek olmayan servisleri durdurun ve başlangıçtan kaldırın (systemctl disable <servis>) veya tamamen kaldırın (dnf remove, apt remove). Hangi portların dinlendiğini ss -tulnp veya netstat -tulnp komutlarıyla kontrol edin.

  • Yerel Servisleri Kısıtlama: Sadece sunucunun kendisinden erişilmesi gereken servisleri (örn. veritabanı, bazı yönetim arayüzleri) sadece localhost'a (127.0.0.1, ::1) bağlanacak şekilde yapılandırın.

2. Sistem Sertleştirme (Hardening)

  • Güçlü Şifre Politikaları: Tüm kullanıcılar için güçlü ve benzersiz şifreler kullanılmasını zorunlu kılın (PAM modülleri ile ayarlanabilir). Şifrelerin düzenli aralıklarla değiştirilmesini sağlayın.

  • SSH Güvenliği:

    • Şifre ile girişi devre dışı bırakıp sadece anahtar tabanlı kimlik doğrulamayı kullanın (PasswordAuthentication no in sshd_config).

    • Doğrudan root girişini engelleyin (PermitRootLogin no).

    • Standart olmayan bir port kullanın (Port <port_no>).

    • Gerekmiyorsa protokol 1'i devre dışı bırakın (Protocol 2).

    • Belirli kullanıcılara veya gruplara erişimi kısıtlayın (AllowUsers, AllowGroups).

    • Başarısız giriş denemelerini sınırlayın (MaxAuthTries).

    • fail2ban gibi araçlarla brute-force saldırılarını otomatik olarak engelleyin.

  • /tmp Güvenliği: /tmp dizinini (ve /var/tmp, /dev/shm gibi diğer geçici alanları) ayrı bir bölümde tutmak ve noexec, nosuid, nodev seçenekleriyle bağlamak (mount etmek), bu dizinlere yüklenen betiklerin çalıştırılmasını ve yetki yükseltme saldırılarını zorlaştırır. /etc/fstab dosyasında ilgili satırı düzenleyin:

    # Örnek /etc/fstab satırı
    UUID=...    /tmp    ext4    defaults,rw,nosuid,nodev,noexec    0    2 

    Değişikliği uygulamak için sudo mount -o remount /tmp komutunu çalıştırın veya sistemi yeniden başlatın.

  • SELinux / AppArmor: Mümkünse, dağıtımınızın sunduğu Zorunlu Erişim Kontrolü (MAC - Mandatory Access Control) sistemini (SELinux veya AppArmor) etkinleştirin ve yapılandırın. Bu sistemler, standart dosya izinlerinin ötesinde, süreçlerin hangi kaynaklara erişebileceğini kısıtlayarak potansiyel zararı sınırlar.

  • Gereksiz Yazılımları Kaldırma: Kullanılmayan derleyicileri, kütüphaneleri ve araçları sistemden kaldırın.

3. Güncellemeler ve Yama Yönetimi

  • Düzenli Güncelleme: İşletim sistemini ve kurulu tüm paketleri düzenli olarak güncelleyin. Güvenlik yamaları kritik öneme sahiptir.

  • Otomatik Güncellemeler: Güvenlik güncellemelerinin otomatik olarak uygulanmasını sağlayan araçları (örn. dnf-automatic (RHEL/CentOS), unattended-upgrades (Debian/Ubuntu)) yapılandırın. Dikkat: Otomatik güncellemeler nadiren de olsa uyumluluk sorunlarına yol açabilir, bu nedenle kritik sistemlerde dikkatli olunmalıdır.

  • Kararlı Sürümler: Mümkünse, dağıtımınızın uzun süreli destek (LTS) veya kararlı sürümlerini kullanın. Alpha, beta veya geliştirme sürümlerinden kaçının. Abonelik tabanlı dağıtımlar (RHEL, CloudLinux) genellikle daha hızlı güvenlik yamaları sunabilir.

4. İzleme ve Denetim

  • Merkezi Log Yönetimi: Birden fazla sunucunuz varsa, logları merkezi bir sistemde toplamak (örn. rsyslog/syslog-ng ile uzak sunucuya gönderme, ELK Stack, Graylog) ve analiz etmek önemlidir.

  • NTP Senkronizasyonu: Tüm sunucuların saatlerinin NTP ile senkronize olduğundan emin olun. Bu, logların ilişkilendirilmesi ve olayların doğru zaman sırasına konulması için kritiktir.

  • Dosya Bütünlüğü İzleme: aide veya tripwire gibi araçlarla önemli sistem dosyalarının değiştirilip değiştirilmediğini düzenli olarak kontrol edin.

  • Sızma Testleri: Periyodik olarak iç ve dış sızma testleri yaparak veya yaptırarak sistemlerinizdeki potansiyel açıkları tespit edin. Kali Linux gibi dağıtımlar bu amaçla birçok araç içerir.

  • Güvenlik Taramaları: nmap ile ağ taramaları, OpenVAS veya Nessus gibi araçlarla zafiyet taramaları yapın.

5. Uygulama Güvenliği

  • Web Uygulamaları: SQL Injection, Cross-Site Scripting (XSS), CSRF gibi yaygın web zafiyetlerine karşı önlem alın. Güvenli kodlama pratiklerini uygulayın. Web Application Firewall (WAF) kullanmayı değerlendirin.

  • Veritabanı Güvenliği: Güçlü şifreler kullanın, gereksiz kullanıcıları kaldırın, ağ erişimini kısıtlayın, düzenli yedek alın.

  • Konfigürasyon Yönetimi: Uygulamaların (Apache, Nginx, PHP, MySQL vb.) yapılandırma dosyalarını gözden geçirin, gereksiz modülleri/fonksiyonları devre dışı bırakın, güvenlik ayarlarını sıkılaştırın.

Güvenlik sürekli bir çaba gerektirir. Yeni tehditler ve zafiyetler ortaya çıktıkça sistemlerinizi güncel tutmak ve yapılandırmalarınızı gözden geçirmek önemlidir.

Firewalld ile Güvenlik Duvarı Yönetimi
IPTables
SELinux