Yaklaşık 3 dakikalık okuma
Bir Linux sunucuyu internete açtığınız anda, üzerinde çalışan her servis dünyanın her yerinden erişilebilir hale gelir. Veritabanı, yönetim paneli ya da test için açtığınız bir port, siz farkında olmadan saldırı yüzeyinin parçası olur. Bu rehberde Ubuntu ve Debian’da UFW (Uncomplicated Firewall) ile basit ama etkili bir güvenlik duvarı kurmayı anlatıyorum.
UFW Nedir?
Linux çekirdeğindeki paket filtreleme altyapısı (netfilter) güçlüdür ama doğrudan iptables ya da nftables kurallarıyla yönetmek karmaşıktır. UFW bu altyapının önüne konmuş, okunması ve yazılması kolay bir arayüzdür. Ubuntu’da varsayılan olarak yüklü gelir, ancak etkin değildir.
Temel mantık şudur: gelen tüm bağlantıları varsayılan olarak reddet, yalnızca ihtiyaç duyulan portlara izin ver.
1. Adım: Kurulum ve Durum Kontrolü
Debian’da UFW yüklü gelmeyebilir:
sudo apt update
sudo apt install ufw
Mevcut durumu görmek için:
sudo ufw status verbose
Çıktıda Status: inactive görüyorsanız güvenlik duvarı henüz devrede değildir.
2. Adım: Varsayılan Politikalar
sudo ufw default deny incoming
sudo ufw default allow outgoing
Bu iki satır; dışarıdan gelen tüm bağlantıları engeller, sunucunun dışarıya (güncellemeler, DNS, API çağrıları) çıkmasına ise izin verir.
3. Adım: SSH’a İzin Vermek (En Önemli Adım)
Uyarı: UFW’yi etkinleştirmeden önce SSH’a izin vermezseniz uzak sunucuyla bağlantınız kesilir ve tekrar giremezsiniz.
sudo ufw allow OpenSSH
SSH’ı farklı bir portta çalıştırıyorsanız (örneğin 2222) port numarasını yazın:
sudo ufw allow 2222/tcp
Brute-force denemelerini yavaşlatmak için allow yerine limit kullanabilirsiniz. Bu kural, aynı IP’den 30 saniye içinde 6 veya daha fazla bağlantı denemesi gelirse o IP’yi geçici olarak engeller:
sudo ufw limit OpenSSH
SSH tarafında parola girişini kapatmadıysanız önce SSH Anahtar ile Şifresiz Giriş rehberini uygulamanızı öneririm.
4. Adım: Web Sunucusu ve Diğer Servisler
Nginx kurulu bir sunucuda HTTP ve HTTPS’e izin vermek için:
sudo ufw allow 'Nginx Full'
Uygulama profillerini listelemek için sudo ufw app list komutunu kullanabilirsiniz. Profil yoksa port numarasıyla da izin verebilirsiniz:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Nginx hakkında daha fazla bilgi için Nginx Nedir? Ne İşe Yarar? yazısına bakabilirsiniz.
5. Adım: Sadece Belirli IP’lere İzin Vermek
Veritabanı veya yönetim paneli gibi servisleri tüm internete açmak yerine yalnızca ofis IP’nize ya da iç ağa açın:
sudo ufw allow from 203.0.113.25 to any port 3306 proto tcp
sudo ufw allow from 192.168.10.0/24 to any port 5432 proto tcp
İlk satır MySQL/MariaDB portunu tek bir IP’ye, ikinci satır PostgreSQL portunu bir yerel ağ bloğuna açar.
6. Adım: UFW’yi Etkinleştirme
sudo ufw enable
Komut, mevcut SSH bağlantılarının kesilebileceğine dair bir uyarı gösterir; SSH kuralını eklediyseniz y ile onaylayabilirsiniz. Ardından kuralları numaralarıyla listeleyin:
sudo ufw status numbered
Kural Silme ve Düzenleme
Bir kuralı numarasıyla silmek için:
sudo ufw delete 3
Ya da kuralın kendisini yazarak:
sudo ufw delete allow 80/tcp
Her şeyi sıfırlayıp baştan başlamak isterseniz sudo ufw reset komutu tüm kuralları siler ve UFW’yi kapatır.
Loglama
Engellenen bağlantıları görmek için loglamayı açabilirsiniz:
sudo ufw logging on
sudo tail -f /var/log/ufw.log
Docker Kullanıyorsanız Dikkat
Docker, container portlarını yayınlarken (-p 8080:80) kendi iptables kurallarını UFW’den önce ekler. Bu nedenle UFW’de 8080 portunu kapatmış olsanız bile container dışarıdan erişilebilir olabilir. Bir container’ı yalnızca sunucunun kendisine açmak için portu localhost’a bağlayın:
docker run -p 127.0.0.1:8080:80 nginx
Ardından dış erişimi Nginx gibi bir reverse proxy üzerinden sağlayın.
Hızlı Başvuru Tablosu
| İşlem | Komut |
|---|---|
| Durumu göster | sudo ufw status verbose |
| SSH’a izin ver | sudo ufw allow OpenSSH |
| Port aç | sudo ufw allow 443/tcp |
| IP’ye özel izin | sudo ufw allow from IP to any port 22 |
| IP engelle | sudo ufw deny from IP |
| Kural sil | sudo ufw delete NUMARA |
| Kapat | sudo ufw disable |
Sonuç
İyi yapılandırılmış bir sunucuda dışarıya açık port sayısı genellikle iki üçü geçmez: SSH ve web. UFW ile bu yapıyı birkaç komutla kurabilir, gereksiz açık kalan servislerin risk oluşturmasını önleyebilirsiniz.



