Protección de servidor Linux. Que facer primeiro

Protección de servidor Linux. Que facer primeiro
Habib M'henni/Wikimedia Commons, CC BY-SA

Hoxe en día, crear un servidor nun hospedaxe é cuestión dun par de minutos e uns poucos clics do rato. Pero inmediatamente despois do lanzamento, atópase nun ambiente hostil, porque está aberto a toda Internet como unha moza inocente nunha discoteca rockeira. Os escáneres atoparano rapidamente e detectarán miles de bots con guión automático que percorren a rede buscando vulnerabilidades e configuracións incorrectas. Hai algunhas cousas que debes facer despois do lanzamento para garantir a protección básica.

Contido

Usuario non root

O primeiro paso é crear un usuario non root para ti. A cuestión é que o usuario root privilexios absolutos no sistema, e se lle permite a administración remota, entón fará a metade do traballo para o hacker, deixándolle un nome de usuario válido.

Polo tanto, cómpre crear outro usuario e desactivar a administración remota a través de SSH para root.

O comando inicia un novo usuario useradd:

useradd [options] <username>

Despois engádese un contrasinal para el co comando passwd:

passwd <username>

Finalmente, este usuario debe engadirse a un grupo que teña dereito a executar comandos elevados sudo. Dependendo da distribución de Linux, estes poden ser grupos diferentes. Por exemplo, en CentOS e Red Hat, o usuario engádese ao grupo wheel:

usermod -aG wheel <username>

En Ubuntu engádese ao grupo sudo:

usermod -aG sudo <username>

Chaves en lugar de contrasinais SSH

A forza bruta ou as fugas de contrasinais son un vector de ataque estándar, polo que é mellor desactivar a autenticación de contrasinal en SSH (Secure Shell) e usar a autenticación de clave no seu lugar.

Existen varios programas para implementar o protocolo SSH, como lsh и dropbear, pero o máis popular é OpenSSH. Instalando o cliente OpenSSH en Ubuntu:

sudo apt install openssh-client

Instalación do servidor:

sudo apt install openssh-server

Iniciando o daemon SSH (sshd) no servidor Ubuntu:

sudo systemctl start sshd

Inicia automaticamente o daemon en cada inicio:

sudo systemctl enable sshd

Nótese que a parte do servidor de OpenSSH inclúe a parte do cliente. É dicir, a través openssh-server pode conectarse a outros servidores. Ademais, desde a súa máquina cliente, pode iniciar un túnel SSH desde un servidor remoto a un host de terceiros e, a continuación, o host de terceiros considerará o servidor remoto como a fonte das solicitudes. Unha característica moi útil para enmascarar o teu sistema. Consulte o artigo para obter máis detalles "Consellos prácticos, exemplos e túneles SSH".

Nunha máquina cliente, normalmente non ten sentido instalar un servidor completo para evitar a posibilidade de conexión remota a un ordenador (por razóns de seguridade).

Entón, para o teu novo usuario, primeiro debes xerar claves SSH no ordenador desde o que accederás ao servidor:

ssh-keygen -t rsa

A chave pública gárdase nun ficheiro .pub e parece unha cadea de caracteres aleatorios que comeza por ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

A continuación, desde a raíz, cree un directorio SSH no servidor no directorio de inicio do usuario e engada a chave pública SSH ao ficheiro authorized_keys, usando un editor de texto como Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Finalmente, establece os permisos correctos para o ficheiro:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

e cambia a propiedade a este usuario:

chown -R username:username /home/username/.ssh

No lado do cliente, cómpre especificar a localización da clave secreta para a autenticación:

ssh-add DIR_PATH/keylocation

Agora podes iniciar sesión no servidor co nome de usuario usando esta chave:

ssh [username]@hostname

Despois da autorización, pode usar o comando scp para copiar ficheiros, a utilidade sshfs para montar remotamente un sistema de ficheiros ou directorios.

É recomendable facer varias copias de seguridade da clave privada, porque se desactivas a autenticación do contrasinal e a perdes, non terás ningún xeito de iniciar sesión no teu propio servidor.

Como se mencionou anteriormente, en SSH cómpre desactivar a autenticación para root (esta é a razón pola que iniciamos un novo usuario).

En CentOS/Red Hat atopamos a liña PermitRootLogin yes no ficheiro de configuración /etc/ssh/sshd_config e cambialo:

PermitRootLogin no

En Ubuntu engade a liña PermitRootLogin no ao ficheiro de configuración 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Despois de verificar que o novo usuario se autentica coa súa clave, pode desactivar a autenticación do contrasinal para eliminar o risco de fuga de contrasinal ou forza bruta. Agora, para acceder ao servidor, un atacante terá que obter unha clave privada.

En CentOS/Red Hat atopamos a liña PasswordAuthentication yes no ficheiro de configuración /etc/ssh/sshd_config e cambialo así:

PasswordAuthentication no

En Ubuntu engade a liña PasswordAuthentication no para arquivar 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Para obter instrucións sobre como activar a autenticación de dous factores mediante SSH, consulte aquí.

cortalumes

