RHCSA Serisi: FirewallD ve Iptables Kullanarak Güvenlik Duvarı Esasları ve Ağ Trafiği Kontrolü - Bölüm 11
Basit bir ifadeyle güvenlik duvarı, önceden tanımlanmış bir dizi kurala (örneğin, paket hedefi/kaynağı veya trafik türü gibi) dayalı olarak bir ağdaki gelen ve giden trafiği kontrol eden bir güvenlik sistemidir. .
Bu makalede, Red Hat Enterprise Linux 7'deki varsayılan dinamik güvenlik duvarı arka plan programı olan firewalld'un ve eski iptables hizmetinin temellerini inceleyeceğiz. Çoğu sistem ve ağ yöneticisinin yakından tanıdığı ve aynı zamanda RHEL 7'de de bulunan, Linux için güvenlik duvarı hizmeti.
FirewallD ve Iptables Arasında Bir Karşılaştırma
Temelde, hem firewalld hem de iptables hizmeti, çekirdekteki netfilter çerçevesiyle aynı arayüz aracılığıyla iletişim kurar; şaşırtıcı olmayan bir şekilde, iptables komutu . Ancak iptables hizmetinin aksine, güvenlik duvarı normal sistem çalışması sırasında mevcut bağlantıları kaybetmeden ayarları değiştirebilir.
Güvenlik Duvarı, çalışmıyor olsa da RHEL sisteminizde varsayılan olarak yüklenmelidir. Aşağıdaki komutlarla doğrulayabilirsiniz (firewall-config, kullanıcı arayüzü yapılandırma aracıdır):
yum info firewalld firewall-config
Ve,
systemctl status -l firewalld.service
Öte yandan, iptables hizmeti varsayılan olarak dahil değildir ancak aracılığıyla kurulabilir.
yum update && yum install iptables-services
Her iki arka plan programı da olağan systemd komutlarıyla başlatılabilir ve önyükleme sırasında başlayacak şekilde etkinleştirilebilir:
systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service
Ayrıca Okuyun: Systemd Hizmetlerini Yönetmek İçin Yararlı Komutlar
Yapılandırma dosyalarına gelince, iptables hizmeti /etc/sysconfig/iptables
'ı kullanır (paket sisteminizde kurulu değilse bu mevcut olmayacaktır). Küme düğümü olarak kullanılan bir RHEL 7 kutusunda bu dosya aşağıdaki gibi görünür:
Firewalld yapılandırmasını iki dizinde saklarken, /usr/lib/firewalld
ve /etc/firewalld
:
ls /usr/lib/firewalld /etc/firewalld
Bu yapılandırma dosyalarını, oraya buraya birkaç kural ekledikten sonra bu makalenin ilerleyen kısımlarında inceleyeceğiz. Şimdilik her iki araç hakkında da her zaman daha fazla bilgiye ulaşabileceğinizi hatırlatmak yeterli olacaktır.
man firewalld.conf
man firewall-cmd
man iptables
Bunun dışında, RHEL 7 sisteminizde yüklü paketler hakkında bilgi alabileceğiniz çeşitli kaynakları açıkladığım Temel Komutları ve Sistem Belgelerini İnceleme – Mevcut serinin 1. Bölümüne göz atmayı unutmayın. .
Ağ Trafiğini Kontrol Etmek İçin Iptables Kullanma
iptables dahili bileşenleri hakkında hafızanızı tazelemek için Linux Foundation Certified Engineer (LFCE) serisinin Iptables Güvenlik Duvarını Yapılandırma – Bölüm 8'e başvurmak isteyebilirsiniz. daha fazla ilerlemeden önce. Böylece doğrudan örneklere geçebileceğiz.
Örnek 1: Hem gelen hem de giden web trafiğine izin verme
TCP bağlantı noktaları 80 ve 443, Apache web sunucusu tarafından normal (HTTP) ve güvenli (HTTPS<) işlemlerini gerçekleştirmek için kullanılan varsayılan bağlantı noktalarıdır.) web trafiği. enp0s3 arayüzündeki her iki bağlantı noktasından gelen ve giden web trafiğine aşağıdaki şekilde izin verebilirsiniz:
iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Örnek 2: Belirli bir ağdan gelen bağlantıların tümünü (veya bir kısmını) engelleyin
Belirli bir ağdan gelen trafiğin tümünü (veya bir kısmını) engellemeniz gereken zamanlar olabilir, örneğin 192.168.1.0/24:
iptables -I INPUT -s 192.168.1.0/24 -j DROP
192.168.1.0/24 ağından gelen tüm paketleri bırakacak, oysa,
iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT
yalnızca 22 numaralı bağlantı noktasından gelen trafiğe izin verir.
Örnek 3: Gelen trafiği başka bir hedefe yönlendirme
RHEL 7 kutunuzu yalnızca yazılım güvenlik duvarı olarak değil, aynı zamanda gerçek donanım tabanlı güvenlik duvarı olarak da kullanıyorsanız, yani iki farklı ağ arasında yer alıyorsa, IP yönlendirmenin sisteminizde zaten etkinleştirilmiş olması gerekir. . Değilse, /etc/sysctl.conf
dosyasını düzenlemeniz ve net.ipv4.ip_forward değerini aşağıdaki gibi 1 olarak ayarlamanız gerekir:
net.ipv4.ip_forward = 1
daha sonra değişikliği kaydedin, metin düzenleyicinizi kapatın ve son olarak değişikliği uygulamak için aşağıdaki komutu çalıştırın:
sysctl -p /etc/sysctl.conf
Örneğin, IP 192.168.0.10'a sahip dahili bir kutuya kurulu bir yazıcınız olabilir ve CUPS hizmeti 631 bağlantı noktasını dinliyor olabilir (her ikisi de yazdırma sunucusunda ve güvenlik duvarınızda). Güvenlik duvarının diğer tarafındaki istemcilerden gelen yazdırma isteklerini iletmek için aşağıdaki iptables kuralını eklemelisiniz:
iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631
Lütfen iptables'ın kurallarını sırayla okuduğunu unutmayın; bu nedenle, varsayılan politikaların veya sonraki kuralların yukarıdaki örneklerde belirtilenleri geçersiz kılmadığından emin olun.
FirewallD'ye Başlarken
Güvenlik duvarı ile getirilen değişikliklerden biri de bölgeler'dir. Bu konsept, ağların, kullanıcının o ağ içindeki cihazlara ve trafiğe yerleştirmeye karar verdiği farklı güven düzeyine sahip bölgelere ayrılmasına olanak tanır.
Aktif bölgeleri listelemek için:
firewall-cmd --get-active-zones
Aşağıdaki örnekte genel bölge etkindir ve enp0s3 arayüzü buraya otomatik olarak atanmıştır. Belirli bir bölge hakkındaki tüm bilgileri görüntülemek için:
firewall-cmd --zone=public --list-all
RHEL 7 Güvenlik kılavuzunda bölgeler hakkında daha fazla bilgi edinebileceğiniz için burada yalnızca bazı belirli örnekleri listeleyeceğiz.
Örnek 4: Güvenlik duvarı aracılığıyla hizmetlere izin verme
Desteklenen hizmetlerin bir listesini almak için kullanın.
firewall-cmd --get-services
Güvenlik duvarı üzerinden http ve https web trafiğine izin vermek için, anında ve sonraki önyüklemelerde geçerli olmak üzere:
firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload
code>–zone atlanırsa varsayılan bölge kullanılır (firewall-cmd –get-default-zone ile kontrol edebilirsiniz).
Kuralı kaldırmak için yukarıdaki komutlarda ekle kelimesini kaldır ile değiştirin.
Örnek 5: IP/Port yönlendirme
Öncelikle istenen bölge için maskelemenin etkin olup olmadığını öğrenmeniz gerekir:
firewall-cmd --zone=MyZone --query-masquerade
Aşağıdaki resimde, harici bölge için maskelemenin etkinleştirildiğini, ancak genel için etkinleştirilmediğini görebiliriz:
Herkese açık olarak maskelemeyi etkinleştirebilirsiniz:
firewall-cmd --zone=public --add-masquerade
veya harici'de maskelemeyi kullanın. Örnek 3'ü güvenlik duvarı ile kopyalamak için şunları yaparız:
firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10
Güvenlik duvarını yeniden yüklemeyi de unutmayın.
Genellikle bir web sunucusu ve ftp sunucusu tarafından kullanılan bağlantı noktalarına nasıl izin verileceğini veya devre dışı bırakılacağını ve bu hizmetler için varsayılan bağlantı noktası seçildiğinde ilgili kuralın nasıl değiştirileceğini açıkladığımız RHCSA serisinin 9. Bölümünde daha fazla örnek bulabilirsiniz. değiştirildi. Ayrıca daha fazla örnek için güvenlik duvarı wiki'sine başvurmak isteyebilirsiniz.
Ayrıca Okuyun: RHEL 7'de Güvenlik Duvarını Yapılandırmak için Faydalı FirewallD Örnekleri
Çözüm
Bu makalede güvenlik duvarının ne olduğunu, RHEL 7'de uygulamak için mevcut hizmetlerin neler olduğunu açıkladık ve buna başlamanıza yardımcı olabilecek birkaç örnek sunduk görev. Herhangi bir yorumunuz, öneriniz veya sorunuz varsa aşağıdaki formu kullanarak bize bildirmekten çekinmeyin. Şimdiden teşekkür ederim!