Preparar servidor VPS Debian 13

debian13
Table of Contents

Post instal·lació de servidor linux debian 13, i configuració de seguretat.

$ fastfetch
        _,met$$$$$gg.          debian@vps-58a7ea55
     ,g$$$$$$$$$$$$$$$P.       -------------------
   ,g$$P""       """Y$$.".     OS: Debian GNU/Linux 13 (trixie) x86_64
  ,$$P'              `$$$.     Host: OpenStack Nova (19.3.2)
',$$P       ,ggs.     `$$b:    Kernel: Linux 6.12.57+deb13-cloud-amd64
`d$$'     ,$P"'   .    $$$     Uptime: 55 mins
 $$P      d$'     ,    $$P     Packages: 417 (dpkg)
 $$:      $$.   -    ,d$$'     Shell: bash 5.2.37
 $$;      Y$b._   _,d$P'       Terminal: /dev/pts/1
 Y$$.    `.`"Y$$$$P"'          CPU: 4 x Intel Core (Haswell, no TSX) (4) @ 2.39 GHz
 `$$b      "-.__               GPU: Cirrus Logic GD 5446
  `Y$$b                        Memory: 409.91 MiB / 7.58 GiB (5%)
   `Y$$.                       Swap: Disabled
     `$$b.                     Disk (/): 1.59 GiB / 73.62 GiB (2%) - ext4
       `Y$$b.                  Local IP (ens3): **.**.***.*/32
         `"Y$b._               Locale: es_ES.UTF-8
             `""""

Actualitzar

sudo apt update && sudo apt upgrade

Instal·lar locals

sudo dpkg-reconfigure locales
sudo apt-get install locales-all

rsyslog

sudo apt-get install --reinstall rsyslog

ssh

Canvi de port

sudo vim /etc/ssh/sshd_config

- # Port 22
+ Port 3333 # El que vulguis en realitat.

Reiniciem servei:

sudo systemctl restart sshd

Ara per entrar de nou haurem d'especificar el port.

ssh -p port user@server

Fins i tot afegir-lo en el ~/.ssh/config per no haver-ho d'especificar tot el
rato.

Host server
    IdentityFile ~/.ssh/id_rsa
    User ubuntu
    Hostname server.com
    Port 1111

Clau ssh

Copiar clau pública al servidor per poder entrar sense contrasenya.

ssh-copy-id -i ~/.ssh/CLAU USUARI@SERVIDOR

sshd_config

Configuració més que recomanada:

Si activem aquestes regles tenir en compte que heu de tenir configurat
prèviament la clau ssh en el vostre ordinador i afegida al servidor.

PermitRootLogin no        # No es permet accés a root des de ssh.
AllowUsers USER1 USER2    # Llista d'usuaris que sí poden entrar.
PasswordAuthentication no # Només permetem entrar amb clau ssh.

Servidor de correu

sudo apt install postfix

Seleccionem "Internet site"

i posem el nom del servidor smtp.

Configuració de postfix

Configurem servidor de correu per poder rebre correus d'avís.

/etc/postfix/main.cf

Modifiquem configuració perquè no accepti correu de l'exterior.

inet_interfaces = loopback-only

/etc/aliases

mailer-daemon: postmaster
postmaster: root
root: EL_TEU_EMAIL
logcheck: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

Activem els nous àlies i reiniciem servidor postfix.

sudo newaliases
sudo systemctl restart postfix

Enviar correu.

sudo apt-get install mpack
echo "Test" > /tmp/test.txt
mpack -s 'test' /tmp/test.txt el_teu@email.com

logcheck

sudo apt install logcheck

Configuració de logcheck

sudo vim /etc/logcheck/logcheck.conf

Modifiquem:

SENDMAILTO="EL_TEU_EMAIL"
MAILASATTACH=1

Editam el fitxer /etc/logcheck/ignore.d.server/custom

Tot i que es pot posar el nom que es vulgui.

.*.from\ 251.red-79-157-159.dynamicip.rima-tde.net*
.*Synchronized\ to\ time\ server*
.*.\[UFW\ BLOCK\]*
.*filtering\ via\ arp/ip/ip6tables\ is\ no\ longer\ available*
.*Initializing\ XFRM\ netlink\ socket*
.*Netfilter\ messages\ via\ NETLINK*
.*ctnetlink\ v0.93:\ registering\ with\ nfnetlink.*
.*systemd-udevd*
.*networkd-dispatcher*
.*systemd-networkd*
.*IPv6:*
.*Link\ UP*
.*entered\ promiscuous\ mode*
.*entered\ blocking\ state*
.*can\ be\ used\ to\ set\ a\ preferred\ IP\ address*
.*Network\ configuration\ changed*
.*docker0*
.*eth0*
.*snapd*
.*containerd*
.*ovpn-server.*peer\ info*
.*ovpn-server.*VERIFY\ OK*
.*ovpn-server.*Initial\ packet*
.*ovpn-server.*Connection\ Initiated*
.*ovpn-server.*Control\ Channel*

