Abilitazione dell'accesso specifico con iptables su Debian

1

Gestisco un server Debian che ospita diversi contenitori Docker ma funziona anche come router e gateway Internet. Ho problemi a ottenere l'accesso SSH dall'esterno (indirizzi ip specifici) che funzionano sull'host (non nei contenitori docker.) L'accesso ai contenitori Docker funziona perfettamente.

Posso vedere con una nmap dall'interno della mia rete all'IP locale e il mio IP esterno che la porta è aperta anche se sembra aperta solo abilitando ssh su quella porta. Quindi se imposto la porta SSH in sshd_config come 5501 e riavvia il demone ssh, una nmap su quella porta mostra che la porta è aperta, se cambio la porta a 22 mostra che la porta è aperta anche se non ho ho cambiato qualcosa nel mio script iptables, quindi le mie preoccupazioni oltre a non essere in grado di raggiungere il server da IP esterni separati è che lo script deve essere configurato in modo aperto.

Un comando iptables -L -a non elenca la porta per SSH (5501), anche se elenca tutte le altre porte nello script. È perché non ho una tabella per le regole per l'host stesso? La ricerca di stackoverflow per domande simili non sembra richiedere un tavolo?

Di seguito è riportato lo script completo delle tabelle IP.

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
    
posta Tony 14.06.2016 - 08:26
fonte

0 risposte

Leggi altre domande sui tag