Otwórz port zapory w CentOS 7

339

Korzystam z CentOS 7 i muszę się upewnić, że porty 2888 i 3888 są otwarte.

Przeczytałem ten artykuł, ale to nie zadziałało, ponieważ w systemie operacyjnym CentOS 7 nie ma iptables savepolecenia.

Ktoś powiedział mi, że powyższy adres URL nie jest prawidłowy dla CentOS 7. I powinienem to zrobić . Ale ten artykuł nie wyjaśnia mi dokładnie, jakie polecenie muszę wykonać.

Też znalazłem

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

ale to nie przetrwa restartów.

Jak mogę otworzyć porty i sprawić, by przetrwały restarty?

Nie wie dużo
źródło
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się nie na temat, ponieważ nie dotyczy programowania ani programowania. Zobacz o jakie tematy mogę pytać tutaj w Centrum pomocy. Być może lepiej byłoby zapytać Super User lub Unix & Linux Stack Exchange .
jww

Odpowiedzi:

653

Użyj tego polecenia, aby znaleźć aktywne strefy:

firewall-cmd --get-active-zones

Powie „public”, dmz lub coś innego. Powinieneś ubiegać się tylko o wymagane strefy.

W przypadku publicznego spróbuj:

firewall-cmd --zone=public --add-port=2888/tcp --permanent

Następnie pamiętaj, aby ponownie załadować zaporę, aby zmiany zaczęły obowiązywać.

firewall-cmd --reload

W przeciwnym razie zastąp publiczną strefę, na przykład jeśli twoja strefa to dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
ganeshragav
źródło
29
Użyłem tego polecenia, ale nie działało to dla mnie, zmieniło się --zone=dmzna--zone=public
Tom Hall
2
Tak, przydatne jest również korzystanie z publicznych. Sprawdź również poniższe polecenie Sotsir pod kątem poprawek.
ganeshragav
23
Żadna z dwóch pierwszych odpowiedzi tutaj nie wyjaśnia, co to --permanentrobi, po prostu mówią, aby to zrobić. Oba byłyby bardziej kompletnymi i przydatnymi odpowiedziami, gdyby wyjaśniono, jak działa odpowiedź. Z jednego z zasobów PO: „Reguły można ustawić na stałe, dodając opcję --permanent [...]. Jeśli reguły nie są trwałe, należy je stosować za każdym razem po otrzymaniu komunikatu start, restart lub przeładowanie z zapory ogniowej za pomocą D-BUS. ”
dKen
9
Proszę nie ślepo włączać portów we wszystkich strefach, dopóki nie trafisz na właściwą. Użyj, firewall-cmd --get-active-zonesaby dowiedzieć się, która strefa jest używana w twoim systemie. Ponadto, man firewall-cmd.
podstawowe6
1
W czytaniu dokumentacji fedory stwierdza The --permanent option needs to be the first option for all permanent calls. Nie otrzymałem żadnego błędu przy użyciu powyższego, ale nie jestem pewien, czy może to powodować problemy dla kogoś innego.
Marc
113

Odpowiedź ganeshragav jest prawidłowa, ale warto również wiedzieć, że możesz użyć:

firewall-cmd --permanent --zone=public --add-port=2888/tcp 

ale jeśli jest to znana usługa, możesz użyć:

firewall-cmd --permanent --zone=public --add-service=http 

a następnie ponownie załaduj zaporę

firewall-cmd --reload

[Odpowiedź zmodyfikowana w celu odzwierciedlenia komentarza Martina Petera, oryginalna odpowiedź miała --permanentna końcu wiersza poleceń]

Sotsir
źródło
8
Nie polegałbym na użyciu --permanentopcji na końcu instrukcji. Dokumentacja wyraźnie wskazuje, że powinna to być pierwsza opcja.
Martin Peter
1
@MartinPeter man firewall-cmdnie podaje takich informacji na moim komputerze (Fedora 21).
Jonathon Reinhart
@JonathonReinhart Odnoszę się do Wiki FirewallD Fedory, stwierdzając: The --permanent option needs to be the first option for all permanent calls.
Martin Peter
daje mi firewallD nie działa
Rahul Tathod
50

