Rocky ve AlmaLinux firewalld Ayarları ve Temel Komutlar
Rocky veya AlmaLinux VPS üzerinde firewalld ile SSH portu açma, web portu yönetimi ve --permanent bayrağını kullanırken yapılan yaygın hatalardan kaçınma yöntemlerini öğrenin.
firewalld nedir ve Rocky ile AlmaLinux neden bu aracı kullanır
firewalld, Rocky Linux, AlmaLinux ve diğer Red Hat Enterprise Linux (RHEL) türevlerinde varsayılan olarak yüklü gelen güvenlik duvarı yöneticisidir. Paketleri doğrudan kendisi denetlemez. Kayıtlı bir yapılandırmayı tutar ve bu yapılandırmayı nftables kurallarına dönüştürür. firewall-cmd komutu, sunucu çalışmaya devam ederken yapılandırmayı düzenlemenizi sağlar.
Eğer Ubuntu VPS üzerinde ufw'nin nasıl çalıştığını biliyorsanız, temel işleyişe hakimsiniz demektir. firewalld, ufw'de bulunmayan iki kavram ekler. Birincisi bölgelerdir (zones): paketlerin içine dahil edildiği adlandırılmış bir ilke kümesidir. İkincisi ise canlı kurallar ile kayıtlı kurallar arasındaki ayrımdır; bu durum --permanent bayrağı ile yönetilir ve araçtaki en büyük kafa karışıklığı kaynağıdır.
Aşağıdaki her şey, kendi sunucunuzda çalıştıracağınız bir komuttur. Her değişikliği ikinci bir makineden test edin; çünkü sunucu üzerinde doğru görünen bir kural, internet üzerinden bakıldığında hatalı olabilir.
Başka bir işlem yapmadan önce SSH erişimini açın
Rocky ve AlmaLinux kurulumlarının çoğunda firewalld yüklü ve çalışır durumdadır; varsayılan yapılandırma SSH erişimine izin verir. Bazı minimal bulut imajlarında ise bu servis bulunmaz. Varsayımda bulunmak yerine durumu kontrol edin.
sudo dnf install -y firewalld
sudo systemctl enable --now firewalld
sudo firewall-cmd --statefirewall-cmd --state komutu running çıktısını verir. Servis durdurulmuşsa, diğer tüm firewall-cmd çağrıları FirewallD is not running yanıtını döndürür ve sıfır olmayan bir çıkış koduyla sonlanır. Bir komut hiçbir işlem yapmıyor gibi göründüğünde kontrol edilmesi gereken ilk nokta budur.
Şimdi mevcut izinleri görüntüleyin.
sudo firewall-cmd --list-allGerçek çıktı birkaç satır daha içerir. Önemli olanlar şunlardır:
public (active)
target: default
interfaces: eth0
sources:
services: cockpit dhcpv6-client ssh
ports:
rich rules:services: satırındaki ssh ifadesi, mevcut oturumunuzun neden hala çalıştığını açıklar. Eğer bu ifade eksikse, başka hiçbir ayara dokunmadan önce ekleyin; çünkü SSH kuralı tanımlanmamış bir güvenlik duvarını başlatmak oturumunuzu sonlandırır ve sunucuya tekrar erişemezsiniz.
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reloadtarget: default, hiçbir kural ile eşleşmeyen paketlerin ICMP (internet control message protocol) host-prohibited yanıtıyla reddedildiği anlamına gelir; bu sayede kapalı bir porta erişmeye çalışan istemci anında No route to host hatası alır. Hedefi DROP olarak ayarlamak sunucuyu sessiz hale getirir ve tarayıcıların zaman aşımına uğramasını sağlar.
sudo firewall-cmd --permanent --zone=public --set-target=DROP
sudo firewall-cmd --reloadBu değişikliği yapmadan önce sonuçlarını değerlendirin: DROP ayarı, sunucunun ping taleplerine yanıt vermesini de engeller; bu durumda kendi izleme araçlarınız da sunucudan veri alamaz hale gelir.
Kuralım neden kayboldu? --permanent bayrağı
firewalld aynı anda iki yapılandırmayı tutar. Çalışma zamanı (runtime) yapılandırması, çekirdeğin o an uyguladığı kurallardır. Kalıcı (permanent) yapılandırma ise /etc/firewalld/zones/public.xml içinde yer alan ve yeniden yükleme veya yeniden başlatma sonrasında geçerli olan kurallardır.
--permanent bayrağı içermeyen bir komut yalnızca çalışma zamanı yapılandırmasını değiştirir. Bu değişiklik anında devreye girer ancak yeniden yükleme veya yeniden başlatma sonrasında kaybolur. --permanent bayrağı içeren bir komut ise dosyayı yazar ancak çalışan sistemde hiçbir şeyi değiştirmez; bu nedenle yeniden yükleme yapana kadar port kapalı kalır. Bu davranışların hiçbiri bir hata değildir. Her iki durum da kullanıcıları şaşırtır çünkü komut her iki durumda da success çıktısını verir.
Her seferinde her iki komutu da yazın.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reloadHer iki yapılandırmayı da okuyabilirsiniz; bu, yaptığınız iki hatadan hangisinin gerçekleştiğini bulmanın en hızlı yoludur.
sudo firewall-cmd --list-services
sudo firewall-cmd --permanent --list-servicesİlk komut canlı yapılandırmayı listeler. İkincisi ise kayıtlı yapılandırmayı listeler. Eğer canlı yapılandırmada olup kayıtlı yapılandırmada olmayan bir servis varsa, o kural bir sonraki yeniden yüklemede silinir. Eğer kayıtlı yapılandırmada olup canlı yapılandırmada olmayan bir kural varsa, yeniden yükleme yapmayı unutmuşsunuz demektir. sudo firewall-cmd --runtime-to-permanent, canlı yapılandırmadaki her şeyi kayıtlı dosyaya kopyalar; bu, deneme oturumlarından sonra oldukça kullanışlıdır.
--reload bağlantı izleme durumunu korur, bu sayede SSH oturumunuz kesilmez. --complete-reload ise çekirdek modüllerini de yeniden yükler ve bu durumu kaybeder; bu genellikle sizinki dahil tüm açık bağlantıları sonlandırır. Standart yeniden yükleme komutunu kullanın.
Sistemde yerleşik bir güvenlik ağı bulunur. Bir çalışma zamanı kuralı kendi kendine sona erebilir.
sudo firewall-cmd --add-service=http --timeout=5mBu kural beş dakika sonra kendiliğinden silinir. --permanent ile birleştirilemez; zaten amacı da budur: emin olmadığınız bir değişikliği test etmenizi sağlar. Daha eski olan güvenlik yöntemi daha iyidir. Kuralları düzenlerken ikinci bir SSH oturumunu açık tutun ve yeni kuralların çalıştığını yeni bir oturum açarak doğrulamadan bu oturumu kapatmayın.
Bölgeler ve bir VPS üzerinde neden sadece varsayılan bölgenin önemli olduğu
Bölge, kendisine atanmış bir güven düzeyi ile birlikte tanımlanmış bir izinler kümesidir. firewalld, gelen her paketi tam olarak bir bölgeye yerleştirir. İlk olarak paketin kaynak adresini her bölgenin sources: listesiyle karşılaştırır. Eğer bir eşleşme olmazsa, gelen arayüzün bağlı olduğu bölgeyi kullanır. Arayüz hiçbir bölgeye bağlı değilse, paket varsayılan bölgeye gider.
sudo firewall-cmd --get-default-zone
sudo firewall-cmd --get-active-zonesTek bir ağ arayüzüne sahip bir VPS üzerinde ilk yanıt neredeyse her zaman public olur ve kullanacağınız tek bölge de budur. --zone= argümanı içermeyen firewall-cmd, varsayılan bölge üzerinde işlem yapar; bu rehberdeki her kısa komutun bir bölge adı belirtmeden çalışmasının nedeni budur.
Bir öğleden sonranızı boşa harcayacak hata şudur: Eğer arayüz başka bir bölgeye bağlıysa, kurallarınız public içine yazılırken trafik başka bir yerde işlenir; bu nedenle eklediğiniz hiçbir şeyin etkisi olmaz ve sistem sizi uyarmaz. --get-active-zones bağlamayı gösterir:
public
interfaces: eth0Eğer arayüz farklı bir bölge adı altında görünüyorsa, kurallarınızı --zone= ile oraya yazın ya da arayüzü taşıyın.
sudo firewall-cmd --permanent --zone=public --change-interface=eth0
sudo firewall-cmd --reloadRocky ve AlmaLinux üzerinde arayüzleri NetworkManager yönetir ve bağlantı kurulduğunda bölgeyi yeniden doğrular. Yeniden başlatma işleminin yaptığınız ayarları geri almaması için bölgeyi orada da ayarlayın. İlk komuttan bağlantı adını alın, çünkü bu isim nadiren cihaz adıyla aynıdır.
sudo nmcli connection show
sudo nmcli connection modify "System eth0" connection.zone publicKaynak eşleştirme, arayüz eşleştirmeden daha önceliklidir; bir adresin farklı bir politikaya sahip olması bu şekilde sağlanır. Yerleşik trusted bölgesi her şeyi kabul eder.
sudo firewall-cmd --permanent --zone=trusted --add-source=203.0.113.10/32
sudo firewall-cmd --reloadBuna dikkat edin. Bu bölge, özel olduğunu düşündüğünüz veritabanı da dahil olmak üzere sunucudaki her portu o adrese açar. Tek bir host yerine tek bir port açmak istediğinizde zengin kural (rich rule) kullanın.
firewalld servisi nedir?
Bir servis, XML dosyası olarak sunulan ve isimlendirilmiş bir port grubudur. --add-service=https, 443/tcp portunu açar çünkü /usr/lib/firewalld/services/https.xml, https ifadesinin ne anlama geldiğini tanımlar.
sudo firewall-cmd --get-services
sudo firewall-cmd --info-service=https--info-service, ismin arkasında gizlenen portları listeler:
https
ports: 443/tcpBir isim mevcut olduğunda onu kullanın. Bu, altı ay sonra --list-all üzerinde okunduğunda net bir anlam ifade eder ve Cockpit gibi paketler kendi servis dosyalarını kurarlar. Tanımı olmayan her şey için --add-port kullanın.
Dikkat edilmesi gereken boşluk: ssh servisi, 22/tcp portu anlamına gelir ve başka hiçbir şeyi kapsamaz. Eğer SSH portunu sunucuda SSH erişimini sıkılaştırma kapsamında başka bir porta taşıdıysanız, --add-service=ssh aslında kullandığınız portu açmayacaktır.
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reloadBir RHEL yeniden kurulumunda o kapıda ikinci bir kilit bulunur. SELinux (security-enhanced Linux), port numaralarını etiketler ve sshd, etiketlerinin dışındaki bir porta bağlanamaz. Bu durumda servis başlamayı reddeder ve günlük kayıtlarında error: Bind to port 2222 on 0.0.0.0 failed: Permission denied. hatası görülür. Öncelikle portu etiketleyin.
sudo dnf install -y policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 2222Şu anda nelerin açık olduğunu nasıl görebilirim?
sudo firewall-cmd --list-all
sudo firewall-cmd --list-rich-rules
sudo nft list table inet firewalld | head -n 40İlk iki komut firewalld'un neyi bildirdiğini gösterir. Üçüncü komut ise çekirdeğin (kernel) halihazırda tuttuğu ve firewalld'a ait olan tablodaki kuralları okur. Bu çıktıların birbiriyle tutarlı olması gerekir.
Bunların hiçbiri kesin kanıt değildir. Testi başka bir makine üzerinden gerçekleştirin:
nc -zv 203.0.113.20 443Testi sunucunun kendisi üzerinde çalıştırmayın. firewalld, loopback arayüzüne gelen her trafiği kabul eder; bu nedenle kurallarınız ne olursa olsun curl http://localhost:8080 başarılı olur. Bu test size yalnızca servisin çalışır durumda olduğunu söyler. Güvenlik duvarı hakkında hiçbir bilgi vermez.
Bir web portuna izin verme
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-servicesSon komut, daha önce orada olanların yanında http https öğesini de listelemelidir. Site hala yanıt vermiyorsa, sorun güvenlik duvarınızdan kaynaklanmıyor olabilir. Bir kural pakete izin verir. Bir sürecin ise hala bu paketi dinliyor olması gerekir.
sudo ss -tlnp0.0.0.0:443 veya *:443 olarak gösterilen bir soket, herhangi bir adresten gelen bağlantıları kabul eder. 127.0.0.1:443 olarak gösterilen bir soket ise yalnızca loopback üzerinde yanıt verir ve hiçbir güvenlik duvarı kuralı onu dışarıdan erişilebilir kılmaz. Linux üzerinde portlar ve dinleme soketleri bu farkı daha ayrıntılı olarak ele almaktadır.
Bir portu nasıl tekrar kapatırım?
sudo firewall-cmd --permanent --remove-service=http
sudo firewall-cmd --reloadBurada da --permanent kuralı geçerlidir ve bu yönde etkisi daha serttir. Bir servisi yalnızca çalışma zamanından kaldırırsanız port kapalı görünür, ancak bir sonraki yeniden yükleme veya yeniden başlatma işleminde kayıtlı dosyadan tekrar açılır. Bu, çalıştırdığınız denetim başarılı olduğu için fark etmeyeceğiniz bir güvenlik açığıdır.
Hiç var olmayan bir şeyi kaldırmak Warning: NOT_ENABLED: http çıktısı verir ve yine de 0 koduyla çıkar. Aynı şeyi iki kez eklemek Warning: ALREADY_ENABLED: http çıktısı verir. Her ikisi de güvenlidir. Yanlış yazılmış bir isim farklıdır: Error: INVALID_SERVICE, firewalld içinde bu isimde bir tanım olmadığını ve hiçbir şeyin değiştirilmediğini belirtir.
Eğer --list-all çıktınızda cockpit görünüyorsa ve 9090 numaralı port üzerindeki Cockpit web konsolunu kullanmıyorsanız, bu servisi kaldırın. Açık olan her port, yamalarını takip etmeniz gereken bir servistir.
Bir portu tek bir kaynak adresiyle kısıtlama
Rich rule kuralları, basit bir servis adının ifade etmek istediğiniz kısıtlamayı karşılayamadığı durumlar için kullanılan uzun biçimli kurallardır. SSH erişimini tek bir ofis adresiyle kısıtlamak için iki komut gerekir; ikinci komut ise genellikle unutulan kısımdır.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" service name="ssh" accept'
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reloadZone, izinlerin bir kümesidir; ilk eşleşmede duran numaralandırılmış bir liste değildir. Rich rule, tek bir adres için bir kabul (accept) kuralı ekler. Kimseyi reddetmez. ssh hala services: satırında yer aldığı sürece, tüm internet 22 numaralı porta erişebilir ve rich rule ölçülebilir hiçbir şeyi değiştirmez. Genel girişi kaldırın, aksi takdirde dar kapsamlı kural sadece bir süs olarak kalır.
Servis adı olmayan bir port için, servis adı yerine port numarasını belirtin.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" port port="5432" protocol="tcp" accept'Gürültülü bir ağı düşürmek ve kayıt tutmak için, log öğesini eylemden önce yerleştirin; rich rule dili bu sıralamayı bekler.
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" log prefix="fw-drop " level="info" limit value="3/m" drop'
sudo firewall-cmd --reload
sudo journalctl -k -g fw-droplimit değeri, paket selinin journal dosyasını doldurmasını engeller. SSH erişimini tek bir adrese kilitlemeden önce, o adresin sabit olduğundan emin olun. IP adresi değişen bir ev bağlantısı, adres değiştiği gün sizi sistemin dışında bırakır; bu nedenle öncelikle servis sağlayıcınızın konsol erişimini test edin ve çalıştığından emin olun.
ufw komutları ve firewalld karşılıkları
Aynı görevler, farklı araçlar. Her --permanent satırı, bu tür bir listenin gösteremeyeceği bir sudo firewall-cmd --reload gerektirir.
sudo ufw enable,sudo systemctl enable --now firewalldhaline gelirsudo ufw disable,sudo systemctl disable --now firewalldhaline gelirsudo ufw status verbose,sudo firewall-cmd --list-allhaline gelirsudo ufw allow OpenSSH,sudo firewall-cmd --permanent --add-service=sshhaline gelirsudo ufw allow 443/tcp,sudo firewall-cmd --permanent --add-port=443/tcphaline gelirsudo ufw delete allow 443/tcp,sudo firewall-cmd --permanent --remove-port=443/tcphaline gelirsudo ufw allow from 203.0.113.10 to any port 22, yukarıda gösterilen zengin kural (rich rule) haline gelirsudo ufw reload,sudo firewall-cmd --reloadhaline gelirsudo ufw default deny incoming,publicbölgesinin halihazırdaki davranışıdır ve--set-target=DROPbunun sessiz sürümüdürsudo ufw logging on,sudo firewall-cmd --set-log-denied=allhaline gelir
Belirtilmesi gereken bir fark vardır. ufw numaralandırılmış bir liste tutar ve 1. sıraya kural eklemenize olanak tanır. firewalld üzerinde kural numaraları bulunmaz, bu nedenle "bu kuralı başa al" ifadesinin burada bir karşılığı yoktur. İki firewalld girdisi birbiriyle çelişiyor gibi göründüğünde, geniş kapsamlı olan (accept) kural üstün gelir, çünkü küme içerisinde reddeden bir kural yoktur. Geniş kapsamlı girdiyi kendiniz kaldırmalısınız.
Docker konteynerim güvenlik duvarı kapalı görünmesine rağmen neden erişilebilir durumda?
Çünkü yayınlanan bir konteyner portu, güvenlik duvarınızın bölge (zone) kontrolü altındaki kısmına asla ulaşmaz. docker run -d -p 8080:80 nginx, Docker'a kendi NAT (ağ adresi çevirisi) ve yönlendirme kurallarını yazmasını söyler. 8080 portuna gelen bir paket yeniden yazılır ve konteynere yönlendirilir; bu nedenle paket ana makineye (host) teslim edilmek yerine doğrudan iletilir (forward). Bölgenizdeki services: ve ports: satırları, ana makineye teslim edilen paketleri yönetir. Docker'ın kuralları ise iletim yolunu yönetir ve bu paketleri kabul eder.
Sonuç, sudo firewall-cmd --list-all komutunun 8080 portunu göstermediği ancak başka bir makineden yapılan nc -zv 203.0.113.20 8080 bağlantısının yine de başarılı olduğu bir sunucudur. Docker'ın neler yüklediğine bakın:
sudo iptables -t nat -L DOCKER -nÇözüm, publish bayrağında yatmaktadır. Portu loopback adresine bağlayın ve önüne bir reverse proxy yerleştirin.
docker run -d -p 127.0.0.1:8080:80 nginxKonteyner artık sunucu üzerinde curl http://127.0.0.1:8080 adresine yanıt verir ve dışarıdan gelen hiçbir isteği kabul etmez. Ubuntu kullanıcıları, Docker konteynerlerinin portları neden doğrudan ufw üzerinden yayınladığı konusunda açıklanan aynı sorunla karşılaşırlar. Rocky ve AlmaLinux'un temel depolarında sunduğu root yetkili Podman da portları aynı NAT yaklaşımıyla yayınlar; bu nedenle bölge listesine güvenmek yerine başka bir makineden test yapın.
Yeniden başlatma sonrası kalıcılık ve karşılaşacağınız hatalar
sudo systemctl is-enabled firewalld
sudo systemctl status firewalldenabled ve active (running) tam olarak ihtiyacınız olan komutlardır. Çalışan ancak etkinleştirilmemiş bir güvenlik duvarı, sizi yalnızca ilk yeniden başlatmaya kadar korur. Bu kontrol, yeni bir VPS üzerindeki ilk on dakika içerisinde yapılması gerekenler listesinde, SSH anahtarları ve güncellemelerin hemen yanında yer almalıdır.
Ham nftables komutları ve firewalld birlikte çalışmaz. firewalld, inet firewalld adlı bir tabloyu yönetir. sudo nft flush ruleset bu tabloyu silerse sunucu tüm trafiğe açık hale gelir; ancak firewall-cmd --list-all, çekirdekteki gerçek durumu değil kendi bildiğini raporladığı için hala yapılandırmanızın aktif olduğunu gösterir. sudo firewall-cmd --reload kuralları yeniden yükler. Kuralları, bir yeniden yükleme sonrasında da geçerli kalmaları için firewall-cmd ile yazın.
Tek sunucuda iki güvenlik duvarı yöneticisi. ufw veya iptables-services yazılımlarını firewalld ile birlikte kurmak, birbirlerinden habersiz kural yazan iki programın çakışmasına neden olur; kazanan, en son başlatılan servis olur. Birini seçin. Rocky ve AlmaLinux üzerinde dağıtım desteğine sahip olan firewalld'dur.
Sunucunun önündeki sağlayıcı güvenlik duvarı. Birçok VPS paneli ayrı bir ağ güvenlik duvarı sunar. Eğer --list-all bir portun açık olduğunu gösteriyor ancak dışarıdan bağlantı hala başarısız oluyorsa, sunucu üzerinde değişiklik yapmadan önce panel ayarlarını kontrol edin. Bu durum tersi için de geçerlidir: panelde açık olan bir kural, firewalld paketi reddettiği sürece işlevsiz kalır.
sudo kullanmadan firewall-cmd çalıştırmak. Her değişiklik root yetkisi gerektirir. Yetki olmadan istek, yetkilendirme denetimi tarafından reddedilir ve hiçbir şey değiştirilmez; bu durum ilk bakışta komutun göz ardı edildiği izlenimini verebilir.
Altı komut günlük işlerin çoğunu karşılar: durumu okumak için --list-all, bir portu açmak için --permanent --add-service veya --add-port, kapatmak için --permanent --remove-service, kaydedilen dosyayı uygulamak için --reload ve denemelerden sonra ayarları kalıcı kılmak için --runtime-to-permanent. Bölge public, bayrak --permanent'tir ve en güvenilir kontrol başka bir makine üzerinden yapılandır.
FAQ
firewalld kuralım yeniden başlatma sonrasında neden kayboldu?
Kural yalnızca çalışma zamanı (runtime) yapılandırmasına eklendi. sudo firewall-cmd --add-service=http anında uygulanır ancak /etc/firewalld/zones/public.xml içindeki kayıtlı yapılandırmaya dokunulmadığı için yeniden yükleme veya sistem açılışında silinir. --permanent ekleyin ve ardından sudo firewall-cmd --reload komutunu çalıştırın. Manuel olarak eklediğiniz kuralları kalıcı hale getirmek için, canlı yapılandırmayı kayıtlı dosyaya kopyalayan sudo firewall-cmd --runtime-to-permanent komutunu kullanın.
--permanent ile kural ekledikten sonra neden hiçbir şey değişmiyor?
Çünkü --permanent dosyayı yazar ancak çalışan güvenlik duvarına müdahale etmez. sudo firewall-cmd --reload ile kayıtlı yapılandırma çekirdeğe yüklenene kadar port kapalı kalır. sudo firewall-cmd --list-services ile sudo firewall-cmd --permanent --list-services çıktılarını karşılaştırın: Eğer kayıtlı listede olup canlı listede olmayan bir girdi varsa, eksik olan işlem yeniden yüklemedir.
--add-service mi yoksa --add-port mu kullanmalıyım?
Çalıştırdığınız servis için bir isim tanımlıysa --add-service kullanın. Bu, niyetinizi belirtir ve sudo firewall-cmd --info-service=https komutu bu ismin hangi portları kapsadığını tam olarak gösterir. Servisiniz tanımlı değilse veya standart olmayan bir portta dinleme yapıyorsa --add-port kullanın. ssh servisi yalnızca 22/tcp portunu ifade eder; bu nedenle 2222 portuna taşınan bir SSH için --add-port=2222/tcp ve o port için bir SELinux etiketi gerekir.
firewall-cmd portun kapalı olduğunu gösterirken Docker container'ıma neden erişilebiliyor?
Yayınlanan bir port, Docker'ın kendi NAT kuralları tarafından yeniden yazılır ve container'a iletilir. Paket ana makineye (host) asla teslim edilmez; bir bölgenin servis ve port listeleri ise yalnızca ana makineye teslim edilen paketleri kapsar. Container internetten yanıt verirken --list-all hiçbir şey göstermez. Bunun yerine docker run -d -p 127.0.0.1:8080:80 nginx ile loopback adresine yayın yapın ve önüne bir reverse proxy yerleştirin.
Rocky Linux üzerinde firewalld yerine ufw kurabilir miyim?
Aynı sunucuda iki farklı güvenlik duvarı yöneticisi birbirinden habersiz kural yazar; hangi kuralların geçerli kalacağı, hangi servisin en son başladığına bağlıdır. firewalld, Rocky Linux ve AlmaLinux üzerinde desteklenen araçtır, halihazırda yüklüdür ve ufw'nin kullanacağı aynı nftables altyapısını yönetir. Varsayılan bölgeyi ve --permanent bayrağını bir kez öğrendiğinizde aracın tamamına hakim olursunuz.