Não é possível usar dispositivos SSH dentro da sub-rede

3

Eu tenho três computadores configurados assim:

Masestoutendoproblemasparaentendercomoconfiguraro/etc/network/interfacesparacadadispositivoparaquetodospossamacessaraInternet.

Eutenteiisso:

LoadBalancer:Eth1(Local)address192.168.1.10netmask255.255.255.0network192.168.0.0gateway192.168.1.254#hubEth0address192.168.0.10netmask255.255.255.0network192.168.1.0broadcast192.168.1.255#hubRPi1:address192.168.0.20netmask255.255.255.0network192.168.1.0broadcast192.168.0.10#LoadBalancerEth0gateway192.168.1.10#LoadBalancerEth1RPi2:address192.168.0.30netmask255.255.255.0network192.168.1.0broadcast192.168.0.10#LoadBalancerEth0gateway192.168.1.10#LoadBalancerEth1

Estoutestandoseelesestãoconectadosàinternettentandosshneles,massóconsigosshcomêxitonoLoadBalancer.Vocêconsegueidentificaralgoquepossaestarcausandooproblema?

Eutambémtenteisshingassim:

ssh-t192.168.1.10ssh192.168.0.20

Masnãoestáfuncionando

EditarparaDougSmythies

Eutenteitudooquevocêsugeriuenãohouveerros,masnãofuncionou!Euvoutentaragoracom

EXTIF="eth1"
INTIF="eth0"

O contrário porque eu acho que é?

Portanto, o arquivo RPi1s /etc/network/interfaces é parecido com isto:

auto lo etho
iface eth0 inet static

address 192.168.0.20
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.10
dns-nameservers 8.8.8.8
dns-search google.com

mas infelizmente não posso editar isso agora, pois não estou perto do Pi! E não ficarei por várias semanas.

Eu tentei executar o ping 8.8.8.8 antes de sair e ele disse algo como:

192.168.1.10 network unreachable

De novo e de novo.

Também preciso abrir alguma porta no roteador? Eu configurei para encaminhar as portas 8051 e 8052 para 192.168.1.10.

Ah, eu também editei o arquivo sshd no RPi1 para ouvir a porta 8051

editar 2

Eu tentei novamente:

ssh -p 8051 [email protected]

E recebo o erro:

ssh_exchange_identification: Connection closed by remote host

Eu sinto que estamos nos aproximando!

editar 3

Mas quando eu tento localmente (usando teamviewer para um computador local) para ssh como:

192.168.0.20:8051

Não funciona. O que eu estou supondo é um sinal muito ruim!

sudo netstat -plnt

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      644/rpcbind     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1286/nginx      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1211/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1428/cupsd      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      814/smbd        
tcp        0      0 0.0.0.0:38503           0.0.0.0:*               LISTEN      697/rpc.statd   
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      814/smbd        
tcp6       0      0 :::111                  :::*                    LISTEN      644/rpcbind     
tcp6       0      0 :::80                   :::*                    LISTEN      1286/nginx      
tcp6       0      0 :::22                   :::*                    LISTEN      1211/sshd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      1428/cupsd      
tcp6       0      0 :::445                  :::*                    LISTEN      814/smbd        
tcp6       0      0 :::54661                :::*                    LISTEN      697/rpc.statd   
tcp6       0      0 :::139                  :::*                    LISTEN      814/smbd   
    
por maxisme 08.03.2015 / 17:46

2 respostas

3

De nossa extensa sessão de bate-papo: Sua configuração está / estava sofrendo de: Problemas com o roteador não encaminhando como esperado; Hackers que tentam invadir a porta 22 existente e em funcionamento para o seu computador de balanceamento de carga; ufw sendo ativado, atrapalhando o script do iptables sugerido.

Método de acesso 1: encadeamento de sessões SSH:

Crie uma sessão ssh da maneira usual do seu computador externo para o seu computador balanceador de carga (LB). Use essa sessão para criar uma nova sessão ssh entre o LB e o RPi:

ssh [email protected]

