Axiso

Notes

Installation d’un serveur d’hébergement Linux – Debian

Serveur — janvier 2016

Surveillance

Logwatch analysera quotidiennement les journaux du serveur et en générera un résumé de l’activité envoyé par e-mail.

aptitude install -y logwatch

Création de la configuration :

echo "LogDir = /var/log
Output = mail
Format = text
Encode = none
MailTo = $EXTERNAL_EMAIL
MailFrom = Logwatch
Range = yesterday
Detail = Low
Service = All
Mailer = \"/usr/sbin/sendmail -t\"" > /etc/logwatch/conf/logwatch.conf

Filtrage de quelques requêtes récurrentes qui ne viendront plus charger inutilement le rapport :

echo 'cpanel
favicon
mysqladmin
mysqlmanager
phpMyAdmin
phpmyadmin
PMA
pma
roundcube
sqlmanager
typo
w00tw00t
webadmin
websql
xampp' > /etc/logwatch/conf/ignore.conf

Iptables

Ce dispositif de filtrage des connexions limitera les tentatives d’accès à des services non utilisés ou ne devant pas être visibles à partir de l’extérieur :

Création du fichier de configuration :

mkdir -p /etc/iptables
echo '*filter

# connexions refusees
#-A INPUT -s 123.123.123.123 -j DROP

# boucle locale
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable

# connexions etablies
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT

# ftp
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 64000:64999 -j ACCEPT

# ssh
-A INPUT -p tcp -m tcp --dport '"$SSH_PORT"' -j ACCEPT

# http, https
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# smtp
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT

# pop, pops, imap, imaps
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

# rsync
-A INPUT -p tcp -m tcp --dport 873 -j ACCEPT

# reponse au ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# journal des tentatives refusees
#-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 4

# rejet par defaut
-A INPUT -j REJECT
-A FORWARD -j REJECT

-A OUTPUT -j ACCEPT

COMMIT' > /etc/iptables/iptables-start-source

Pour activer les nouvelle règles du pare-feu :

  • on charge le fichier souce dans Iptables
  • on conserve une copie de la configuration compilée

Celle-ci sera ensuite re-chargée dès le démarrage de la connexion réseau lors du lancement du serveur.

iptables-restore < /etc/iptables/iptables-start-source
iptables -L
iptables-save > /etc/iptables/iptables-start
echo '#!/bin/bash
/sbin/iptables-restore < /etc/iptables/iptables-start' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables

Fail2ban

Cette sécurité limitera le nombre de tentatives de connexions erronées afin d’en bannir temporairement les origines :

aptitude install -y fail2ban

Activation des filtres et modification de quelques-uns :

echo '[DEFAULT]
ignoreip = 127.0.0.1
maxretry = 3

[dovecot]
enabled = true
filter = dovecot
port = smtp,ssmtp,pop3,pop3s,imap,imaps
logpath = /var/log/mail.log

[postfix]
enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix
logpath  = /var/log/mail.log

[pure-ftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = pure-ftpd
logpath  = /var/log/syslog

[ssh]
enabled = true
port    = ssh,10666
filter  = sshd
logpath  = /var/log/auth.log' > /etc/fail2ban/jail.local


echo "[Definition]

failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P<HOST>\S*),.*

ignoreregex =" > /etc/fail2ban/filter.d/dovecot.local

echo "[Definition]

_daemon = postfix/(submission/)?smtp(d|s)

failregex = .reject: RCPT from (.*)\[<HOST>\]: 554
            .+lost connection after (.*) from.+\[<HOST>\]$
            .+\[<HOST>\]. SASL LOGIN authentication failed.+

ignoreregex =" > /etc/fail2ban/filter.d/postfix.local

echo "[Definition]

__errmsg = (?:Sorry, cleartext sessions are not accepted on this server)

failregex = pure-ftpd(?:\[\d+\])?: \(.+?@<HOST>\) \[WARNING\] %(__errmsg)s.*$

ignoreregex =" > /etc/fail2ban/filter.d/pure-ftpd.local
service fail2ban restart