Pesquisa de site

Série RHCSA: Protegendo SSH, Configurando Nome de Host e Habilitando Serviços de Rede - Parte 8


Como administrador de sistema, você frequentemente terá que fazer logon em sistemas remotos para executar diversas tarefas administrativas usando um emulador de terminal. Você raramente se sentará na frente de um terminal real (físico), então você precisa configurar uma maneira de fazer logon remotamente nas máquinas que você será solicitado a gerenciar.

Na verdade, essa pode ser a última coisa que você terá que fazer diante de um terminal físico. Por motivos de segurança, usar o Telnet para essa finalidade não é uma boa ideia, já que todo o tráfego passa pela rede em texto simples e não criptografado.

Além disso, neste artigo também revisaremos como configurar serviços de rede para iniciar automaticamente na inicialização e aprender como configurar a resolução de rede e de nome de host de forma estática ou dinâmica.

Instalando e protegendo a comunicação SSH

Para que você possa fazer logon remotamente em uma caixa RHEL 7 usando SSH, você terá que instalar o openssh, openssh -clients e openssh-servers. O comando a seguir não apenas instalará o programa de login remoto, mas também a ferramenta de transferência segura de arquivos, bem como o utilitário de cópia remota de arquivos:


yum update && yum install openssh openssh-clients openssh-servers

Observe que é uma boa ideia instalar as contrapartes do servidor, pois você pode querer usar a mesma máquina como cliente e servidor em algum momento ou outro.

Após a instalação, há algumas coisas básicas que você precisa levar em consideração se quiser proteger o acesso remoto ao seu servidor SSH. As configurações a seguir devem estar presentes no arquivo /etc/ssh/sshd_config.

1. Altere a porta onde o daemon sshd irá escutar de 22 (o valor padrão) para uma porta alta (2000 ou superior), mas primeiro certifique-se de que a porta escolhida não esteja sendo usada.

Por exemplo, suponhamos que você escolha a porta 2500. Use netstat para verificar se a porta escolhida está sendo usada ou não:


netstat -npltu | grep 2500

Se netstat não retornar nada, você poderá usar com segurança a porta 2500 para sshd e deverá alterar a configuração da porta no arquivo de configuração da seguinte forma:


Port 2500

2. Permitir apenas o protocolo 2:


Protocol 2

3. Configure o tempo limite de autenticação para 2 minutos, não permita logins root e restrinja ao mínimo a lista de usuários que têm permissão para fazer login via ssh:


LoginGraceTime 2m
PermitRootLogin no
AllowUsers gacanepa

4. Se possível, use autenticação baseada em chave em vez de autenticação por senha:


PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes

Isso pressupõe que você já criou um par de chaves com seu nome de usuário na máquina cliente e o copiou para o servidor conforme explicado aqui.

  1. Habilitar login SSH sem senha

Configurando rede e resolução de nomes

1. Todo administrador de sistema deve estar bem familiarizado com os seguintes arquivos de configuração de todo o sistema:

  1. /etc/hosts é usado para resolver nomes <---> IPs em redes pequenas.

Cada linha no arquivo /etc/hosts tem a seguinte estrutura:


IP address - Hostname - FQDN

Por exemplo,


192.168.0.10	laptop	laptop.gabrielcanepa.com.ar

2. /etc/resolv.conf especifica os endereços IP dos servidores DNS e o domínio de pesquisa, que é usado para completar um determinado nome de consulta para um nome de domínio totalmente qualificado quando nenhum sufixo de domínio é fornecido.

Em circunstâncias normais, você não precisa editar este arquivo, pois ele é gerenciado pelo sistema. No entanto, se você quiser alterar os servidores DNS, lembre-se de que deverá seguir a seguinte estrutura em cada linha:


nameserver - IP address

Por exemplo,


nameserver 8.8.8.8

3. 3. /etc/host.conf especifica os métodos e a ordem pela qual os nomes de host são resolvidos dentro de uma rede. Em outras palavras, informa ao resolvedor de nomes quais serviços usar e em que ordem.

