[Linux] Fichier issue.net, motd et personnalisation

 

Fichier issue.net, motd et personnalisation sous Linux
Article original Publié le : 07 septembre 2019

Mise a jour le :

 

Différence entre issue.net et motd,

Les deux fichiers sont utilisés pour afficher une bannière destinée aux connexions SSH

Le fichier issue ou issue.net sera traité a la connexion, idéalement pour prévenir tout accès a un serveur et afficher un message de bienvenue ou d’avertissement.
J’utilise la bannière d’avertissement disponible sur https://wiki.centos.org/fr/TipsAndTricks/BannerFiles

********************************************************************
*                                                                  *
* This system is for the use of authorized users only.  Usage of   *
* this system may be monitored and recorded by system personnel.   *
*                                                                  *
* Anyone using this system expressly consents to such monitoring   *
* and is advised that if such monitoring reveals possible          *
* evidence of criminal activity, system personnel may provide the  *
* evidence from such monitoring to law enforcement officials.      *
*                                                                  *
********************************************************************

 

Pour le motd, il sera traité après la connexion, je m’en sert pour afficher divers infos comme des services a redémarrer

***********************************************************
*                                                         *
* Restart les services Web et Nginx                       *
* systemctl reload php7.3-fpm && systemctl reload nginx   *
*                                                         *
* Restart FW                                              *
* systemctl restart netfilter-persistent                  *
*                                                         *
* Bloquer IP                                              *
* echo 'deny x.x.x.x;' >> /etc/nginx/blocage_ip.conf      *
*                                                         *
***********************************************************

 

Bref ces fichiers sont très utiles et sont assez personnalisables.

Pré requis: doit être déclaré dans le fichier de conf ssh du serveur

$ sudo vim /etc/ssh/sshd_config

Puis ajouter ou dé-commenter

Banner /etc/issue.net

 

Il est aussi possible de créer des fichiers dynamiques

Je fais référence a ce site https://www.tomzone.fr/creation-dun-motd-dynamique/ (Il semble down)

Celui ci est constitué de 2 fichiers, je l’ai un peu personnalisé pour mes besoins

 

Pré-requis

Debian / Ubuntu

$ sudo apt-get install lsb-release

RedHat / CentOS

$ sudo yum install redhat-lsb-core

Désactiver l’affichage par défaut du motd

$ sudo sed -i 's/#PrintMotd yes/PrintMotd no/g' /etc/ssh/sshd_config

 

Créer et renseigner le script comme ci dessous

$ sudo vim /etc/profile.d/dynmotd.sh
#!/bin/bash
# 
# By Thomas Bourcey
# Tomzone.fr
 
# Corrige un problème lors de l'utilisation du scp et de WinSCP
# http://winscp.net/forum/viewtopic.php?t=1510
if [ "\$TERM" != "dumb" ]; then
        # Si un groupe Admin existe alors on active le dynmotd
        \$( which id ) | grep 'admin' > /dev/null
        RETURN=\$?
        if [ \$RETURN = 0 ]; then
                /usr/local/bin/dynmotd;
        # Si root se connecte on active le dynmotd
        elif [ \$EUID = 0 ]; then
                /usr/local/bin/dynmotd;
        # Sinon on affiche un message "standard" pour les simples utilisateurs
        else
                echo ""
                echo ""
                echo "---> Welcome \$USER on \$(hostname)"
                echo ""
                echo "###########################################################################"
                echo "#                                                                         #"
                echo "#  ALERT! You are entering into a secured area! Your IP, Login Time,      #"
                echo "#  Username has been noted and has been sent to the server administrator! #"
                echo "#  This service is restricted to authorized users only. All activities on #"
                echo "#  this system are logged.                                                #"
                echo "#                                                                         #"
                echo "#  Unauthorized access will be fully investigated and reported to the     #"
                echo "#  appropriate law enforcement agencies.                                  #"
                echo "#                                                                         #"
                echo "###########################################################################"
                echo ""
                echo ""
        fi
fi

 

Créer le motd dynamique, et y renseigne les variables et services a monitorer au démarrage

