Merge pull request 'Update bootstrap.sh' (#10) from dev into prod

Reviewed-on: #10
This commit was merged in pull request #10.
This commit is contained in:
2026-06-12 17:40:50 +02:00

View File

@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
### 1. VARIABLES #################. VARIABLES
MOTD="/etc/update-motd.d/01-custom" MOTD="/etc/update-motd.d/01-custom"
REBOOTBIN="/usr/sbin/reboot" REBOOTBIN="/usr/sbin/reboot"
REBOOTBINOLD="/usr/sbin/reboot.old" REBOOTBINOLD="/usr/sbin/reboot.old"
@@ -10,16 +10,18 @@ REBOOTHANDLER="/root/scripts/reboot_handler.sh"
CRONTABTMP="/tmp/crontab.root.tmp" CRONTABTMP="/tmp/crontab.root.tmp"
HOSTNAME=$(hostname) HOSTNAME=$(hostname)
KEYFILE="/root/.ssh/$HOSTNAME" KEYFILE="/root/.ssh/$HOSTNAME"
MOTD_TEMP="/etc/update-motd/02-temp" TEMP_SCRIPT="/root/firstlogin.sh"
TEMP_SCRIPT_WRAPPER="root/firstloginwrapper.sh"
TEMP_SCRIPT_CLEANER="root/firstlogincleaner.sh"
## 2. ALIASES #################. ALIASES
echo "alias ll='ls -l --color=auto'" >> ~/.bashrc echo "alias ll='ls -l --color=auto'" >> ~/.bashrc
echo "alias l='ls -lAh --color=auto'" >> ~/.bashrc echo "alias l='ls -lAh --color=auto'" >> ~/.bashrc
source ~/.bashrc source ~/.bashrc
## 3. UPDATE & ESSENTIALS #################. UPDATE & ESSENTIALS
apt update && apt -o Dpkg::Options::="--force-confold" upgrade -y apt update && apt -o Dpkg::Options::="--force-confold" upgrade -y
apt install -y vim inxi fastfetch htop ncdu net-tools apt install -y vim inxi fastfetch htop ncdu net-tools
@@ -56,29 +58,27 @@ fi
EOF EOF
chmod +x $MOTD chmod +x $MOTD
### 4. Création du script first-login #################. Création du script first-login
cat << 'EOF' > $TEMP_SCRIPT
cat << 'EOF' > $MOTD_TEMP
#!/bin/bash #!/bin/bash
RED='\033[0;31m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
HOSTNAME=$(hostname) HOSTNAME=$(hostname)
KEYFILE="/root/.ssh/$HOSTNAME" KEYFILE="/root/.ssh/$HOSTNAME"
echo echo
echo -e "${BLUE}===============================${NC}" echo "==============================="
echo -e "${BLUE} Clé privée SSH à conserver !${NC}" echo " Clé privée SSH à conserver !"
echo -e "${BLUE}===============================${NC}" echo "==============================="
echo echo
cat "${KEYFILE}"
# Affichage dans TON shell
cat "$KEYFILE"
echo echo
echo "${BLUE}===============================${NC}" echo "==============================="
# Suppression de la clé privée # Suppression de la clé privée
rm -f "${KEYFILE}" rm -f "$KEYFILE"
# Durcissement SSH # Durcissement SSH
sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config
@@ -87,11 +87,49 @@ sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/ssh
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd systemctl restart sshd
rm -fr $MOTD_TEMP
EOF
chmod +x $MOTD_TEMP
### 5. Hardening binaries # Nettoyage différé
nohup /root/first-login-cleaner.sh >/dev/null 2>&1 &
exit 0
EOF
chmod +x $TEMP_SCRIPT
cat << 'EOF' > $TEMP_SCRIPT_WRAPPER
#!/bin/bash
if [ -f /root/first-login.sh ]; then
/root/first-login.sh
fi
exit 0
EOF
chmod +x $TEMP_SCRIPT_WRAPPER
cat << 'EOF' > $TEMP_SCRIPT_CLEANER
#!/bin/bash
# Attendre la fin du login
sleep 10
# Supprimer la ligne PAM
sed -i '/first-login-wrapper.sh/d' /etc/pam.d/sshd
# Supprimer les scripts
rm -f /root/first-login.sh
rm -f /root/first-login-wrapper.sh
rm -f /root/first-login-cleaner.sh
exit 0
EOF
chmod +x $TEMP_SCRIPT_CLEANER
echo "auth optional pam_exec.so stdout /root/first-login-wrapper.sh" >> /etc/pam.d/sshd
#################. Hardening binaries
# REBOOT WRAPPER # REBOOT WRAPPER
mv $REBOOTBIN $REBOOTBINOLD mv $REBOOTBIN $REBOOTBINOLD
cat << 'EOF' > $REBOOTBIN cat << 'EOF' > $REBOOTBIN
@@ -112,7 +150,7 @@ EOF
chmod +x $SHUTBIN chmod +x $SHUTBIN
### 6. REBOOT HANDLER #################. REBOOT HANDLER
mkdir -p $SCRIPTSDIR mkdir -p $SCRIPTSDIR
cat << 'EOF' > $REBOOTHANDLER cat << 'EOF' > $REBOOTHANDLER
#!/bin/bash #!/bin/bash