UFW'yi etkinleştirmeden önce yalnızca “hangi portlar açık olmalı?” sorusunu değil, “şu anda hangi süreçler nerede dinliyor?” sorusunu cevaplamak gerekir. Aksi halde gerekli bir yönetim portunu kapatabilir veya gereksiz bir servisi firewall kuralıyla görünmez hâle getirip çalışır bırakabilirsiniz.
Dinleyen TCP ve UDP soketlerini çıkarın
sudo ss -lntup
Çıktıda yerel adres, port ve süreç bilgisine birlikte bakın:
Netid State Local Address:Port Process
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=812,fd=3))
tcp LISTEN 127.0.0.1:5432 users:(("postgres",pid=944,fd=7))
tcp LISTEN 0.0.0.0:8080 users:(("java",pid=1102,fd=45))
127.0.0.1:5432 yalnızca yerel bağlantı kabul eder. 0.0.0.0:8080 ise IPv4 arayüzlerinin tamamında dinler. IPv6 için [::] kaydını ayrıca kontrol edin; yalnızca IPv4 çıktısına bakmak eksik envanter üretir.
Her portu sürece ve servise bağlayın
ps -fp 1102
sudo systemctl status 1102 --no-pager
sudo readlink -f /proc/1102/exe
sudo tr '\0' ' ' < /proc/1102/cmdline
PID bir systemd servisine aitse systemctl status PID genellikle ilgili birimi gösterir. Bir portu tanımıyorsanız doğrudan firewall ile saklamak yerine uygulamanın neden başladığını, otomatik başlayıp başlamadığını ve gerçekten gerekli olup olmadığını belirleyin.
Mevcut UFW durumunu ve profilleri inceleyin
sudo ufw status verbose
sudo ufw status numbered
sudo ufw app list
sudo ufw app info OpenSSH
Uygulama profilleri /etc/ufw/applications.d/ altında tanımlanır. SSH portu değiştirildiyse OpenSSH profilinin otomatik olarak yeni portu bildiğini varsaymayın. ufw app info çıktısını gerçek ss çıktısıyla karşılaştırın.
İzin listesini dışarıdan erişim ihtiyacına göre kurun
Örnek bir web sunucusunda dışarıdan SSH, HTTP ve HTTPS gerekiyorsa:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp comment 'SSH management'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
SSH yalnızca yönetim ağından erişilecekse kuralı kaynak IP ile daraltın:
sudo ufw allow proto tcp from 192.0.2.0/24 to any port 22
Örnek ağları kendi yönetim ağınızla değiştirin. Dinleyen veritabanı yalnızca uygulama sunucusundan erişilecekse herkese açık kural eklemeyin; kaynak IP'yi ve hedef portu birlikte sınırlandırın.
Kuralı uygulamadan önce dry-run çıktısına bakın
sudo ufw --dry-run allow 443/tcp
sudo ufw status numbered
--dry-run tek kuralın üreteceği değişikliği gösterir; tüm erişim senaryosunun çalışacağını kanıtlamaz. Firewall etkinleştirmesini mevcut SSH oturumunu açık tutarak ve ikinci bağlantı penceresi hazırlayarak yapın:
sudo ufw enable
sudo ufw status verbose
sudo ss -lntup
Başka bir makineden gerçek erişimi sınayın
nc -vz 203.0.113.10 22
curl -I --connect-timeout 5 https://example.com/
Yerel sunucudan yapılan bağlantı testi host firewall'ın dışarıdan gelen trafiğe davranışını göstermeyebilir. Testi beklenen istemci ağından yapın. Bulut güvenlik grubu, sağlayıcı firewall'ı veya yönlendirici ACL'si varsa UFW yalnızca katmanlardan biridir.
Port envanterini kural envanteriyle karşılaştırın
Son kontrolde her dışa açık dinleme soketinin bir sahibi ve gerekçesi, her allow kuralının da çalışan bir servis karşılığı olmalıdır. Kullanılmayan bir servisi önce güvenli biçimde durdurmak ve otomatik başlangıcını kapatmak, yalnızca firewall ile engellemekten daha temiz bir çözümdür.
Teknik başvuru: Ubuntu Server UFW ve firewall belgesi.
Benzer Yazılar