ou, se o RPi tiver sua porta de escuta ssh alterada conforme o método 2 abaixo:

ssh -p 8051 [email protected]

Este método faz NÃO dar acesso à internet do RPi por conta própria.

Método de acesso 2: encaminhamentos de porta encadeada

Você precisará fazer o encaminhamento de porta em dois locais (seu roteador e também em seu balanceador de carga) para poder fazer ssh em seus computadores RPi1 e RPi2, e isso é uma história diferente do que eles podem acessar a Internet ou não . Como você mencionou que já funciona, presumo que o encaminhamento de porta já esteja configurado em seu roteador para ssh no balanceador de carga. Você terá que usar duas portas diferentes para encaminhar, uma para cada RPi1 e RPi2. Eu selecionei arbitrariamente as portas 8051 e 8052, mas você pode alterá-las.

No entanto, antes de começar a pensar em mais encaminhamento de porta, você deve fazer com que seus computadores RPi1 e RPi2 possam acessar a Internet. Você precisará tornar seu balanceador de carga em um roteador. Pode ser um roteador muito simples, assumindo que o roteador em 192.168.1.254 cuida do tipo de firewall.

Corrija seus arquivos de interfaces. Uma sugestão (editada para refletir a versão final):

No LB:

# The loopback network interface
auto lo eth1 eth0
iface lo inet loopback

iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8
dns-search google.com

iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255

RPi1: conforme sua edição. RPi2: O mesmo, exceto para o endereço IP.

Primeiro, desative o ufw, já que neste caso não foi adicionado nenhum valor e está em conflito com o que queremos fazer:

sudo ufw disable

Agora, aqui está um conjunto de regras iptables para testar (editar foi testado por Maximilian, funciona bem):

#!/bin/sh
FWVER=0.01
#
# Maximilian rule set 2015.03.08 Ver:0.01
#     Port forward to RPi1 and RPi2
#     and be a NAT router for them also.
#
#     This may conflict with other stuff on the cluster computer,
#     I don't know.
#     If so, this may need to be merged somehow with whatever.
#
#     The router needs to be configured to forward ports 8051
#     and 8052 to 192.168.1.10
#     In turn, 192.168.1.10 will forward them again with this rule set.
#
#     run as sudo
#

echo "Loading Maximilian rule set version $FWVER..\n"

# The location of the iptables program
#
IPTABLES=/sbin/iptables

#Setting the EXTERNAL and INTERNAL interfaces and addresses for the network
#
EXTIF="eth1"
INTIF="eth0"
EXTIP="192.168.1.10"
INTIP="192.168.0.10"
RPI1="192.168.0.20"
RPI2="192.168.0.30"
UNIVERSE="0.0.0.0/0"

echo "  External Interface: $EXTIF  Internal Interface: $INTIF  External IP: $EXTIP  Internal IP: $INTIP  RPi1: $RPI1  RPi2: $RPI2"

#CRITICAL:  Enable IP forwarding since it is disabled by default
#
echo Enabling forwarding...
echo "1" > /proc/sys/net/ipv4/ip_forward

#Clearing any previous configuration
#
echo "  Clearing any existing rules and setting default policy to ACCEPT.."
$IPTABLES -P INPUT ACCEPT
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -F FORWARD
$IPTABLES -t nat -F
# Delete user defined chains
$IPTABLES -X
# Reset all IPTABLES counters
$IPTABLES -Z
# While my references do not have it, I think this is needed.
$IPTABLES -t nat -Z

$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8051 -j DNAT --to-destination $RPI1:8051
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTIF --dport 8052 -j DNAT --to-destination $RPI2:8052

#
# FORWARD rules would only be if the default policy is not ACCEPT
#

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP

echo Maximilian rule set version $FWVER done.

Verifique fazendo um ping de um RPi:

ping 8.8.8.8

Se isso funcionar, tente acessar pela internet via ssh. Por exemplo, se o endereço IP externo do seu roteador é 1.2.3.4:

ssh -p 8051 [email protected]

