Estoy ejecutando un servidor Debian que aloja varios contenedores de Docker, pero también funciona como mi enrutador y mi puerta de enlace de Internet. Estoy teniendo problemas para obtener acceso SSH desde el exterior (ipaddresses específicas) trabajando en el host (no en los contenedores de la ventana acoplable. Todo el acceso a los contenedores de Docker funciona bien.
Puedo ver con un nmap desde el interior de mi red a la IP local y a mi IP externa que el puerto está abierto, aunque parece estar abierto simplemente al habilitar ssh en ese puerto. Entonces, si configuro el puerto SSH en sshd_config
para que sea 5501 y reinicie el demonio ssh, un nmap a ese puerto muestra que el puerto está abierto, si cambio el puerto a 22, muestra que el puerto está abierto aunque no haya Cambié cualquier cosa en mi script de iptables, por lo que mi preocupación, además de no poder acceder al servidor desde una IP externa específica, es que el script está configurado de forma abierta.
Un comando iptables -L -a
no lista el puerto para SSH (5501), aunque enumera todos los otros puertos en el script. ¿Es porque no tengo una tabla para las reglas del host en sí? Al buscar en Stackoverflow preguntas similares, ¿no parece que se necesita una tabla?
A continuación se encuentra mi script de tablas IP completo.
PATH=/usr/sbin:/sbin:/usr/bin:/bin
#!/bin/sh
##################################################################################################
# General variables for this script #
##################################################################################################
SERVER_IP="192.168.0.1"
A="xxx.xxx.xxx.xxx"
B="xxx.xxx.xxx.xxx"
C="xxx.xxx.xxx.xxx"
D="xxx.xxx.xxx.xxx"
E="xxx.xxx.xxx.xxx"
InternalNet="192.168.0.1-192.168.0.100"
##################################################################################################
# Docker stop #
##################################################################################################
service docker stop
##################################################################################################
# Flushing all rules #
##################################################################################################
iptables -F
iptables -X
##################################################################################################
# Setting default filter policy #
##################################################################################################
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
##################################################################################################
# Allow unlimited traffic on loopback #
##################################################################################################
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
##################################################################################################
# Allow unlimited traffic to eth1 (homeserver internal) #
##################################################################################################
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
##################################################################################################
# Allow all traffic form internal to all outbound #
# And all related and established traffic from the internet #
##################################################################################################
iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
##################################################################################################
# Start Docker #
##################################################################################################
service docker start
##################################################################################################
# Create a PRE_DOCKER table #
##################################################################################################
iptables -N PRE_DOCKER
##################################################################################################
# Insert this as the first table on the FORWARD chain. #
##################################################################################################
iptables -I FORWARD -o docker0 -j PRE_DOCKER
#################################################################################################
# Docker internal use #
##################################################################################################
iptables -A PRE_DOCKER -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A PRE_DOCKER -i docker0 ! -o docker0 -j ACCEPT
iptables -A PRE_DOCKER -m state --state RELATED -j ACCEPT
iptables -A PRE_DOCKER -i docker0 -o docker0 -j ACCEPT
##################################################################################################
# Allow specific trafic from specific ips #
##################################################################################################
iptables -I PRE_DOCKER -p tcp -s $A,$B,$C,$D,$E -d $SERVER_IP --dport 19999 -m state --state NEW,ESTABLISHED -j ACCEPT #Netdata
iptables -I PRE_DOCKER -p tcp -s $SERVER_IP -d A,$B,$C,$D,$E t --sport 19999 -m state --state ESTABLISHED -j ACCEPT #Netdata
iptables -I PRE_DOCKER -p tcp -s A,$B,$C,$D,$E -d $SERVER_IP --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT #Tomcat
iptables -I PRE_DOCKER -p tcp -s $SERVER_IP -d A,$B,$C,$D,$E --sport 8080 -m state --state ESTABLISHED -j ACCEPT #Tomcat
iptables -I PRE_DOCKER -p tcp -s A,$B,$C,$D,$E -d $SERVER_IP --dport 8081 -m state --state NEW,ESTABLISHED -j ACCEPT #Phabricator
iptables -I PRE_DOCKER -p tcp -s $SERVER_IP -d A,$B,$C,$D,$E --sport 8081 -m state --state ESTABLISHED -j ACCEPT #Phabricator
##################################################################################################
# Allow access from internet #
##################################################################################################
#HTTPS(443) from internet to docker apache
iptables -A INPUT -p tcp -d $SERVER_IP --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $SERVER_IP --sport 443 -m state --state ESTABLISHED -j ACCEPT
iptables -I PRE_DOCKER -p tcp -d $SERVER_IP --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT #Apache
iptables -I PRE_DOCKER -p tcp -s $SERVER_IP --sport 443 -m state --state ESTABLISHED -j ACCEPT #Apache
##################################################################################################
# Allow specific traffic from specific ips to homeserver #
##################################################################################################
#SSH(on port 5501) from known IPs
iptables -A INPUT -p tcp -s A,$B,$C,$D,$E -d $SERVER_IP --dport 5501 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $SERVER_IP -d A,$B,$C,$D,$E --sport 5501 -m state --state RELATED,ESTABLISHED -j ACCEPT
#Netdata(on port 19999) from known IPS
iptables -A INPUT -p tcp -s A,$B,$C,$D,$E -d $SERVER_IP --dport 19999 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s $SERVER_IP -d A,$B,$C,$D,$E --sport 19999 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -t nat -A PREROUTING -i eth1 -d $SERVER_IP -p tcp --dport 5501 -j DNAT --to-destination 192.168.0.1:5501