Servidor SSH mais seguro

Bom... tenho uma máquina Linux com Ip real ligada 24 horas na rede com informações importantes do doutorado. Esta máquina possui um servidor SSH rodando para acesso remoto pois necessito as vezes conectar na mesma de casa. O ideal numa máquina como essa é rodar o menor número possível de servidores, e quando necessitar rodar, deixá-los o mais seguro possível.

Portanto... procurando sobre configurações de segurança no arquivo /etc/ssh/sshd_config encontrei um post muito legal que já compila tudo num único local e explica cada uma das funcionalidades configuradas nos fóruns do ubuntu. Mas no caso do ssh, isso se aplica a qualquer distribuição. Mudando uma coisinha ou outra, o meu arquivo /etc/ssh/sshd_config ficou basicamente assim:

# user modified sshd_config
# See the sshd(8) manpage for details

#### Networking options ####

# Listen on a non-standard port > 1024
Port 50000

# Restrict to IPv4. inet = IPv4, inet6 = IPv6, any = both 
AddressFamily inet

# Listen only on the internal network address
#ListenAddress 192.168.1.0

# Only use protocol version 2
Protocol 2

# Disable XForwarding unless you need it
X11Forwarding no

# Disable TCPKeepAlive and use ClientAliveInterval instead
# to prevent TCP Spoofing attacks
TCPKeepAlive no
ClientAliveInterval 600
ClientAliveCountMax 3

#### Networking options ####


#### Key Configuration ####

# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Use public key authentication
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

# Disable black listed key usage (update your keys!)
# PermitBlacklistedKeys no

#### Key Configuration ####


#### Authentication ####

# Whitelist allowed users
AllowUsers user1 user2

# one minute to enter your key passphrase
LoginGraceTime 60

# No root login
PermitRootLogin no

# Force permissions checks on keyfiles and directories
StrictModes yes

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

# similar for protocol version 2
HostbasedAuthentication no

# Don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no

# Disable challenge and response auth. Unnecessary when using keys
ChallengeResponseAuthentication no

# Disable the use of passwords completly, only use public/private keys
PasswordAuthentication no

# Using keys, no need for PAM. Also allows SSHD to be run as a non-root user
UsePAM no

# Don't use login(1)
UseLogin no

#### Authentication ####


#### Misc ####

# Logging
SyslogFacility AUTH
LogLevel INFO

# Print the last time the user logged in
PrintLastLog yes

MaxAuthTries 2

MaxStartups 10:30:60

# Display login banner
Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

#### Misc ####

Lembrando três coisas importantes: colocar uma porta que não esteja usada num valor muito alto como mostra a linha 7 do código, acrescentar o nome do(s) seu(s) usuário(s) autorizado(s) como mostra a linha 52 do código, e não esquecer de ter sua chave ssh configurada no servidor e sua máquina pessoal, afinal esta configuração não permite login com senhas, apenas com troca de chaves. Para isso você deve gerar um par de chaves em seu computador pessoal e adicionar a chave publica no servidor, mas isso é outro post.

Fonte: http://ubuntuforums.org/showthread.php?t=831372
blog comments powered by Disqus