Mudanças entre as edições de "Hardening de SSH em Linux e FreeBSD"

De Wiki BPF
Ir para navegação Ir para pesquisar
(Criar página em branco)
 
Linha 1: Linha 1:
 +
Muitas pessoas acabam negligenciando a segurança de algo muito importante nos servidores, e isso aumenta consideravelmente os riscos de segurança.
  
 +
Aqui irei demonstrar duas técnicas de '''várias que você deve implementar em seu ambiente''', a primeira delas é a criação de uma '''Chave SSH''' para acesso e a segunda uma configuração mais rígida do '''SSH''' em si através do '''sshd_config'''.
 +
 +
Independente se você utiliza alguma distribuição '''Linux''' ou '''FreeBSD''', os comandos e maneiras de configurar são muito similares, diferenciando alguns poucos comandos, portanto, fique tranquilo.
 +
 +
== Propósito ==
 +
A real intenção desse tutorial é te ajudar a aumentar a segurança do seu ambiente, assim tanto você quanto a comunidade da internet ficará agradecida por ter menos um host com alta exposição podendo ser um ativo de ataque.
 +
 +
Ao final você ficará com o seguinte cenário:
 +
 +
# Usuário root não conseguirá mais fazer acesso SSH;
 +
# Apenas os seus usuários sem privilégio poderão fazer o acesso SSH;
 +
# Seu login será exclusivo via SSH, não serão mais utilizados usuário e senha;
 +
# A porta do Servidor SSH estará diferente da padrão;
 +
# Você poderá ter 2 sessões (pode aumentar);
 +
# Desconexão após 600 segundos automático.
 +
 +
== Gerando as Chaves SSH ==
 +
1 - Gere as chaves pública e privada.
 +
 +
Por padrão as chaves serão geradas na pasta .ssh do seu usuário, porém, por boa prática pessoal eu sempre digito o caminho completo incluindo o nome que será atribuído as chaves.
 +
$ ssh-keygen
 +
Enter file in which to save the key (/home/<usuario>/.ssh/id_ed25519): /home/<usuario>/.ssh/<nome-da-chave>
 +
Agora defina uma senha para a chave privada, você tem o poder de não configurar uma senha apenas pressionando Enter, mas é '''altamente recomendável que se configure uma senha'''.
 +
Enter passphrase for "/home/<usuario>/.ssh/<nome-da-chave>" (empty for no passphrase):
 +
Enter same passphrase again:
 +
Por último, você verá as chaves geradas com o nome escolhido e diretório.
 +
Your identification has been saved in /home/<usuario>/.ssh/<nome-da-chave>
 +
Your public key has been saved in /home/<usuario>/.ssh/<nome-da-chave>.pub
 +
2 - Copie o conteúdo da chave pública para o arquivo de chaves autorizadas.
 +
 +
Se você gerou as chaves no próprio servidor, copie o conteúdo da chave pública para o arquivo '''authorized_keys'''. que está no mesmo diretório das chaves criadas, caso o arquivo não exista, quando você executar o comando ele será criado automaticamente.
 +
$ cat ~/.ssh/<nome-da-chave>.pub >> ~/.ssh/authorized_keys
 +
Se você gerou as chaves em seu computador ou em algum outro host FreeBSD ou Linux, copie a chave pública para o diretório do seu usuário com o scp e depois execute o cat como no exemplo acima.
 +
$ scp -P 5902 ~/.ssh/<nome-da-chave>.pub usuario@IP:~/.ssh/
 +
Outra maneira de copiar a chave pública para o servidor é com o comando '''ssh-copy-id'''. Precisa ter a chave privada no mesmo diretório da chave pública.
 +
$ ssh-copy-id -i ~/.ssh/<nome-da-chave>.pub -p 5902 <usuario>@<IP-de-Destino>
 +
Você também pode enviar a chave pública utilizando o FTP FileZilla e copia o conteúdo com o comando cat.
 +
 +
3 - Teste se a conexão vai funcionar.
 +
 +
