By João Peterson on 6 Dec 2022 | 03:00 .
Categories | Linux | Home Lab / Home server | Tutorials | Sysadmin
Tempo de leitura: #
Visualizações: #
Olá leitores, já faz algum tempo, espero encontrar los bem, recentemente adquiri um computador antigo e dele fiz um servidor linux para uso pessoal, e após configura lo desejo imortalizar e transmitir os passos que fiz para instalar e configurar o servidor com sua aplicações e serviços, bem como as dores de cabeça que enfrentei e suas soluções. Gostaria então de expor aqui a configuração inicial do servidor, instalando Archlinux nele e então configurando cesso via ssh.
Sumário
Instalação do ambiente
Estarei utilizando arch linux para esta série, pois é o meu sistema de uso diário e que me sinto mais confortável, porém para uso enterprise e profissional recomendo utilizar o CentOS ou Redhat ou ainda Debian, pela sua estabilidade.
Em minha máquina que será instalada headless, sem periféricos, eu instalei o archlinux conforme o manual oficial. Nada fora do normal aqui, caso deseje um tutorial de instalação completa eu recomendo este video do DistroTube.
Já de cara também instalei as seguintes aplicações:
$ sudo pacman -S {package}
ufw
(firewall)openssh
(shell remoto)
ssh
server
Como nossa máquina será headless devemos habilitar a conexão remota a ela, para isso usaremos o ssh, para começar instale e habilite o serviço:
$ sudo systemctl enable sshd --now
Verifique com o comando:
$ sudo systemctl status sshd
● sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: disabled)
Active: active (running) since ###################; ############
Main PID: ### (sshd)
Tasks: 1 (limit: 3698)
Memory: 5.5M
CPU: 474ms
CGroup: /system.slice/sshd.service
└─### "sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups"
Ele deverá estar active
.
Com isso o daemon será executado e aceitará conexões remotas, neste passo você já pode remover os periféricos da máquina ligar ela a uma tomada onde ficará rodando eternamente, mas antes, cuidado, execute o comando a seguir e lembre do número de endereço MAC da interface de rede padrão.
$ ip a
Se sua máquina possuí interface wifi e de rede ela exibirá três resultados, o primeiro é a interface de retorno para própria máquina, ignore, queremos a interface de rede, geralmente será enp3s0
, ou alguma variação de enp
, e o link/ether
é o endereço MAC, em nosso exemplo: d0:d0:d0:d0:d0:d0
.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether d0:d0:d0:d0:d0:d0 brd ff:ff:ff:ff:ff:ff
inet #################/16 brd ################# scope global noprefixroute enp3s0
valid_lft forever preferred_lft forever
inet6 #################/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ################# brd ff:ff:ff:ff:ff:ff
inet #################/16 brd ################# scope global dynamic noprefixroute wlp2s0
valid_lft 4520sec preferred_lft 4520sec
inet6 #################/64 scope link noprefixroute
valid_lft forever preferred_lft forever
client
Com a máquina já plugada e conectada na mesma rede que seu computador pessoal, devemos então procurar pelo ip a dado, para tal você pode ir ao roteador padrão no navegador, ex: 192.168.0.1
, procurar pela opção DHCP e reserva de endereço, onde então você poderá atribuir um ip estático a seu servidor.
Observação: Recomendo utilizar um computador com linux/mac, nesta série também teremos um computador com archlinux, mas se usar windows baixe e instale o ambiente Msys2 e utilize o terminal Mingw64
para realizar os passos da série, para isso após a instalação, baixe o pacote ssh com:
$ pacman -S ssh
Note que o pacman é o mesmo que do archlinux, mas não confunda com os comandos aqui mostrados para o servidor archlinux
Exemplo de um roteador:
Adicione um endereço ip padrão a máquina e agora temos a máquina jś configurada na rede, por exemplo 192.168.10.10
. Tente dar um ping na máquina e veja se a máquina responde.
$ ping 192.168.10.10
Tente logar via ssh:
$ ssh server_user@192.168.10.10
Em primeiro momento será pedido sua senha, depois se deseja adicionar o host como host conhecido, então você finalmente estará logado.
Para sair a qualquer momento do ssh digite:
$ exit
Agora vamos gerar um par de chaves para você, que serão usadas no lugar das senhas, maior segurança, esse par será diferente da chave padrão id_rsa
e por isso haverão mais passos que o comum, como você possa ter visto pela web.
$ ssh-keygen
E então insira um nome completo como server_key
:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/client_user/.ssh/id_rsa): /home/client_user/.ssh/server_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/client_user/.ssh/server_key
Your public key has been saved in /home/client_user/.ssh/server_key.pub
The key fingerprint is:
SHA256:t4K9dasdsadY+7yTWWadnafyuuh464CDfgd7fDFcZ+U client_user@arch
The key's randomart image is:
+---[RSA 3072]----+
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
|ooo o o oo ooo o |
+----[SHA256]-----+
Com isso você terá uma nova chave privada ~/.ssh/server_key
e uma publica ~/.ssh/server_key.pub
.
Para facilitar a vida vamos criar um alias para o servidor em um novo arquivo, para isto crie o arquivo ~/.ssh/config
e digite o conteúdo a seguir.
~/.ssh/config
:
Host server_name
User server_user
Hostname 192.168.10.10
IdentityFile ~/.ssh/server_key
Port 22
Onde o usuário de login será o usuário do servidor, server_user
, ip, porta, e IdentityFile será nossa chave recém criada.
Agora vamo copiar a chave publica para o servidor com o seguinte comando.
$ ssh-copy-id -i ~/.ssh/server_key server_user@192.168.10.10
E por fim podemos acessar nosso servidor como:
$ ssh server_name
Agora vamos desativar o login via senha e ativar somente autenticação via chave, para isso, estando conectado via ssh ao servidor, edite o arquivo a seguir como root, sudo
, e altere o parâmetro para no
:
$ sudo vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
:
PasswordAuthentication no
Lembre de remover o #
da frente do parâmetro se o mesmo existir.
Tente logar novamente e você continuará conseguindo acessar, mas se tentar acessar como:
$ ssh server_user@192.168.10.10
Você verá que não conseguimos acessar devido a um acesso negado, pois login via senha foi desabilitado.
ufw
Para finalizar a instalação, vamos configurar um firewall, usarei o ufw, que é de simples utilização.
Após a instalação no servidor e estando logado via ssh, execute:
$ sudo systemctl enable ufw --now
E verifique se está rodando:
$ sudo systemctl status ufw
Atenção!, execute os próximos passos a risca, pois em caso de erro fecharemos todas as portas e então a conexão ssh será interrompida para sempre, obrigando você a reconectar os periféricos no servidor e realizar a configuração do firewall do zero
Por hora vamos fechar todas as portas de conexão, para isso execute:
$ sudo ufw default deny
Habilitar ssh:
$ sudo ufw allow 22
$ sudo ufw limit ssh
E por fim habilitar o firewall:
$ sudo ufw enable
Agora saia do ssh e tente reconectar, se der tudo certo todas as portas estarão fechadas exceto do ssh.
Por hora é isto pessoal, você agora tem um servidor archlinux rodando de forma completa, seguro e com acesso restrito via ssh somente para chaves publicas registradas.