Debian, Ubuntu, Linux Mint’te UFW Güvenlik Duvarı Nasıl Kullanılır ?
Merhabalar,
Bu eğitim, bazı gerçek dünyadan örneklerle Debian / Ubuntu / Linux Mint üzerinde UFW’yi (Komplike Olmayan Güvenlik Duvarı) nasıl kullanacağınızı gösterecektir. Güvenlik duvarını yönetmek, her sistem yöneticisinin bilmesi gereken temel bir beceridir. Bu makale okuyucunun UFW ile başlamasını amaçlamaktadır, ancak UFW’nin giriş ve çıkışlarını açıklamayacaktır.
UFW, bir Netfilter güvenlik duvarının yönetilmesini kolaylaştırmak için iptables için bir ön uçtur, dolayısıyla “Komplike Olmayan Güvenlik Duvarı” adı verilir. OpenBSD’nin Paket Filtresine benzer sözdizimine sahip bir komut satırı arayüzü sağlar. Özellikle ana bilgisayar tabanlı bir güvenlik duvarı olarak çok uygundur. UFW, Debian tabanlı Linux Distros’ta önerilen iptables ön ucudur ve genellikle bu dağıtımlara önceden yüklenmiştir. Varsayılan olarak, UFW hem IPv4 hem de IPv6 adresi için güvenlik duvarı kuralları belirler. Bir başka iyi bilinen iptables ön ucu, RPM tabanlı Linux dağıtımlarında (RHEL, CentOS, Fedora, OpenSUSE, vb.) Varsayılan güvenlik duvarı uygulaması olan güvenlik duvarıdır.
Diğer Iptables Restore Servisini Devre Dışı Bırakma:
Muhtemelen bildiğiniz gibi, iptables güvenlik duvarı kuralları, işletim sistemi kapandığında ve iptables programının kendisi güvenlik duvarı kurallarını geri yüklemediğinde temizlenir. Varsayılan olarak UFW, sistem yeniden başlatıldıktan sonra güvenlik duvarı kurallarını geri yükler. UFW’yi kullanmadan önce, sisteminizde başka bir iptables geri yükleme hizmeti olup olmadığını kontrol etmeniz önemlidir. İki geri yükleme hizmeti varsa, bunlar birbiriyle çakışır ve bu da genellikle sistem yeniden başlatıldıktan sonra web uygulamalarının kullanılamamasına neden olur.
Doğrudan iptables güvenlik duvarını kullanıyorsanız ve şimdi UFW’ye geçmek istiyorsanız, iptables geri yükleme hizmetinizi devre dışı bırakmanız yeterlidir. Iptables-persistent, Debian / Ubuntu’da iyi bilinen bir iptables geri yükleme hizmetidir. Aşağıdaki komutla çalışıp çalışmadığını kontrol edebilirsiniz.
systemctl status iptables-persistent
Çalışıyorsa, durdurabilir ve devre dışı bırakabilirsiniz.
sudo systemctl stop iptables-persistent
sudo systemctl disable iptables-persistent
sisteminizden kaldırabilirsiniz.
sudo apt remove iptables-persistent
Aynı işlemi iptable içinde yapıyorum.
systemctl status iptables
Bu iptables hizmeti, iptables güvenlik duvarı kurallarını geri yüklemek için iRedMail ile birlikte gönderilir. Çalışıyorsa, durdurabilir ve devre dışı bırakabilirsiniz.Benim sistemde bu kurulu olmadığı için kaldırma işlemini yapmama gerek yok.Fakat sizler için kaldırma komutlarını aşağıda paylaşıyorum.
sudo systemctl stop iptables
sudo systemctl disable iptables
Şimdi UFW’yi nasıl kullanacağımızı öğrenelim
Debian / Ubuntu / Linux Mint Sunucusunda UFW kurulumu:
UFW genellikle Debian / Ubuntu / Linux Mint’e önceden yüklenir, ancak yüklemek için aşağıdaki komutu her zaman çalıştırabilirsiniz.
sudo apt install ufw
Kurulumda ufw devre dışı bırakılır. UFW durumunu şu şekilde kontrol edebilirsiniz
sudo ufw status
UFW, varsayılan gelen reddetme politikası, varsayılan iletme reddetme politikası ve varsayılan giden izin politikası ile gelen ve yönlendirilen bağlantılar için yeni bağlantılar için durum bilgisi içeren izleme ile birlikte gelir. UFW’yi etkinleştirmeden önce, sunucunuzun nmap (Network Mapper) yardımıyla elde edilebilecek genel IP adresinde hangi portların açıldığını bilmeniz gerekir.
Debian/Ubuntu/Linux Mint sunucunuza nmap yükleyin ve açık IP adresindeki açık portları tarayın.
sudo apt install nmap
sudo nmap 192.168.88.127
Ayrıca, sudo nmap localhost çalıştırılarak elde edilebilen, yalnızca localhost’ta dinleyen açık bağlantı noktaları da vardır, ancak bunlar için endişelenmemize gerek yoktur.
Nmap varsayılan olarak yalnızca TCP bağlantı noktalarını tarar. UDP bağlantı noktalarını taramak için aşağıdaki komutu kullanabiliriz.
sudo nmap -sU 192.168.88.127
Ancak, UDP taraması çok yavaş. Bu kadar uzun süre bekleyemezseniz, UDP bağlantı noktalarını listelemek için netstat’ı kullanabilirsiniz.
sudo netstat -lnpu
Sunucunuzda açık olan TCP ve UDP portlarını aldıktan sonra, hangi portların gelen bağlantıları kabul etmesine izin verileceğine karar vermeniz gerekir. Çalışan bir openSSH sunucusu varsa, UFW’yi etkinleştirmeden önce her zaman TCP bağlantı noktası 22’ye izin vermelisiniz. Bu, aşağıdaki komutla gerçekleştirilir.
sudo ufw allow 22/tcp
veya aşağıdaki şekilde
sudo ufw allow ssh
Muhtemelen HTTP ve HTTPS trafiğine izin vermek istiyorsunuz, bu nedenle 80 ve 443 numaralı TCP bağlantı noktalarında gelen bağlantıya izin vermek için aşağıdaki komutu çalıştırın.
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Aynı Anda Birden Çok Bağlantı Noktası Açma
sudo ufw allow 80,443,22/tcp
UFW’yi etkinleştirme
UFW’de izin verilen bağlantı noktalarını ayarladıktan sonra UFW’yi etkinleştirmeniz gerekir. Ancak bunu yapmadan önce, güvenlik duvarınızın doğru çalışıp çalışmadığını daha iyi anlayabilmeniz için aşağıdaki komutla günlük kaydını etkinleştirmeniz önerilir.
sudo ufw logging on
Varsayılan günlük düzeyi ‘düşük’tür. Günlük dosyası /var/log/ufw.log‘ dur. Genellikle “orta” günlük seviyesini kullanırım.
sudo ufw logging medium
Şimdi Aktifleştirelim.
sudo ufw enable
Servisin durumunu kontrol edelim.
sudo ufw status
Daha fazla bilgi görüntülemek için;
Artık hangi bağlantı noktalarının hala açık olduğunu bulmak için sunucunuzu yeniden tarayabilirsiniz.
sudo nmap 192.168.88.127
Güvenlik Duvarı Kuralı Nasıl Silinir:
Öncelikle aşağıdaki komutla silmek istediğiniz güvenlik duvarı kuralının referans numarasını almanız gerekir.
sudo ufw status numbered
daha sonra bir kuralı, örneğin 3. kuralı silebiliriz.
sudo ufw delete 3
Bir kuralı sildikten sonra referans numarasının değişeceğini unutmayın, bu nedenle başka bir kuralı silmek için sudo ufw status numaralı tekrar çalıştırmanız gerekir.
UFW’yi sıfırla:
Bir hata yaptıysanız, güvenlik duvarını devre dışı bırakabilir ve kurulum varsayılanlarına sıfırlayabilirsiniz.
sudo ufw reset
Bu özellikle yeni başlayanlar için kullanışlıdır.
UFW Uygulama Profili:
Birçok sunucu programı UFW profilleriyle birlikte gelir. Tüm uygulama profillerini aşağıdakilerle listeleyebilirsiniz:
sudo ufw app list
Belirli bir uygulama profili, örneğin “OpenSSH” profili hakkında bilgi gösterebiliriz.
sudo ufw app info OpenSSH
Bu profilin kullandığı portun TCP port 22 olduğunu görebiliriz. Bu uygulama profilini aşağıdaki komutla etkinleştirirsek, TCP port 22’e izin verilecektir.
sudo ufw allow OpenSSH
UFW ile IP Adresi Blaacklist Oluşturma:
Posta sunucunuza sürekli olarak spam göndermeye çalışan bir spam gönderici olduğunu varsayalım. Aşağıdaki komutu kullanarak, spam göndericinin IP adresinin posta sunucunuzun 25 numaralı TCP bağlantı noktasına erişmesini engellemek için UFW’yi kullanabilirsiniz. 192.168.88.115 ‘i spam gönderenin IP adresiyle değiştirin.Ben burada spam gönderen IP olarak 192.168.88.115 tanımlıyorum.
sudo ufw insert 1 deny in from 192.168.88.115 to any port 25 proto tcp
Yeni eklenen güvenlik duvarı kurallarının varsayılan olarak en altta yer aldığını unutmayın. Daha önce herhangi bir yerden 25 numaralı bağlantı noktasına erişime izin verdiyseniz, yukarıda olduğu gibi reddetme kuralını ilk kural olarak eklemeniz gerekir, böylece önce reddetme kuralı uygulanacaktır. Her zaman ilk kural olarak yeni reddetme kuralı ekleyebilirsiniz.
sudo ufw insert 1 deny in from 192.168.88.120 to any port 25 proto tcp
Ayrıca aşağıdaki gibi bir IP adresi aralığını da engelleyebilirsiniz.
sudo ufw insert 1 deny in from 192.168.0.0/24 to any port 25 proto tcp
Bir IP adresinin sunucunuzdaki tüm bağlantı noktalarına erişmesini engellemek için şunu çalıştırın
sudo ufw insert 1 deny in from 192.168.88.150
UFW ile IP Adresi Beyaz Listesi Oluşturma:
Şimdi bir OpenSSH sunucusu çalıştırdığınızı ve yalnızca belirli IP adreslerinin sunucunuzda SSH üzerinden oturum açmasına izin vermek istediğinizi varsayalım. Bir IP adresi beyaz listesi oluşturmak için UFW’yi kullanabilirsiniz. Örneğin, evimde statik IP adresim yok, ancak bulutta birkaç VPN sunucusu kurdum, bu nedenle artık UFW’yi yalnızca VPN sunucumun IP adresinden 22 numaralı bağlantı noktasına gelen bağlantıya izin verecek şekilde yapılandırabilirim.
İlk olarak, IP adresini izin verilenler listesine ekleyin.
sudo ufw insert 1 allow in from 192.168.88.160 to any port 22 proto tcp
Ardından her yerden izin ver kuralının referans numarasını almanız ve bu kuralı silmeniz gerekir.
sudo ufw status numbered
Şimdi Her yerden gelen SSH bağlantılarını kabul eden kuralları silelim.Benim için 6, 8,9, 12 dir.Bunların hepsini silmeliyim.
sudo ufw delete reference-number
Hem IPv4 hem de IPv6 kuralını silmeniz gerektiğini unutmayın. Ayrıca, önce üst kuralı silerseniz, alt kuralın referans numarasının değişeceğine dikkat edin.
Buradan itibaren, yalnızca IP adresiniz 22 numaralı TCP bağlantı noktasına erişebilir.
UFW ile IP Maskeleme Nasıl Kurulur:
Bazen kendi VPN sunucunuzu kurmak istersiniz, o zaman VPN istemcileri için sanal bir yönlendirici olması için VPN sunucunuzda IP maskeleme kurmanız gerekir. Ne yazık ki, UFW bunu yapmak için uygun bir yol sağlamaz. Bir UFW yapılandırma dosyasına iptables komutunu eklememiz gerekiyor.
sudo nano /etc/ufw/before.rules
Varsayılan olarak, filtre tablosu için bazı kurallar vardır. Bu dosyanın sonuna aşağıdaki satırları ekleyelim
# NAT table rules/* Your code... */
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change eth0 to match your network interface
-A POSTROUTING -o eth0 -j MASQUERADE
# End each table with the 'COMMIT' line or these rules won't be processed
COMMIT
Ana ağ arabiriminiz eth0 değilse, eth0’ı ip addr komutuyla elde edilebilen ağ arabirim adınız olarak değiştirmeniz gerektiğine dikkat edin. Ve yeni bir tabloya, yani nat tablosuna güvenlik duvarı kuralları eklediğimiz için, ‘COMMIT’ satırını eklememiz gerekiyor.Benim ağ bağdaştırıcımın adı ens33 olduğu için bu şekilde değiştirdim.
Varsayılan olarak, UFW paket iletmeyi yasaklar, bu harika çünkü İnternet’teki rastgele kişilerin kötü amaçlı şeyler yapmak için kutunuzu kullanmasını önler. Ancak özel ağımız için yönlendirmeye izin vermemiz gerekiyor. Bu dosyada ufw-önce-iletme zincirini bulun ve aşağıdaki 3 satırı ekleyin; kaynak IP veya hedef IP 192.168.88.0/24 aralığındaysa paket iletimini kabul eder.Bu arada 192.168.88.0/24 benim network aralığım siz kendi trusted network aralığını belirtmelisiniz.
# allow forwarding for trusted network
-A ufw-before-forward -s 192.168.88.0/24 -j ACCEPT
-A ufw-before-forward -d 192.168.88.0/24 -j ACCEPT
Dosyayı kaydedin ve kapatın. Ardından UFW’yi yeniden başlatalım.
sudo systemctl restart ufw
Bu, UFW yapılandırmasıyla ilgili olmasa da, paketleri yönlendirmek için IP iletmeyi de ayarlamanız gerekir. Bu, /etc/sysctl.conf dosyasının sonunda aşağıdakileri ayarlayarak yapılabilir.
net.ipv4.ip_forward = 1
Ardından aşağıdaki komutla değişiklikleri uygulayın.
sudo sysctl -p
UFW’de Port Yönlendirme Nasıl Kurulur:
Yönlendiricinizde UFW kullanıyorsanız ve HTTP istekleri gibi paketleri dahili LAN ana bilgisayarlarına yönlendirmek istiyorsanız ne olur? Bu durumda, port yönlendirmeyi ayarlamanız gerekir. /etc/ufw/before.rules dosyasını düzenleyin.
sudo nano /etc/ufw/before.rules
:PREROUTING ACCEPT [0:0]
# forward 12.34.56.78 port 80 to 192.168.1.100:80
# forward 12.34.56.78 port 443 to 192.168.1.100:443
-A PREROUTING -i eth0 -d 12.34.56.78 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
-A PREROUTING -i eth0 -d 12.34.56.78 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443
Bu, UFW’ye yerel ağdaki 10.10.10.198 ana bilgisayarına HTTP ve HTTPS isteklerini iletmek için DNAT hedefini kullanmasını söyler.
sudo systemctl restart ufw
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw default deny outgoing
Ardından belirli giden bağlantı noktalarına izin verin. Örneğin, DNS bağlantı noktasına izin vermeniz gerekir.
sudo ufw allow out 53
sudo ufw allow out 80/tcp
sudo ufw allow out 443/tcp
sudo ufw allow out 25/tcp
sudo systemctl restart ufw
sudo ufw default allow outgoing
sudo ufw insert 1 deny out to 12.34.56.78
UFW yi yeniden başlatınız
sudo systemctl restart ufw
İşte bu uzun yazı sonunda bitti.Umarım bu bilgiler sizler için faydalı olur.