Skip to content
Bloga dön
Teknoloji Linux Sunucu Güvenliği Sysctl Kernel Sistem Yönetimi

Linux Sunucu Güvenliğinde Kernel Sıkılaştırma: Sysctl ile Çekirdek Parametrelerini Optimize Etmek

Caner Serbest’in kaleminden, Linux sunucu güvenliğini bir üst seviyeye taşımak isteyen sistem yöneticileri için sysctl ile kernel sıkılaştırma rehberi.

Caner Serbest

Sistem ve Altyapı

5 dk okuma

Linux Sunucu Güvenliğinde Kernel Sıkılaştırma: Sysctl ile Çekirdek Parametrelerini Optimize Etmek

Bir Linux sunucusunu internete açtığınız anda, arka planda çalışan servislerin güvenliği kadar, o servislerin üzerinde koştatığı işletim sistemi çekirdeğinin (kernel) güvenliği de kritik bir önem kazanır. Genellikle sistem yöneticileri ilk kurulumda paket güncellemelerini yapar, UFW veya iptables ile güvenlik duvarı kurallarını tanımlar ve SSH erişimini sıkılaştırarak işin bittiğini düşünür. Ancak varsayılan Linux çekirdek ayarları, genel amaçlı kullanım senaryolarına göre tasarlandığı için güvenlik açısından bazı zafiyetlere açık olabilir.

Bu yazıda, sysctl komutunu ve /etc/sysctl.conf dosyasını kullanarak Linux çekirdeğini nasıl sıkılaştırabileceğinizi, ağ tabanlı saldırılara karşı sunucunuzu nasıl dirençli hale getireceğinizi ve yapılan bu değişikliklerin sistem performansını nasıl etkilemeden güvenliği artıracağını adım adım inceleyeceğiz.

Sysctl Nedir ve Çekirdek Güvenliğindeki Yeri Nedir?

sysctl, çalışan bir Linux çekirdeğinin parametrelerini dinamik olarak değiştirmek ve görüntülemek için kullanılan bir arayüzdür. Çekirdek parametreleri /proc/sys/ sanal dosya sistemi altında bulunur. Bu dosya sistemindeki değerleri anlık olarak değiştirerek ağ yığınını, bellek yönetimini, süreç denetimini ve güvenlik mekanizmalarını şekillendirebiliriz.

Çekirdek sıkılaştırması (kernel hardening), yetkisiz kullanıcıların veya dışarıdan gelen kötü niyetli kişilerin sistem kaynaklarını kötüye kullanmasını, ağ trafiğini manipüle etmesini (örneğin IP spoofing veya SYN flood saldırıları) ve bilgi sızdırmasını engellemek için yapılan yapılandırmalar bütünüdür.

Mevcut Durumu İncelemek

Sisteminizdeki tüm sysctl parametrelerini görmek için terminalde şu komutu çalıştırabilirsiniz:

sysctl -a

Bu komut binlerce satır çıktı üretecektir. Bu nedenle güvenlikle ilgili belirli bir parametreyi aramak için grep komutunu kullanmak daha mantıklıdır. Örneğin, IP yönlendirme (packet forwarding) durumunu kontrol etmek için:

sysctl net.ipv4.ip_forward

Temel ve Etkili Sysctl Güvenlik Parametreleri

Şimdi, üretim ortamındaki (production) Linux sunucularımızda güvenliği artırmak için /etc/sysctl.conf dosyasına veya /etc/sysctl.d/ dizini altında özel bir配置文件 dosyasına eklememiz gereken kritik parametrelere yakından bakalım.

1. IP Spoofing ve Kaynak Yönlendirme Korumaları

IP spoofing, saldırganın sahte kaynak IP adresleri kullanarak ağ üzerinden sisteminize paket göndermesi durumudur. Bu tür saldırıları engellemek için Reverse Path Filtering (ters yol filtrelemesi) özelliğini aktif hale getirmeliyiz.

# Tüm arabirimler için Reverse Path Filtering aktif edilir
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

Bu parametre, çekirdeğin gelen bir paketin kaynak IP adresinin, paketin geldiği arayüz üzerinden erişilebilir olup olmadığını kontrol etmesini sağlar. Eğer paket mantıksız bir yoldan geliyorsa otomatik olarak düşürülür.

Ayrıca, kaynak yönlendirme (source routing) paketleri, bir paketin izleyeceği rotayı gönderenin belirlemesine izin verir. Bu durum güvenlik riski oluşturduğu için devre dışı bırakılmalıdır:

# Kaynak yönlendirmeyi devre dışı bırak
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

2. SYN Flood Saldırılarına Karşı SYN Cookies

SYN flood, klasik bir DoS (Hizmet Reddi) saldırısı türüdür. Saldırgan sürekli sahte SYN paketleri göndererek sunucunun bağlantı kuyruğunu doldurur ve meşru kullanıcıların sisteme erişmesini engeller. syncookies mekanizması, sunucu SYN kuyruğu dolduğunda bile bağlantılara yanıt vermeye devam etmesini sağlar.

# SYN flood koruması için SYN cookies aktif edilir
net.ipv4.tcp_syncookies = 1

