Eu tenho uma situação muito estranha com a minha conexão ssh. Toda vez que eu conecto ao meu servidor, qualquer que seja o meu ip externo, a conexão tem como fonte o ip externo do servidor.
Exemplo de exemplo
Server S.O.: PCLinuxOS
Client ip: [C.C.C.C]
Server ip: [S.S.S.S]
Após a conexão bem-sucedida do ssh, eu executo o comando "last" e recebo isso:
username pts/0 [S.S.S.S] Wed Jan 29 19:29 still logged in
Este é o resultado do netstat procurando pela porta 22:
$ netstat -atn | egrep '(:22)'
tcp 0 96 192.168.1.34:22 [S.S.S.S]:31685 ESTABLISHED
Não consigo encontrar o ip do cliente [C.C.C.C] em qualquer lugar.
Eu não teria nenhum problema em particular sobre isso, mas agora vem a melhor parte.
Eu encontrei um ataque no meu servidor dentro do auth.log:
Jan 27 12:55:42 localhost sshd[2295]: Invalid user a from [S.S.S.S]
Jan 27 12:55:42 localhost sshd[2295]: input_userauth_request: invalid user a [preauth]
Jan 27 12:55:42 localhost sshd[2299]: Invalid user a from [S.S.S.S]
Jan 27 12:55:42 localhost sshd[2299]: input_userauth_request: invalid user a [preauth]
Jan 27 13:49:58 localhost sshd[17917]: Invalid user jack from [S.S.S.S]
Jan 27 13:49:58 localhost sshd[17917]: input_userauth_request: invalid user jack [preauth]
Jan 27 13:50:07 localhost sshd[17923]: Invalid user ibsadmin from [S.S.S.S]
Jan 27 13:50:07 localhost sshd[17923]: input_userauth_request: invalid user ibsadmin [preauth]
Após esse ataque, o resultado é que o daemon do fail2ban inserirá o IP do servidor [S.S.S.S] na lista banida e não consigo mais conectar ao servidor.
O servidor está atrás de um roteador com um encaminhamento de porta NAT na porta ssh. O problema não está presente quando eu me conecto ao servidor de dentro da minha LAN, o IP correto é mostrado neste caso.
Este é o meu arquivo sshd_config:
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_IDENTIFICATION LC_ALL
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AuthorizedKeysFile .ssh/authorized_keys
ChallengeResponseAuthentication no
ClientAliveInterval 60
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
IgnoreRhosts yes
KeyRegenerationInterval 1h
LoginGraceTime 30
MaxAuthTries 2
MaxSessions 4
MaxStartups 10:30:60
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
Port 22
PubkeyAuthentication yes
RSAAuthentication yes
StrictModes yes
Subsystem sftp /usr/lib64/ssh/sftp-server
TCPKeepAlive yes
UseDNS no
UsePAM no
UsePrivilegeSeparation yes
X11Forwarding yes
Tenho certeza de que não tive esse problema há um mês, mas não consigo descobrir o que mudou.
EDITAR:
Este é o resultado do comando iptables -L:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp -- anywhere anywhere tcp dpt:ssh
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere