Bu döküman, bir sistemde ağ bağlantılarını tespit etme, SSL güvenliğini kontrol etme ve SSL kullanımıyla ilgili durumları analiz etme süreçlerini detaylı bir şekilde anlatmaktadır. Her bir adımın amacı ve kullanılan komutlar açıklanmıştır.
Bir sistemde hangi ağ bağlantılarının mevcut olduğunu tespit etmek için ip link show
komutu kullanılır. Bu komut, ağ arayüzlerinin durumunu ve yapılandırmalarını gösterir.
ip link show
lo
: Loopback arayüzü olarak bilinir. Sistem içindeki (iç ağdaki) haberleşmeler için kullanılır.enx
veyaeth
: Harici ağ arayüzleri. Genellikle internete veya dış ağlara erişimi ifade eder. Örneğin:enx...
: Ethernet adaptörleri.wlan...
: Kablosuz ağ adaptörleri.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enx5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
lo
: Sistem içi haberleşmeler (örneğin,127.0.0.1
loopback adresi).enx5
: Harici ağa bağlanan adaptör (örneğin, bir Ethernet portu).
Bu adımda, hangi arayüzlerin sistemin iç ve dış iletişimlerini sağladığını belirliyoruz.
Sistemdeki SSL bağlantılarını analiz etmek ve şifrelenmiş verilerin akışını gözlemlemek için tcpdump
aracı kullanılır.
- Node.js sunucusunun Apache üzerinden SSL kullanarak güvenli şekilde çalışıp çalışmadığını kontrol etmek.
- SSL kullanımı olmadan yapılan bağlantılardaki güvenlik açıklarını tespit etmek.
Apache, gelen HTTPS (443 portu) bağlantılarını Node.js sunucusuna iletmek için bir proxy olarak çalışıyorsa bu yapı kontrol edilebilir.
sudo tcpdump -i enx5 port 443 -A
-i enx5
: Harici ağ arayüzünde (örneğin,enx5
) veri akışını dinler.port 443
: SSL trafiğini hedef alır (HTTPS için standart port).-A
: Paketleri ASCII formatında görüntüler, böylece içerik okunabilir.
- Apache, HTTPS bağlantısını Node.js sunucusuna iletir.
- Apache dışarıya SSL sertifikası kullanarak 443 portundan cevap verir.
- Node.js sunucusu, Apache'den gelen veriyi genellikle şifresiz (HTTP) olarak alır (port 5000 gibi).
Node.js ve Apache arasında SSL kullanılmıyorsa, iç ağda HTTP trafiği analiz edilerek güvenlik durumu kontrol edilir.
sudo tcpdump -i lo port 5000 -A
-i lo
: Loopback arayüzünü (iç ağ) dinler. Apache ve Node.js arasındaki veri aktarımı bu arayüzden geçebilir.port 5000
: Node.js sunucusunun dinlediği portu hedef alır.-A
: Paket içeriklerini ASCII formatında gösterir.
Bu şekilde dinleme yapıldığında, Apache ve Node.js arasında SSL kullanılmadığı için:
- Veri düz metin (plain text) olarak gözükebilir.
- SSL paketlerinin eksikliği, sistemin güvenli olmadığını gösterir.
Eğer Apache gibi bir proxy sunucusu kullanılmıyorsa ve Node.js sunucusu doğrudan bir port (örneğin, 8000) üzerinden çalışıyorsa, bağlantılar tamamen açık şekilde yapılabilir.
sudo tcpdump -i enx5 port 8000 -A
-i enx5
: Harici ağ adaptörünü dinler (örneğin, internete çıkan port).port 8000
: Node.js sunucusunun dinlediği portu hedef alır.-A
: ASCII formatında paket içeriklerini gösterir.
Bu senaryoda:
- Sayfa içerikleri, headers (başlıklar) ve data (veri) düz metin olarak görülebilir.
- Şifrelenmemiş bağlantılar ciddi güvenlik açıklarına neden olur.
- Apache, Let’s Encrypt gibi bir sertifika otoritesi ile SSL sertifikası almalı.
- Tüm dış bağlantılar 443 portundan, SSL ile şifrelenmiş şekilde yapılmalı.
- Node.js sunucusunu da SSL destekleyecek şekilde yapılandırın.
- Alternatif olarak, Apache ve Node.js arasındaki trafiği iç ağdaki başka bir proxy ile şifreleyin.
- Apache'de HTTP trafiğini tamamen devre dışı bırakmak yerine HTTPS'ye yönlendirme ekleyin:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
tcpdump
gibi araçlarla düzenli kontrol yaparak sistemde SSL kullanımıyla ilgili eksiklikleri belirleyin.- Node.js uygulamasında şifreli bağlantılar için yalnızca
https.createServer
kullanmayı düşünün.