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.