# Ubuntu ve Debian'da UFW ile güvenlik duvarı kurun

> Linux sunucunuzu UFW ile koruyun: varsayılan reddetme, önce SSH, port ve aralık açma, kaynak IP'ye göre izin, SSH hız sınırı ve IPv6 desteği.

Zorluk: Başlangıç\
Denendiği sistemler: Ubuntu 24.04 LTS, Ubuntu 26.04 LTS, Debian 12, Debian 13

UFW (Uncomplicated Firewall), sık kullanılan kuralları tek satırlık komutlara dönüştüren bir Linux güvenlik duvarı arayüzüdür. Bu rehber Ubuntu 24.04/26.04 veya Debian 12/13 üzerinde varsayılan olarak reddeden bir güvenlik duvarı kurar ve daha sonra ihtiyaç duyacağınız kuralları anlatır. `198.51.100.7` yerine kendi IP adresinizi yazın.

## Başlamadan önce

- sudo kullanıcısıyla SSH üzerinden giriş yapın ve hizmet sayfanızda görünüyorsa web konsolunu hazır tutun.
- Çalıştırdığınız servisleri ve portlarını listeleyin: `sudo ss -tulpn`.

## 1. adım: UFW'yi kurun

UFW Ubuntu'da önceden kuruludur. Debian'da:

```bash
sudo apt install ufw
```

## 2. adım: Varsayılanları ayarlayın ve önce SSH'ye izin verin

```bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
```

`OpenSSH`, 22 numaralı port için bir uygulama profilidir. SSH başka bir portta çalışıyorsa onun yerine o porta izin verin; örneğin `sudo ufw allow 2222/tcp`.

> **Uyarı**
>
> UFW'yi etkinleştirmeden önce her zaman SSH'ye izin verin. SSH kuralı olmadan varsayılan olarak reddeden bir güvenlik duvarını etkinleştirmek bağlantınızı keser.

## 3. adım: Servislerinize izin verin

```bash
sudo ufw allow 80,443/tcp
```

Daha fazla örnek:

| Amaç | Komut |
|---|---|
| Tek bir port | `sudo ufw allow 8080/tcp` |
| Bir port aralığı | `sudo ufw allow 30000:30100/udp` |
| Yalnızca tek bir adresten | `sudo ufw allow from 198.51.100.7 to any port 5432 proto tcp` |
| Bütün bir ağdan | `sudo ufw allow from 198.51.100.0/24 to any port 3306 proto tcp` |
| Uygulama profiliyle | `sudo ufw allow "Nginx Full"` (bkz. `sudo ufw app list`) |
| Açıkça reddetme | `sudo ufw deny from 203.0.113.50` |

Veritabanlarını ve yönetim panellerini internete kapalı tutun ya da yalnızca kendi adreslerinize açın.

## 4. adım: Etkinleştirin ve kontrol edin

```bash
sudo ufw enable
sudo ufw status verbose
```

**Doğrulama:** durum çıktısı `Status: active`, `Default: deny (incoming), allow (outgoing)` ve her biri IPv4 ve `(v6)` için kurallarınızı gösterir. Hâlâ girebildiğinizi doğrulamak için yeni bir SSH oturumu açın.

## 5. adım: SSH'yi hız sınırlamasına alın

Düz SSH kuralını, 30 saniye içinde altı veya daha fazla bağlantı açan bir adresi reddeden sınırlı bir kuralla değiştirin:

```bash
sudo ufw limit OpenSSH
sudo ufw delete allow OpenSSH
```

## Kuralları yönetmek

Kuralları numaralarıyla listeleyin ve numarayla silin:

```bash
sudo ufw status numbered
sudo ufw delete 3
```

Bir kuralı belirli bir konuma ekleyin (kurallar sırayla değerlendirilir):

```bash
sudo ufw insert 1 deny from 203.0.113.50
```

Bir komutun ne yapacağını uygulamadan `--dry-run` ile önizleyin; örneğin `sudo ufw --dry-run enable`.

## Kayıt tutma

```bash
sudo ufw logging low
```

