αΩ

Des 𝞹-pes, du sudo maso & la main sur l'hacker !

Outils pour utilisateurs

Outils du site


server:config_start

Sécurisation du serveur hôte

Ce sont des notes qu'un pro prendrait pour du brouillon. Comme en plus je ne mets pas vraiment à jour cette partie : regardez chez Octopuce dont c'est le métier :-).

Firewall

Ici, il s'agit de paramétrer un firewall en utilisant la commande iptables. L'idée est de limiter l'accès au serveur sur les seuls ports choisis. On peut créer un fichier firewall qui contiendra les règles pour iptables :

#!/bin/sh

# Vider les tables actuelles
iptables -t filter -F

# Vider les règles personnelles
iptables -t filter -X

# Interdire toute connexion entrante et sortante
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# ---

# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Autoriser loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

# ---

# SSH In/out
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

# IRC In/out
iptables -t filter -A INPUT -p tcp --dport 6667 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 6667 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 6697 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 6697 -j ACCEPT

# DNS In/Out
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

# NTP Out
#iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT

# SERVEUR WEB :

# HTTP + HTTPS Out
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT

# HTTP + HTTPS In
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT

Pour activer le script :

On copie le script dans /etc/init.d/, on marque le fichier comme exécutable1) et on exécute :

$ sudo /etc/init.d/firewall

On vérifie que tout fonctionne correctement en accédant aux ports qui nous intéressent. On peut aussi faire que le script soit exécuté au démarrage :

$ sudo update-rc.d firewall defaults

Ou éventuellement, le retirer de la liste :

$ sudo update-rc.d firewall remove

alsacreations - firewall iptables


Fail2ban

Ce programme est fait pour contrôler les connexions sur le serveur et pour bannir les IP suivant des critères spécifiques (tentatives de connexion, temps entre les tentatives, etc…). Pour l'installer :

$ sudo apt-get install fail2ban 

Il y a deux commandes principales : fail2ban-server et fail2ban-client. Le serveur doit être opérationnel en continue (redémarrer après installation et vérifier qu'il démarre automatiquement). Le client permet de venir consulter l'état du serveur.

$ sudo fail2ban-server -b

Extrait du man fail2ban-client :

[...]
COMMAND
              BASIC

       start  starts the server and the jails

       reload reloads the configuration

       reload <JAIL>
              reloads the jail <JAIL>

       stop   stops all jails and terminate the server

       status gets the current status of the server

       ping   tests if the server is alive
[...]

Vérifier l'état du serveur via fail2ban-client :

$ sudo fail2ban-client status
Status
|- Number of jail:	3
`- Jail list:		apache, ssh, ssh-ddos

On peut vérifier l'état de chaque prison2) :

$ sudo fail2ban-client status <JAIL>
:!: Il est conseillé de copier le fichier /etc/fail2ban/jail.conf dans /etc/fail2ban/jail.local, et de modifier dans ce dernier les paramètres. Ce fichier jail.local sera automatiquement lu lors de l'initialisation de fail2ban.

Certificat HTTPS

Dans mon cas, via Let's Encrypt qui permet une certification gratuite et renouvelable tout les 3 mois.

Une fois que l'on a un certificat valide, il s'agit de paramétrer notre serveur pour éviter les failles de sécurité, notamment au niveau des cipher suites3). Dans mon cas, j'utilise encore un serveur Apache et cette config se situe au niveau du fichier /etc/letsencrypt/options-ssl-apache.conf qui est inclus dans la conf générale d'apache4).

Configuration SSL

SSLEngine on

SSLOptions +StrictRequire

# Enable TLSv1.2, disable SSLv3.0, TLSv1.0 and TLSv1.1
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1

# Enable modern TLS cipher suites
SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256

# The order of cipher suites matters
SSLHonorCipherOrder     on

# Disable TLS compression
SSLCompression          off

Cipher Suite:

ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256

https://www.ssllabs.com/

1)
chmod +x
2)
aka jail
3)
je traduis par chaîne de chiffrement
4)
ie,/etc/apache2/sites-enabled/default-ssl.conf
/home/duke/www/dukeart/wiki/data/pages/server/config_start.txt · Dernière modification: 2020/05/28 18:11 par duke