Abra el puerto del firewall en CentOS 7

339

Estoy usando CentOS 7 y tengo que asegurarme de que los puertos 2888 y 3888 estén abiertos.

Leí este artículo pero esto no funcionó porque en el sistema operativo CentOS 7 no hay ningún iptables savecomando.

Alguien me dijo que la URL anterior no es válida para CentOS 7. y debería seguir esto . Pero este artículo no me deja claro exactamente qué comando necesito ejecutar.

Yo tambien encontre

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

pero esto no sobrevive los reinicios.

Entonces, ¿cómo puedo abrir los puertos y hacer que sobreviva los reinicios?

No sabe mucho
fuente
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte los temas sobre los que puedo preguntar aquí en el Centro de ayuda. Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar.
jww

Respuestas:

653

Use este comando para encontrar sus zonas activas:

firewall-cmd --get-active-zones

Dirá public, dmz o algo más. Solo debe aplicar a las zonas requeridas.

En el caso de un intento público:

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

Luego recuerde volver a cargar el firewall para que los cambios surtan efecto.

firewall-cmd --reload

De lo contrario, sustituya public por su zona, por ejemplo, si su zona es dmz:

firewall-cmd --zone=dmz --add-port=2888/tcp --permanent
ganeshragav
fuente
29
Usé este comando pero no funcionó para mí, lo que sí, fue cambiar --zone=dmza--zone=public
Tom Hall el
2
Sí, es útil usar public también. Por favor, compruebe a continuación el comando de Sotsir para la corrección también.
ganeshragav
23
Ninguna de las dos respuestas principales aquí explica realmente lo que --permanenthace, solo dicen que lo hagas. Ambas serían respuestas más completas y útiles si se explicara cómo funciona la respuesta. De uno de los recursos de OP: "Las reglas pueden hacerse permanentes agregando la opción --permanente [...]. Si las reglas no se hacen permanentes, entonces deben aplicarse cada vez que se recibe el mensaje de inicio, reinicio o recarga de firewalld usando D-BUS ".
dKen
99
No solo habilite ciegamente puertos en todas las zonas hasta que toque el correcto, por favor. Úselo firewall-cmd --get-active-zonespara averiguar qué zona se utiliza en su sistema. Además, man firewall-cmd.
basic6
1
Al leer la documentación de fedora , dice The --permanent option needs to be the first option for all permanent calls. No recibí ningún error al usar lo anterior, pero no estoy seguro de si esto puede causar problemas a otra persona.
Marc
113

La respuesta de ganeshragav es correcta, pero también es útil saber que puede usar:

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

pero si es un servicio conocido, puede usar:

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

y luego vuelva a cargar el firewall

firewall-cmd --reload

[Respuesta modificada para reflejar el comentario de Martin Peter, la respuesta original tenía --permanental final de la línea de comando]

Sotsir
fuente
8
No confiaría en usar la --permanentopción al final de la declaración. La documentación señala explícitamente que debería ser la primera opción.
Martin Peter
1
@ MartinPeter man firewall-cmdno da tal indicación en mi máquina (Fedora 21).
Jonathon Reinhart
@JonathonReinhart Me refiero al FirewallD Wiki de Fedora que dice: The --permanent option needs to be the first option for all permanent calls.
Martin Peter
me da firewallD no se ejecuta
Rahul Tathod
50

CentOS (RHEL) 7, ha cambiado el firewall para usarlo, firewall-cmdque tiene una noción de zonas, que es como una versión de Windows de redes públicas, domésticas y privadas. Debes mirar aquí para descubrir cuál crees que deberías usar. EL7 usa publicpor defecto, así que eso es lo que usan mis ejemplos a continuación.

Puede verificar con qué zona está utilizando firewall-cmd --list-ally cambiarla firewall-cmd --set-default-zone=<zone>.

Entonces sabrá en qué zona permitir un servicio (o puerto) en:

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

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

Puede verificar si el puerto se ha abierto realmente ejecutando:

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

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

De acuerdo con la documentación ,

Al realizar cambios en la configuración del firewall en modo Permanente, su selección solo tendrá efecto cuando vuelva a cargar el firewall o el sistema se reinicie.

Puede volver a cargar la configuración del cortafuegos con: firewall-cmd --reload.

Rick Smith
fuente
26

Fedora, lo hizo vía iptables

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

Parece funcionar

Joviano Dias
fuente
23

Para ver los puertos abiertos, use el siguiente comando.

firewall-cmd --list-ports

Usamos lo siguiente para ver servicios cuyos puertos están abiertos.

firewall-cmd --list-services

Usamos lo siguiente para ver servicios cuyos puertos están abiertos y ver puertos abiertos

firewall-cmd --list-all

