Bir güvenlik duvarı bir sistemi güvence altına almanın temel bileşenlerinden biridir. Ağ üzerindeki gelen ve giden bağlantıları yönetmekten sorumludur. Sunucularınız ve verileriniz için birincil savunma hattıdır. Bu nedenle, iyi yapılandırılmış bir güvenlik duvarına sahip olmak son derece önemlidir. Bu kılavuzda, Ubuntu 18.04 üzerinde UFW ile bir güvenlik duvarı kurma adımlarında size yol göstereceğiz.
Ubuntu üzerinde UFW
Terim UFW “Uncomplicated Firewall” (Kolaylaştırılmış Güvenlik Duvarı) anlamına gelir. Ubuntu ile önceden yüklenmiş olarak gelen varsayılan bir güvenlik duvarı programıdır. UFW aslında iptables için bir arayüzdür. UFW'nin amacı, bir güvenlik duvarını yapılandırmayı ve yönetmeyi kolaylaştırmaktır. iptables tek başına sağlam ve esnek bir seçenek olsa da, yeni başlayanlar için pek uygun değildir. UFW, hem yeni başlayanlar hem de deneyimli kullanıcılar için işi kolaylaştırır.
İlk olarak, temel UFW işlevlerine aşina olmanıza yardımcı olacak kapsamlı kılavuzumuza göz atın. Ayrıca Ubuntu sunucunuzu kurmak için bu kılavuzu da takip edebilirsiniz. Şimdi başlayalım!
Başlamak gerekirse, herhangi bir nedenle UFW'niz kurulu değilse, hemen kurun:
|
1 |
$ sudo apt install ufw |
UFW Yapılandırması
-
IPv6 Kullanımı
Şu an itibariyle IPv4 hala baskın güçtür. Bunu akılda tutarak, bu kılavuzun büyük bir kısmı IPv4'ü de içermektedir. Neyse ki UFW, IPv6 desteğiyle de birlikte gelir. Tek yapmanız gereken bu özelliği UFW yapılandırma dosyasından etkinleştirmektir.
İlk olarak, UFW yapılandırma dosyasını bir metin düzenleyicide açın. Değişiklikleri kaydetmek için metin düzenleyicinin sudo yetkisiyle çalıştırılması gerekir:
|
1 |
$ sudo vim /etc/default/ufw |
“IPV6” ifadesini arayın ve “yes” olarak ayarlandığından emin olun.
-
Varsayılan politika
Güvenlik duvarıyla ilk kez uğraşıyorsanız, önce varsayılan politikaları tanımlamanız önerilir. Bu kurallar, herhangi bir açık kuralla eşleşmeyen trafiğin nasıl kontrol edileceğini belirler. Varsayılan olarak UFW, gelen tüm bağlantıları reddedecek ancak giden tüm bağlantılara izin verecek şekilde yapılandırılmıştır. Sunucuda çalışan bir uygulama dışarıya erişebilirken, hiç kimsenin sunucuya erişemeyeceğini tanımlar.
Aşağıdaki komutlar sadece UFW'nin varsayılan davranışını yeniden tanımlayacaktır. Daha önce değiştirilmişse UFW davranışını değiştireceğini unutmayın:
|
1 2 |
$ sudo ufw default deny incoming $ sudo ufw default allow outgoing |
Kişisel bir bilgisayar için yalnızca bu güvenlik duvarı kuralları yeterli olacaktır. Ancak sunucular, güvenliklerini düzgün bir şekilde sıkılaştırmak için daha fazlasını gerektirir.
SSH Bağlantılarına İzin Verme
UFW şu anda yapılandırıldığı şekliyle gelen tüm bağlantıları reddedecektir. Uzak bir sunucu için bu kabul edilemez bir durumdur. Sunucuya erişim olmadan hiçbir şey yapılamaz. Bu sorunu önlemek için UFW, gelen SSH veya HTTP bağlantılarına izin verecek şekilde yapılandırılabilir.
Sunucuya SSH bağlantılarına izin vermek için aşağıdaki komutu çalıştırın. Bu komut temel olarak UFW'ye şu porttaki tüm bağlantılara izin vermesini söyleyecektir: 22. Bu, SSH arka plan programının varsayılan olarak dinlediği porttur:
|
1 |
$ sudo ufw allow ssh |
Bu komut yerine, doğrudan şu porta bağlantı izni verilmesini yapılandırmak da mümkündür: 22. Bu port şu dosya altında tanımlanmıştır: /etc/services dosyası:
|
1 |
$ sudo ufw allow 22 |
Port 22 SSH arka plan programı için varsayılan olduğundan, saldırılara karşı da savunmasız olabilir. Peki ya SSH sunucusu farklı bir portu dinleyecek şekilde yapılandırılmışsa? Böyle bir durumda, UFW'nin o porta bağlantıya izin vermesi gerekir. SSH sunucusunun şu portu dinlediğini varsayarsak: 1234, o zaman aşağıdaki komutu kullanın:
|
1 |
$ sudo ufw allow 1234 |
UFW'yi Etkinleştirme
UFW kuralları oluşturulmuş olsa da, UFW etkinleştirilmediği sürece hiçbir şey yapmazlar. Varsayılan olarak UFW devre dışıdır, yani kuralları bildirmenize rağmen bunları uygulamaz. UFW'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
|
1 |
$ sudo ufw enable |
UFW, mevcut SSH bağlantılarının kesilmesiyle ilgili bir uyarı mesajı gösterebilir. SSH bağlantılarına izin verilecek şekilde yapılandırıldığından, UFW'yi etkinleştirmek herhangi bir kesintiye neden olmaz. Hangi kuralların ayarlandığını görmek için aşağıdaki komutu çalıştırın:
|
1 |
$ sudo ufw status verbose |
Çeşitli Bağlantılara İzin Verme
Bu noktada, kararlı bir deneyim elde etmek için UFW'nin diğer kurallarla donatılması gerekir. İzin verilecek bağlantılar özel ihtiyaçlarınıza bağlıdır. UFW'ye bir hizmetin adına veya port numarasına göre bağlantılara nasıl izin verileceğini söyleyeceğimiz zaten gösterilmiştir.
Açık olması çok yaygın olan diğer bazı portlar şunlardır:
- SSH (
port 22): Bu, SSH bağlantıları için yapılandırılmış varsayılan porttur. - HTTP (
port 80): Bu, şifrelenmemiş web sunucularının kullandığı varsayılan porttur. - HTTPS (
port 443): Bu, şifrelenmiş web sunucularının kullandığı varsayılan porttur.
To enable SSH connections, run either of the following commands:
|
1 2 |
$ sudo ufw allow ssh $ sudo ufw allow 22 |
Ardından, HTTP bağlantılarını etkinleştirmek için aşağıdaki komutlardan birini çalıştırın:
|
1 2 |
$ sudo ufw allow http $ sudo ufw allow 80 |
HTTPS bağlantılarını etkinleştirmek için aşağıdaki komutlardan birini çalıştırın:
|
1 2 |
$ sudo ufw allow https $ sudo ufw allow 443 |
Port Aralığı
Şimdiye kadar belirli bir porta nasıl izin verileceğini gösterdik. Peki ya bir port aralığına ihtiyaç duyulursa? Her portu UFW'ye bildirmek oldukça verimsizdir. Bazı uygulamalar birden fazla port kullanır. Neyse ki UFW, bir port aralığı bildirmeye izin verir. Bunu yapmak için aşağıdaki komut yapısını kullanın:
|
1 |
$ sudo ufw allow <start>:<end>/<protocol> |
Aşağıdaki örnek, şu portları kullanan X11 bağlantılarını etkinleştirir: 6000 ila 6007:
|
1 2 |
$ sudo ufw allow 6000:6007/tcp $ sudo ufw allow 6000:6007/udp |
Mümkün olduğunda protokollerin belirtilmesi önerilir. Ancak çoğu durumda bu gerekli değildir ve her şey sorunsuz çalışacaktır.
Belirli IP Adresleri
UFW kullanırken, bağlantıları belirli IP adreslerine göre filtrelemek de mümkündür. Varsayılan olarak UFW, herhangi bir IP adresinden gelen bağlantıları engeller. Belirli IP adreslerinden gelen bağlantılara izin verileceğini bildirmek mümkündür. Bir IP adresinden gelen bağlantıya izin vermek için aşağıdaki komut yapısını kullanın:
|
1 |
$ sudo ufw allow from <ip_address> |
IP adresinin bağlanmasına izin verilen belirli portları da bildirebilirsiniz. Bunu yapmak için komuta to any port ve ardından port numarasını ekleyin:
|
1 |
$ sudo ufw allow from <ip_address> to any port <port> |
Alt Ağlar
Bir IP adresi alt ağına izin vermeniz gerekiyorsa, bunu CIDR gösterimini kullanarak yapabilirsiniz. Bu örnekte UFW, şu aralıktaki IP adreslerinden gelen bağlantılara izin verecektir: 203.0.113.1 ila 203.0.113.254:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 |
Önceki adıma benzer şekilde, bu IP adreslerinin bağlanabileceği portu belirtmek de mümkündür:
|
1 |
$ sudo ufw allow from 203.0.113.0/24 to any port <port> |
Belirli Bir Ağ Arayüzüne Bağlanma
Bir sunucu ortamında, sisteme bağlı birden fazla ağ arayüzü olabilir. UFW kullanarak, belirli bir kuralın yalnızca belirli bir ağ arayüzü için geçerli olduğunu tanımlamak mümkündür. İlk olarak, sunucuya bağlı tüm ağ arayüzlerini kontrol edin. Hedef ağ arayüzünün adı birincil odaktır:
|
1 |
$ ip addr |
Bizim durumumuzda, genel internete bağlanan yalnızca bir ağ arayüzü olan ens3 bulunmaktadır. Bu ağ arayüzünden gelen bağlantılara izin vermek için aşağıdaki komut yapısını kullanın:
|
1 |
$ sudo ufw allow in on <network_interface> |
Ağ arayüzünden gelen trafiğin ulaşabileceği portu tanımlamak da mümkündür:
|
1 |
$ sudo ufw allow in on <network_interface> to any port <port> |
Bağlantıyı Engelleme
Varsayılan yapılandırmaya göre UFW, herhangi bir kaynaktan gelen bağlantıyı reddedecektir (bildirilen istisnalar hariç). Bu, UFW'yi kullanmanın önerilen yoludur. Ancak, belirli bir kaynak IP adresinden veya alt ağdan gelen belirli bağlantıların engellenmesi gerekebilir. Belki de UFW'nin varsayılan davranışı tüm bağlantılara izin verecek şekilde ayarlanmıştır (önerilmez).
Belirli IP adreslerinden gelen bir bağlantıyı reddetmek için UFW, reddetme (deny) kuralları gerektirir. Reddetme kuralları yazmak oldukça basittir. Herhangi bir izin verme (allow) kuralını alın, “allow” terimini “deny” ile değiştirin ve işte! Bir reddetme kuralı haline geldi.
Aşağıdaki örneğe bir göz atın. Herhangi bir HTTP bağlantısını reddetmek için aşağıdaki reddetme kuralını kullanın:
|
1 2 |
$ sudo ufw deny http $ sudo ufw deny 80 |
Şu adresten gelen bağlantıyı reddetmek için: 203.0.113.1, aşağıdaki reddetme kuralını kullanın:
|
1 |
$ sudo ufw deny from 203.0.113.1 |
Kuralları Silme
Şimdiye kadar öğrendiğimiz tek şey kuralların nasıl oluşturulacağıdır. Kurallar oluşturulabildiği gibi silinebilir de. UFW durumunda, bir kuralı silmenin iki özel yolu vardır.
-
Kural numarasına göre kural silme
Bu, bir UFW kuralını silmenin en basit yoludur. UFW'deki her kuralın bir kural numarası vardır. Aşağıdaki komut, tüm UFW kurallarını kural numarasıyla birlikte yazdıracaktır:
|
1 |
$ sudo ufw status numbered |
Aşağıdaki komut, kural numarası ile belirtilen kuralı silecektir:
|
1 |
$ sudo ufw delete <rule_number> |
-
Gerçek kurala göre kural silme
Bu, bir kuralı silmenin daha zor olan yöntemidir. Silmek için gerçek kuralın manuel olarak belirtilmesini gerektirir. Aşağıdaki örnekte UFW, şu kural tarafından belirtilen kuralı silecektir: allow http:
|
1 |
$ sudo ufw delete allow http |
Kural ayrıca şu şekilde de belirtilebilirdi: allow 80. Bu durumda, aşağıdaki komut onu silecektir:
|
1 |
$ sudo ufw delete allow 80 |
Bir kuralın silinmesi, onu hem IPv4 hem de IPv6 için silecektir.
UFW Durumunu ve Kurallarını Kontrol Etme
UFW'nin aktif olup olmadığından emin olmak önemlidir. UFW'nin durumunu belirlemek için aşağıdaki komutu çalıştırın:
|
1 |
$ sudo ufw status verbose |
Eğer durum “inactive” (etkin değil) ise, yukarıdaki UFW'yi Etkinleştirme adımını takip ederek etkinleştirin. Eğer aktifse, UFW “active” (etkin) durumunu bildirecek ve tüm aktif kuralları listeleyecektir.
UFW'yi Devre Dışı Bırakma
Herhangi bir nedenle UFW'yi kullanmayacaksanız, aşağıdaki komutu kullanarak devre dışı bırakın:
|
1 |
$ sudo ufw disable |
UFW devre dışı bırakılırsa, oluşturulan tüm kurallar artık aktif olmaz. Ancak kurallar silinmez. UFW yeniden etkinleştirildiğinde, tüm kurallar tekrar aktif hale gelecektir. Peki ya mevcut UFW yapılandırması tam bir karmaşaysa? Kuralları tek tek silmek yerine, tek bir komutla hepsini silmek mümkündür. UFW'yi sıfırlamak için aşağıdaki komutu çalıştırın:
|
1 |
$ sudo ufw reset |
Bunun, başlangıçta yapılandırılan varsayılan UFW davranışını değiştirmeyeceğini unutmayın.
Sonuç
Güvenliği ve işlevselliği sağlamak için düzgün bir güvenlik duvarı yapılandırması gereklidir. Gereksiz bağlantıları sınırlarken yalnızca gerekli gelen bağlantılara izin verecek şekilde yapılandırılmalıdır.
Daha fazla güvenlik duvarı çözümü hakkında bilgi edinmek istiyorsanız, daha fazla kaynak için blogumuza göz atın:
- CentOS 7 üzerinde FirewallD ile Güvenlik Duvarı Kurulumu
- Iptables Güvenlik Duvarı Kurallarını Listeleme ve Silme
- Sunucularınızı Korumak İçin Güçlü Güvenlik Önlemleri Nasıl Oluşturulur
Keyifli çalışmalar!











Yorumlar
Henüz yorum yapılmamış. İlk siz olun.