Ek olarak, SYN paketlerinin yeniden gönderilme sayılarını ve zaman aşımı sürelerini optimize etmek de saldırı anında sunucunun yükünü hafifletir:

# SYN-ACK tekrar deneme sayısını azalt
net.ipv4.tcp_synack_retries = 2

3. ICMP Yönlendirmeleri ve Çarpıcı Yanıtlar

ICMP yönlendirme mesajları, yönlendiricilerin ana makinelere daha iyi bir rota bildirmesi için kullanılır. Ancak kötü niyetli bir kişi bu mesajları kullanarak sunucunuzun trafik yönlendirmesini manipüle edebilir.

# ICMP yönlendirme paketlerini kabul etme
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# Yönlendirici değilsek ICMP yönlendirmesi gönderme
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

Bir diğer önemli ICMP ayarı ise loglama mekanizmalarıyla ilgilidir. Ağınızdaki broadcast (yayın) adreslerine gönderilen ICMP Echo isteklerine yanıt verilmesi, smurf saldırılarına zemin hazırlayabilir:

# Broadcast ping isteklerine yanıt verme
net.ipv4.icmp_echo_ignore_broadcasts = 1

4. TCP Bağlantı Ayarları ve Loglama

Ağ üzerinden gelen hatalı veya şüpheli TCP paketlerinin loglanması, olası bir sızma girişimini erken fark etmenizi sağlar.

# Şüpheli (martian) paketleri logla
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

TIME_WAIT durumundaki socket bağlantılarının yeniden kullanılabilmesi ve bellek sızıntılarının önlenmesi için şu parametreler faydalıdır:

# TIME_WAIT socket'lerinin yeniden kullanımına izin ver
net.ipv4.tcp_tw_reuse = 1

Yapılandırmanın Uygulanması ve Kalıcı Hale Getirilmesi

Yukarıdaki parametreleri tek bir dosyada toplayarak sistem yönetimi disiplinine uygun bir şekilde uygulayabiliriz. Doğrudan /etc/sysctl.conf dosyasını düzenlemek yerine, /etc/sysctl.d/ dizini altında özel bir dosya oluşturmak her zaman daha temiz bir yaklaşımdır.

  1. Metin düzenleyiciniz ile yeni bir dosya oluşturun:
sudo nano /etc/sysctl.d/99-security-hardening.conf
  1. İlgili güvenlik parametrelerini dosyaya ekleyin:
# Kernel Sıkılaştırma Ayarları - Caner Serbest

# IP Spoofing Koruması
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Kaynak Yönlendirme İptali
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# SYN Flood Koruması
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2

# ICMP Yönlendirme Korumaları
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Martian Paket Loglama
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
  1. Dosyayı kaydedip çıktıktan sonra, ayarların sisteme anında uygulanması için şu komutu çalıştırın:
sudo sysctl --system

Bu komut, /etc/sysctl.d/ ve /etc/sysctl.conf dosyalarındaki tüm yapılandırmaları okuyacak ve çekirdeğe anında işleyecektir. Yapılandırma sonrasında herhangi bir hata alıp almadığınızı terminal çıktısından kontrol edebilirsiniz.

Olası Riskler ve Test Süreci

Kernel parametrelerini değiştirmek güçlü bir güvenlik katmanı sağlasa da, bazı özel ağ mimarilerinde (örneğin karmaşık yönlendirme gerektiren VPN sunucuları veya özel iç ağ geçitleri) beklenmeyen sonuçlar doğurabilir. Özellikle rp_filter veya accept_source_route ayarları, çoklu ağ arabirimine (multi-homed) sahip sunucularda meşru trafiğin kesilmesine neden olabilir.

Bu nedenle, bu tür kritik değişiklikleri doğrudan canlı ortama uygulamadan önce varsa bir test ortamında (staging) denemek veya değişiklik sonrasında kritik servislerin (web, veritabanı, SSH) erişilebilirliğini dikkatle izlemek gerekir. Herhangi bir terslik durumunda sistem yeniden başlatıldığında (reboot) sysctl ayarları varsayılan değerlerine dönebilir, ancak kalıcı hale getirdiğiniz dosyalarda hata varsa sistem açılışında sorun yaşayabilirsiniz. Bu yüzden sözdizimi (syntax) kontrolünü dikkatli yapmak şarttır.

Sonuç

Linux sunucu güvenliği tek bir katmandan ibaret değildir. Uygulama güvenliği, servis yapılandırmaları, güvenlik duvarı kuralları ve işletim sistemi çekirdeği sıkılaştırması birbirini tamamlayan bir zincir oluşturur. sysctl ile yaptığınız bu temel optimizasyonlar, sunucunuzu dışarıdan gelebilecek yaygın ağ saldırılarına karşı görünmez bir zırhla donatacaktır. Sistem yöneticisi olarak göreviniz, varsayılan ayarlarla yetinmeyip, çalıştığınız ortamın risk analizini yaparak en güvenli ve kararlı profili oluşturmaktır.


Bu yazı Gemini ile otomatik oluşturulmuştur.