Obviamente, você terá que configurar seu servidor SSH RPi1 para escutar na porta 8051, e seu servidor SSH RPi2 para escutar na porta 8052.

Quando estiver satisfeito com o script iptables e quiser que ele carregue automaticamente, edite as interfaces / etc / network / e adicione um comando de pré-inicialização (torne o local e nome do arquivo o que você usou):

# The loopback network interface
auto lo eth1 eth0
iface lo inet loopback
pre-up /home/maximilian/iptable

iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.254
dns-nameservers 8.8.8.8
dns-search google.com

iface eth0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255

Ataques de senha SSH com problemas paralelos:

Agora, para a sua questão de hackers tentando invadir via ataque de senha SSH, eu uso esse truque, que tem sido extremamente eficaz há anos. No entanto, observe que outros sugerirão usar uma porta diferente e usar chaves em vez de senhas. Eu faço assim porque gosto de estudar os ataques:

# Allow any related traffic coming back to the server in.
#
#
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state ESTABLISHED,RELATED -j ACCEPT
# Secure Shell on port 22.
#
# Dynamic Badguy List. Detect and DROP Bad IPs that do password attacks on SSH.
# Once they are on the BADGUY list then DROP all packets from them.
#$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
#$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 5400 --name BADGUY_SSH -j DROP
# Sometimes make the lock time very long. Typically to try to get rid of coordinated attacks from China.
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
$IPTABLES -A INPUT -i $EXTIF -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
$IPTABLES -A INPUT -i $EXTIF -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT

Mas tenha cuidado para não se trancar, como fiz comigo mesmo quando estou fora em viagens de negócios. Note que eu faço uma outra mudança. Eu edito o sshd.conf e adiciono isto:

#Limit the number of bad passwords per connection to 2. Default is 6.
#Then the iptables connection counter will kick in sooner to drop
#password attack hackers.
MaxAuthTries 2
    
por Doug Smythies 08.03.2015 / 23:00
0

Acrônimos

  • O ponto de entrada é o roteador
  • O recurso OUT / Target é Rpi N
  • LB - Balanceador de carga

Para ficar claro

Quanto ao início, o pensamento de que você não pode se conectar ao RPi de fora não significa que a Internet não seja acessível a partir do próprio RPi. Então é "mau" cheque.

Você pode se conectar facilmente ao RPi de LB, apenas ssh em LB e de LB ssh a qualquer RPi que você quiser.

Agora, sobre coisas mais complexas

Aqui estão duas tarefas:

a) fornecer acesso à internet para RPis (RPi - > INET)

LB:

    A rota padrão
  • deve ser definida por meio do endereço IP local
  • O
  • encaminhamento deve ser ativado no kernel
  • firewall deve permitir o encaminhamento

RPi:

  • como gateway pode ser usado ip do cluster, como dns - qualquer servidor dns.

b) fornecer acesso da internet / roteador para RPIs (IN - > RPis)

Entre os pontos IN e OUT está presente LB, como resultado IN não verá o RPis diretamente. Para resolver seu problema, sua sub-rede ip do cluster precisa ser roteada por LB.

Então, se você:

  • modificar a tabela de rotas no roteador (IN), exemplo: route add -net 192.168.0.0 máscara de rede 255.255.255.0 gw 192.168.1.10
  • permite o encaminhamento de pacotes no nível do kernel (LB): net.ipv4._ip_forward = 1
  • permite o encaminhamento no firewall LB

    você estará bem com o acesso a IN - > RPi. Depois disso, você poderá fazer o encaminhamento de porta para o RPi a partir do IN (roteador) diretamente.

Tudo isso foi realizado com o pensamento de que o seu LB está no meio.

Como uma variante mais simples, você pode conectar seu comutador ao roteador diretamente e construir sua topologia de rede em uma rede de alcance único.

Dica:

não use ssh como testes ou netstat para verificação de porta. Atualmente você tem problemas com conectividade entre redes, então traceroute, comandos de rota de IN - > RPi, RPi - > IN, RPi - > INET dará mais informações sobre o seu problema

    
por Reishin 11.03.2015 / 01:39