CentOS (RHEL) 7 zmienił zaporę ogniową, firewall-cmdktóra ma pojęcie stref przypominające wersję Windows publicznych, domowych i prywatnych sieci. Powinieneś zajrzeć tutaj, aby dowiedzieć się, którego z nich powinieneś użyć. EL7 używa publicdomyślnie, więc tego używają moje poniższe przykłady.

Możesz sprawdzić, z której strefy korzystasz firewall-cmd --list-alli zmienić ją firewall-cmd --set-default-zone=<zone>.

Będziesz wtedy wiedział, w której strefie zezwalać na usługę (lub port):

firewall-cmd --permanent --zone=<zone> --add-service=http

firewall-cmd --permanent --zone=<zone> --add-port=80/tcp

Możesz sprawdzić, czy port rzeczywiście został otwarty, uruchamiając:

firewall-cmd --zone=<zone> --query-port=80/tcp

firewall-cmd --zone=<zone> --query-service=http

Zgodnie z dokumentacją ,

Po wprowadzeniu zmian w ustawieniach zapory w trybie Stały wybór zostanie zastosowany tylko po ponownym załadowaniu zapory lub ponownym uruchomieniu systemu.

Można przeładować ustawienia zapory z: firewall-cmd --reload.

Rick Smith
źródło
26

Fedora, zrobiła to za pośrednictwem iptables

sudo iptables -I INPUT -p tcp --dport 3030 -j ACCEPT
sudo service iptables save

Wydaje się działać

Joviano Dias
źródło
23

Aby wyświetlić otwarte porty, użyj następującego polecenia.

firewall-cmd --list-ports

Korzystamy z poniższych, aby zobaczyć usługi, których porty są otwarte.

firewall-cmd --list-services

Korzystamy z poniższych, aby zobaczyć usługi, których porty są otwarte i zobaczyć porty otwarte

firewall-cmd --list-all

Aby dodać usługę do zapory, używamy następującego polecenia, w którym to przypadku usługa użyje dowolnego portu do otwarcia w zaporze.

firewall-cmd --add-services=ntp 

Aby ta usługa była trwale otwarta, używamy następującego polecenia.

firewall-cmd —add-service=ntp --permanent 

Aby dodać port, użyj następującego polecenia

firewall-cmd --add-port=132/tcp  --permanent

Aby uruchomić zaporę ogniową, należy ją ponownie załadować za pomocą następującego polecenia.

firewall-cmd --reload

Ya Ali

Hasan Barary
źródło
Powyżej „firewall-cmd -add-service = ntp --permanent” należy zmienić jako „firewall-cmd -add-service = ntp --permanent”
Maduranga Siriwardena 24.09.2018
14

Chociaż ganeshragav i Sotsir zapewniają prawidłowe i bezpośrednio stosowane podejścia, warto zauważyć, że możesz dodawać własne usługi /etc/firewalld/services. Aby uzyskać inspirację, zobacz /usr/lib/firewalld/services/, gdzie znajdują się predefiniowane usługi firewalld.

Zaletą tego podejścia jest to, że później dowiesz się, dlaczego te porty są otwarte, jak opisano to w pliku usługi. Możesz także zastosować go do dowolnej strefy bez ryzyka literówek. Ponadto zmiany w usłudze nie będą musiały być stosowane do wszystkich stref osobno, ale tylko do pliku usługi.

Na przykład możesz utworzyć /etc/firewalld/services/foobar.xml:

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>FooBar</short>
  <description>
    This option allows you to create FooBar connections between
    your computer and mobile device. You need to have FooBar
    installed on both sides for this option to be useful.
  </description>
  <port protocol="tcp" port="2888"/>
  <port protocol="tcp" port="3888"/>
</service>

(Aby uzyskać informacje o składni, wykonaj man firewalld.service.)

Po utworzeniu tego pliku możesz firewall-cmd --reloadgo udostępnić, a następnie na stałe dodać do jakiejś strefy za pomocą

firewall-cmd --permanent --zone=<zone> --add-service=foobar

