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 3gü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!