sexta-feira, 8 de abril de 2022

Servidor Linux Básico - Alternativas ao CentOS

 Introdução

Após as mudanças no projeto CentOS, surgiram algumas opções como o Rocky Linux, AlmaLinux e Oracle Linux, todos são excelentes opções e tem seus defensores. O objetivo desse post é prover uma instalação básica, mostrar alguns comandos para que você se sinta mais confortável e sugerir algumas boas práticas.

Antes de continuarmos

Eu sou da época em que a ajuda e incentivo que a gente recebia era RTFM, fui criado no Slackware, então apesar de gostar de ensinar, algumas coisas permanecem, pois fazem parte da minha formação. Só para citar as principais:
Servidor não tem interface gráfica, a menos que seja uma necessidade da aplicação;
Instalações são feitas sempre partindo-se do Minimal;
Só instale o que for necessário;
Servidor é 64 bits;
Cada aplicação precisa pacotes e ajustes específicos, esse post trata do que você deve fazer em todos os seus servidores. 

Sobre as instalações

Foram utilizadas as versões 8.5 das distribuições; para o Rocky Linux e AlmaLinux, foram utilizadas as ISOs minimal:
 
No caso do Oracle Linux foi utilizada a versão Full ISO:
Porém na seleção de pacotes foi escolhida a opção Instalação Mínima

Um detalhe interessante é que enquanto o Rocky Linux e AlmaLinux utilizam o mesmo Kernel, no caso do Oracle Linux é utilizado um Kernel mais recente:
 
# cat /etc/redhat-release
AlmaLinux release 8.5 (Arctic Sphynx)
Rocky Linux release 8.5 (Green Obsidian)
 
# uname -a
Linux localhost.localdomain 4.18.0-348.20.1.el8_5.x86_64 #1 SMP Thu Mar 10 11:31:47 EST 2022 x86_64 x86_64 x86_64 GNU/Linux

# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
 
# uname -a
Linux localhost.localdomain 5.4.17-2136.305.5.5.el8uek.x86_64 #2 SMP Tue Apr 5 14:05:37 PDT 2022 x86_64 x86_64 x86_64 GNU/Linux

Ajustes Pós Instalação

Partindo do princípio que você fez uma instalação Minimal do Linux escolhido, logou pela primeira vez como root, vamos fazer alguns ajustes.

Parar a execução do firewall:

# systemctl stop firewalld

Desabilitá-lo permanentemente:

# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

Conferir se o mesmo está desabilitado:

# systemctl is-enabled firewalld
disabled


DICA: Você pode ver o status de todos os serviços com o comando abaixo:
# systemctl list-unit-files

Checar o estado do SELinux:

# getenforce
Enforcing

Torna-lo permissivo:

# setenforce 0

Checar o estado do SELinux:

# getenforce
Permissive


DICA: Para desabilitar definitivamente o SELinux edite o arquivo /etc/selinux/config e altere a opção "SELINUX=enforcing" para "SELINUX=disabled". Isso pode ser feito por meio do comando:
# sed -i 's/enforcing/disabled/g' /etc/selinux/config

Observação: Estou desabilitando o Firewall e o SELinux porque cada servidor tem uma finalidade específica e, exige ajustes específicos para essa finalidade, então por padrão desabilito os dois, e se houver necessidade, reabilito e faço os ajustes específicos.

O EPEL - Extra Packages for Enterprise Linux é um repositório oficial com pacotes extras e as últimas versões dos pacotes. Podemos instalá-lo através dos comandos abaixo:
# dnf config-manager --set-enabled powertools

Esse comando deu erro no Oracle Linux, porém não interferiu no restante dos procedimentos. Então se você optou pelo Oracle Linux, pode ignorar o comando acima.

# dnf install epel-release

O RAVEN é um repositório com pacotes adicionais aos do EPEL e/ou versões mais atualizadas do mesmo, dependendo do caso. Ele não funciona se o EPEL não estiver instalado, é um pré-requisito. Para instalar o raven, use o comando abaixo:
# dnf install https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-3.el8.noarch.rpm

Feito isso atualize seu sistema:
# yum update -y

Este último comando vai atualizar todos os pacotes do seu sistema para as versões disponíveis no EPEL e RAVEN.

Dependencias Básicas

Esses são pacotes que precisamos para o dia-a-dia, independente da aplicação desse servidor. Lembre-se um Servidor Web tem necessidades diferentes de um Servidor de FTP.
# dnf install -y rsync  bind-utils mlocate mailx wget net-tools make cmake automake man net-tools

Clamav

Todo servidor tem que ter antivírus? Mas não é Linux? Eu disse que ia lhe sugerir algumas boas práticas, mas são apenas sugestões, este é o meu setup de Servidor Linux 8.
# dnf install -y clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

Precisamos comentar as linhas de exemplo:
# sed -i -e "s/^Example/#Example/" /etc/freshclam.conf
# sed -i -e "s/^Example/#Example/" /etc/clamd.d/scan.conf


E atualizar o clamav:
# freshclam

Editar o arquivo scan.conf:
# vi /etc/clamd.d/scan.conf

E descomentar a linha:
#LocalSocket /var/run/clamd.scan/clamd.sock

Habilitar o Clamav, Inicia-lo e Checar se o processo está ativo:
# systemctl  enable clamd@scan
# systemctl  start clamd@scan
# systemctl  status clamd@scan


Testar a verificação de um arquivo:
# clamdscan -c /etc/clamd.d/scan.conf /etc/hosts

Cron

Deixar um cron padrão para que qualquer um possa editá-lo:
# crontab -e

# Exemplo de uso
# 0     4       *       *       *       <usuario>       who

# Campo         Funcao
# 1o.           Minuto
# 2o.           Hora
# 3o.           Dia do mes
# 4o.           Mes
# 5o.           Dia da semana

# 6o.           Usuario com o qual o comando sera executado <opcional>
# 7o.           Programa para execucao

# Campo                 Valores
# Minuto                 0-59
# Hora                     0-23
# Dia do mes           1-31
# Mes                      1-12
# Dia da semana      0-6 (o "0" eh o domingo), 1 eh a segunda, etc.

# -----------------------------------------------------------------------------------------------
# Roda o update do antivirus todos os dias as 23:00
0 23 * * * /usr/bin/freshclam


Reiniciar o servidor:
#reboot 

Agradecimentos

aboardbr pela dica do Repo Raven ;-) 
Gui pelo insight que me levou a validar o procedimento nas três distribuições