Apri la porta del firewall su CentOS 7


339

Sto usando CentOS 7 e devo assicurarmi che le porte 2888 e 3888 siano aperte.

Ho letto questo articolo ma questo non ha funzionato perché sul sistema operativo CentOS 7 non è presente alcun iptables savecomando.

Qualcuno mi ha detto che l'URL sopra non è valido per CentOS 7. e dovrei seguire questo . Ma questo articolo non mi è chiaro esattamente quale comando devo eseguire.

Ho anche trovato

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

ma questo non sopravvive ai riavvii.

Quindi, come posso aprire le porte e farlo sopravvivere al riavvio?


Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra fuori tema perché non riguarda la programmazione o lo sviluppo. Consulta quali argomenti posso chiedere qui nel Centro assistenza. Forse Super User o Unix & Linux Stack Exchange sarebbero un posto migliore da chiedere.
17-17

Risposte:


653

Utilizzare questo comando per trovare le zone attive:

firewall-cmd --get-active-zones

Dirà pubblico, dmz o qualcos'altro. Si dovrebbe applicare solo alle zone richieste.

Nel caso di pubblico provare:

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

Quindi ricorda di ricaricare il firewall per rendere effettive le modifiche.

firewall-cmd --reload

In caso contrario, sostituire pubblico per la propria zona, ad esempio, se la propria zona è dmz:

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

29
Ho usato questo comando ma non ha funzionato per me, quello che ha fatto, stava cambiando --zone=dmzin--zone=public
Tom Hall

2
Sì, è utile usare anche il pubblico. Si prega di controllare sotto il comando di Sotsir anche per la correzione.
Ganeshragav,

23
Nessuna delle due risposte principali qui in realtà spiega cosa --permanentfa, dicono solo di farlo. Entrambe sarebbero risposte più complete e utili se fosse spiegato come funziona la risposta. Da una delle risorse del PO: "Le regole possono essere rese permanenti aggiungendo l'opzione --permanent [...]. Se le regole non vengono rese permanenti, devono essere applicate ogni volta dopo aver ricevuto il messaggio di avvio, riavvio o ricarica da firewalld utilizzando D-BUS. "
Ken

9
Non solo abilitare ciecamente le porte in tutte le zone fino a quando non colpisci quella giusta, per favore. Utilizzare firewall-cmd --get-active-zonesper scoprire quale zona viene utilizzata sul proprio sistema. Inoltre, man firewall-cmd.
basic6,

1
Nella lettura della documentazione di Fedora afferma The --permanent option needs to be the first option for all permanent calls. Non ho riscontrato alcun errore utilizzando quanto sopra, ma non sono sicuro che ciò possa causare problemi a qualcun altro.
Marc

113

La risposta di ganeshragav è corretta, ma è anche utile sapere che puoi usare:

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

ma se è un servizio noto, puoi usare:

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

e quindi ricaricare il firewall

firewall-cmd --reload

[Risposta modificata per riflettere il commento di Martin Peter, risposta originale --permanentalla fine della riga di comando]


8
Non farei affidamento sull'uso --permanentdell'opzione alla fine della dichiarazione. La documentazione sottolinea esplicitamente che dovrebbe essere la prima opzione.
Martin Peter,

1
@MartinPeter man firewall-cmdnon fornisce tali indicazioni sulla mia macchina (Fedora 21).
Jonathon Reinhart,

@JonathonReinhart Mi riferisco al Wiki di Fedora FirewallD affermando: The --permanent option needs to be the first option for all permanent calls.
Martin Peter

mi dà firewallD non in esecuzione
Rahul Tathod

50

CentOS (RHEL) 7, ha modificato il firewall in modo firewall-cmdche abbia una nozione di zone simile a una versione Windows di reti pubbliche, domestiche e private. Dovresti guardare qui per capire quale pensi che dovresti usare. EL7 usa publicdi default quindi è quello che usano i miei esempi qui sotto.

Puoi controllare con quale zona stai usando firewall-cmd --list-alle cambiarla firewall-cmd --set-default-zone=<zone>.

Saprai quindi su quale zona consentire un servizio (o porta) su:

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

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

Puoi verificare se la porta è stata effettivamente aperta eseguendo:

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

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

Secondo la documentazione ,

Quando si apportano modifiche alle impostazioni del firewall in modalità permanente, la selezione avrà effetto solo quando si ricarica il firewall o il riavvio del sistema.

È possibile ricaricare le impostazioni del firewall con: firewall-cmd --reload.


26

Fedora, l'ha fatto tramite iptables

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

Sembra funzionare


23

Per visualizzare le porte aperte, utilizzare il seguente comando.

firewall-cmd --list-ports

Usiamo quanto segue per vedere i servizi le cui porte sono aperte.

firewall-cmd --list-services

Usiamo quanto segue per vedere i servizi le cui porte sono aperte e vedere le porte aperte