Engellenen paketler `[UFW BLOCK]` önekiyle kaydedilir; bunları `sudo journalctl -k | grep UFW` ile ya da rsyslog kuruluysa `/var/log/ufw.log` dosyasında okuyun.

## IPv6

`/etc/default/ufw` dosyasının `IPV6=yes` içerdiğini kontrol edin. Değiştirirseniz `sudo ufw reload` ile yeniden yükleyin. Kurallar o zaman iki protokolü de kapsar.

## Docker ve UFW

Docker container portlarını UFW'yi atlayan kendi kurallarıyla yayınlar. `-p 8080:80` ile başlatılan bir container, UFW 8080'e izin vermese bile internetten erişilebilir. Portları yalnızca `127.0.0.1` üzerinde yayınlayın (örneğin `-p 127.0.0.1:8080:80`) ve ana makinedeki bir ters proxy üzerinden sunun. Bkz. [Ubuntu'ya Docker kurulumu](/guides/install-docker-ubuntu).

## Sorun giderme

**`ufw enable` sonrasında SSH dondu.** SSH'ye izin verilmemişti. Konsolu kullanın: `sudo ufw allow OpenSSH`. Bkz. [güvenlik duvarı değişikliğinden sonra erişimi kaybetmek](/guides/locked-out-after-firewall-change).

**Bir port UFW'de açık ama hâlâ erişilemiyor.** Servis yalnızca `127.0.0.1` üzerinde dinliyor ya da çalışmıyor. `sudo ss -tulpn` ile kontrol edin. Bkz. [portlar ve port yönlendirme](/guides/ports-and-port-forwarding).

**UFW giden trafiğe izin verdiği halde 25 numaralı porttan posta gönderilemiyor.** HyperDC VPS'lerde giden 25 numaralı port varsayılan olarak kapalıdır. 3 ay veya daha uzun süreyle satın alınan hizmetlerde bir destek bildirimi açtığınızda talep üzerine açılır. O zamana kadar postayı 587 portu üzerinden bir aktarıcıyla (relay) gönderin.

**Baştan başlamak.** `sudo ufw reset`, UFW'yi kapatır ve tüm kuralları siler (eskilerini yedekler). Etkinleştirmeden önce SSH kuralınızı yeniden ekleyin.

## Sonraki adımlar

- Daha fazla kontrol: [nftables güvenlik duvarı](/guides/nftables-firewall).
- Tekrarlanan denemeleri engelleyin: [Fail2ban ve CrowdSec](/guides/fail2ban-crowdsec).

## Sık sorulan sorular

### UFW varsayılan olarak kurulu mu?

Ubuntu'da evet, ama siz etkinleştirene kadar kapalıdır. Debian'da sudo apt install ufw ile kurun.

### UFW IPv6'yı korur mu?

Evet; varsayılan olduğu gibi /etc/default/ufw içinde IPV6=yes ayarlıyken. Eklediğiniz her kural o zaman IPv4 ve IPv6'ya uygulanır.

### Docker container'larım UFW'ye rağmen neden erişilebilir?

Docker container portlarını, UFW'ninkilerden önce değerlendirilen kendi güvenlik duvarı kurallarıyla yayınlar. Portları yalnızca 127.0.0.1 üzerinde yayınlayıp önüne bir ters proxy koyun ya da Docker'ın güvenlik duvarı entegrasyonunu belgelerindeki gibi yapılandırın.

### ufw limit ne yapar?

Bir porta izin verir, ama 30 saniye içinde altı veya daha fazla bağlantı açan bir adresi reddeder. SSH için uygundur ve şifre tahminini yavaşlatır.

### UFW ve nftables kurallarını aynı anda kullanabilir miyim?

UFW kurallarını sistemin netfilter altyapısı üzerinden kendisi yazar. Yanında ayrı nftables veya firewalld kuralları tutmayın; tek bir araç seçin.

---

Kaynak: <https://hyperdc.com/tr/guides/networking/ufw-firewall>\
Son güncelleme: 2026-10-09