$ sudo vim /usr/local/bin/dynmotd
#!/bin/bash
#
# Author : Thomas Bourcey
# Version: 1.3
#


# Process count
PROCCOUNT=$( ps -Afl | wc -l )
PROCCOUNT=$( expr $PROCCOUNT - 5 )

# Uptime
UPTIME=$(</proc/uptime)
UPTIME=${UPTIME%%.*}
SECONDS=$(( UPTIME%60 ))
MINUTES=$(( UPTIME/60%60 ))
HOURS=$(( UPTIME/60/60%24 ))
DAYS=$(( UPTIME/60/60/24 ))

# État du système
# Nom du serveur (UPPERCASE)
HOSTNAME=$( echo $(hostname)  | tr '[a-z]' '[A-Z]' )
# Adresse IP (list all ip addresses)
IP_ADDRESS=$(echo $(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p' |  sed ':a;N;$!ba;s/\n/ , /g') )
# System : Description of the distribution
SYSTEM=$(echo $(lsb_release -d | awk -F':' '{print $2}' | sed 's/^\s*//g') )
# Kernel release
KERNEL=$( echo $(uname -r) )
# CPU Info
CPU_INFO=$(echo $(more /proc/cpuinfo | grep processor | wc -l ) "x" $(more /proc/cpuinfo | grep 'model name' | uniq |awk -F":"  '{print $2}') )
# Mémoire totale
MEMORY=$(echo $(free -m |grep Mem: | awk -F " " '{print $2}') MO)
# Utilisation mémoire
MEMORY_USED=$(echo $(free -m |grep Mem: | awk -F " " '{print $3}') MO)
# Etat des services
ZIMBRA=$(systemctl status zimbra | awk 'BEGIN { RS = "" } { if ($1) print $16 " " $17 " " $18 " " $19 " " $20 " " $21 " " $22 " " $23 " " $24 " " $25 " " $26 " " $27} ')
IPTABLES=$(systemctl status iptables | awk 'BEGIN { RS = "" } { if ($1) print $16 " " $17 " " $18 " " $19 " " $20 " " $21 " " $22 " " $23 " " $24 " " $25 " " $26 " " $27} ')
OSSEC=$(systemctl status ossec | awk 'BEGIN { RS = "" } { if ($1) print $22 " " $23 " " $24 " " $25 " " $26 " " $27 " " $28 " " $29 " " $30 " " $31 " " $32 " " $33}')


echo -e "
\033[1;31m+++++++++++++++++: \033[0;37mÉtat du système\033[1;31m :+++++++++++++++++++
+ \033[0;37mNom du serveur \033[1;31m= \033[1;32m$HOSTNAME
\033[1;31m+ \033[0;37mAdresse IP \033[1;31m= \033[1;32m$IP_ADDRESS
\033[1;31m+ \033[0;37mOS \033[1;31m= \033[1;32m$SYSTEM
\033[1;31m+ \033[0;37mKernel \033[1;31m= \033[1;32m$KERNEL
\033[1;31m+ \033[0;37mUptime \033[1;31m= \033[1;32m$DAYS days, $HOURS hours, $MINUTES minutes, $SECONDS seconds
\033[1;31m+ \033[0;37mInfo CPU \033[1;31m= \033[1;32m$CPU_INFO
\033[1;31m+ \033[0;37mMémoire totale \033[1;31m= \033[1;32m$MEMORY
\033[1;31m+ \033[0;37mUtilisation mémoire \033[1;31m= \033[1;32m$MEMORY_USED
\033[1;31m+++++++++++++++++: \033[0;37mInfo utilisateur\033[1;31m :++++++++++++++++++
+ \033[0;37mNom d'utilisateur \033[1;31m= \033[1;32mroot
\033[1;31m+ \033[0;37mProcess en cours \033[1;31m= \033[1;32m$PROCCOUNT of 278528 MAX
\033[1;31m+++++++++++++++++: \033[0;37mService en cours\033[1;31m :++++++++++++++++++
\033[1;31m+ \033[0;37mZimbra \033[1;31m= \033[1;32m$ZIMBRA
\033[1;31m+ \033[0;37mIptables \033[1;31m= \033[1;32m$IPTABLES
\033[1;31m+ \033[0;37mOssec \033[1;31m= \033[1;32m$OSSEC
\033[1;31m+++++++++++++++++++++++++++++++++++++++++++++++++++++++\033[0m"

 

Puis on le rend exécutable

$ sudo chmod +x /usr/local/bin/dynmotd

 

Ce qui donne a la connexion au serveur

+++++++++++++++++: État du système :+++++++++++++++++++
+ Nom du serveur = MON_SERVEUR
+ Adresse IP = 120.xxx.xxx.xxx
+ OS = CentOS Linux release 7.6.1810 (Core)
+ Kernel = 3.10.0-957.10.1.el7.x86_64
+ Uptime = 127 days, 2 hours, 12 minutes, 45 seconds
+ Info CPU = 1 x Intel Core Processor (Haswell, no TSX)
+ Mémoire totale = 3854 MO
+ Utilisation mémoire = 3080 MO
+++++++++++++++++: Info utilisateur :++++++++++++++++++
+ Nom d'utilisateur = root
+ Process en cours = 170 of 278528 MAX
+++++++++++++++++: Service en cours :++++++++++++++++++
+ Zimbra = active (running) since Thu 2019-05-02 23:35:28 CEST; 4 months 5 days ago
+ Iptables = active (running) since Thu 2019-05-02 23:31:35 CEST; 4 months 5 days ago
+ Ossec = active (running) since Thu 2019-05-02 23:31:44 CEST; 4 months 5 days ago
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Pour Zimbra on peut aussi afficher la liste des services mais cela peut prendre jusqu’à 30 secondes a lister, du coup c’est pas optimale surtout en cas d’incident !

# Etat des services
ZIMBRA=$(su -l zimbra -c "/opt/zimbra/bin/zmcontrol status")
+++++++++++++++++: État du système :+++++++++++++++++++
+ Nom du serveur = MON_SERVEUR
+ Adresse IP = 120.xxx.xxx.xxx
+ OS = CentOS Linux release 7.6.1810 (Core)
+ Kernel = 3.10.0-957.10.1.el7.x86_64
+ Uptime = 127 days, 2 hours, 12 minutes, 45 seconds
+ Info CPU = 1 x Intel Core Processor (Haswell, no TSX)
+ Mémoire totale = 3854 MO
+ Utilisation mémoire = 3080 MO
+++++++++++++++++: Info utilisateur :++++++++++++++++++
+ Nom d'utilisateur = root
+ Process en cours = 170 of 278528 MAX
+++++++++++++++++: Service en cours :++++++++++++++++++
+ Zimbra = Host mon_serveur_mail.domaine.tld
        amavis                  Running
        antispam                Running
        antivirus               Running
        dnscache                Running
        imapd                   Running
        ldap                    Running
        logger                  Running
        mailbox                 Running
        memcached               Running
        mta                     Running
        opendkim                Running
        proxy                   Running
        service webapp          Running
        snmp                    Running
        spell                   Running
        stats                   Running
        zimbra webapp           Running
        zimbraAdmin webapp      Running
        zimlet webapp           Running
        zmconfigd               Running
+ Iptables = active (running) since Thu 2019-05-02 23:31:35 CEST; 4 months 5 days ago
+ Ossec = active (running) since Thu 2019-05-02 23:31:44 CEST; 4 months 5 days ago
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

Visuellement c’est propre, et cela permet d’avoir une information pertinente rapidement sur l’état du système et des services qui tourne

 

Il est possible aussi de mettre une photo en ascii, Il y a pas mal de site comme celui ci https://www.text-image.com, on upload sa photo et on recupere le contenu en ascii

Reste plus qu’a éditer le fichier motd et d’y copier/coller le contenu.

A la connexion cela donne

 

Bref a chacun sa bannière ..

 

Quelques liens

https://doc.ubuntu-fr.org/motd

https://logd.fr/personnaliser-motd-sur-linux-debian/

https://www.pihomeserver.fr/en/2013/04/29/personnaliser-votre-message-de-connexion-ssh-avec-motd/

https://wiki.centos.org/fr/TipsAndTricks/BannerFiles

 

 

No votes yet.
Please wait...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.