diff --git a/bootstrap.sh b/bootstrap.sh index b8ed2d6..9758cb1 100644 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,6 +1,6 @@ #!/bin/bash -### 1. VARIABLES +#################. VARIABLES MOTD="/etc/update-motd.d/01-custom" REBOOTBIN="/usr/sbin/reboot" REBOOTBINOLD="/usr/sbin/reboot.old" @@ -10,16 +10,18 @@ REBOOTHANDLER="/root/scripts/reboot_handler.sh" CRONTABTMP="/tmp/crontab.root.tmp" HOSTNAME=$(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 l='ls -lAh --color=auto'" >> ~/.bashrc source ~/.bashrc -## 3. UPDATE & ESSENTIALS +#################. UPDATE & ESSENTIALS apt update && apt -o Dpkg::Options::="--force-confold" upgrade -y apt install -y vim inxi fastfetch htop ncdu net-tools @@ -56,29 +58,27 @@ fi EOF chmod +x $MOTD -### 4. Création du script first-login - -cat << 'EOF' > $MOTD_TEMP - +#################. Création du script first-login +cat << 'EOF' > $TEMP_SCRIPT #!/bin/bash -RED='\033[0;31m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color HOSTNAME=$(hostname) KEYFILE="/root/.ssh/$HOSTNAME" echo -echo -e "${BLUE}===============================${NC}" -echo -e "${BLUE} Clé privée SSH à conserver !${NC}" -echo -e "${BLUE}===============================${NC}" +echo "===============================" +echo " Clé privée SSH à conserver !" +echo "===============================" echo -cat "${KEYFILE}" + +# Affichage dans TON shell +cat "$KEYFILE" + echo -echo "${BLUE}===============================${NC}" +echo "===============================" # Suppression de la clé privée -rm -f "${KEYFILE}" +rm -f "$KEYFILE" # Durcissement SSH 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 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 mv $REBOOTBIN $REBOOTBINOLD cat << 'EOF' > $REBOOTBIN @@ -112,7 +150,7 @@ EOF chmod +x $SHUTBIN -### 6. REBOOT HANDLER +#################. REBOOT HANDLER mkdir -p $SCRIPTSDIR cat << 'EOF' > $REBOOTHANDLER #!/bin/bash