Embora este arquivo tenha várias opções, a configuração mais comum e básica inclui uma linha como segue:


order bind,hosts

O que indica que o resolvedor deve primeiro procurar nos servidores de nomes especificados em resolv.conf e depois no arquivo /etc/hosts para resolução de nomes.

4. /etc/sysconfig/network contém roteamento e informações globais de host para todas as interfaces de rede. Os seguintes valores podem ser usados:


NETWORKING=yes|no
HOSTNAME=value

Onde o valor deve ser o Nome de Domínio Totalmente Qualificado (FQDN).


GATEWAY=XXX.XXX.XXX.XXX

Onde XXX.XXX.XXX.XXX é o endereço IP do gateway da rede.


GATEWAYDEV=value

Em uma máquina com múltiplas NICs, valor é o dispositivo de gateway, como enp0s3.

5. Arquivos dentro de /etc/sysconfig/network-scripts (arquivos de configuração de adaptadores de rede).

Dentro do diretório mencionado anteriormente, você encontrará vários arquivos de texto simples nomeados.


ifcfg-name

Onde name é o nome da NIC retornado por ip link show:

Por exemplo:

Além da interface de loopback, você pode esperar uma configuração semelhante para suas NICs. Observe que algumas variáveis, se definidas, substituirão aquelas presentes em /etc/sysconfig/network para esta interface específica. Cada linha é comentada para esclarecimento neste artigo, mas no arquivo real você deve evitar comentários:


HWADDR=08:00:27:4E:59:37 # The MAC address of the NIC
TYPE=Ethernet # Type of connection
BOOTPROTO=static # This indicates that this NIC has been assigned a static IP. If this variable was set to dhcp, the NIC will be assigned an IP address by a DHCP server and thus the next two lines should not be present in that case.
IPADDR=192.168.0.18
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NM_CONTROLLED=no # Should be added to the Ethernet interface to prevent NetworkManager from changing the file.
NAME=enp0s3
UUID=14033805-98ef-4049-bc7b-d4bea76ed2eb
ONBOOT=yes # The operating system should bring up this NIC during boot

Configurando nomes de host

No Red Hat Enterprise Linux 7, o comando hostnamectl é usado para consultar e definir o nome do host do sistema.

Para exibir o nome do host atual, digite:


hostnamectl status

Para alterar o nome do host, use


hostnamectl set-hostname [new hostname]

Por exemplo,


hostnamectl set-hostname cinderella

Para que as alterações entrem em vigor, você precisará reiniciar o daemon hostnamed (dessa forma, você não precisará fazer logoff e login novamente para aplicar a alteração):


systemctl restart systemd-hostnamed

Além disso, o RHEL 7 também inclui o utilitário nmcli que pode ser usado para a mesma finalidade. Para exibir o nome do host, execute:


nmcli general hostname

e para alterá-lo:


nmcli general hostname [new hostname]

Por exemplo,


nmcli general hostname rhel7

Iniciando serviços de rede na inicialização

Para finalizar, vamos ver como podemos garantir que os serviços de rede sejam iniciados automaticamente na inicialização. Em termos simples, isso é feito criando links simbólicos para determinados arquivos especificados na seção [Instalar] dos arquivos de configuração do serviço.

No caso de firewalld (/usr/lib/systemd/system/firewalld.service):


[Install]
WantedBy=basic.target
Alias=dbus-org.fedoraproject.FirewallD1.service

Para ativar o serviço:


systemctl enable firewalld

Por outro lado, desabilitar o firewalld permite remover os links simbólicos:


systemctl disable firewalld

Conclusão

Neste artigo resumimos como instalar e proteger conexões via SSH para um servidor RHEL, como alterar seu nome e, finalmente, como garantir que os serviços de rede sejam iniciados em bota. Se você perceber que um determinado serviço não foi iniciado corretamente, você pode usar systemctl status -l [service] e journalctl -xn para solucionar o problema.

Sinta-se à vontade para nos informar o que você pensa sobre este artigo usando o formulário de comentários abaixo. Perguntas também são bem-vindas. Estamos ansiosos para ouvir de você!