79 lines
2.4 KiB
Bash
79 lines
2.4 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
# Variables
|
|||
|
SSH_PORT=2222 # Choisissez un port SSH personnalisé si souhaité
|
|||
|
USER_NAME="user" # Nom d'utilisateur non-root (à remplacer)
|
|||
|
|
|||
|
# Mise à jour des paquets et des dépendances
|
|||
|
echo "Mise à jour des paquets..."
|
|||
|
apt update && apt upgrade -y
|
|||
|
|
|||
|
# Création d'un nouvel utilisateur non-root
|
|||
|
echo "Création d'un utilisateur non-root..."
|
|||
|
adduser $USER_NAME
|
|||
|
usermod -aG sudo $USER_NAME # Ajout de l'utilisateur au groupe sudo
|
|||
|
|
|||
|
# Désactivation de l'accès SSH pour root et configuration d'un port personnalisé
|
|||
|
echo "Configuration du SSH..."
|
|||
|
sed -i "s/#Port 22/Port $SSH_PORT/" /etc/ssh/sshd_config
|
|||
|
sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config
|
|||
|
systemctl reload sshd
|
|||
|
|
|||
|
# Configuration de l'authentification par clé SSH
|
|||
|
echo "Configuration de l'authentification par clé SSH..."
|
|||
|
mkdir -p /home/$USER_NAME/.ssh
|
|||
|
cp ~/.ssh/authorized_keys /home/$USER_NAME/.ssh/authorized_keys
|
|||
|
chown -R $USER_NAME:$USER_NAME /home/$USER_NAME/.ssh
|
|||
|
chmod 700 /home/$USER_NAME/.ssh
|
|||
|
chmod 600 /home/$USER_NAME/.ssh/authorized_keys
|
|||
|
|
|||
|
# Installation et configuration d’UFW (Uncomplicated Firewall)
|
|||
|
echo "Installation et configuration d'UFW..."
|
|||
|
apt install ufw -y
|
|||
|
ufw default deny incoming
|
|||
|
ufw default allow outgoing
|
|||
|
ufw allow $SSH_PORT/tcp # Autorise le port SSH personnalisé
|
|||
|
ufw allow http
|
|||
|
ufw allow https
|
|||
|
ufw enable
|
|||
|
|
|||
|
# Installation et configuration de Fail2ban
|
|||
|
echo "Installation de Fail2ban..."
|
|||
|
apt install fail2ban -y
|
|||
|
|
|||
|
# Création d'un fichier de configuration pour protéger SSH
|
|||
|
echo "Configuration de Fail2ban pour SSH..."
|
|||
|
cat <<EOF > /etc/fail2ban/jail.local
|
|||
|
[DEFAULT]
|
|||
|
bantime = 10m
|
|||
|
findtime = 10m
|
|||
|
maxretry = 5
|
|||
|
|
|||
|
[sshd]
|
|||
|
enabled = true
|
|||
|
port = $SSH_PORT
|
|||
|
logpath = /var/log/auth.log
|
|||
|
EOF
|
|||
|
|
|||
|
# Redémarrage de Fail2ban pour appliquer la configuration
|
|||
|
systemctl restart fail2ban
|
|||
|
|
|||
|
# Désactivation de l’ICMP (ping) pour réduire les risques de scan de réseau
|
|||
|
echo "Désactivation de l'ICMP..."
|
|||
|
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
|
|||
|
sysctl -p
|
|||
|
|
|||
|
# Suppression des services inutiles (optionnel)
|
|||
|
echo "Suppression des services inutiles..."
|
|||
|
apt purge telnet -y
|
|||
|
apt purge rsh-client -y
|
|||
|
apt purge rsh-redone-client -y
|
|||
|
|
|||
|
# Hardening des permissions et des protections système
|
|||
|
echo "Application de paramètres de sécurité supplémentaires..."
|
|||
|
echo "umask 027" >> /etc/profile
|
|||
|
echo "umask 027" >> /etc/bash.bashrc
|
|||
|
chmod 700 /boot
|
|||
|
|
|||
|
echo "Configuration de sécurité terminée avec succès."
|