İçeriğe atla

Kapatmak için ESC tuşuna basın

Firewalld üzerinden port açma

Centos 7 üzerinde bulunan firewall-cmd komutu ile port açmayı bu yazıda bulabilirsiniz

Yazar
Sezer Şanlıkan
Yayın
Güncellendi
Okuma
3 dakika
Görüntülenme
1.494
Firewalld üzerinden port açma
Bu yazıda
  1. Firewalld ile port açma adımları
  2. Port açıldı mı, nasıl doğrulanır?
  3. Port’u yalnız belirli bir IP adresine açmak
  4. Port kapatma ve sık karşılaşılan sorunlar

Firewalld üzerinden port açma, kuralı önce çalışan yapılandırmaya eklemek ve sonra kalıcı hâle getirmekten oluşur. Bu yazıdaki komutlarla CentOS, RHEL ve Fedora gibi firewalld kullanan sistemlerde bir port açacak, açıldığını doğrulayacak ve gerekirse yalnız belirli bir IP adresine sınırlayacaksınız.

firewalld iki ayrı yapılandırma tutar. Runtime hemen geçerli olur ama --reload ya da yeniden başlatmada silinir. Permanent diske yazılır ama reload edilene kadar çalışmaz. Port açıp bir süre sonra kapanmış bulmanızın sebebi çoğu zaman bu ayrımdır.

Firewalld ile port açma adımları

Aşağıdaki komutta yazan 1111 yerine istediğiniz ip adresini yazıp firewall’da public alanında ilgili portu erişime açabilirsiniz.

Komuttaki 1111 IP adresi değil, port numarasıdır. Bu komut port’u public zone’undaki herkese açar. Tek bir IP adresine açmak için aşağıdaki rich rule bölümüne bakın.

firewall-cmd --zone=public --add-port=1111/tcp

Komut başarılıysa success yazar. --zone=public kullanmadan önce arayüzünüzün gerçekten bu zone’da olduğunu kontrol edin, aksi halde kural yanlış zone’a yazılır ve etkisi olmaz.

firewall-cmd --get-active-zones

Ardından aşağıdaki komut ile portun silinmemesi için kayıt edin.

firewall-cmd --runtime-to-permanent

--runtime-to-permanent o anki runtime yapılandırmasının tamamını diske yazar. Deneme için eklediğiniz başka kurallar varsa onlar da kalıcı olur.

Son olarak servisi tekrardan reload edin.

firewall-cmd --reload

Önceki adımı yaptıysanız --reload şart değil, ama kuralın diskten geri geldiğini görmüş olursunuz. Aynı işin diğer yolu kuralı doğrudan permanent yazıp reload etmektir. Tersini yaparsanız, yani kaydetmeden reload ederseniz runtime kuralı silinir.

firewall-cmd --permanent --zone=public --add-port=1111/tcp
firewall-cmd --reload

Port açıldı mı, nasıl doğrulanır?

İlk iki komut firewall tarafını, üçüncüsü kalıcı kaydı, sonuncusu port’u gerçekten dinleyen bir uygulama olup olmadığını gösterir. --query-port çıktısı yes ya da no olur.

firewall-cmd --zone=public --list-ports
firewall-cmd --zone=public --query-port=1111/tcp
firewall-cmd --permanent --zone=public --list-ports
ss -tln

Asıl testi başka bir makineden yapın. nc -vz sunucu-ip 1111 komutu Connection refused veriyorsa paket sunucuya ulaşıyor ama port’u dinleyen uygulama yok. No route to host görüyorsanız firewalld paketi reddediyordur, kural büyük olasılıkla yanlış zone’dadır. Zaman aşımına düşüyorsa paket yolda düşüyordur, araya bulut sağlayıcının security group’u girmiş olabilir.

Port’u yalnız belirli bir IP adresine açmak

Bir veritabanı ya da yönetim port’unu herkese açmak istemiyorsanız rich rule kullanın. 192.0.2.10 örnek adrestir, kendi adresinizi yazın. Aynı port --add-port ile açıksa rich rule bir kısıtlama getirmez, önce o kuralı kaldırın.

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10" port port="1111" protocol="tcp" accept'
firewall-cmd --reload

Port kapatma ve sık karşılaşılan sorunlar

Port’u kapatmak için aynı kuralı --remove-port ile verin.

firewall-cmd --permanent --zone=public --remove-port=1111/tcp
firewall-cmd --reload

Uzak sunucuda çalışırken SSH’tan kilitlenmemek için firewall-cmd --list-all çıktısında ssh servisini ya da özel SSH port’unuzu kontrol edin. Riskli bir kuralı önce süreli deneyebilirsiniz: aşağıdaki kural 5 dakika sonra kendiliğinden kalkar. --timeout yalnız runtime kurallarında çalışır, --permanent ile birlikte kullanılmaz.

firewall-cmd --zone=public --add-port=1111/tcp --timeout=5m
  • FirewallD is not running: daemon kapalı. firewall-cmd --state durumu gösterir, systemctl start firewalld başlatır.
  • ALREADY_ENABLED: port zaten açık, zararsız bir uyarı.
  • Kurallar doğru ama port dışarıdan açık görünüyor: Docker, firewalld’de kendi docker zone’unu ve bu zone’a forward eden docker-forwarding policy’sini oluşturur, publish edilen port bu yüzden public zone kurallarınıza takılmayabilir. Ayrıntı Ubuntu üzerinde Docker kurulumu yazısında var.

firewalld yerine iptables kullanıyorsanız CentOS 7 üzerinde iptables yönetimi yazısına bakın.

Bu konuda devam et

Tümünü gör

Yeni yazılardan haberdar olun

Sunucu, Kubernetes, DevOps ve güvenlik üzerine yeni yazılar ve site duyuruları e-postanıza gelsin. Reklam yok, adresiniz kimseyle paylaşılmaz.

© 2021–2026 Sezer Şanlıkan