firewall-cmd --list-all

Per aggiungere un servizio al firewall, utilizziamo il seguente comando, nel qual caso il servizio utilizzerà qualsiasi porta per aprirlo nel firewall.

firewall-cmd --add-services=ntp 

Affinché questo servizio sia aperto in modo permanente, utilizziamo il seguente comando.

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

Per aggiungere una porta, utilizzare il seguente comando

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

Per eseguire il firewall è necessario ricaricare utilizzando il seguente comando.

firewall-cmd --reload

Ya Ali


Sopra "firewall-cmd -add-service = ntp --permanent" dovrebbe essere cambiato come "firewall-cmd --add-service = ntp --permanent"
Maduranga Siriwardena

14

Mentre ganeshragav e Sotsir forniscono approcci corretti e direttamente applicabili, è utile notare che è possibile aggiungere i propri servizi a /etc/firewalld/services. Per ispirazione, guarda/usr/lib/firewalld/services/ dove si trovano i servizi predefiniti di firewalld.

Il vantaggio di questo approccio è che in seguito saprai perché queste porte sono aperte, come le hai descritte nel file di servizio. Inoltre, ora puoi applicarlo a qualsiasi zona senza il rischio di errori di battitura. Inoltre, le modifiche al servizio non dovranno essere applicate a tutte le zone separatamente, ma solo al file di servizio.

Ad esempio, puoi creare /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>

(Per informazioni sulla sintassi, fare man firewalld.service.)

Una volta creato questo file, è possibile firewall-cmd --reloadrenderlo disponibile e quindi aggiungerlo permanentemente in alcune zone con

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

seguito da firewall-cmd --reloadper renderlo attivo immediatamente.


6

Per visualizzare le porte aperte, utilizzare il comando seguente:

firewall-cmd --list-ports

Usiamo quanto segue per vedere i servizi le cui porte sono aperte:

firewall-cmd --list-services

Usiamo quanto segue per vedere i servizi le cui porte sono aperte e vedere le porte aperte:

firewall-cmd --list-all

Per aggiungere un servizio al firewall, utilizziamo il seguente comando, nel qual caso il servizio utilizzerà qualsiasi porta per aprire nel firewall:

firewall-cmd --add-services=ntp 

Affinché questo servizio sia aperto in modo permanente, utilizziamo il seguente comando:

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

Per aggiungere una porta, utilizzare il seguente comando:

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

4

Le risposte migliori qui funzionano, ma ho trovato qualcosa di più elegante nella risposta di Michael Hampton a una domanda correlata. La "nuova" --runtime-to-permanentopzione (firewalld-0.3.9-11 +) firewall-cmdconsente di creare regole di runtime e testarle prima di renderle permanenti:

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

Oppure per ripristinare le modifiche di solo runtime:

$ firewall-cmd --reload

Vedi anche il commento di Antony Nguyen . Apparentemente firewall-cmd --reload potrebbe non funzionare correttamente in alcuni casi in cui le regole sono state rimosse. In tal caso, suggerisce di riavviare il servizio firewalld:

$ systemctl restart firewalld

1

Se hai più porte da consentire in Centos 7 FIrewalld, possiamo usare il seguente comando.

#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]

0

Se hai familiarità con il servizio iptables come in centos 6 o precedenti, puoi comunque utilizzare il servizio iptables con l'installazione manuale:

step 1 => installa epel repo

yum installa epel-release

step 2 => installa il servizio iptables

yum installa iptables-services

step 3 => arresta il servizio firewalld

systemctl stop firewalld

step 4 => disabilita il servizio firewalld all'avvio

systemctl disabilita firewalld

step 5 => avvia il servizio iptables

systemctl avvia iptables

step 6 => abilita iptables all'avvio

systemctl abilita iptables

finalmente ora puoi modificare la tua configurazione di iptables su / etc / sysconfig / iptables.

Quindi -> modifica regola -> ricarica / riavvia.

piace centesimi più vecchi con la stessa funzione di firewalld.


0

Firewalld è un po 'non intuitivo per il veterano di iptables. Per coloro che preferiscono un firewall basato su iptables con una sintassi simile a iptables in un albero facilmente configurabile, prova a sostituire firewalld con fwtree: https://www.linuxglobal.com/fwtree-fLEX-linux-tree-based-firewall/ e quindi eseguire le seguenti operazioni:

 echo '-p tcp --dport 80 -m conntrack --cstate NEW -j ACCEPT' > /etc/fwtree.d/filter/INPUT/80-allow.rule
 systemctl reload fwtree 

0

Ciao in Centos 7 firewall-cmd. Sì, corretto se si utilizza firewall-cmd --zone = public --add-port = 2888 / tcp ma se si ricarica firewal firewall-cmd --reload

la tua configurazione non verrà salvata

devi aggiungere la chiave

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.