Exercice : Défi : VPS, Linux, Web
Pré-requis
Pour réaliser ce défi vous devez :
Disposer d'un VPS sous Linux (VPS Linux)
Savoir accéder à un VPS avec SSH (SSH - Secure Shell)
Avoir installé un serveur web (Apache2 ou Nginx) (Serveurs web)
Savoir utiliser un terminal sous Linux (Le terminal sous Linux)
Savoir convoquer les commandes Linux de base (Commandes de bases sous Linux)
Savoir gérer les fichiers sous Linux (Fonctionnement des fichiers)
Savoir gérer les utilisateurs sous Linux (Les utilisateurs et les groupes)
Question
Utilisez la commande suivante pour savoir si votre VPS dispose d'un serveur SSH en fonctionnement. Pourquoi était-ce prévisible ?
systemctl status ssh
Solution
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-11-03 17:17:26 CET; 1 months 4 days ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 393 (sshd)
Memory: 5.2M
CGroup: /system.slice/ssh.service
└─393 /usr/sbin/sshd -D
Question
Déconnectez-vous de votre serveur et reconnectez-vous.
Utilisez la commande suivante pour voir l'historique du journal de votre serveur SSH. Vérifiez que vous trouvez les informations concernant votre connexion.
journalctl -u ssh --since "10 minutes ago"
Solution
déc. 08 15:09:14 pi-casso sshd[16666]: Accepted publickey for root from 195.83.155.24 port 55555 ssh2: RSA SHA256:MIIEowIBAAKCAQEAnnKY3EQhfxG0Uqm7
déc. 08 15:09:14 pi-casso sshd[16666]: pam_unix(sshd:session): session opened for user admin by (uid=0)
Question
Utilisez à nouveau la commande journalctl pour chercher une tentative de connexion non autorisée à votre serveur (de nombreux robots essaie de se connecter au hasard, mais vous n'en trouverez pas si votre serveur est actif depuis trop peu de temps).
Solution
Exemple :
déc. 08 15:31:20 pi-rate sshd[16764]: Invalid user jerry from 103.231.46.66 port 43088
déc. 08 15:31:20 pi-rate sshd[16764]: Received disconnect from 103.231.46.66 port 43088:11: Bye Bye [preauth]
Question
Générez une tentative de connexion non autorisée à votre serveur, puis constatez-la dans le journal.
Installez puis utilisez la commande whois ip pour savoir d'où vient cette tentative d'accès.
Solution
Côté client
ssh hacker@195.83.155.24
hacker@195.83.155.24: Permission denied (publickey).
Côté serveur
journalctl -u ssh --since "10 minutes ago"
déc. 08 15:18:37 pi-casso sshd[16777]: Invalid user hacker from 195.154.56.24 port 49999
déc. 08 15:18:37 pi-casso sshd[16777]: Connection closed by invalid user hacker 195.154.56.24 port 49999 [preauth]
Installation (si whois n'est pas déjà présente sur la machine)
apt install whois
Pour savoir d'où vient l'IP 195.83.155.24
whois 195.83.155.24
inetnum: 195.83.155.0 - 195.83.155.255
netname: FR-UTC-COMPIEGNE
descr: UTC - Universite de Technologie de Compiegne
[...]
Question
Créez sur votre VPS une page web à l'adresse /defiweb/index.html qui affiche le résultat des questions précédentes.
Question
Consultez votre page web depuis un navigateur web de votre choix pour vérifier qu'elle fonctionne bien.
Sur votre VPS, à l'aide de la commande suivante consultez le journal applicatif d'Apache afin de vérifiez :
qui s'est connecté en dernier au serveur web
quelle ressource a été demandée
ce qu'a répondu le serveur (code HTTP et nombre d'octets)
que c'était bien avec le type de client web que vous avez utilisé
tail -n 10 /var/log/apache2/access.log
Solution
95.216.163.36 - - [08/Dec/2020:14:49:31 +0100] "GET /defiweb/index.html HTTP/1.1" 200 4037 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0"
connexion depuis l'IP
95.216.163.36
demande de la ressource
/defiweb/index.html
le serveur a répondu 200 (OK) et il a renvoyé 4037 octets.
ici avec un client Firefox sous Ubuntu
Question
Ajoutez à votre page /defiweb/index.html une copie d'écran de votre navigateur web qui accède à la page /defiweb/index.html de votre serveur web (c'est une sorte de mise en abîme web).
Question
Modifier le fichier /defiweb/index.html à l'aide de l'éditeur textuel nano (ou d'un autre éditeur textuel) afin d'ajouter un lien (a href
) en fin de page vers le fichier /defilinux/index.html.
Créez sur votre VPS une page web à l'adresse /defilinux/index.html qui est vide pour le moment auquel vous ajouterez progressivement le résultat des questions suivantes.
Indice
<html>
<head>
<title>Défi Linux</title>
<meta charset="utf-8"/>
</head>
<body>
</body>
</html>
Question
Exécuter les actions suivantes et capitalisez les commandes et leurs résultats sur la page web defilinux/index.html.
Affichez tous les fichiers et dossier accessibles depuis votre serveur web (on utilisera le paramètre permettant d'afficher un
/
à la fin des noms des dossiers).Rendez-vous dans le dossier de votre utilisateur sur le serveur, affichez-en le chemin avec
pwd
, puis créez un fichier vide useless avectouch
.Déplacez-vous dans le dossier
/tmp
, créez un dossier defi, déplacez-y le fichier useless, puis copiez le fichier useless en moreuseless ; avecls
,pwd
etcat
montrez le résultat ce travail tout à fait inutile.Créez un utilisateur lambda, devenez cet utilisateur, rendez-vous dans son dossier personnel et affichez le chemin de ce dossier.
Créez un fichier public accessible à tout le monde en lecture et en écriture, un fichier infos accessible à tout le monde en lecture mais seulement au groupe lambda en écriture et un fichier secret accessible seulement par l'utilisateur lambda (en lecture et en écriture ) ; affichez-le résultat de votre configuration en montrant les fichiers et leurs droits.