Se você copiou a chave privada para outro host '''Linux''', por exemplo, o comando abaixo irá te ajudar a testar se tudo está funcionando da maneira correta. Se você quiser verificar localmente, basta inserir o IP da máquina onde você gerou as chaves.
 +
 +
A alteração de permissão para 600 se dá por questões de privacidade, basicamente com o 600 você diz que apenas o seu usuário tem permissão para utilizar essa chave.
 +
$ chmod 600 ~/.ssh/<nome-da-chave>
 +
 +
$ ssh -i ~/.ssh/<nome-da-chave> -p 5902 <usuario>@<IP-de-Destino>
 +
4 - Edite o arquivo que contém as configurações do SSH.
 +
 +
O comando abaixo irá zerar e abrir a edição do arquivo, não tem uma cópia de backup caso você erre alguma linha, por tanto, verifica antes de por em produção se tudo está correto.
 +
# echo > /etc/ssh/sshd_config ; nano /etc/ssh/sshd_config
 +
Abaixo estarão os parâmetros que você deve inserir no arquivo '''sshd_config'''. Altere as linhas de acordo com a sua Porta SSH atual e usuário que terá privilégio para acessar o servidor.
 +
Protocol 2
 +
Port '''<Porta-SSH>'''
 +
LoginGraceTime 30
 +
PermitRootLogin no
 +
StrictModes yes
 +
MaxAuthTries 2
 +
MaxSessions 2
 +
PubkeyAuthentication yes
 +
AuthorizedKeysFile      .ssh/authorized_keys
 +
PasswordAuthentication no
 +
PermitEmptyPasswords no
 +
KbdInteractiveAuthentication no
 +
UsePAM yes
 +
X11Forwarding no
 +
AllowTcpForwarding no
 +
ClientAliveInterval 300
 +
ClientAliveCountMax 2
 +
Banner /etc/banner
 +
Subsystem      sftp    /usr/libexec/sftp-server
 +
AllowUsers erick '''usuarioX usuarioY usuarioZ'''
 +
5 - Crie um banner de aviso.
 +
# nano /etc/banner
 +
Conteúdo do banner:
 +
Equipamento pertencente a empresa '''NOME DA SUA EMPRESA''', acessos nao autorizados serao monitorados, investigados e entregues as autoridades responsaveis.
 +
7 - Recarregue o arquivo de configuração depois das alterações.
 +
 +
Comando para o Linux:
 +
# sudo systemctl restart sshd
 +
Comando para o FreeBSD:
 +
# sudo service sshd reload
 +
8 - Verifique se o serviço está executando na porta configurada.
 +
# sockstat -4 -6 | grep sshd

Edição das 10h31min de 22 de junho de 2026

Muitas pessoas acabam negligenciando a segurança de algo muito importante nos servidores, e isso aumenta consideravelmente os riscos de segurança.

Aqui irei demonstrar duas técnicas de várias que você deve implementar em seu ambiente, a primeira delas é a criação de uma Chave SSH para acesso e a segunda uma configuração mais rígida do SSH em si através do sshd_config.

Independente se você utiliza alguma distribuição Linux ou FreeBSD, os comandos e maneiras de configurar são muito similares, diferenciando alguns poucos comandos, portanto, fique tranquilo.

Propósito

A real intenção desse tutorial é te ajudar a aumentar a segurança do seu ambiente, assim tanto você quanto a comunidade da internet ficará agradecida por ter menos um host com alta exposição podendo ser um ativo de ataque.

Ao final você ficará com o seguinte cenário:

  1. Usuário root não conseguirá mais fazer acesso SSH;
  2. Apenas os seus usuários sem privilégio poderão fazer o acesso SSH;
  3. Seu login será exclusivo via SSH, não serão mais utilizados usuário e senha;
  4. A porta do Servidor SSH estará diferente da padrão;
  5. Você poderá ter 2 sessões (pode aumentar);
  6. Desconexão após 600 segundos automático.

Gerando as Chaves SSH

1 - Gere as chaves pública e privada.

