Abra el puerto 80 en CentOS 6.5

14

Estoy tratando de abrir el puerto 80 en mi CentOS 6.5, en mi máquina virtual, para poder acceder al apache desde el navegador de mi escritorio.

ingrese la descripción de la imagen aquí

Si echa un vistazo a la captura de pantalla anterior ... He agregado la línea antes de la flecha azul, como está escrito en http://www.cyberciti.biz/faq/linux-iptables-firewall-open-port- 80 / Ahora obtengo la página de prueba de Apache cuando ingreso la dirección IP en mi navegador, pero aún cuando reinicio las iptables, aparece un mensaje "FALLIDO" cuando CentOS intenta aplicar la nueva regla.

¿Alguien sabe una solución para esto? ¿O tengo que ignorar el fracaso?

Erik van de Ven
fuente

Respuestas:

28

En lugar de introducir las reglas manualmente, puede usarlas iptablespara agregar las reglas a las cadenas apropiadas y luego guardarlas. Esto le permitirá depurar las reglas en vivo, confirmando que son correctas, en lugar de tener que agregarlas al archivo como parece estar haciendo.

Para abrir el puerto 80 hago esto:

$ sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo /etc/init.d/iptables save

El último comando guardará las reglas agregadas. Esta es la regla que usaría para abrir el puerto para el tráfico web.

Por qué su regla está causando problemas

Si notas la regla que estás intentando usar:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Tiene una cadena llamada "RH-Firewall-1-INPUT". Si no tiene esta cadena, o un enlace de la INPUTcadena a esta cadena, entonces esta regla nunca será accesible. Esta regla probablemente podría ser así:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

O su INPUTcadena debería vincularse a esta cadena RH-Firewall-1-INPUTcon una regla como esta:

$ sudo iptables --list
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
....

NOTA: Puede ver qué cadenas tiene con este comando:

$ sudo iptables -L| grep Chain
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
...

También es posible que sea necesario modificar los estados para que también se permitan las conexiones existentes.

-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

Además, cuando usa el -Ainterruptor, agrega la regla a la cadena INPUT. Si hay otras reglas anteriores que bloquean y / o interfieren con el alcance de esta regla, nunca se ejecutará. Por lo tanto, es posible que desee moverlo a la parte superior insertando en lugar de agregar, de esta manera:

-I INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --dport 80 -j ACCEPT

Usando la GUI

Los cortafuegos pueden ser bestias complicadas. Por lo tanto, es posible que desee probar la TUI (las TUI son GUI para el terminal).

$ sudo system-config-firewall-tui

Luego puede pasar por las distintas pantallas configurando iptablesreglas.

            ss # 1

            ss # 2

Referencias

slm
fuente
La última regla eliminó todas las reglas anteriores en mi archivo iptables y agregó solo la anterior (sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT). Ahora tampoco puedo acceder a la página de apache desde mi navegador.
Erik van de Ven
1
@ErikVandeVen: lo siento, no lo hice más claro. Las otras reglas que tenía necesitarían agregarse de la misma manera y guardarse (en el momento sam), o puede ir al archivo /etc/sysconfig/iptablesy agregarlas. Las entradas originales deben estar en este archivo, /etc/sysconfig/iptables.save.
slm
Gracias, pude restaurar iptables copiando iptables.save. Pero todavía no pude agregar la regla sin fallar y sin poder abrir la página de prueba de Apache dentro de mi navegador, al mismo tiempo. Echaré un vistazo al tutorial que Riclags ha publicado, primero :)
Erik van de Ven
1
Hombre, no entendí por qué esta respuesta recibió un solo como todavía. Excelente respuesta detallada. Considera mi uno como mil gracias.
Samiron
1
Esa GUI de firewall es un envío de Dios, ¡nunca antes había visto eso!
Matt Fletcher
0

Recientemente instalé CentOS 6.5 como máquina virtual por la misma razón, para usarlo como servidor web virtual. De todos modos, seguí este tutorial muy detallado de la wiki de CentOS . Luego, según la respuesta de @slm, le agregué el puerto 80 y lo guardé usando sudo /etc/init.d/iptables save.

iptables -L -v tiene esta salida:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     any     anywhere             anywhere            
  214 17168 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED 
    1    44 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:ssh 
    0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:http 

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 169 packets, 15164 bytes)
 pkts bytes target     prot opt in     out     source               destination
baktin
fuente
0

Si desea editar la configuración de su firewall pero no está familiarizado iptables, le sugiero que use la system-config-firewall-tuiherramienta si no tiene un servidor X, o bien, use la system-config-firewallherramienta GUI para ello.

ludiegu
fuente