a następnie, firewall-cmd --reloadaby od razu było aktywne.

equaeghe
źródło
6

Aby wyświetlić otwarte porty, użyj następującego polecenia:

firewall-cmd --list-ports

Korzystamy z następujących usług, aby zobaczyć usługi, których porty są otwarte:

firewall-cmd --list-services

Używamy następujących danych, aby zobaczyć usługi, których porty są otwarte i zobaczyć porty otwarte:

firewall-cmd --list-all

Aby dodać usługę do zapory, używamy następującego polecenia, w którym to przypadku usługa użyje dowolnego portu do otwarcia w zaporze:

firewall-cmd --add-services=ntp 

Aby ta usługa była trwale otwarta, używamy następującego polecenia:

firewall-cmd -add-service=ntp --permanent 

Aby dodać port, użyj następującego polecenia:

firewall-cmd --add-port=132/tcp  --permanent
Hasan Barary
źródło
4

Najlepsze odpowiedzi tutaj działają, ale znalazłem coś bardziej eleganckiego w odpowiedzi Michaela Hamptona na powiązane pytanie. Opcja „nowa” (firewalld-0.3.9-11 +) --runtime-to-permanent, która firewall-cmdpozwala tworzyć reguły wykonawcze i testować je, zanim zostaną trwałe:

$ firewall-cmd --zone=<zone> --add-port=2888/tcp
<Test it out>
$ firewall-cmd --runtime-to-permanent

Lub, aby cofnąć zmiany tylko w środowisku wykonawczym:

$ firewall-cmd --reload

Zobacz także komentarz Antony'ego Nguyena . Najwyraźniej firewall-cmd --reload może nie działać poprawnie w niektórych przypadkach, gdy reguły zostały usunięte. W takim przypadku sugeruje ponowne uruchomienie usługi zapory ogniowej:

$ systemctl restart firewalld
Neal Gokli
źródło
1

Jeśli masz wiele portów, na które zezwalasz w Centos 7 FIrewalld, możemy użyć następującego polecenia.

#firewall-cmd --add-port={port number/tcp,port number/tcp} --permanent

#firewall-cmd --reload


And check the Port opened or not after reloading the firewall.


#firewall-cmd --list-port


For other configuration [Linuxwindo.com][1]
Vinay Patil
źródło
0

Jeśli znasz serwis iptables, taki jak w Centos 6 lub wcześniejszym, nadal możesz korzystać z serwisu iptables, instalując ręcznie:

krok 1 => zainstaluj repozytorium epel

mniam zainstalować epel-release

krok 2 => zainstaluj usługę iptables

mniam zainstalować iptables-services

krok 3 => zatrzymaj usługę zapory ogniowej

systemctl stop firewalld

krok 4 => wyłącz zaporę ogniową podczas uruchamiania

systemctl wyłącz zaporę ogniową

krok 5 => uruchom usługę iptables

systemctl start iptables

krok 6 => włącz iptables podczas uruchamiania

systemctl włącz iptables

w końcu możesz teraz edytować konfigurację iptables na / etc / sysconfig / iptables.

Więc -> edytuj regułę -> przeładuj / uruchom ponownie.

lubię starsze centos z taką samą funkcją jak firewalld.

dek.tiram
źródło
0

Firewalld jest nieco nieintuicyjny dla weterana iptables. Dla tych, którzy wolą zaporę napędzaną przez iptables o składni podobnej do iptables w łatwym do konfigurowania drzewie, spróbuj zamienić firewalld na fwtree: https://www.linuxglobal.com/fwtree-f Flexible-linux-tree-based-firewall/, a następnie wykonaj następujące czynności:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 
Eric Wheeler
źródło
0

Witaj w Centos 7 firewall-cmd. Tak, poprawne, jeśli używasz firewall-cmd --zone = public --add-port = 2888 / tcp, ale jeśli przeładujesz firewall firewall-cmd --reload

Twoja konfiguracja nie zostanie zapisana

musisz dodać klucz

firewall-cmd --permanent --zone = public --add-port = 2888 / tcp

Inv0k-er
źródło