Por padrão as chaves serão geradas na pasta .ssh do seu usuário, porém, por boa prática pessoal eu sempre digito o caminho completo incluindo o nome que será atribuído as chaves.

$ ssh-keygen
Enter file in which to save the key (/home/<usuario>/.ssh/id_ed25519): /home/<usuario>/.ssh/<nome-da-chave>

Agora defina uma senha para a chave privada, você tem o poder de não configurar uma senha apenas pressionando Enter, mas é altamente recomendável que se configure uma senha.

Enter passphrase for "/home/<usuario>/.ssh/<nome-da-chave>" (empty for no passphrase):
Enter same passphrase again:

Por último, você verá as chaves geradas com o nome escolhido e diretório.

Your identification has been saved in /home/<usuario>/.ssh/<nome-da-chave>
Your public key has been saved in /home/<usuario>/.ssh/<nome-da-chave>.pub

2 - Copie o conteúdo da chave pública para o arquivo de chaves autorizadas.

Se você gerou as chaves no próprio servidor, copie o conteúdo da chave pública para o arquivo authorized_keys. que está no mesmo diretório das chaves criadas, caso o arquivo não exista, quando você executar o comando ele será criado automaticamente.

$ cat ~/.ssh/<nome-da-chave>.pub >> ~/.ssh/authorized_keys

Se você gerou as chaves em seu computador ou em algum outro host FreeBSD ou Linux, copie a chave pública para o diretório do seu usuário com o scp e depois execute o cat como no exemplo acima.

$ scp -P 5902 ~/.ssh/<nome-da-chave>.pub usuario@IP:~/.ssh/

Outra maneira de copiar a chave pública para o servidor é com o comando ssh-copy-id. Precisa ter a chave privada no mesmo diretório da chave pública.

$ ssh-copy-id -i ~/.ssh/<nome-da-chave>.pub -p 5902 <usuario>@<IP-de-Destino>

Você também pode enviar a chave pública utilizando o FTP FileZilla e copia o conteúdo com o comando cat.

3 - Teste se a conexão vai funcionar.

Se você copiou a chave privada para outro host Linux, por exemplo, o comando abaixo irá te ajudar a testar se tudo está funcionando da maneira correta. Se você quiser verificar localmente, basta inserir o IP da máquina onde você gerou as chaves.

A alteração de permissão para 600 se dá por questões de privacidade, basicamente com o 600 você diz que apenas o seu usuário tem permissão para utilizar essa chave.

$ chmod 600 ~/.ssh/<nome-da-chave> 
$ ssh -i ~/.ssh/<nome-da-chave> -p 5902 <usuario>@<IP-de-Destino>

4 - Edite o arquivo que contém as configurações do SSH.

O comando abaixo irá zerar e abrir a edição do arquivo, não tem uma cópia de backup caso você erre alguma linha, por tanto, verifica antes de por em produção se tudo está correto.

# echo > /etc/ssh/sshd_config ; nano /etc/ssh/sshd_config

Abaixo estarão os parâmetros que você deve inserir no arquivo sshd_config. Altere as linhas de acordo com a sua Porta SSH atual e usuário que terá privilégio para acessar o servidor.

Protocol 2
Port <Porta-SSH>
LoginGraceTime 30
PermitRootLogin no
StrictModes yes
MaxAuthTries 2
MaxSessions 2
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
Banner /etc/banner
Subsystem       sftp    /usr/libexec/sftp-server
AllowUsers erick usuarioX usuarioY usuarioZ

5 - Crie um banner de aviso.

# nano /etc/banner

Conteúdo do banner:

Equipamento pertencente a empresa NOME DA SUA EMPRESA, acessos nao autorizados serao monitorados, investigados e entregues as autoridades responsaveis.

7 - Recarregue o arquivo de configuração depois das alterações.

Comando para o Linux:

# sudo systemctl restart sshd

Comando para o FreeBSD:

# sudo service sshd reload

8 - Verifique se o serviço está executando na porta configurada.

# sockstat -4 -6 | grep sshd