Para agregar un servicio al firewall, usamos el siguiente comando, en cuyo caso el servicio usará cualquier puerto para abrir en el firewall.

firewall-cmd --add-services=ntp 

Para que este servicio esté permanentemente abierto, utilizamos el siguiente comando.

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

Para agregar un puerto, use el siguiente comando

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

Para ejecutar el firewall se debe volver a cargar con el siguiente comando.

firewall-cmd --reload

Ya Ali

Hasan Barary
fuente
Por encima de "firewall-cmd -add-service = ntp --permanent" debe cambiarse como "firewall-cmd --add-service = ntp --permanent"
Maduranga Siriwardena
14

Si bien ganeshragav y Sotsir proporcionan enfoques correctos y directamente aplicables, es útil tener en cuenta que puede agregar sus propios servicios /etc/firewalld/services. Para inspirarte, mira /usr/lib/firewalld/services/dónde se encuentran los servicios predefinidos de Firewalld.

La ventaja de este enfoque es que más adelante sabrá por qué estos puertos están abiertos, como lo describió en el archivo de servicio. Además, ahora puede aplicarlo a cualquier zona sin riesgo de errores tipográficos. Además, los cambios en el servicio no tendrán que aplicarse a todas las zonas por separado, sino solo al archivo de servicio.

Por ejemplo, puedes crear /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>

(Para obtener información sobre la sintaxis, haga man firewalld.service.)

Una vez creado este archivo, puede firewall-cmd --reloadhacer que esté disponible y luego agregarlo permanentemente a alguna zona con

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

seguido con firewall-cmd --reloadpara activarlo de inmediato.

equaeghe
fuente
6

Para ver los puertos abiertos, use el siguiente comando:

firewall-cmd --list-ports

Usamos lo siguiente para ver servicios cuyos puertos están abiertos:

firewall-cmd --list-services

Usamos lo siguiente para ver servicios cuyos puertos están abiertos y ver puertos abiertos:

firewall-cmd --list-all

Para agregar un servicio al firewall, utilizamos el siguiente comando, en cuyo caso el servicio usará cualquier puerto para abrir en el firewall:

firewall-cmd --add-services=ntp 

Para que este servicio esté permanentemente abierto, utilizamos el siguiente comando:

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

Para agregar un puerto, use el siguiente comando:

firewall-cmd --add-port=132/tcp  --permanent
Hasan Barary
fuente
4

Las mejores respuestas aquí funcionan, pero encontré algo más elegante en la respuesta de Michael Hampton a una pregunta relacionada. La --runtime-to-permanentopción "nuevo" (firewalld-0.3.9-11 +) le firewall-cmdpermite crear reglas de tiempo de ejecución y probarlas antes de hacerlas permanentes:

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

O para revertir los cambios de tiempo de ejecución solamente:

$ firewall-cmd --reload

Ver también el comentario de Antony Nguyen . Aparentemente, firewall-cmd --reload puede no funcionar correctamente en algunos casos donde se han eliminado las reglas. En ese caso, sugiere reiniciar el servicio firewalld:

$ systemctl restart firewalld
Neal Gokli
fuente
1

Si tiene varios puertos para permitir en Centos 7 FIrewalld, entonces podemos usar el siguiente 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]
Vinay Patil
fuente
0

Si está familiarizado con el servicio de iptables como en centos 6 o anterior, aún puede usar el servicio de iptables mediante la instalación manual:

paso 1 => instalar epel repo

yum instalar epel-release

paso 2 => instalar el servicio de iptables

yum instala iptables-services

paso 3 => detener el servicio de firewalld

systemctl stop firewalld

paso 4 => deshabilitar el servicio firewalld al inicio

systemctl deshabilitar firewalld

paso 5 => iniciar el servicio de iptables

systemctl iniciar iptables

paso 6 => habilitar iptables en el inicio

systemctl habilita iptables

Finalmente, ahora puede editar su configuración de iptables en / etc / sysconfig / iptables.

Entonces -> editar regla -> recargar / reiniciar.

me gustan los centos más antiguos con la misma función que firewalld.

dek.tiram
fuente
0

Firewalld es un poco no intuitivo para el veterano de iptables. Para aquellos que prefieren un firewall controlado por iptables con una sintaxis similar a iptables en un árbol configurable fácil, intente reemplazar firewalld con fwtree: https://www.linuxglobal.com/fwtree-flexible-linux-tree-based-firewall/ y luego Haz lo siguiente:

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

Hola en Centos 7 firewall-cmd. Sí, correcto si usa firewall-cmd --zone = public --add-port = 2888 / tcp pero si vuelve a cargar firewal firewall-cmd --reload

su configuración no se guardará

necesitas agregar clave

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

Inv0k-er
fuente