.*.from\ 251.red-79-157-159.dynamicip.rima-tde.net*

Evitam que ens avisi ja que es tracta dels nostres clients de nextcloud intentant connectar quan està l'ordinador de casa apagat.

.*.Synchronized\ to\ time\ server*.ntp.ubuntu.com*

Servidor actualitzant l'hora del sistema.

.*.\[UFW\ BLOCK\]*

Ips bloquejades, són massa.

Provam la sortida:

sudo -u logcheck logcheck -o -t

Referències:

http://somebooks.es/recibir-informes-sobre-sucesos-de-ubuntu-server-18-04-lts-con-logcheck/

Actualitzacions de seguretat automàtiques

sudo dpkg-reconfigure --priority=low unattended-upgrades

Referències:

https://help.ubuntu.com/community/AutomaticSecurityUpdates

Tallafoc

sudo apt install ufw

sudo ufw allow http
sudo ufw allow https
sudo ufw allow [SSH PORT]
sudo ufw disable && sudo ufw enable

Status

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)

Veure regles del tallafoc:

sudo iptables -L -n --line-numbers

Veure IPs bloquejades:

sudo iptables -L -n --line-numbers | grep REJECT

fail2ban

Evitar accessos no autoritzats al servidor.

sudo apt-get install fail2ban

Copiam configuració per defecte a fitxer personalitzat.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Editar configuració:

sudo vim /etc/fail2ban/jail.local

Podem afegir una llista d'IPs perquè siguin ignorades:

ignoreip = 127.0.0.1/8 ::1

Afegim regles per als wordpress:

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
bantime  = 1h

[wordpress]
enabled  = true
filter   = wordpress
logpath  = /var/log/nginx/*.log
port     = 80,443
bantime  = 1h

Cream fitxer /etc/fail2ban/filter.d/wordpress.conf i afegim:

# Fail2Ban filter for WordPress
[Definition]
failregex =  - - \[(\d{2})/\w{3}/\d{4}:\1:\1:\1 -\d{4}\] "POST /wp-login.php HTTP/1.1" 200
ignoreregex =

Reiniciem:

sudo systemctl restart fail2ban

Veure estat:

$ sudo fail2ban-client status

Status
|- Number of jail:  3
`- Jail list:  ssh, sshd, wordpress

$ sudo fail2ban-client status ssh
Status for the jail: ssh
|- Filter
|  |- Currently failed: 3
|  |- Total failed: 11
|  `- File list:   /var/log/auth.log
`- Actions
   |- Currently banned: 5
   |- Total banned: 6
   `- Banned IP list:  104.248.176.46 106.12.125.140 163.172.166.223 37.187.181.182 51.68.89.100

Des de systemd:

sudo systemctl status fail2ban

Consultar logs de fail2ban

Nombre de vegades que han estat bloquejades les IPs:

zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c

Referències:

Varis

Lynis

Lynis ens genera un informe molt complet sobre l'estat del nostre servidor i
ens dona suggeriments.

sudo apt-get install lynis

sodo lynis audit system

chkrootkit

Permet localitzar rootkits.

sudo apt install chkrootkit

sudo chkrootkit

Clamav

sudo apt install clamav clamav-daemon clamav-freshclam clamdscan

Actualitzar base de dades de virus.

sudo freshclam

Evitar que arrenqui a l'inici.

sudo systemctl disable clamav-freshclam.service

Scripts

He realitzat uns petits scripts per tenir una visió de l'estat
del servidor de forma ràpida.

Instal·lar

git clone https://github.com/edumag/magscripts

Els scripts estan separats per temes així que és fàcil eliminar els que no t'interessen o afegir altres.

Instal·lar dependències:

sudo apt-get install chkrootkit clamscan docker

Executar

cd magscripts/servidor
sudo ./magReportServer

Enviament de l'informe.

sudo ./magReportServer > /tmp/report.txt && mpack -s repor /tmp/report.txt  EL_TEU_EMAIL
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

LesOlivex