O firewall garante que só o tráfico dos portos que permita directamente irá ao servidor. Isto protexe contra a explotación de portos que están habilitados accidentalmente con outros servizos, o que reduce moito a superficie de ataque.

Antes de instalar un firewall, cómpre asegurarse de que SSH está incluído na lista de exclusións e que non se bloqueará. En caso contrario, despois de iniciar o firewall, non nos poderemos conectar ao servidor.

A distribución de Ubuntu vén con Uncomplicated Firewall (vaia), e con CentOS/Red Hat - firewalld.

Permitindo SSH no firewall en Ubuntu:

sudo ufw allow ssh

En CentOS/Red Hat use o comando firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Despois deste procedemento, pode iniciar o firewall.

En CentOS/Red Hat, inicie o servizo systemd para firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

En Ubuntu usamos o seguinte comando:

sudo ufw enable

Fail2Ban

Servizo Fail2Ban analiza os rexistros no servidor e conta o número de intentos de acceso desde cada enderezo IP. A configuración especifica as regras para cantos intentos de acceso se permiten durante un determinado intervalo, despois do cal este enderezo IP queda bloqueado durante un período de tempo específico. Por exemplo, permitamos 5 intentos fallidos de autenticación SSH nun prazo de 2 horas e, a continuación, bloqueemos o enderezo IP indicado durante 12 horas.

Instalación de Fail2Ban en CentOS e Red Hat:

sudo yum install fail2ban

Instalación en Ubuntu e Debian:

sudo apt install fail2ban

Lanzamento:

systemctl start fail2ban
systemctl enable fail2ban

O programa ten dous ficheiros de configuración: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. As restricións de prohibición especifícanse no segundo ficheiro.

Jail for SSH está habilitado de forma predeterminada coa configuración predeterminada (5 intentos, intervalo 10 minutos, prohibición durante 10 minutos).

[DEFAULT] ignorecommand=bantime=10m findtime=10m maxretry=5

Ademais de SSH, Fail2Ban pode protexer outros servizos no servidor web nginx ou Apache.

Actualizacións automáticas de seguridade

Como sabes, atópanse constantemente novas vulnerabilidades en todos os programas. Despois de que se publique a información, engádense exploits aos paquetes de exploits populares, que son utilizados masivamente por hackers e adolescentes ao escanear todos os servidores seguidos. Polo tanto, é moi importante instalar actualizacións de seguranza en canto aparezan.

No servidor Ubuntu, as actualizacións de seguranza automáticas están activadas de forma predeterminada, polo que non se precisa ningunha acción adicional.

En CentOS/Red Hat cómpre instalar a aplicación dnf-automático e acende o temporizador:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Comprobación do temporizador:

sudo systemctl status dnf-automatic.timer

Cambiando os portos predeterminados

SSH foi desenvolvido en 1995 para substituír telnet (porto 23) e ftp (porto 21), polo que o autor do programa, Tatu Iltonen o porto 22 seleccionado por defecto, e foi aprobado pola IANA.

Por suposto, todos os atacantes saben en que porto se está a executar SSH e escaneano xunto co resto dos portos estándar para descubrir a versión do software, comprobar os contrasinais de root estándar, etc.

Cambiar os portos estándar - ofuscación - varias veces reduce a cantidade de tráfico de lixo, o tamaño dos rexistros e a carga no servidor, e tamén reduce a superficie de ataque. Aínda que algúns criticar este método de "protección a través da escuridade" (seguridade a través da escuridade). A razón é que esta técnica se opón á fundamental protección arquitectónica. Polo tanto, por exemplo, o Instituto Nacional de Estándares e Tecnoloxía dos EUA en "Guía de seguridade do servidor" indica a necesidade dunha arquitectura de servidor aberta: "A seguridade dun sistema non debe depender do segredo da implementación dos seus compoñentes", di o documento.

Teoricamente, cambiar os portos predeterminados vai en contra da práctica da arquitectura aberta. Pero na práctica, a cantidade de tráfico malicioso redúcese, polo que esta é unha medida sinxela e eficaz.

O número de porto pódese configurar cambiando a directiva Port 22 no ficheiro de configuración / etc / ssh / sshd_config. Tamén se indica polo parámetro -p <port> в ssh. Cliente SSH e programas sftp tamén admite a opción -p <port>.

Parámetro -p <port> pódese usar para especificar o número de porto cando se conecta co comando ssh en linux. EN sftp и scp se utiliza un parámetro -P <port> (P maiúscula). A instrución da liña de comandos anula calquera valor dos ficheiros de configuración.

Se hai moitos servidores, case todas estas accións para protexer o servidor Linux pódense automatizar nun script. Pero se só hai un servidor, é mellor controlar manualmente o proceso.

Sobre os dereitos da publicidade

Pide e comeza de inmediato! Creación de VDS calquera configuración e con calquera sistema operativo nun minuto. A configuración máxima permitirache saír ao máximo: 128 núcleos de CPU, 512 GB de RAM, 4000 GB NVMe. Épico 🙂

Protección de servidor Linux. Que facer primeiro

Fonte: www.habr.com