Bienvenue, Visiteur
S’enregistrer | Mot de passe ?

Nom d’utilisateur

Mot de passe




Derniers sujets
[Malice Fansub] [Infos] R...
Forum : Niouzes
Dernier message : Tchenss
Ven. 19 Juil 2019, 12:18
» Réponses : 14
» Affichages : 731
That winter, the wind blo...
Forum : Licenciés coréens
Dernier message : ymyzen
Mer. 17 Juil 2019, 03:01
» Réponses : 2
» Affichages : 1 627
Présentation
Forum : Votre présentation
Dernier message : Kirinenko
Lun. 15 Juil 2019, 06:58
» Réponses : 1
» Affichages : 78
Buzzer beat - \*o*/
Forum : J-Dramas
Dernier message : Manue 33
Lun. 15 Juil 2019, 12:12
» Réponses : 3
» Affichages : 6 854
Dernières niouzes (nouvel...
Forum : Animes
Dernier message : Kirinenko
Dim. 14 Juil 2019, 08:24
» Réponses : 364
» Affichages : 92 996

Partenaires
partenaire logo

Utilisateurs en ligne
Il y a actuellement 64 utilisateurs connectés.
» 0 Membre(s) | 64 Visiteur(s)

Statistiques du Forum
» Membres : 11 836
» Dernier membre : dramasia
» Sujets du forum : 5 343
» Messages du forum : 25 245

Statistiques complètes

Choisissez Firefox
obtenir firefox
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Seedbox à la maison
Description du topic
rtorrent, rutorrent sous debian 9
#1
Installer debian 9 iptables fail2ban portsentry ssh update h5ai https rtorrent rutorrent seedbox vpn serveur
Un titre à mots clefs :p

Le p2p continue de voguer, alors préparons notre navire ! :)
Dans ce tuto, on va voir comment installer debian 9 sans environnement de bureau, tout se passera ensuite par ssh pour l'administration de la machine et via des interfaces web pour faire les opérations quotidiennes. N'ayez pas peur de la ligne de commande, c'est comme mettre sur papier ce que l'on veut réaliser :)
Sur cette base debian, on mettra un accès ssh, un client torrent, un vpn pour les échanges p2p et un accès par https aux fichiers stockés.

Index :
1. Installation de Debian sur clef usb :
2. Ajout de disques durs :
3. Un peu de sécurité :
4. Connexion ssh depuis l'extérieur :
5. Partie mise à jour auto :
6. Accès web aux fichiers avec https :
7. Mise en place de h5ai :
8. Installation du client torrent avec son interface web :
9. On pose un vpn sur rtorrent :
10. On ajoute un outils de surveillance des disques durs :
11. Reprendre disque chiffré :


1. Installation de Debian sur clef usb :

Il faut bien commencer par le début et installer le système d'exploitation. Mon choix se porte sur la dernière version de debian (debian 9 stretch) car même si les dernières fonctionnalités ne sont pas disponible, le système tournera tranquillement en utilisant peu de ressources :) Je préfère avoir moins et savoir m'en servir correctement qu'avoir plus de choix et être débordé par les paramètres ^^

Je vais installer cela sur une vieille tour que j'avais récupéré, la recup c'est la vie :p Le processeur est un Intel Pentium D avec 2Go de ram DDR2. C'était livré avec du windows vista à l'époque ^^ Pour savoir un processeur intel est un 32 ou 64 bit : http://ark.intel.com/search?q=. La version debian à prendre pour ce processeur est donc : amd64.
Sources : https://askubuntu.com/questions/54296/di...-the-amd64 [https://archive.fo/zLvyY] Screenshot_Archive_01
https://www.debian-fr.org/t/quel-version...bits/20746 Screenshot_Archive_02

On va avoir besoin de deux clefs usb pour installer le système. Une qui permettra d'avoir les fichiers et démarrer l'installation, la seconde afin d'installer le système dessus. Dans mon cas je vais me servir de clef Scandisk Cruzer et Transcend, la Crusader de 16 GB pour installer le système dessus et l'autre de 4 GB. Je prévois d'avoir un disque dur de 250 Go pour faire mon répertoire maison après. Vous pouvez vérifier si votre clef sera utilisable pour cette installation ou non via cette page : https://wiki.debian.org/StandardPendrive [https://archive.fo/ror0k] Screenshot_Archive_03.
Ayant déjà essayé d'installer debian en utilisant ces clefs, j'ai pu aller jusqu'à l'installation de grub ( https://fr.wikipedia.org/wiki/GNU_GRUB [https://archive.fo/oMAeY] Screenshot_Archive_04) qui demande de choisir sur quel emplacement l'installer et les disques branchés sont listés selon leur numéro de série on dirait bien, il est donc difficile de reconnaître la bonne clef si les deux viennent du même fabricant ^^' La taille du périphérique n'aidant pas. On va donc noter ces numéros de série au préalable en regardant cela sur votre système (windows 7 de mon côté).
Sous windows donc : Menu démarrer > clique droit sur "Ordinateur" > "Gérer" > "Gestionnaires de périphérique" dans la cadre de gauche (dans Gestion de l'ordinateur (local) > Outils système ) > puis dans le cadre du milieu "Lecteurs de disque" > trouvez votre clef usb et clique droit dessus puis > "Propriétés" > cela vous ouvre une fenêtre, vous allez dans l'onglet "Détails" > dans le menu déroulant de "Propriété" vous choisissez "Parent" > La valeur vous indique ce que vous voulez, par exemple : US\VID_0976&PID_8856\5T98700111659887768898
Faites de même pour votre seconde clef et notez bien tout ça :)

---
Sous linux, vous repérer votre clef avec la commande "df -h" et vous lancez la commande suivante :
Code :
/bin/udevadm info --name=/dev/sdX1 | grep SERIAL_SHORT
Au besoin si plusieurs partitions sont présentes il faut refaire la table des partitions et la formater avec gparted (voir un peu plus loin poour l'utilisation de gparted).
---

Il faut que l'ordinateur sur lequel vous allez installer debian soit relié à internet via un cable ethernet pour plus de simplicité. Vous pouvez télécharger la bonne version pour votre système à cette adresse : https://www.debian.org/distrib/netinst
Dans mon cas donc amd64 comme dit plus haut.

Une fois cela fait, vous brancher votre clef USB, celle qui va contenir les fichiers pour démarrer la machine, le système sera installé sur la seconde clef. Afin de réaliser une clef usb sur laquelle on peut démarrer cette iso, on va utiliser le logiciel rufus : https://rufus.ie/ [https://archive.fo/Xt1EJ] Screenshot_Archive_05. J'utilise la version portable car pas besoin d'installer un truc dont on ne va pas se servir si souvent que ça.

On lance donc rufus et on sélectionne l'iso qu'on vient de télécharger. Et on lance avec "Démarrer" :
[Image: Tour_Image_01.jpg]
Si vous avez une pop up d'avertissement, choisissez : "Ecrire en mode Image ISO (Recommandé)".

Quand tout est bon, vous pouvez fermer le logiciel.

J'ai formaté la seconde clef en ext4 (FAT32 si vous pouvez pas ext4) avec l'outil "Formater" en clique droit sur le disque sous windows. Cette clef servira à installer le système d'exploitation debian pour cette tour.

On branche les deux clefs sur la machine et on va débuter l'installation ! :)
Je vais me servir des screens disponibles et suivre ce qui est dit dans ces tutoriels :
/!\ Je prends les images pour illustrations, les choix proposés ne sont pas ceux que je réalise. /!\
https://www.howtoforge.com/tutorial/debi...al-server/ [https://archive.fo/iwi5E] Screenshot_Archive_06
https://www.howtoforge.com/tutorial/debi...-server/2/ [https://archive.fo/qyR6Q] Screenshot_Archive_07
https://www.howtoforge.com/tutorial/debi...al-server/ [https://archive.fo/QkGjP] Screenshot_Archive_08
https://www.howtoforge.com/tutorial/debi...-server/2/ [https://archive.fo/Q4Cga] Screenshot_Archive_09
N'hésitez pas à vous y référer afin d'en savoir plus !

Note : Après avoir seulement formaté en FAT32, l'ordi ne veut pas se lancé, blocage avant boot. Je la mets donc dans un ordi sous linux et je lance un terminal pour taper les commandes suivantes.
Pour connaître le nom de cette clef :
Code :
df -h
Je reconnais le /dev/sdb1 de 15Go.
On le démonte au cas où :
Code :
sudo umount /dev/sdb1
puis on formate :
Code :
sudo mkfs.ext4 /dev/sdb1
Source : https://tecadmin.net/format-usb-in-linux/ [https://archive.fo/E1iU4] Screenshot_Archive_10
Note 2 : Cela ne fonctionne pas, je change de clef. Je prends une autre Crusader de 4 GB. Je la formate en FAT32 avec windows. Et ça passe... Clef à la con...
Note 3 : Attention, 4 GB s'avère trop petit pour un système débian dans une telle configuration, je me suis retrouvé bloqué lors de mises à jour pour manque d'espace disponible. Prenez donc bien une clef de 8 GB minimum et je recommande 16 GB ou plus pour être au mieux :)

---
Sous linux :
Pour formater une clef ayant des partitions d'écrites (par exemple si vous vous en êtes déjà servi pour installer un système d'exploitaion et booter dessus) vous alez avoir besoin de gparted :
Code :
sudo apt install gparted
(ou via le gestionnaire d'application de votre distribution)

Vous branchez votre clef usb puis vous lancez GParted :
1. Vous choisissez votre clef usb
2. Périphérique > Créer une table de partitions...
[Image: Tour_Image_Linux_01.jpg]

Si vous avez le message d'information suivant : "1 partition est actuellement active sur le périphérique /dev/sdb", c'est que la clef est montée. Il vous faut au préalable démonter cette clef pour altérer la table des partitions.
[Image: Tour_Image_Linux_02.jpg]

Sinon vous choisissez le type "gpt" pour la partition (1) et si vous êtes bien sûr d'avoir choisis le bon emplacement vous pouvez "appliquer" (2) :
[Image: Tour_Image_Linux_03.jpg]

Une fois cela réalisé, vous alez dans le menu "Partition" et vous faîtes "Nouvelle" :
[Image: Tour_Image_Linux_04.jpg]

Dans ce qui s'ouvre, vous sléectionnez "ext4" pour le système de fichiers (1), le reste devrait être ok de base, et vous "ajouté" (2) :
[Image: Tour_Image_Linux_05.jpg]

En bas vous voyez alors cette action qui est mis dans la liste des opérations en attente (1), vous validez l'application de ces actions avec le bouton "valider" en haut (2) :
[Image: Tour_Image_Linux_06.jpg]

On vous demande si vous êtes bien sûr de vouloir appliquer les changements --> "Appliquer".
"Toutes les opérations ont été effectuées avec succès" --> "Fermer"
Vous fermez GParted.

Vous faîtes cela pour les deux clefs usb.
Puis vous prenez la plus petite qui ne servira que temporairement pour installer le système d'exploitation sur l'autre clef et on va donc charger la distribution debian dessus.
Pour cela, on va avoir besoin de etcher ( https://www.balena.io/etcher/ ).
On télécharge le fichier pour notre système et on décompresse le zip : clique droit > "Extraire ici".

On lance en double cliquant sur le fichier appimage et on rempli les étapes suivantes :
[Image: Tour_Image_Linux_07.jpg]

---


On démarre donc la machine avec un écran et un clavier de branchés dessus :)
J'ai débranché l'ancien disque dur qui comportait le système d'exploitation précédent afin de démarrer sur les clefs usb. Vous pouvez aussi choisir sur quoi démarrer avec F8 ou autre (F2 pour avoir toutes les options du BIOS ou autre F# selon votre ordinateur).

Si tout se passe bien, on arrive sur l'écran suivant :
[Image: Tour_Image_02.jpg]
On choisit "Install".

Vous pouvez avoir cela si vous laissez des disques durs de branchés :
[ 10.400821] ata2: COMRESET failed (errno=-16)
.
.
.

Il s'est avéré que ces erreurs étaient dû à un disque mort :(

Mais si ça passe, on arrive à cet écran :
[Image: Tour_Image_03.jpg]
Je prends la langue anglaise afin d'avoir les fichiers et messages d'erreurs directement en anglais plus tard. Cela peut aider à la résolution des soucis, il y aura plus de résultats de recherche en utilisant cette langue.

Puis, other (en bas) > Europe > France (départ avec l'écran suivant)
[Image: Tour_Image_04.jpg]

Puis "Country to base default locale settings on" :
Pas de screen :/
On mets "United States - en._US.UTF-8"

Puis la disposition du clavier, on prends "French" pas comme dans le screen (on est pas fou non plus ^^) :
[Image: Tour_Image_05.jpg]

Laissez bosser puis cela peut vous dire qu'il manque un fichier :
Citation :Some of your hardware needs non-free firmware files to operate. The firmware can be loaded from removable media, such as a USB stick of floppy.
The missing firmware files are: rtl_nic/rt19127t-4.fw"
If you have such media available now, insert it, and continue.
Load missing firmware from removable media ?
             
On choisit "No" car cela passera via la connexion internet et pas envie de chercher ce truc ^^
Je vous conseille de faire de même si vous avez une erreur de ce genre.

Puis :
[Image: Tour_Image_06.jpg]
Remplissez comme vous le voulez :)

Puis :
[Image: Tour_Image_07.jpg]
Là aussi je mets un nom que je veux, au moins si je le vois dans un fichier de config, je saurais que c'est ça ^^'

Puis :
Là vous choisissez votre mot de passe root (qui est le compte administrateur tout puissant), donc prenez en un assez fort avec minuscules, majuscules, chiffres et caractères spéciaux.
[Image: Tour_Image_08.jpg]

Vous le retapez pour le confirmer et puis vous mettez un faux nom d'utilisateur complet, ce que vous voulez :
[Image: Tour_Image_09.jpg]

Puis c'est le tour de votre compte utilisateur alors choisissez le bien :)
[Image: Tour_Image_10.jpg]

Comme ce compte aura des privilèges élevés, il faut choisir un mot de passe très fort :
[Image: Tour_Image_11.jpg]

Vous confirmez.

Vous laissez travailler puis vous pouvez obtenir le message suivant :
Citation :This machine's firmware has started the installer in UEFI mode but it looks like there may be existing operating systems already installed using "BIOS compatibility mode". If you continue to install debian in UEFI mode, it might be difficult to reboot the machine into any BIOS-mode operating systems later.
If you wish to install UEFI mode and don't care about keeping the ability to boot one of the existing systems, you have the option to force that here. If you wish to keep the option to boot an existing operating system, you should choose NOT to force UEFI installation here.
Force UEFI installation?
                     
Je vais prendre "No" afin de me laisser la possibilité d'en avoir besoin dans un futur plus ou moins lointain ^^
Note : Je ne sais pas si c'est la bonne solution pour vous :p

Sinon, je choisis "Guided - use entire disk and set up encrypted LVM" ( https://wiki.archlinux.fr/LVM [https://archive.fo/cmmgj] Screenshot_Archive_11).
[Image: Tour_Image_12.jpg]

Puis on choisit la clef sur laquelle on veut installer le système d'exploitation :
[Image: Tour_Image_13.jpg]

On peut vous demander le schéma de partitionnement à utiliser. Prenez "All files in one partition (recommended for new users)".
Alors après un peu de lecture rapide ( https://forum.ubuntu-fr.org/viewtopic.php?id=397167 [https://archive.fo/NBrAV] Screenshot_Archive_12), j'ai choisis "All files in one partition (recommended for new users". Car dans mon cas, j'installe cela sur une clef de 4 GB donc la taille des partitions est assez limité (au final 4 GB est trop faible !!!). Je préfère que le système (fichiers système ou mes fichiers pour du bazar) puisse grandir au besoin sur ces 4 GB que de le limiter dès maintenant en taille (et puis je mets un disque dur /home pour stocker).

Puis, pas exactement ce screen mais proche, on valide les changements qu'on a paramétré précedemment: "Yes".
[Image: Tour_Image_14.jpg]

On laisse bosser bien longtemps (2 h environ).
Puis on obtient le message suivant :
Citation :You need to choose a passphrase to encrypt SCSI8 (0,0,0), partition #5 (sdc).
The overall strangth of the encryption depends strongly on this passphrase, so you should take care to choose a passphrase that is no easy to guess. It should not be a word or sentence found in dictionnaries, or a phrase that could be easily associated with you.
A good passphrase will contain a mixture of letters, numbers and ponctuation. Passphrases are recommanded to have a length of 20 or more characters.
Vous mettez donc une phrase de passe qui soit suffisamment forte pour permettre un chiffrement fort. N'hésitez pas à remplacer des lettres par des chiffres et ajouter des ponctuations au milieu.

Vous avez alors :
Partition disks
*Beaucoup de blabla
-> Undo changes to partitions
-> Finish partitioning and write changes to disk

Pas de screen.
Choisissez "Finish partitioning and write changes to disk".

Puis on confirme l'écriture sur les disques :
"...
Write the changes to disks
YES"

Choisissez le pays pour prendre l'archive debian "France" :
[Image: Tour_Image_15.jpg]

et le mirroir que vous voulez :
[Image: Tour_Image_16.jpg]

On n'utilise pas de proxy, donc mettez rien et "Continue".
[Image: Tour_Image_17.jpg]

Laissez faire, puis, si vous voulez partagez des infos d'ordre technique pour les aider à améliorer debian mettez oui, sinon "No".
[Image: Tour_Image_18.jpg]

Puis, sur l'écran suivant, vous mettez bien ainsi en sélectionnant "SSH server" (touche "espace" pour sélectionner/déselectioner et "tab" pour passer sur "Continuer") :
[] Debin desktop environnement
[] ... GNOME
[] ... Xfce
[] ... KDE
[] ... Cinnamon
[] ... MATE
[] ... LXDE
[] webserver
[] print server
[x] SSH server
[x] standard system utilities
Sources : https://lists.debian.org/debian-user/201...00303.html [https://archive.fo/vOjU5] Screenshot_Archive_13
http://debian-facile.org/doc:install:install_minimale [https://archive.fo/FWcXF] Screenshot_Archive_14
[Image: Tour_Image_19.jpg]

Ensuite on peut vous demander où installer la partition GRUB, vous sélectionnez donc la même clef USB que celle où vous mettez le système d'installation (la seconde donc °-°).
[Image: Tour_Image_20.jpg]

Puis :
[Image: Tour_Image_21.jpg]

Vous débranchez du secteur et enlevez ensuite la clef qui contenait les tout premiers fichiers. Vous laissez la seconde clef qui contient maintenant un système d'exploitation chiffré. Et on dit bien chiffré :p (https://chiffrer.info/ Screenshot_Archive_15).
Puis : "Continue" ! :)

Si vous avez pas enlevé la clef usb pour l'installation, le bouzin a redémarré et c'est reparti pour une installation. On force l'arrêt du tout (bouton stop longtemps ^^).

Cela redémarre et je me retape des erreurs, pas noté ^^'
au final ça m'a demandé la phrase de passe ...
ça a travaillé et j'ai eu :
[ 108.877561] nouveau 0000:02:00.0 DRM: GPU lockup - switching to software fbcon
et d'autres erreurs

J'ai fait "entrer" plusieurs fois, la ligne d'action étant caché par ce texte d'erreur.

Et ça m'a demandé de me loguer :
Code :
Debian GNU/Linux 9 hostname tty1
hostname login:
Votre compte "username" et le mot de passe associé ensuite donc :)
Vous voilà connecté à votre ordinateur !
Vous êtes donc en ligne de commande avec :
"username@hostname:~^$"

Tapez exit puis loguez vous en tant que "root".

On va installer mettre à jour le système pour commencer :
Code :
apt update
apt upgrade

Je préfère l'éditeur nano car j'ai débuté avec lui donc on l'installe :
Code :
apt install nano

On éteint la machine avec la commande  :
Code :
shutdown

Au redémarrage, on peut en profiter pour charger les paramètres du BIOS. On peut alors définir la clef usb comme première option de démarrage.

Lorsque le système se lance, on tape la phrase de passe, et on se logue en utilisant le compte root.

Maintenant, on va changer la connexion réseau de la machine. Lorsqu'on a installé debian, avec le mode automatique pour configurer le réseau, cela a été configuré en dhcp. On va modifier pour avoir une ip machine fixe. Cette ip sera de la forme 192.168.1.### Vous pourrez utiliser cette ip pour vous connecter depuis une autre machine depuis chez vous, cette ip ne fonctionne pas directement de l'extérieure. Nous verrons plus tard comment configurer pour des accès externes.
Pour cela :
Code :
nano /etc/network/interfaces

Le fichier contient :
Code :
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s18
iface enp0s18 inet dhcp

Dans les deux dernières lignes on voit enp0s18, il s'agit de la nouvelle nomenclature pour nommer les interfaces réseaux. Auparavant c'était avec du eth et wlan. Je vais repasser sur cette ancienne nomenclature car je ne prévois pas d'ajouter d'autres interfaces réseaux sur cette machine. Cela pourrait m'éviter des soucis plus tard en plus.
Source : https://memo-linux.com/retrouver-les-nom...s-manjaro/ [https://archive.fo/9bmgP] Screenshot_Archive_16
https://www.itzgeek.com/how-tos/mini-how...16-04.html [https://archive.fo/l4YkW] Screenshot_Archive_17

On édite donc le grub :
Code :
nano /etc/default/grub

On modifie la ligne suivante :
Code :
GRUB_CMDLINE_LINUX=""
en
Code :
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

On applique les modifications :
Code :
grub-mkconfig -o /boot/grub/grub.cfg

Et on reboot la machine puis on se logue en root.

On retourne éditer le fichier "interfaces"
Code :
nano /etc/network/interfaces

et on va dans le bloc :
Code :
# The primary network interface
allow-hotplug enp0s18
iface enp0s18 inet dhcp
et on le modifie en :
Code :
# The primary network interface
#allow-hotplug enp0s18
#iface enp0s18 inet dhcp
auto eth0
iface eth0 inet static
       address 192.168.1.22
       netmask 255.255.255.0
       dns-nameservers 80.67.169.12 80.67.169.40
       gateway 192.168.1.1

Note : "allow-hotplug enp0s18" est devenu "auto eth0" afin de pouvoir redémarrer le réseau directement sans redémarrer la machine si on redémarrer le réseau.
Note 2 : Les ips "netmask" et "gateway" sont données par votre box en vous connectant à sa page d'administration et dans les infos de la connexions ou informations système. "gateway" = passerelle = ip de la livebox et "netmask" = masque sous reseau.
Source : https://communaute.orange.fr/t5/ma-conne...-p/1000422 [https://archive.fo/tii0v] Screenshot_Archive_18.
Note 3 : J'utilise les dns de FDN (https://www.fdn.fr/actions/dns/).

Pendant qu'on a l'administration de sa box ouverte, on va assigner cette adresse ip 192.168.1.22 à la machine. Cela se passe dans la partie "Baux DHCP statiques".
Vous pouvez identifier la machine à l'aide de son adresse MAC, utilisez la commande "ip link" sur votre machine pour l'obtenir (dans le bloc avec eth0).

Puis on va modifier un autre fichier :
Code :
nano /etc/hosts

Et vous modifier les lignes :
Code :
127.0.0.1       localhost
127.0.0.1       hostname.domain-name     hostname
en
Code :
127.0.0.1      localhost
192.168.1.22   hostname.domain-name     hostname

On redémarre la machine :
Code :
reboot

Une fois que vous aurez redémarré l'aide de la commande :
Code :
ip a
vous pourrez lister vos connexions et vous verrez votre eth0 avec l'ip 192.168.1.22 que vous aurez assignée avant.

Tout a l'air de bien fonctionner, je peux faire "apt update" = pas d'erreurs, et je peux me connecter via ssh en utilisant putty depuis mon autre ordi :
ip : 192.168.1.22
port : 22
et vous utilisez votre compte utilisateur pour vous connecter.
---
Sous linux, la comande à lancer dans un terminal pour vous connecter en sh est la suivante :
Code :
ssh username@ip.de.la.machine
---

On va passer en root afin d'ajouter notre compte utilisateur comme sudoer (il pourra ainsi utiliser "sudo" et donc exécuter les commandes en tant qu'administrateur de la machine), commande :
Code :
su
et vous rentrer le mot de passe root.
Puis en tant que root vous installez la commande "sudo", on en aura besoin avec notre utilisateur pour pouvoir lancer des commandes en mode root :
Code :
apt install sudo

Puis vous ajoutez votre compte utilisateur au groupe sudo qui a les privilèges voulus :
Code :
sudo adduser username sudo
Source : https://askubuntu.com/questions/7477/how...mmand-line [https://archive.fo/wIFy5] Screenshot_Archive_19

Vous pouvez alors quittez votre connexion root et vous serez remis sous votre connexion utilisateur :
Code :
exit

Comme cela n'agit que lors de la prochaine connexion de votre utilisateur, il faut quitter la session ssh avec "exit" et en relancer une nouvelle pour cet utilisateur.

On va mettre à jour les dépôts utilisés pour la mise à jour du système :
Code :
sudo nano /etc/apt/sources.list

Dedans, j'ai :
Code :
#

# deb cdrom:[Debian GNU/Linux 9.7.0 _Stretch_ - Official amd64 NETINST 20181212-10:25]/ stretch main

#deb cdrom:[Debian GNU/Linux 9.7.0 _Stretch_ - Official amd64 NETINST 20181212-10:25]/ stretch main

deb http://ftp.fr.debian.org/debian/ stretch main
deb-src http://ftp.fr.debian.org/debian/ stretch main

deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security stretch/updates main

# stretch-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ stretch-updates main
deb-src http://ftp.fr.debian.org/debian/ stretch-updates main
On va ajouter les dépôts "contrib" et "non-free" et ça devient :
Code :
#

# deb cdrom:[Debian GNU/Linux 9.7.0 _Stretch_ - Official amd64 NETINST 20181212-10:25]/ stretch main

#deb cdrom:[Debian GNU/Linux 9.7.0 _Stretch_ - Official amd64 NETINST 20181212-10:25]/ stretch main

deb http://ftp.fr.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

# stretch-updates, previously known as 'volatile'
deb http://ftp.fr.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ stretch-updates main contrib non-free

On enregistre en quittant et on va voir si il y a des mises à jour à mettre :
Code :
sudo apt update
sudo apt upgrade
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer
#2
2. Ajout de disques durs :

Je vais mettre un disque dur supplémentaire sur la machine pour faire un espace de stockage des fichiers pour l'utilisateur principal (pas root, l'autre). On le branche alors que la machine est éteinte et on va voir à ce qu'il soit monté au démarrage dans un répertoire choisi.
Refaites l'opération pour d'autres disques.

On va chiffrer ce disque car c'est possible assez facilement de nos jours et pourquoi pas ? Pensez juste à donner vos identifiants à une personne de confiance dans votre famille si vous voulez que quelqu'un récupère des trucs dans le cas d'un évènement improbable.

Je vais m'aider des tutos suivant (c'est un peu en bazar et ça peut dater ^^) :
https://www.cyberciti.biz/hardware/howto...p-command/ [https://archive.fo/02NKD] Screenshot_Archive_20
https://community.linuxmint.com/tutorial/view/2248 [https://archive.fo/xF2au] Screenshot_Archive_21
https://doc.ubuntu-fr.org/tutoriel/chiffrer_son_disque [https://archive.fo/lBiT9] Screenshot_Archive_22
http://unix.stackexchange.com/questions/...-boot-time [https://archive.fo/VFfqr] Screenshot_Archive_23
http://earlruby.org/2010/02/adding-an-ex...ntu-linux/ [https://archive.fo/iUwJ3] Screenshot_Archive_24
https://unix.stackexchange.com/questions...sks-in-lvm [https://archive.fo/57ppT] Screenshot_Archive_25
http://julien.coubronne.net/debian-full-...ncryption/ [https://archive.fo/nO6Ja] Screenshot_Archive_26
https://doc.ubuntu-fr.org/cryptsetup [https://archive.fo/6w4pm] Screenshot_Archive_27
https://www.howtoforge.com/automatically...-a-keyfile [https://archive.fo/wfa8w] Screenshot_Archive_28

Je prends un disque dur de 250 Go environ et ce dernier possède plusieurs partitions. Je vais donc commencer par supprimer ces partitions.
Sources :
https://www.cyberciti.biz/faq/linux-remo...mpty-disk/ [https://archive.fo/yGVH5] Screenshot_Archive_29
https://serverfault.com/questions/250839...mmand-line [https://archive.fo/hoToh] Screenshot_Archive_30

On démarre la machine, on rentre la phrase de passe depuis le clavier qui est sur la machine et on ouvre une connexion ssh depuis notre second ordinateur pour réaliser les manips (ou directement depuis la machine si vous voulez).

On va commencer par installer cryptsetup :
Code :
sudo apt install cryptsetup

Alors de ce qu'on lit dans un des liens ci-dessus c'est qu'il vaut mieux utiliser une partition qui prenne tout le disque plutôt que le disque lui même. On va donc créer cette partition.
On commence par trouver le disque :
Code :
sudo fdisk -l

Vous repérez le bon et puis vous supprimez les partitions avec :
Code :
sudo dd if=/dev/zero of=/dev/sdX bs=512 count=1 conv=notrunc
Note : sdX correspond à un disque sata et il faut mettre la bonne lettre. A vous d'adapter selon votre cas.

On va maintenant créer une partition qui prendra l'espace complet disponible sur ce disque :
Code :
sudo cfdisk /dev/sdX

On va vous demander de sélectionner le type de label, dans mon cas je choisis "gpt" :
[Image: Tour_Image_22.jpg]
Source : https://unix.stackexchange.com/questions...label-type [https://archive.fo/vvpJO] Screenshot_Archive_31

Puis on vous demande ce que vous voulez faire, on choisit "[ New ]" :
[Image: Tour_Image_23.jpg]

On garde la taille de la partition par défaut qui prend donc tout l'espace dispo :
[Image: Tour_Image_24.jpg]

Voilà, on a la partition, on la garde et on va donc l'écrire avec "Write" :
[Image: Tour_Image_25.jpg]

On en est bien sûr, on écrit donc "yes" :
[Image: Tour_Image_26.jpg]

Cela nous dit que la table des partitions a bien été modif, et on fini par quitter.

Maintenant, si vous faites
Code :
sudo fdisk -l
vous verrez que votre disque contient une partition qui occupe toute la place.

On utilise cryptsetup pour chiffrer le volume :
Code :
sudo cryptsetup luksFormat /dev/sdX1

Vous obtenez ce message :
Citation :WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.

Are you sure? (Type uppercase yes): YES

Note : Tapez bien "YES" en majuscules.

Cela vous demande une phrase de passe, vous en mettez une et la notez bien ;)

On va ouvrir le volume :
Code :
sudo cryptsetup luksOpen /dev/sdX1 sdX1_homecrypt
Note : "sda1_homecrypt" est le nom que l'on donne à ce volume.

Il vous ai donc demandé la phrase de passe précédente.
Si vous voulez utiliser un autre nom, vous le fermez avec la commande : "sudo cryptsetup luksClose sdX1_homecrypt".

On peut voir que ce volume a bien été ajouté à la liste des volumes :
Code :
ls -l /dev/mapper/

On va maintenant le formater en ext4 :
Source : http://www.thegeekstuff.com/2011/05/Ext2-Ext3-Ext4/ [https://archive.fo/Acdv0] Screenshot_Archive_32

Commande :
Code :
sudo mkfs.ext4 /dev/mapper/sdX1_homecrypt
Vous laissez faire et attendez que cela vous redonne la main.

On va sauvegarder l'en-tête du volume, si jamais il y a un soucis sur ce disque, cela pourrait aider à reconstruire le header défectueux et se resservir du disque (attention, cela ne veut pas dire que vous pourrez dans tous les cas résoudre tous les soucis, les backups existent) :
Code :
sudo cryptsetup luksHeaderBackup --header-backup-file sdX1_homecrypt-header /dev/sdX1
Note : le fichier est nommé "sdX1_homecrypt-header". Ce fichier est sauvegardé là où vous êtes ou dans votre répertoire utilisateur.

On peut au préalable créer un dossier qui servira à monter ce volume dessus. Mais j'ai un soucis de permissions. Pour cela on va utiliser la commande chown ( https://www.cyberciti.biz/faq/how-to-use...n-command/ [https://archive.fo/784xO] Screenshot_Archive_33) :
Code :
chown owner-user:owner-group directory
et donc dans notre cas :
Code :
sudo chown utilisateur:utilisateur /home/utilisateur

Et maintenant :
Code :
mkdir /home/utilisateur/disque

On monte donc le volume chiffré sur cet emplacement :
Code :
sudo mount /dev/mapper/sdX1_homecrypt /home/utilisateur/disque

On va mettre en place le montage automatique de ce volume au démarrage de l'ordinateur. On commence par noter l'uuid de la partition en question :
Code :
sudo blkid

Vous notez la ligne :
Code :
/dev/sdX1: UUID="bla-bla-bla" TYPE="crypto_LUKS" PARTUUID="blo-blo-blo"

On va enregistrer une clef pour ce volume, ce qui nous permettra de monter automatiquement ce volume au démarrage du système qui demandera quand même la phrase de passe pour la machine :
Code :
sudo mkdir /etc/keys

Puis on crée cette clef :
Code :
sudo dd if=/dev/urandom of=/etc/keys/sdX1.luks bs=1024 count=4

On met ce fichier en lecture seulement par le compte root :
Code :
sudo chmod 0400 /etc/keys/sdX1.luks

On ajoute ce fichier clef à notre volume chiffré :
Code :
sudo cryptsetup luksAddKey /dev/sdX1 /etc/keys/sdX1.luks
Note : On va vous demander une des phrases de passe utilisable pour ce volume.

On a donc un fichier qui pourra être utilisé pour ouvrir ce volume.

Puis on commence par modifier le fichier "/etc/crypttab" :
Code :
sudo nano /etc/crypttab

Et dedans on ajoute à la fin une ligne pour notre volume :
Code :
# Ajout volume sdX1
sdX1_homecrypt UUID="bla-bla-bla" /etc/keys/sdX1.luks luks

Et maintenant, on va modifier le fichier "/etc/fstab" :
Code :
sudo nano /etc/fstab

On ajoute à la fin une ligne pour ce volume :
Code :
# Ajout volume sdX1
/dev/mapper/sdX1_homecrypt /home/utilisateur/disque ext4 defaults 0 2

Lorsque vous redémarrer, vous aurez à donner la phrase de passe pour démarrer le système et le disque sera monté directement. Si vous avez merdé, vous pourrez toujours vous connecter via le mode secours en tant que root afin de vérifier vos fichiers.
Code :
systemctl reboot
pour reboot après log en root.

Pensez à sauvegarder les fichiers "sdX1_homecrypt-header" et "/etc/keys/sdX1.luks" au cas où le système tombe en rade afin de pouvoir lire le disque sur un autre appareil.

Je fais de même pour un autre disque de 1.5 To qui va servir de stockage pour du partage p2p.
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#3
3. Un peu de sécurité :

J'utilise le tuto suivant pour mes réglages : https://upandclear.org/2015/09/17/mettre...-securite/ [https://archive.fo/IJ2ka] Screenshot_Archive_34

On commence par empêcher la connexion en root via ssh et on modifie le port par défault :
Code :
sudo nano /etc/ssh/sshd_config

On modifie les lignes suivantes, vous dé-commentez en enlevant le  # et changez les valeurs :
Code :
Port 2653
PermitRootLogin no
Par exemple le port 2653 ici.
Note : Vous pouvez trouver la liste des ports usuellement utilisés ici : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
On relance ssh :
Code :
sudo /etc/init.d/ssh restart

Maintenant, à la prochaine connexion par ssh, vous serez obligé de vous connecter avec le compte de votre utilisateur et de là vous pourrez utiliser le compte root au besoin. Il faudra aussi utiliser le port que l'on a renseigné et non plus le port 22 par défaut.
Via un terminal linux, la commande de connexion sh devient :
Code :
ssh username@ip.de.la.machine -p PORT_SSH

On met en place portsentry qui va nous permettre d'empêcher le scanne des ports de la machine via un petit script dans iptables. On l'installe :
Code :
sudo apt install portsentry
(On répond oui avec la touche "Entrée" sur la pop-up d'un ancien temps qui nous informe de blabla.)

On va le configurer via son fichier de configuration ^^
Code :
sudo nano /etc/portsentry/portsentry.conf

On modifie les lignes suivantes :
BLOCK_UDP="1"
(blocage des ports UDP en cas de détection de scanne)
BLOCK_TCP="1"
(blocage des ports TCP en cas de détection de scanne)
KILL_ROUTE="/sbin/route add -host $TARGET$ reject"
(blocage d’un scanne) - juste décommenter la ligne
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
(ajout de l’IP qui scanne dans iptables (firewall)) - juste dé-commenter la ligne

Note : on peut rechercher les termes en majuscules en faisant ctrl+w une fois dans l'éditeur nano.

On relance portsentry pour qu'il prenne en compte cette nouvelle configuration :
Code :
sudo /etc/init.d/portsentry restart

Maintenant, on va installer le parefeu et le configurer ensuite via un fichier de configuration que l'on crée tout d'abord dans le répertoire de notre utilisateur :
Code :
sudo apt install iptables
sudo nano /home/utilisateur/iptablesrules.sh

Dedans on va venir mettre les règles suivantes qui vont servir à bloquer tous les ports entrants sauf ceux avec une règle spécifique et laisser le traffic sortant libre ; on autorise le ping sur la machine mais on bloque le syn flood et le scanne de ports. Ce script repose sur celui proposé par Aerya dans son tutoriel (voir lien plus haut).

On copie cela :
Code :
#!/bin/sh
### BEGIN INIT INFO
# Provides: iptablesrules
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Petites modif effectuees sur - IPtables Rules UpAndClear.org - Mettre en place un bouncer IRC (ZNC) avec ou sans Tor + un peu de sécurité
### END INIT INFO

# Reinitialisation tables
iptables -t filter -F
iptables -t filter -X

# Blocage trafic entrant
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP

# Autorisation trafic sortant
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

#Activation routage
echo 1 > /proc/sys/net/ipv4/ip_forward

#Ne pas toucher au trafic entrant déjà autorisé
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Autorisation loopback
iptables -t filter -A INPUT -i lo -p all -j ACCEPT

# Autorisation ICMP (Ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT

#Protection syn flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

#Protection scanne
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

#Autorisation SSH entrant
iptables -A INPUT -p tcp --dport CHANGER -j ACCEPT

# Sauvegarder les regles pour qu elles soient chargees si reboot
iptables-save -c > /etc/iptables-save

Note : Bien penser à "CHANGER" le port dans la règle de "#Autorisation SSH entrant".

On copie ce fichier dans "init.d"
Code :
sudo cp /home/utilisateur/iptablesrules.sh /etc/init.d/iptablesrules

On rend le fichier exécutable :
Code :
sudo chmod +x /etc/init.d/iptablesrules

On le met à exécution à chaque démarrage de la machine :
Code :
sudo update-rc.d iptablesrules defaults

On peut mettre les règles en application :
Code :
sudo /etc/init.d/iptablesrules

Pour afficher les règles iptables en cours :
Code :
sudo iptables -L

On peut supprimer le premier fichier :
Code :
sudo rm -f /home/utilisateur/iptablesrules.sh

On va maintenant ajouter fail2ban qui va bannir automatiquement pour une certaine durée les ips qui voudront se connecter en ssh mais qui fourniront trop de mauvais mots de passe.
Code :
sudo apt install fail2ban

On configure :
Code :
sudo nano /etc/fail2ban/jail.conf

On en profite pour modifier l'email qui sera informé en cas de besoin, ici :
Code :
destemail = root@localhost
Note : Vous ne recevrez pas de mails directement, il faut effectuer quelques opérations pour que votre machine puisse envoyer des mails, voir le point "5. Partie mise à jour auto" pour cela.

Pour avoir des infos supplémentaires dans ces mails, changer cette ligne en  :
Code :
action = %(action_mwl)s

On en registre et voilà :)
Si vous recevez des mails de ce type depuis plusieurs machines, vous pouvez modifier le fichier suivant afin de mettre un sujet de message distinctif de cette machine :
Code :
sudo nano /etc/fail2ban/action.d/sendmail-whois-lines.conf
Et ajouter à la suite de Fail2Ban dans les sujets ce que vous voulez comme titre significatif.

Et finalement, on dit à Fail2Ban de se lancer une fois les règles iptables en place :
Code :
sudo nano /etc/init.d/fail2ban

On rajoute donc "$iptablesrules" au début du fichier dans la ligne :
Code :
# Required-Start: $local_fs $remote_fs $iptablesrules

On peut relancer Fail2Ban :
Code :
sudo /etc/init.d/fail2ban restart




4. Connexion ssh depuis l'extérieur :

Bon, une petite partie pour voir comment se connecter via ssh à cet ordinateur depuis une machine qui n'est pas sur le réseau local. Pour cela, on va rediriger un port spécifique de la fonction de routeur de la box pour un autre port spécifique de cette machine (les numéros de port peuvent être identique).

Pour info, voici la liste des ports utilisés normalement : https://fr.wikipedia.org/wiki/Liste_de_ports_logiciels
Dans notre cas, ce serait le port 22 pour sh sur lequel il faudra rediriger, mais comme on va ensuite voir comme ajouté de la sécurité sur la machine, on va en utiliser directement un autre.

On se rend donc dans l'interface d'administration de notre box et on ajoute une redirection de port ainsi :

Nom de la règle : SSH Machine
Protocole : TCP
Port / Plage de ports : Port
Port(s) source : 2145 (exemple)
@ IP de destination ou nom de l'ordinateur : choisissez dans la liste la machine concernée
Port(s) de destination : le port ssh que vous avez rentré dans le fichier de configuration plus haut
Toujours attribuer cette règle à cet ordinateur : oui

Vous pouvez aussi trouver l'ip de votre box via cette interface.

A partir de là, pour vous connecter en ssh sur cette machine il y a deux possibilités :
- depuis votre réseau local : vous utilisez votre ip local (192.168.1.xxx) et le port ssh que vous avez renseigné dans les fichiers de configuration de la machine
- depuis un ordinateur situé en dehors de chez vous : vous utilisez votre ip public (trouvé via l'interface de la box) et le port ssh que vous avez spécifié comme entrant dans l'interface de la box

Si vous essayez d'utiliser votre ip public et le port de la box sur un ordi en local, vous n'arriverez pas à vous connecter. Cela ne fonctionnera qu'un temps si vous avez une ip dynamique associée à votre box. A vous de suivre les évolutions de votre ip.[/code]
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#4
5. Partie mise à jour auto :

Sources :
http://www.troubleshooters.com/linux/nullmailer/ [https://archive.is/e0kua] Screenshot_Archive_35
http://www.it-connect.fr/envoi-de-mail-avec-nullmailer/ [https://archive.is/y7CLH] Screenshot_Archive_36
https://opensourcehacker.com/2013/03/25/...boud-mail/ [https://archive.is/53AfU] Screenshot_Archive_37
http://blog.janjonas.net/2011-04-22/conf...entication [https://archive.is/LDyT1] Screenshot_Archive_38
http://forum.lowendspirit.com/viewtopic.php?id=1305 [https://archive.is/NISVp] Screenshot_Archive_39

Comme par la suite on va utiliser nullmailer pour recevoir des mails concernant les mises à jour automatique, il faut au préalable enlever exim4 qui peut être sur votre machine. Voici les commandes du tuto que je suis :
Code :
sudo dpkg -r exim4
sudo dpkg --purge exim4

On installe nullmailer : (lors de son installation, laissez les paramètres par défaut, on va les modifier juste après)
Code :
sudo apt install nullmailer

Et donc on configure :
Code :
cd /etc/nullmailer

Dans le fichier "remotes" on met la config pour notre boite mail gandi (ou autre si vous voulez) :
Code :
sudo nano remotes
et remplacez ce qu'il y a par
Code :
mail.gandi.net smtp --port=465 --auth-login --user=moi@mondomaine_gandi.tld --pass=motdepasse --ssl
(modifiez avec votre adresse mail et votre mot de passe de boite mail)
Cela utilise le webmail de gandi que vous avez en prenant un domaine chez eux (12e/an environ). J'utilisais openmailbox auparavant, mais le service s'est dégradé et est devenu payant pour certaines fonctionnalités comme l'utilisation de smtp sans prévenir, service à fuir.

On change ensuite ses paramètres d'accès afin que d'autre processus de la machine n'ai pas accès à nos identifiants :
Code :
sudo chown mail /etc/nullmailer/remotes
sudo chmod go-rwx /etc/nullmailer/remotes

Les paramètres suivants servent à ce que l'expéditeur ait la même adresse mail que votre boite mail que vous utilisez afin qu'il n'y est pas d'erreur. J'avais un soucis, les mails ne voulaient pas être envoyé car de base via cron, l'utilisateur est root et le domaine associé est celui de votre machine. J'avais donc un mail du genre root@machine.tld au lieu de moi@mondomaine.tld. Pour palier à ceci, faire comme suit.

Dans "me" on met le nom de domaine de notre boite mail : (toujours dans /etc/nullmailer)
Code :
sudo nano me
et donc dedans on met :
Code :
mondomaine_gandi.tld

de même dans "defaulthost" et "defaultdomain".

On modifie aussi /etc/mailname
Code :
cd /
sudo nano /etc/mailname

on remplace ce qu'il y a dedans par :
Code :
mondomaine_gandi.tld

On change l'adresse admin pour nullmailer afin qu'on reçoive les messages d'erreur:
Code :
sudo nano /etc/nullmailer/adminaddr
et dedans on met :
Code :
moi@mondomaine_reception.tld
Note : Il s'agit de l'email sur lequel vous allez recevoir les mails.

Mais ce n'est pas tout, là nous n'avons que le bon domaine dans l'adresse mail, elle reste encore sous la forme root@mondomaine.tld

Pour résoudre cela on va utiliser le script suivant : https://github.com/benzinrts/nullmailer-from-patch
On fait comme dit dans le readme :
Code :
sudo mv /usr/sbin/sendmail /usr/sbin/sendmail-bin
sudo nano /usr/sbin/sendmail

et on copie/colle le script :
Code :
#!/bin/bash

# v1.0
# This script changes value of "-f" (<From>) argument of sendmail command when using nullmailer.
# If abscent, "-f" argument with value will be added to command line parameters.
# Script also changes "From" and "To" fields in email message (may be optional, see line 63).
# Tested with nullmailer v1.13-r5 on Gentoo Linux.

stdin=$(</dev/stdin)
optIndex="0"

# These vars are responsible for new <From> values.
# New value for "-f" argument.
newFrom="moi"
# New value for email "From" and "To" fields.
newAddress="moi@mondomaine_gandi.tld"

# Regexes for changing email "From" and "To" fields.
fromRE="From:(.*)<.*>"
fromChangeRE="From:\1<$newAddress>"
toRE="To:.*"
toChangeRE="To: $newAddress"

# Find (if present) the "-f" argument and store its value index.
# First ":" turns off verbose error reporting.
while getopts ":f:" flag; do
   case $flag in
       f) optIndex=$OPTIND
          break
          ;;
   esac
done

# Get list of current argumetns.
args=($@)

# $OPTIND starts from 1 and points to next arg.
# $@ starts from 0 so we need to subtract 2 from $optIndex.
# If "-f" is found, $optIndex will not be 0.
if (($optIndex != 0)); then
   # "-f" is found. Change its value.
   args[(($optIndex-2))]=$newFrom

   # Set new arguments.
   set -- "${args[@]}"
else
   # "-f" is not found. Add "-f $newFrom" as first argument.
   new_args=()
   new_args[0]="-f"
   new_args[1]=$newFrom

   # Copy old argumetns to new array.
   for ((i=0; i < ${#args[@]}; i++)) do
       new_args[(($i+2))]=${args[$i]}
   done

   # Set new arguments.
   set -- "${new_args[@]}"
fi

# Change both "From" and "To" fields to $newAddress in message body (some mail servers need this).
# Comment "sed" commands if you don't need such behaviour.
newMessage=$(echo "$stdin" | sed -E "0,/$fromRE/s//$fromChangeRE/" | sed -E "0,/$toRE/s//$toChangeRE/")

# Call original sendmail with new parameters and message.
echo "$newMessage" | /usr/sbin/sendmail-bin $@
Bien changer "moi" et "moi@mondomaine_gandi.tld" vers le début du code pour vos paramètres associés à votre boite mail.

On modifie les droits et on rend cela exécutable :
Code :
sudo chown 755 /usr/sbin/sendmail
sudo chmod +x /usr/sbin/sendmail

On en profite pour modifier d'autres trucs, indispensable ou non, je ne sais pas, j'avais des soucis et j'ai modif cela donc c'est une partie de ma config maintenant :
Source : http://raspberry.znix.com/2013/03/nullma...ry-pi.html

Code :
sudo nano /etc/nullmailer/defaulthost
Et dedans vous mettez :
Code :
mondomaine_gandi.tld

Puis :
Code :
sudo nano /etc/nullmailer/defaultdomain
Et dedans vous mettez rien, vous supprimez donc le contenu s'il y avait (voir source au dessus pour savoir pourquoi).

On relance nullmailer pour prendre en compte ces nouveaux paramètres :
Code :
sudo /etc/init.d/nullmailer restart

On peut tester avec :
Code :
echo "Subject: test" | /usr/sbin/sendmail moi@mondomaine_reception.tld

Vous devriez recevoir un mail test sans contenu.

Si soucis, pour débug vous pouvez regardez par là :
Code :
sudo tail -f /var/log/mail.log /var/log/mail.err
(ctrl+c pour en sortir)
ou
Code :
sudo tail -n 30 /var/log/syslog

Les mails en attente sont dans /var/spool/nullmailer/queue/ pour les supprimer :
Code :
rm -f /var/spool/nullmailer/queue/*
Note : Pour pouvoir les supprimer il faut se mettre en compte root, utiliser sudo seulement ne fonctionne pas, passez en root avec la commande "su".

On installe cronapt :
Code :
sudo apt install cron-apt

On ne va mettre automatiquement que les mises à jour de sécurité. Pour cela, il faut créer un nouveau fichier list qui ne contiendra que les dépôts de sécurité. On passe en root avec la commande "su" avant d'effectuer la commande suivante :
Code :
grep security /etc/apt/sources.list > /etc/apt/sources.list.d/security.list
On repasse sous son utilisateur avec la commande "exit".

On va commenter ces lignes dans le fichiers de départ :
Code :
sudo nano /etc/apt/sources.list

Et on commente en mettant des dièses devant les lignes :
Code :
#deb http://security.debian.org/debian-security stretch/updates main contrib non-free
#deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

On configure donc maintenant cron pour qu'il installe tout seul les majs et nous envoie un recap :
Code :
sudo nano /etc/cron-apt/config

dedans on ajoute :
Code :
APTCOMMAND=/usr/bin/apt-get
OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list"
MAILTO="moi@mondomaine_reception.tld"
MAILON="always"
(vous modifiez le mail hein °°)

On modifie ensuite un petit peu un autre fichier pour qu'il installe bien les mises à jour dispo :
Code :
sudo nano /etc/cron-apt/action.d/3-download

et dedans on enlève le "-d" pour que la seconde ligne devienne :
Code :
dist-upgrade -y -o APT::Get::Show-Upgraded=true

Ensuite on va mettre tout bien sa fréquence pour qu'il se lance lorsqu'on le désire :
Code :
sudo nano /etc/cron.d/cron-apt

et on commente la ligne d'exemple (avec un #) et on ajoute en fin de document cette nouvelle ligne :
Code :
0 5 * * MON  root /usr/sbin/cron-apt

La mise à jour se lancera tous les lundi à 5H du matin :
https://crontab.guru/#0_5_*_*_MON
Pour une autre fréquence, vous pouvez vous référez à : https://www.commentcamarche.net/contents...des-taches [https://archive.is/WP5ZR]

Vous pouvez faire un test en lançant la commande "sudo cron-apt" (peut prendre une ou deux minutes) et vous devriez recevoir directement le type de mail que vous aurez, du genre :
Citation :CRON-APT RUN [/etc/cron-apt/config]: Mon Sep  4 22:06:16 CEST 2017
CRON-APT ACTION: 0-update
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list update -o quiet=2
CRON-APT ACTION: 3-download
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list autoclean -y
Reading package lists...
Building dependency tree...
Reading state information...
Del nullmailer 1:1.13-1.2 [92.3 kB]
Del libperl5.24 5.24.1-3+deb9u1 [3524 kB]
Del perl-modules-5.24 5.24.1-3+deb9u1 [2723 kB]
Del sudo 1.8.19p1-2.1 [1055 kB]
Del perl 5.24.1-3+deb9u1 [219 kB]
Del libopts25 1:5.18.12-3 [68.0 kB]
Del ntp 1:4.2.8p10+dfsg-3 [556 kB]
Del cron-apt 0.10.0 [26.3 kB]
CRON-APT LINE: /usr/bin/apt-get -o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list.d/security.list dist-upgrade -y -o APT::Get::Show-Upgraded=true
Reading package lists...
Building dependency tree...
Reading state information...
Calculating upgrade...
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Note : Le temps d'attente des messages peut-être assez long, 30min à 1H lorsque c'est en mode auto via cron. Alors qu'en faisant un test avec "cron-apt", je recevais le mail dans la minute. Ne prenez donc pas peur si vous recevez pas tout de suite le mail après avoir mis la tâche cron toutes les deux minutes pour voir si ça marchait bien.

Note 2 : Après avoir laissé tourner une nuit complète, le lendemain j'avais un autre mail dans ma boîte :
Citation :Sujet : Cron test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/cron.daily/man-db:
/usr/bin/mandb: can't set the locale; make sure $LC_* and $LANG are correct

Cela vient d'une tâche journalière, et il y a aussi une tâche hebdomadaire et mensuelle qui devrait nous donner la même erreur. Vous pouvez les voir dans "/etc/crontab". Pour régler le soucis, il faut reconfigurer correctement la variable langue, pour savoir laquelle est à utilisée, faîtes :
Code :
cat /etc/default/locale

Personnellement, j'obtiens "LANG=en_US.UTF-8"
Ensuite vous faîtes :
Code :
dpkg-reconfigure locales
Un écran s'affiche, dans la liste, vous déselectionnez ou sélectionnez avec la touche espace et donc dans la première liste, vous prenez seulement ce qui correspond à ce que vous avez obtenu.

Sources :
https://lists.debian.org/debian-user/201...00648.html [https://archive.fo/v5ZFT] Screenshot_Archive_40
https://redscreen.wordpress.com/2010/08/...e-correct/ [https://archive.is/seq5J] Screenshot_Archive_41

Note 4 : Vous pouvez vérifier les process qui demandent à être relancés après une mise à jour en utilisant checkrestart. On installe d'abord le paquet qui nous le permettra :
Code :
sudo apt install debian-goodies

et ensuite il suffira de faire :
Code :
sudo checkrestart

Source : http://www.pontikis.net/blog/simple-step...ian-server [http://archive.is/jKosq] Screenshot_Archive_42
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#5
6. Accès web aux fichiers avec https :

Sources :
https://www.digitalocean.com/community/t...n-debian-9 [https://archive.fo/5kHQy] Screenshot_Archive_43
https://linuxize.com/post/how-to-install...-debian-9/ [https://archive.fo/ZOFIJ] Screenshot_Archive_44
http://guillaume-cortes.fr/serveur-web-apache-debian-9/ [https://archive.fo/vHYcf] Screenshot_Archive_45
https://www.cyberciti.biz/faq/how-to-ins...9-stretch/ [https://archive.fo/zzTaF] Screenshot_Archive_46

On va voir maintenant comment accéder à des fichiers présents sur ce serveur via un navigateur web.

On se logue en root, on commence par mettre en place apache :
Code :
cd /
apt install apache2 apache2-doc apache2-utils

On modifie les règles iptables pour autoriser la connexion http (et en même temps on met le https) :
Code :
nano /etc/init.d/iptablesrules

Et on ajoute avant la dernière ligne :
Code :
#Autorisation http/s
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT

On relance les règles :
Code :
/etc/init.d/iptablesrules

Maintenant, lorsque vous tapez l'ip 192.168.1.### de votre serveur dans un navigateur web, vous obtenez la page par défaut d'apache.

On peut maintenant voir à créer des répertoires qui comporteront les fichiers qui seront donc listés.

Pour cela, vous commencez par créer le répertoire qui servira à contenir les fichiers :
Code :
cd /var/www
mkdir nom_du_repertoire

Puis pour tester le listing des fichiers, on crée un fichier texte de test :
Code :
nano nom_du_repertoire/test.txt

Dedans vous mettez ce que vous voulez et vous enregistrez.

Il faut maintenant dire à apache que l'on veut avoir directement ce répertoire comme page par défaut lorsque l'on rentre l'ip dans un navigateur. Pour cela, on édite le fichier "/etc/apache2/sites-available/000-default.conf" :
Code :
nano /etc/apache2/sites-available/000-default.conf

Et dedans vous modifiez la ligne concernant le mail de l'administrateur et le chemin du répertoire pour coller à ce que vous avez fait avant (ou vous virez le "/html" pour que le répertoire www soit directement listé) :
Code :
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nom_du_repertoire

On redémarre apache pour qu'il prenne en compte la modification :
Code :
service apache2 restart

Et maintenant lorsque vous visitez http://ip_du_serveur/ vous obtenez un listing avec votre fichier txt.
A ce moment là on a accès que en http, on passera en https un peu plus loin.

[Image: Tour_Image_Part6_01.jpg]

Afin de pouvoir autoriser ou non le listing des fichiers présents dans ce répertoire, il faut utiliser un fichier htaccess. Pour pouvoir utiliser un fichier htaccess, on doit d'abord activer un module d'apache :
Code :
a2enmod rewrite

puis comme spécifié, on redémarre apache :
Code :
systemctl restart apache2

Ensuite on doit éditer le fichier suivant :
Code :
nano /etc/apache2/apache2.conf

Vous allez à la portion suivante :
Code :
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Et là dedans, vous changez "AllowOverride None" en "AllowOverride All".

On redémarre apache :
Code :
systemctl restart apache2

Et maintenant, vous pouvez utiliser les fichiers htaccess. On commence par en mettre un dans le dossier /var/www :
Code :
nano /var/www/.htaccess

Et dans ce fichier ".htaccess", on met :
Code :
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</Files>

# DISABLE DIRECTORY VIEWS
Options -Indexes
(La première partie sert à protéger le fichier htaccess de modifications non désirées.)

Avec cela, les dossiers et sous-dossiers dans www ne seront pas indexés par défaut.

[Image: Tour_Image_Part6_02.jpg]

Ce qui nous permet ensuite de pouvoir régler les permissions comme l'on veut en créant des fichiers .htaccess dans les dossiers que l'on voudra lister en allant sur leur url "http://ip.de.la.machine/dossier". Ou directement depuis "http://ip.de.la.machine/" si vous avez mis ce répertoire en défaut dans la configuration d'apache.

Ainsi, dans le dossier qu'on a précédemment créé "nom_du_repertoire", vous mettez aussi un fichier .htaccess :
Code :
nano /var/www/nom_du_repertoire/.htaccess

qui contient :
Code :
# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
</Files>

# DISABLE DIRECTORY VIEWS
Options +Indexes

Et là, ce dossier sera de nouveau listé en allant sur http://ip.de.la.machine/nom_du_repertoire

On en profite pour créer un fichier qui empêche l'indexation du contenu par les robots indexeurs du web (pour ceux qui s'en foutent pas), ça pourra servir plus loin :
Code :
nano /var/www/robots.txt

dedans on met :
Code :
# On ne veut pas d'indexation
User-agent: *
Disallow: /

Maintenant, vous avez un accès http à votre listing. On va voir maintenant à mettre un accès en https seulement. Cela permettra de chiffrer les données qui transitent.

*Si vous avez un nom de domaine* : vous pouvez maintenant mettre en place un certificat pour le https en utilisant letsencrypt : https://letsencrypt.org/
Comme indiqué, vous pouvez utiliser CertBOT : https://certbot.eff.org/

Dans mon cas, n'ayant pas de nom de domaine je vais créer des certificats et il faudra accepter d'avoir une erreur de certificat pour le https car aucune autorité ne reconnaîtra ce certificat sauf moi. Cela permet d'avoir des échanges chiffrés et comme on va se connecter via l'ip, pas de soucis, ce sera bien la bonne machine. On pourra alors voir si le certificat est modifié lors de nos conexions.
Source : https://www.digitalocean.com/community/t...n-debian-9 [https://archive.fo/yBEmD] Screenshot_Archive_47

On crée le dossier qui va recevoir les fichiers que l'on va créer :
Code :
sudo mkdir /etc/ssl/localcerts

On génère les fichiers :
Code :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/localcerts/apache-selfsigned.key -out /etc/ssl/localcerts/apache-selfsigned.crt
Voir tuto en lien pour explication des paramètres.
Vous pouvez laisser les champs demandés vides et faire "entrée" pour passer au suivant. On peut aussi changer la durée du certificat dans la seconde ligne de commande : -days "x" avec "x" le nombre de jours.

On crée un fichier de configuration pour apache afin qu'il utilise les bons paramètres https.
Source : https://cipherli.st/ [https://archive.fo/pkpAV] Screenshot_Archive_48
Note : On désactive HSTS.

Code :
sudo nano /etc/apache2/conf-available/ssl-params.conf

et dedans on colle :
Code :
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

On édite un autre fichier de configuration d'apache :
Code :
sudo nano /etc/apache2/sites-available/default-ssl.conf

Vous recherchez les lignes suivantes et modifiez pour :
Code :
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nom_du_repertoire

SSLEngine on
SSLCertificateFile /etc/ssl/localcerts/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/localcerts/apache-selfsigned.key
La première est séparée des suivantes mais juste au-dessus Wink Et vous remplacez les chemins des fichiers crt et key selon la commande un poil plus haut.
Vous enregistrez les changements dans le fichier.

On redémarre apache :
Code :
systemctl restart apache2

On active les modules qu'il faut pour apache :
Code :
sudo a2enmod ssl
sudo a2enmod headers
sudo a2ensite default-ssl
sudo a2enconf ssl-params

Vous pouvez tester si tout est ok avec :
Code :
sudo apache2ctl configtest

On redémarre apache pour que cela prenne en compte cette modification :
Code :
sudo systemctl restart apache2

Maintenant lorsque vous visitez l'adresse suivante : "https://ip.de.la.machine/" (https !) vous avez un message de sécurité.
Vous devrez accepter votre certificat auto-signé :
1 - Vous allez voir les options avancées.
2 - Vous pouvez voir que le code d'erreur fait mention de certificat auto signé (et dans les détails cela est aussi mentionné).
3 - Vous acceptez de courir le risque :)

[Image: Tour_Image_Part6_03.jpg]

Tout cela est bien mais l'on peut encore visiter la page alors qu'on est pas en https, pour modifier ça globalement :
Code :
sudo nano /etc/apache2/sites-available/000-default.conf

Et vous ajoutez
Code :
Redirect "/" "https://ip_de_la_machine/"
dans la section de "VirtualHost *:80". Après DocumentRoot par exemple :
Code :
DocumentRoot /var/www/nom_du_repertoire
Redirect "/" "https://192.168.###.###/"

On redémarre apache pour que çe prenne en compte cette modification :
Code :
sudo systemctl restart apache2

Maintenant lorsque vous voulez rejoindre la page "http://ip.de.la.machine/" vous êtes automatiquement basculé vers "https://ip.de.la.machine/".
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#6
7. Mise en place de h5ai :

Un indexeur de fichiers plus esthétique que celui par défaut d'apache : https://larsjung.de/h5ai/

On va donc dire que l'on veut partager le contenu de notre répertoire "partage" qui est dans "/var/www/nom_du_repertoire" et qu'on veut donc afficher son contenu avec apaxy. Je concatène ainsi afin de pouvoir mettre une page d'accueil dans le dossier "nom_du_repertoire" plus tard.
On crée ce dossier :
Code :
mkdir /var/www/nom_du_repertoire/partage"

Afin de voir comment ce comporte le style pour différents types de fichiers/dossiers, je vais mettre dans ce répertoire les élements suivants :
- un dossier qui contiendra des fichiers pour plusieurs dizaines de Mo
- des fichiers de différentes types : mp4, mkv, txt, raccourci (vers un dossier dans notre "home"), ...

Pour réaliser le lien symbolique de votre dossier, utilisez la comande suivante :
ln -s /home/utilisateur/source /var/www/nom_lien

J'ai donc un dossier "partage" qui contient tout ça :

[Image: Tour_Image_Part6_04.jpg]

On installe des dépendances :
Code :
sudo apt-get -y install php7.0 libapache2-mod-php7.0

On redémarre apache :
Code :
service apache2 restart

Vérifiez que la dernière version de h5ai est la 0.29.2 sinon il faudra changer le lien en conséquence dans les lignes de code suivantes :
Code :
cd /home/utilisateur/disque
wget https://release.larsjung.de/h5ai/h5ai-0.29.2.zip

Pour le dézipper, on va se servir de 7zip, pour cela, on l'installe :
Code :
apt install p7zip-full

Puis on dézipppe :
Code :
7z x h5ai-0.29.2.zip

Et on supprime le zip téléchargé :
Code :
rm -f h5ai-0.29.2.zip

On obtient un dossier "_h5ai" qui a tout le contenu qu'il nous faut. On va déplacer le contenu du dossier "_h5ai" dans notre dossier root web, "partage" :
Code :
mv /home/utilisateur/disque/_h5ai /var/www/nom_du_repertoire

On va éditer le ".htaccess" qui est dans "nom_du_repertoire/partage" :
Code :
nano /var/www/nom_du_repertoire/partage.htaccess

Et on ajoute en fin de fichier :
Code :
<IfModule dir_module>
DirectoryIndex  index.html  index.php  /_h5ai/public/index.php
</IfModule>

Sinon, pour les logs d'erreur d'apache :
Code :
tail -n 25 /var/log/apache2/error.log

Moi j'avais :
Code :
[Tue Apr 02 21:02:23.0073 2019] [core:crit] [pid 8946] (13)Permission denied: [client 192.168.1.###:41622] AH00529: /var/www/nom_du_repertoire/_h5ai/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/nom_du_repertoire/_h5ai/' is executable

Je fais donc :
Code :
chmod 755 /var/www/nom_du_repertoire/_h5ai

Puis :
Code :
[Tue Apr 02 21:14:29.216624 2019] [core:crit] [pid 8945] (13)Permission denied: [client 192.168.1.###:41728] AH00529: /var/www/nom_du_repertoire/_h5ai/public/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable and that '/var/www/nom_du_repertoire/_h5ai/public/' is executable

Je fais donc :
Code :
chmod 755 /var/www/nom_du_repertoire/_h5ai/public

Et comme ça a continué de m'emmerder :
Code :
chmod -R 755 /var/www/nom_du_repertoire/_h5ai



Vous rechargez la page web de votre navigateur "https://ip.de.la.machine/partage"/ et BINGO !

[Image: Tour_Image_Part6_05.jpg]


Maintenant, si on visite la page suivante : "https://ip.de.la.machine/_h5ai/public/index.php" vous obtenez une page de login avec le message suivant :
"The preset password is the empty string, just click login. Change it in '_h5ai/private/conf/options.json'. "

On va donc modifier le mot de passe :
Code :
nano /var/www/nom_du_repertoire/_h5ai/private/conf/options.json

Vers le haut du fichier vous avez :
"passhash": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"

Le morceau de chiffre et de lettres correspond à un mot de passe hashé via sha512. Il va falloir remplacer cette valeur par celle équivalente à votre mot de passe. Par exemple, pour le mot de passe "motdepasse" cela devrait devenir :
"passhash": "72905e7b32d847468edcdbf99f7d218e466cd828300306f1d9f8c3e0512e44fe4394644b581ed52656a2870c9a67c592bc40ca322099aa52bf528c54f9cabde0"

Vous pouvez obtenir le sha512 via ce site : https://md5hashing.net/hash/sha512 , ou celui là : http://md5decrypt.net/Sha512/ .

On va permettre le système de cache public de h5ai :
Code :
chmod o+w /var/www/nom_du_repertoire/_h5ai/public/cache/
chmod o+w /var/www/nom_du_repertoire/_h5ai/private/cache/

Vous pouvez vous connecter à l'adresse suivante :
https://ip.de.votre.machine:####/_h5ai/public/index.php

Si vou voulez aussi activer les modules suivants : image thumbs, movie thumbs, pdf thumbs et shell zip ; il faut installer les dépendances suivantes :
Code :
apt install php-gd ffmpeg zip imagemagick

Vous pouvez configurer h5ai via le fichier suivant :
Code :
nano /var/www/nom_du_repertoire/_h5ai/private/conf/options.json

Dans ce fichier, on peut voir au début :
Code :
"styles": [
           "//fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"
       ]

Il s'agit d'un appel aux polices qui sont hébergées chez google. Vous pouvez obtenir la liste en visitant l'url :
fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700

Ce que l'on va faire c'est modifier un peu tout ça afin d'héberger les polices directement sur la machine. Osef de google, ils ont pas besoin de savoir qu'on a besoin de ces polices.
Pour cela, on va regrouper les différents fichiers dans un dossier "Polices" :
Code :
cd /var/www/nom_du_repertoire
mkdir _h5ai/public/Polices

On se rend dans ce dossier et on va commencer par télécharger le fichier qui est appelé dans la configuration de h5ai :
Code :
cd _h5ai/public/Polices
wget -O polices.css "fonts.googleapis.com/css?family=Ubuntu:300,400,700%7CUbuntu+Mono:400,700"

Note : En faisant cela, j'obtenais un fichier qui comportait moins d'appel à ces polices et vers des fichiers ttf au lieu de woff2 cela doit être du à l'agent (type navigateur web) déclaré par le wget lors du téléchargement. J'ai donc téléchargé le fichier sur mon ordi pour travailler dessus.

Vous voilà avec un fichier "polices_css.css" qui contient donc :
Code :
/* cyrillic-ext */
@font-face {
 font-family: 'Ubuntu';
 font-style: normal;
 font-weight: 300;
 src: local('Ubuntu Light'), local('Ubuntu-Light'), url(https://fonts.gstatic.com/s/ubuntu/v9/X_EdMnknKUltk57alVVbVxJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
 unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
}
/* cyrillic */
@font-face {
 font-family: 'Ubuntu';
 font-style: normal;
 font-weight: 300;
 src: local('Ubuntu Light'), local('Ubuntu-Light'), url(https://fonts.gstatic.com/s/ubuntu/v9/nBF2d6Y3AbOwfkBM-9HcWBJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
 unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
.
.
.

Ce qu'il va falloir faire maintenant, c'est télécharger chacune des polices mentionnées dans ce fichier et changer l'url pour le chemin local. Dans mon cas, je vais utiliser une numérotation des polices automatique en ajout de leur nom. Par exemple pour les deux mises en exemple dans le fichier, je vais les télécharger ainsi :
Code :
sudo wget -O ubuntu1.woff2 https://fonts.gstatic.com/s/ubuntu/v9/X_EdMnknKUltk57alVVbVxJtnKITppOI_IvcXXDNrsc.woff2
sudo wget -O ubuntu2.woff2 https://fonts.gstatic.com/s/ubuntu/v9/nBF2d6Y3AbOwfkBM-9HcWBJtnKITppOI_IvcXXDNrsc.woff2


J'avais pas envie de faire ça à la main, du coup j'ai pris un peu plus de temps pour ça. J'ai fait un petit script qui permet de télécharger chacun des fichiers de polices et remplacer l'url google vers le nouveau nom.
Le script est disponible ici :
#!/bin/bash

# On met en place un systeme pour eviter de faire tourner le script s il tourne deja
FOOGLELOCKFILE=/tmp/fooglelockfile.txt
if [ -e ${FOOGLELOCKFILE} ] && kill -0 `cat ${FTPLOCKFILE}`; then
   exit 0
fi

# On s'assure que le fichier fooglelockfile est supprimé quand on quitte et on le demande
trap "rm -f ${FOOGLELOCKFILE}; exit" INT TERM EXIT
echo $$ > ${FOOGLELOCKFILE}

# On définit les fichiers en entree et autres parametres
# le fichier telecharge depuis google
googlefontcss="police.css"
# le dossier ou vont etre telecharge les polices
fontfolder="fongle"
# la regex sur l url google dans le css
regexfoogle="(.*)https://fonts\.gstatic\.com/s/(.*)/(.*)/(.*)\.woff2(.*)"
# fichier de sortie css
fooglecss="foogle.css"

mkdir ./"$fontfolder"
cp ./"$googlefontcss" ./"$fooglecss"
i=1

cat "$googlefontcss" | while read -r "line" ; do
if [[ "$line" =~ $regexfoogle ]]; then
url="https://fonts.gstatic.com/s/""${BASH_REMATCH[2]}""/""${BASH_REMATCH[3]}""/""${BASH_REMATCH[4]}"".woff2"
fontname="${BASH_REMATCH[2]}""$i"
echo "$url" >> ./listurl.txt
wget -O ./"$fontfolder"/"$fontname".woff2 "$url"
sed -i "s|$url|$fontname.woff2|g" ./"$fooglecss"
i=$[$i+1]
fi
done

echo "-----------------------------------"
echo "-----------------------------------"
echo "Et ba on dirait que c est tout bon."
echo "-----------------------------------"
echo "-----------------------------------"

# On supprime le FOOGLELOCKFILE
rm -f ${FOOGLELOCKFILE}

exit 0

Vous pouvez copier tout ça dans un fichier :
Code :
nano script_foogle.bash

Vous donnez la permission d'exécution et lancez ce script avec les commandes :
Code :
sudo chmod +x script_foogle.bash
bash -x script_foogle.bash
Note : Fonctionne sous linux ou via l'interpréteur de commande linux de windows en ayant les bonnes dépendances.

Vous obtiendrez un dossier "fongle" qui contiendra toutes les polices renommées et un fichier "foogle.css" qui sera identique au fichier css téléchargé depuis google sauf que les urls des polices sont des chemins relatifs depuis ec fichier aux emplacements des fichiers. On va mettre le fichier "foogle.css" dans le même dossier "Polices" donc on a juste besoin des noms des fichiers.

Pour votre facilité, voici un zip du dossier fongle avec le fichier css inclu dedans : fongle.zip

Vous mettez le contenu du dossier "fongle" et le fichier "foogle.css" dans le dossier "Polices" créé plus tôt, en utilisant filezilla et une connexion sftp.

On va maintenant modifier le fichier de configuration de h5ai :
Code :
sudo nano /var/www/nom_du_repertoire/_h5ai/private/conf/options.json

Et on modifie le début avec l'appel à google en :
Code :
"styles": [
           "../Polices/foogle.css"
       ]

Voilà, la configuration des polices est modifiée et on utilise les fichiers locaux :) On va maintenant modifier d'autres options de ce fichier :
Code :
"view": {
       "binaryPrefix": false,
       "disableSidebar": true,
Je désactive la barre sur le côté qui peut afficher l'arborescence, il y a un fil d'arianne en haut, cela suffira.

Code :
"download": {
       "enabled": false,
       "type": "php-tar",
       "packageName": null,
       "alwaysVisible": false
Je désactive la possibilité de télécharger plusieurs fichiers en même temps.

Code :
"filter": {
       "enabled": false,
       "advanced": true,
       "debounceTime": 100,
       "ignorecase": true
   },
Je désactive la recherche par mots clefs, on se servira de la fonction de recherche.

Code :
"foldersize": {
       "enabled": true,
       "type": "shell-du"
   },
Je modifie le clacul de la taille des dossiers avec "shell-du' qui est plus rapide mais prend en compte la taille des dossiers (pas grande différence).

Code :
"info": {
       "enabled": false,
       "show": false,
       "qrcode": false,
       "qrFill": "#999",
       "qrBack": "#fff"
   },
Je désactive cette barre d'infos avec possibilité de qrcode (pas vu de différence).

Code :
"search": {
       "enabled": true,
       "advanced": true,
       "debounceTime": 300,
       "ignorecase": true
   },
J'active la fonction de recherche récursive avec sa fonction avancée ("ab" trouvera "ab", "axbx", "amotbmot", mais pas "ba").

Code :
"thumbnails": {
       "enabled": false,
       "img": ["img-bmp", "img-gif", "img-ico", "img-jpg", "img-png"],
       "mov": ["vid-avi", "vid-flv", "vid-mkv", "vid-mov", "vid-mp4", "vid-mpg", "vid-webm"],
       "doc": ["x-pdf", "x-ps"],
       "delay": 1,
       "size": 240,
       "exif": false,
       "chunksize": 20
   },
Je désactive la création de miniatures.

Code :
"tree": {
       "enabled": false,
       "show": false,
       "maxSubfolders": 50,
       "naturalSort": true,
       "ignorecase": true
   }
Je désactive l'arborescence.

Maintenant que l'on a fait, ça, on peut styliser un peu notre page.
Lors de nos modifications du fichiers de configuration, on a pu voir la partie suivante :
Code :
/*
   Allow customized header and footer files.
   First checks for files "_h5ai.header.html" and "_h5ai.footer.html" in the current directory.
   If not successful it checks all parent directories (starting in the current directory) for
   files "_h5ai.headers.html" and "_h5ai.footers.html".
   Note the different filenames: "header" (only current) - "headers" (current and sub directories)!
   The file's content will be placed inside a <div/> tag above/below the main content.
   If a file's extension is ".md" instead of ".html" its content will be interpreted as markdown.
   */
   "custom": {
       "enabled": true
   },
On va se servir de cette possibilité pour ajouter un style.
Je crée donc un fichier "_h5ai.headers.html" dans le dossier "nom_du_repertoire" :
Code :
cd /var/www/nom_du_repertoire/
nano _h5ai.headers.html

Dedans on met :
Code :
<div class="top-message">
   <table><tr>
       <td><img src="/kaamlogo.png" alt="logo" width="163px"></td>
       <td><p>On a même un tabouret ! Quand on s’assoit d’ssus, on se retrouve sur un autre tabouret dans une taverne dans le Languedoc [...] Ouais, le siège de transport qu’ils appellent. En plus, comme par hasard c’est moi qui ai essayé le premier. Deux semaines et demi plus le bateau qu’ça m’a pris pour revenir. J’avais pas compris qu’en me rasseyant d’ssus, ça me ramenait de l’aut’côté. Et à l’arrivée j’me suis fait mettre une chasse, parce que j’avais ramené l’autre tabouret, et que soit-disant il aurait fallu qu’il reste là-bas. Pourtant ils marchent les deux tabourets ! Eh ben ils sont l’un à côté de l’autre. Alors ça fait pas pareil.<br><br>
       Perceval, <i>Le Chaudron Rutilant</i></p></td>
   </tr></table>
</div>

Puis le fichier "_h5ai.footers.html" :
Code :
nano _h5ai.footers.html

Qui contient :
Code :
<div class="bottom-message">
   <div class="bottom-p-message">
   <p>Allez, y'a plein de bruit, là ! Si ça se trouve c'est bourré d'oiseaux venimeux. Y'en a des rouges, des jaunes, des re-rouges et des pourpres !<br>
Y bouffent que des noisettes et des escalopes de veau. Et quand ils vous donnent un coup de bec vous voyez une grande lumière et ça vous donne la diarrhée !<br>
Perceval, <i>Dux Bellorum</i></p>
   </div>
</div>

Dans le fichier "_h5ai/public/css/styles.css" on ajoute en fin de fichier :
Code :
.top-message p{padding-left:20px;padding-right:40px;font-size:1.3em;text-align:justify;}#content{padding-left:15%;padding-right:15%;background-image:url("/fond.png");}.bottom-message p{position:fixed;bottom:0;text-align:center;background-color:#ffffff;box-shadow:0 0 50px 50px #ffffff;width:65%;}.bottom-message{vertical-align:text-bottom;}

Et on uploade les fichiers images suivant dans le répertoire "nom_du_repertoire" :
- fond.png
- kaamlogo.png

Et vous obtenez un style de ce genre :

[Image: Tour_Image_Part6_06.jpg]

A vous d'adapter comme vous le souhaitez.


On va maintenant modifier le style de la page "https://ip.de.la.machine/" afin qu'elle soit plus sympa à voir et contienne un lien vers notre répertoire avech5ai de mis en place.

Pour cela, on crée un fichier nommé "index.html" dans le réperoire "nom_du_repertoire" :
Code :
nano index.html

Dedans vous mettez :
Code :
<!DOCTYPE html>
<html>
<head>
 <title>Caverne</title>
</head>
<body style="background-image:url(background.jpg);background-size:cover;">

<a style="position: fixed; top:10px;right:20px;" href="/partage"><img src="ninja.png" alt="Lien ninja"></a>


<p style="background-color:#FFF;font-size=small;position: fixed; bottom:10px;right:20px;box-shadow: 0 0 5px 5px #ffffff;opacity: 0.7;">Image source : http://xxxgigagaloxxx.web.fc2.com/</p>

</body>
</html>
Note : Modifier " href="/partage" " au besoin si vous avez appelé votre dossier partagé autrement.

Puis vous uploadez les images suivantes dans ce même répertoire :
- background.jpg
- ninja.png

Vous voilà avec une page d'accueil et un lien vers votre listing en haut à droite en cliquant sur le ninja :)

On va mettre en place un accès via un compte utilisateur à ce répertoire.
Pour cela on rajoute des lignes dans le .htaccess situé dans le dossier "partage" :
Code :
nano partage/.htaccess

Et on rajoute en fin de fiichier :
Code :
# Authentification
AuthType Basic
AuthName "Acces limité, rentrez le mot de passe."
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwords
Require valid-user

On va donc stocker les mots de passe dans le dossier "/usr/local/apache" :
Code :
mkdir /usr/local/apache

Pour ajouter un utilisateur à la liste des personnes autorisées, créé son compte à l'aide de la commande suivante :
Code :
htpasswd -c /usr/local/apache/passwords nom_d_utilisateur
il vous sera demandé le mot de passe associé.
Note : Ce compte n'a pas besoin d'être un utilisateur du système, c'est même mieux dans le cas contraire.

Pour créer un nouveau compte en plus il faut faire :
Code :
htpasswd /usr/local/apache/passwords nouveau_compte
Note : Il n'y a plus l'option -c.

Pour en supprimer un, il faut juste supprimer la ligne correspondante dans le fichier "/usr/local/apache/passwords".

Maintenant, lorsque vous voudrez accéder à votre listing, un couple utilisateur/mot de passe vous sera demandé. :)
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#7
8. Installation du client torrent avec son interface web :

Je me sers de ce tuto :
https://terminal28.com/how-to-install-an...9-stretch/ [https://archive.fo/4C45V] Screenshot_Archive_49
https://github.com/Novik/ruTorrent/wiki/Plugins

On se logue sous notre utilisateur en ssh, pas le root mais celui qui a les droits.
J'ai monté mon deuxième disque dur par la précédente méthode sous /home/utilisateur/second_disque, je vais me servir de cet espace pour les fichiers en partage seulement de l'utilisateur rtorrent.

On est bien dans une version de debian > 9.5 :
Code :
lsb_release -a
nous renvoie :
Code :
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 9.8 (stretch)
Release:    9.8
Codename:   stretch

On crée un nouvel utilisateur "rtorrent" et on lui assigne un dossier ("/home/rtorrent") comme home :
Code :
sudo adduser --system --home /home/rtorrent --disabled-password --disabled-login --group rtorrent

On vérifie les mise à jour dispo sur les paquets :
Code :
sudo apt-get update
sudo apt-get upgrade

On installe des dépendances (il y en a surement que l'on a déjà installé) :
Code :
sudo apt-get -y install php php-geoip php7.0-cli php7.0-json php7.0-curl php7.0-cgi php7.0-mbstring libapache2-mod-php libapache2-mod-scgi libapache2-mod-xsendfile apache2 unrar unzip libav-tools ffmpeg mediainfo curl screen sqlite3 git net-tools sox

On installe rtorrent :
Code :
sudo apt-get -y install rtorrent libtorrent19 libxmlrpc-core-c3

On crée les dossiers utiles à rtorrent :
Code :
sudo mkdir -p /home/rtorrent/{session,watch,download}
sudo chmod 777 -R /home/rtorrent/{session,watch,download}
sudo chown rtorrent:rtorrent -R /home/rtorrent/{session,watch,download}

On crée le fichier de configuration de notre utilisateur rtorrent :
Code :
sudo nano /home/rtorrent/.rtorrent.rc

Il doit contenir (modifier comme il faut) :
Code :
# Port SCGI
scgi_port = 127.0.0.1:5000

# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#
throttle.min_peers.normal.set = 40
throttle.max_peers.normal.set = 100

# Same as above but for seeding completed torrents (-1 = same as downloading)
#
throttle.min_peers.seed.set = 10
throttle.max_peers.seed.set = 100

# Maximum number of simultanious uploads per torrent.
#
throttle.max_uploads.set = 15

# Global upload and download rate in KiB. "0" for unlimited.
#
throttle.global_down.max_rate.set_kb = 0
throttle.global_up.max_rate.set_kb = 0

# Default directory to save the downloaded torrents.
#
directory.default.set = /home/rtorrent/download

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = /home/rtorrent/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load_start=/home/rtorrent/session/*.torrent
schedule2 = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#
schedule2 = low_diskspace,5,60,close_low_diskspace=2000M

# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no

# Port range to use for listening.
#
network.port_range.set = 6890-6890

# Start opening ports at a random position within the port range.
#
network.port_random.set = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
pieces.hash.on_completion.set = no

# Set whether the client should try to connect to UDP trackers.
#
trackers.use_udp.set = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = auto

# UDP port to use for DHT.
#
dht.port.set = 6881

# Enable peer exchange (for torrents not marked private)
#
protocol.pex.set = yes

# Set downlad list layout style. ("full", "compact")
#
#ui.torrent_list.layout.set = "full"

Note : Les liens magnets peuvent ne pas fonctionner si le chiffrement n'est pas activé :
Code :
protocol.encryption.set = require,require_RC4

Et on lui donne les bons droits :
Code :
sudo chmod 777 /home/rtorrent/.rtorrent.rc

En passant, on va ouvrir ces ports dans iptables :
Code :
sudo nano /etc/init.d/iptablesrules

Et avant la dernière ligne, on ajoute :
Code :
#Autorisation p2p
iptables -t filter -A INPUT -p tcp --dport 6890 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 6881 -j ACCEPT

On peut aussi réaliser une redirection de ports dans l'administration de sa box internet :
Administration > Réseaux > NAT/PAT > Règles personnalisées
nom:TCPmachine port_entrant:6890 port_sortant:6890 type:tcp machine:My_computer
nom:UDPmachine port_entrant:6881 port_sortant:6881 type:tcp machine:My_computer

On installe maintenant l'interface rutorrent :
Code :
sudo git clone https://github.com/Novik/ruTorrent.git /var/www/rutorrent/
sudo chown -R www-data:www-data /var/www/rutorrent

On édite la config de rutorrent pour refléter le fichier de téléchargement de l'utilisateur rtorrent :
Code :
sudo nano /var/www/rutorrent/conf/config.php

On modifie la ligne :
Code :
$topDirectory = '/home/rtorrent/download'; // Upper available directory. Absolute path with trail slash.

Vous pouvez aussi vérifier quelques chemins avec la commande "whereis", example :
Code :
whereis curl
qui donne :
Code :
curl: /usr/bin/curl /usr/share/man/man1/curl.1.gz
On ne prends que le premier chemin à chaque fois.

On peut modifier la partie suivante :
Code :
$pathToExternals = array(
   "php"   => '/usr/bin/php',                      // Something like /usr/bin/php. If empty, will be found in PATH.
   "curl"  => '/usr/bin/curl',                     // Something like /usr/bin/curl. If empty, will be found in PATH.
   "gzip"  => '/bin/gzip',                 // Something like /usr/bin/gzip. If empty, will be found in PATH.
   "id"    => '/usr/bin/id',                       // Something like /usr/bin/id. If empty, will be found in PATH.
   "stat"  => '/usr/bin/stat',                     // Something like /usr/bin/stat. If empty, will be found in PATH.
);

On crée un utilisateur avec son mot de passe pour accéder à l'interface web :
Code :
cd /var/www/rutorrent
sudo htpasswd -c /var/www/rutorrent/.htpasswd nouveau_utilisateur

On édite le .htaccess de rutorrent :
Code :
sudo nano /var/www/rutorrent/.htaccess

Et on ajoute :
Code :
AuthUserFile /var/www/rutorrent/.htpasswd
AuthName "Accéder à la source :"
AuthType Basic
require valid-user

On crée la conf d'apache pour mettre en place rutorrent :
Code :
sudo nano /etc/apache2/sites-available/rutorrent.conf

On ajoute :
Code :
# ruTorrent
#===============================
<IfModule alias_module>

Alias /rutorrent        /var/www/rutorrent/

       <Directory /var/www/rutorrent/>
               Options +Indexes +Includes +FollowSymLinks +MultiViews
               AllowOverride all
               Require all granted
       </Directory>

</IfModule>
#===============================

On active l'interface web de rutorrent :
Code :
sudo ln -s /etc/apache2/sites-available/rutorrent.conf /etc/apache2/sites-enabled/rutorrent.conf

On active certains modules d'apache :
Code :
sudo a2enmod auth_digest
sudo a2enmod authn_file
sudo a2enmod xsendfile
sudo a2enmod scgi

On redémare apache :
Code :
sudo systemctl restart apache2

Note :
Vous pouvez avoir le message d'erreur suivant :
Code :
Failed to restart apache2.service: The name org.freedesktop.PolicyKit1 was not provided by any .service files
See system logs and 'systemctl status apache2.service' for details.
Il nous manque un paquet :
Code :
sudo apt install policykit-1

On va sécuriser le dossier scgi(/rpc2), pour cela on commence par créer un répertoire pour avoir des mots de passes pour apache2 :
Code :
sudo mkdir -p /etc/apache2/passwords-{available,enabled}

On va dans le dossier des mots de passe disponibles et on en crée un pour un utilisateur :
Code :
cd /etc/apache2/passwords-available
sudo htpasswd -c rtorrentscgi scgi_utilisateur

On fait le lien entre le fichier crée et la partie active :
Code :
sudo ln -s /etc/apache2/passwords-available/rtorrentscgi /etc/apache2/passwords-enabled/rtorrentscgi

On édite le fichier de conf pour scgi de rutorrent :
Code :
sudo nano /etc/apache2/sites-available/rtorrentscgi.conf

On ajoute cela :
Code :
#rTorrent SCGI Password Location
#===============================
       <LocationMatch "/RPC2">
               AuthType        Basic
               AuthName        "rtorrentscgi"
               AuthUserFile    /etc/apache2/passwords-enabled/rtorrentscgi
               Require         valid-user
               BrowserMatch    "MSIE"  AuthDigestEnableQueryStringHack=On
               Require ip 127.0.0.1
       </LocationMatch>
#===============================

# SCGI PORT
#===============================

#LoadModule scgi_module /usr/lib/apache2/modules/mod_scgi.so
SCGIMount /RPC2 127.0.0.1:5000

#===============================

On active cette config :
Code :
sudo ln -s /etc/apache2/sites-available/rtorrentscgi.conf /etc/apache2/sites-enabled/rtorrentscgi.conf

On redémarre apache :
Code :
sudo service apache2 restart

On fini par mettre en place le démarrage automatique de rtorrent avec la machine à l'aide de systemd :
Code :
sudo nano /etc/systemd/system/rtorrent.service

Dedans, on mets :
Code :
[Unit]
Description=rTorrent
After=network.target

[Service]
UMask=002
Type=forking
RemainAfterExit=yes
KillMode=none
User=rtorrent
ExecStartPre=-/bin/rm -f /home/rtorrent/session/rtorrent.lock
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
WorkingDirectory=/home/rtorrent/

[Install]
WantedBy=multi-user.target

On active cela :
Code :
sudo systemctl enable rtorrent.service

On pourra utiliser les commandes suivantes :
Code :
sudo systemctl start rtorrent
sudo systemctl stop rtorrent
sudo systemctl restart rtorrent

Pouvez alors voir que ça fonctionne bien avec les commandes :
Code :
sudo service rtorrent start
sudo netstat -npl | grep rtorrent

Vous avez accès à l'interface web via l'url "https://ip.de.la.machin/rutorrent/" et en utilisant le compte créé.

En ajoutant un torrent (par exemple : https://peach.blender.org/download/ ou en dessous debian si pas de sources :( ), on obtient les activations avec udp :
Code :
tcp        0      0 0.0.0.0:6890            0.0.0.0:*               LISTEN      9808/rtorrent      
tcp        0      0 127.0.0.1:5000          0.0.0.0:*               LISTEN      9808/rtorrent      
udp        0      0 0.0.0.0:6881            0.0.0.0:*                           9808/rtorrent

On essaie en éteignant et redémarrant la machine.
Code :
sudo shutdown

Pour moi on dirait que c'est bon, on peut tester des téléchargement d'ubuntu :
https://www.ubuntu.com/download/alternative-downloads

Note :
On peut avoir une erreur :
Citation :JS error: [https://ip_server/rutorrent/js/content.js : 72] SecurityError: Permission denied to access property "document" on cross-origin object
Cela vient de notre config ssl, on peut modifier ainsi :
Code :
sudo nano /etc/apache2/conf-available/ssl-params.conf

Et :
Header always set X-Frame-Options DENY
devient :
# Header always set X-Frame-Options DENY

On redémarre apache :
Code :
sudo systemctl restart apache2

On peut voir si ça lance bien au démarrage en relancant la machine :
Code :
sudo reboot


On apprécie :
[Image: Tour_Image_Part7_01.jpg]


Note :
Pour la création de nouveaux torrents, vous pouvez avoir un soucis avec un listing non disponible via le plugin. Cela vient de ce fichier :
Code :
sudo nano /etc/apache2/conf-available/ssl-params.conf
Il faut passer
Code :
Header always set X-Frame-Options DENY
en
Code :
Header always set X-Frame-Options SAMEORIGIN

Il faut redemarrer apache :
Code :
systemctl restart apache2

Source : https://github.com/Novik/ruTorrent/issues/1647
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#8
9. On pose un vpn sur rtorrent :

Sources :
https://tech.kanka.ch/index.php/faire-tr...ur-debian/ [https://archive.fo/DHEW9] Screenshot_Archive_51
https://baroumas.blogspot.com/2015/08/fo...envpn.html [https://archive.fo/bTH67] Screenshot_Archive_52
https://mondedie.fr/d/5933-tuto-faire-pa...unnnel-vpn [https://archive.fo/w0acY] Screenshot_Archive_53
Avec réponses : https://mondedie.fr/d/5934 [https://archive.fo/zPqaH] Screenshot_Archive_54
https://lucinfordi.fr/viewtopic.php?t=36 [https://archive.fo/0WCsJ] Screenshot_Archive_55

On commence par installer openvpn si c'est pas déjà fait :
Code :
sudo apt-get install openvpn

Et on installe des dépendances :
Code :
sudo apt-get install resolvconf screen psmisc

Puis, on ajoute une nouvelle règle à la table de routage :
Code :
sudo nano /etc/iproute2/rt_tables

Et on rajoute en fin de fichier
Code :
# Route pour le vpn 1
1 VPNMULL

On crée l'interface lo:1, pour cela on édite le fichier suivant :
Code :
sudo nano /etc/network/interfaces

Et on ajoute les ligne suivantes à la fin du fichier avant de l'enregistrer :
Code :
# Une interface réseau pour le VPNMULL
auto lo:1
   iface lo:1 inet static
   address 192.168.0.1
   netmask 255.255.255.255

On se rend sur notre vendeur d'accès vpn, perso je prends Mullvad, ils sont compétents de mon point de vue. Ils ont une large sélection de points de sortie, n'allez pas là où vous ne voudriez pas ;)
Source : https://mullvad.net/fr/guides/linux-open...tallation/ [https://archive.fo/JaL01] Screenshot_Archive_50
https://github.com/rakshasa/rtorrent/wik...n-rTorrent [https://archive.fo/akm55]

On copie les fichiers suivants par sftp (pouvez utiliser filezilla : https://filezilla-project.org/ )
- mullvad_ca.crt
- mullvad_userpass.txt
- update-resolv-conf
dans le dossier "/etc/openvpn/mullvad/files"

Puis le fichier :
- mullvad_xx.conf
dans le dossier "/etc/openvpn/mullvad"

Note : Vous avez besoin d'être root, pour autoriser la conexion en root sous winscp, vous devez modifier la config ssh :
Code :
sudo nano /etc/ssh/sshd_config

PermitRootLogin no
devient
PermitRootLogin yes

On relance ssh :
Code :
sudo /etc/init.d/ssh restart

N'oubliez pas de remodif après.

De retour en root sur la machine par ssh.
On active le mode exécutable pour un fichier au besoin :
Code :
sudo chmod +x /etc/openvpn/mullvad/files/update-resolv-conf

Puis on modifier le fichier de config
Code :
sudo nano /etc/openvpn/mullvad/mullvad_xx.conf

Il contenait :
Code :
client
dev tun
proto udp

remote ca.mullvad.net 1300

cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288

fast-io

auth-user-pass mullvad_userpass.txt
ca mullvad_ca.crt

tun-ipv6
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA

Maintenant il contient :
Code :
client
dev tun
proto udp

route-nopull

remote ca.mullvad.net 1300

cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
remote-cert-tls server
ping 10
ping-restart 60
sndbuf 524288
rcvbuf 524288

fast-io

pull-filter ignore "ifconfig-ipv6 "
pull-filter ignore "route-ipv6 "

auth-user-pass /etc/openvpn/mullvad/files/mullvad_userpass.txt
ca /etc/openvpn/mullvad/files/mullvad_ca.crt

#tun-ipv6
script-security 2
#up /etc/openvpn/mullvad/files/update-resolv-conf
#down /etc/openvpn/mullvad/files/update-resolv-conf
# Scripts vpn
up /etc/openvpn/mullvad/scripts/up.sh
down /etc/openvpn/mullvad/scripts/down.sh

tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA

Note :
- Les chemins complets des fichiers sont renseignés.
- On désactive tun-ipv6 pour désactiver l'ipv6.
- D'autres scripts "up" et "down" seront utilisés, on va les créer plus loin.
- On ajoute "route-nopull" pour éviter le changement automatique de la table de routage par le vpn.
- "pull-filter" m'est utile car je désactive l'ipv6 et sinon ça plante (cf logs).

Afin que cette configuration se lance automatiquement, il lui faut un chemin depuis le dossier openvpn, pour cela un lien symbolique :
Code :
sudo ln -s /etc/openvpn/mullvad/mullvad_xx.conf /etc/openvpn/client_mull.conf

Et on passe aux scripts up.sh et down.sh en créant d'abod le dossier qui va les contenir :
Code :
sudo mkdir /etc/openvpn/mullvad/scripts

On commence par le script "up.sh" :
Code :
sudo nano /etc/openvpn/mullvad/scripts/up.sh

Dedans on mets :
Code :
#! /bin/bash
# This script enables policy routing after the tunnel interface is brought up
# Policy routing is used to make sure response packets go through the tunnel interface
# This is mandatory when your ISP has setup anti-spoofing filters

# Add a default route via tun0 into the VPN routing table
ip route add default dev $1 table VPNMULL

# Pass traffic from lo:1 (192.168.0.1) to the VPN routing table, using policy routing (ip rule commands)
ip rule add from 192.168.0.1/32 table VPNMULL

# Pass traffic from tun0 IP address to the VPN routing table
ip rule add from $4/32 table VPNMULL

#On ajoute les regles iptables pour faire le NAT

# Source NAT and destination NAT rules to make sure the incoming and ougoing packets on 192.168.0.1 are redirected
iptables -A PREROUTING -t nat -i $1 -p tcp --dport 1300 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 1300 -j DNAT --to 192.168.0.1
iptables -A POSTROUTING -t nat -o $1 -j MASQUERADE
# Allow session continuation traffic
iptables -A INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow Bittorrent traffic via tun0
#iptables -A SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -A SERVICES -p tcp --dport 6890 -j ACCEPT
iptables -A SERVICES -p udp --dport 6881 -j ACCEPT

# Disallow BitTorrent traffic via eth0 - Just to be extra safe ;)
iptables -A FORWARD -s 192.168.0.1/32 -o eth0 -j DROP

#Demarrage de rtorrent
#/etc/init.d/utilisateur-rtorrent start
systemctl start rtorrent

#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf

#Demarrage du script verifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &

Notes :
- La variable $1 contient le nom d’interface et la variable $4 l’adresse ip du tunnel. Ces deux variables sont transmises par openvpn aux scripts up et down.
- Changer le port 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports renseignés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais gardé -rtorrent
- La ligne "#/etc/init.d/utilisateur-rtorrent start" me servait lorsque j'utilisais le script suivant "https://gist.githubusercontent.com/Magic...stfile1.sh" que je mettais dans "/etc/init.d/". Voir sur le net pour s'en servir.

On voit une chaîne SERVICES qui apparaît, elle doit être créée dans notre fichier iptables (et on va en profiter pour virer les lignes du client torrent et ajouter celle pour le vpn) donc :
Code :
sudo nano /etc/init.d/iptablesrules

Et en début de fichier, après le bloc:
Citation :# Autorisation trafic sortant
iptables -t filter -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

On ajoute avant la dernière ligne du fichier :
Code :
# Ajout pour config vpn
iptables -N SERVICES

Et on ajoute en même temps l'autorisation pour le vpn :
Code :
# VPN
iptables -t filter -A INPUT -p udp --dport 1300 -j ACCEPT

Et on peux désactiver les autorisations des ports p2p c'est activé dans les scripts :
Code :
#Autorisation p2p
#iptables -t filter -A INPUT -p tcp --dport 6890 -j ACCEPT
#iptables -t filter -A INPUT -p udp --dport 6881 -j ACCEPT

Et on recharge les règles :
Code :
sudo /etc/init.d/iptablesrules

On crée le script down.sh :
Code :
sudo nano /etc/openvpn/mullvad/scripts/down.sh

Dedans on mets :
Code :
#! /bin/sh
# This script disables policy routing before the tunnel interface is brought down

killall checkVPN

#/etc/init.d/utilisateur-rtorrent stop
systemctl stop rtorrent

#On efface les regles iptables ajoutees

iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
#iptables -D SERVICES -p tcp --match multiport --dports 59XXX:59YYY -j ACCEPT
iptables -D SERVICES -p tcp --dport 6881 -j ACCEPT
iptables -D SERVICES -p tcp --dport 6890 -j ACCEPT
iptables -D INPUT -i $1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -D POSTROUTING -t nat -o $1 -j MASQUERADE
iptables -D PREROUTING -t nat -i $1 -p udp --dport 1300 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 1300 -j DNAT --to 192.168.0.1

# Remove rule for the secondary loopback IP address (192.168.0.1)
ip rule del from 192.168.0.1/32 table VPNMULL

# Remove rule for tun0 IP address
ip rule del from $4/32 table VPNMULL

#Resolveconf mullvad
/etc/openvpn/mullvad/files/update-resolv-conf

Note :
- Changer le port 1300 par le port utilisé par votre client openvpn (vu dans le fichier de configuration).
- Changer 6881 et 6890 pour les ports rensiegnés dans votre config rtorrent.rc
- Changer utilisateur-rtorrent par le nom de votre utilisateur mais garder -rtorrent

Dans les deux scripts qu'on vient d'ajouter, on voit qu'il faut ajouter un autre script qui vérifie que openvpn fonctionne toujours bien afin de couper rtorrent si ce dernier a lâché et qu'il ne l'a pas vu :)
Code :
sudo nano /usr/bin/checkVPN

On met ceci :
Code :
#! /bin/bash

#On fait un ping vers un des résolveurs dns de FDN toutes les 5min, et si aucun paquet n est reçu en retour (0 packets received, le 0 etant à la position 23 sur la ligne venant de ping) on relance le VPN
#

while [ 1 > 0 ]; do
       sleep 300
   T=`ping -I 192.168.0.1 -c 1 80.67.169.12 |grep "packets transmitted"`
   if [[ ${T:23:1} != "1" ]]
   then
       /etc/init.d/openvpn restart
   fi
done

On donne des permissions aux scripts :
Code :
sudo chmod +x /etc/openvpn/mullvad/scripts/up.sh
sudo chmod +x /etc/openvpn/mullvad/scripts/down.sh
sudo chmod +x /usr/bin/checkVPN

On dit à openvpn de lancer la bonne config au démarrage, dans le fichier :
Code :
sudo nano /etc/default/openvpn

Vous changez la ligne :
Code :
AUTOSTART="client_mull"

Maintenant, afin que rtorrent soit relié à l'adresse lo:1 qu'on a crée, il faut éditer sa config. On édite la configuration :
Code :
sudo nano /home/rtorrent/.rtorrent.rc

Et vous rajoutez :
Code :
network.bind_address.set = 192.168.0.1

On va donc désactiver complètement l'ipv6 :
Code :
sudo nano /etc/sysctl.conf

Et dedans on met à la fin :
Code :
# Desactivation de l ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.lo:1.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1

On ajoute openvpn au démarrage de l'ordi :
Code :
sudo update-rc.d openvpn defaults
/etc/init.d/openvpn restart

Note :
Alors j'avais des soucis. Je vais mettre quelques lignes sur ce que j'ai réalisé pour trouver la cause :
Dans "/etc/openvpn/mullvad/mullvad_##.conf", on peut ajouter :
Code :
status openvpn-status.log
log-append  openvpn.log
verb 4
Ce qui créera les fichiers concernés dans "/etc/openvpn" afin d'avoir les logs.
De mon côté c'était un soucis de résolution du nom de domaine. Et même un simple "ping -c 3 google.com" ne donnait rien :/
Pour régler ce soucis, j'ai modifié le fichier "/etc/network/interfaces" pour avoir :
Code :
iface eth0 inet static
       address 192.168.1.100
       netmask 255.255.255.0
       gateway 192.168.1.1
       dns-nameserver 192.168.1.1

dns-nameservers --> doit pointer vers l'ip locale de la box qui fera la résolution des nom de domaine, vous pouvez avoir cette ip dans l'admin de votre box.

Note Bonus :
- Un site pour avoir son ip :
Code :
wget https://icanhazip.com/
- Pouvez voir que votre rutorrent se plante avec "sudo service openvpn stop" en ssh et l'interface web ne recharge plus :
"Lien incorrect avec rTorrent. Vérifiez qu'il soit bien en cours d'exécution. Vérifiez la configuration de $scgi_port et de $scgi_host dans config.php et de scgi_port dans le fichier de configuration de rTorrent."
Pour relancer : "sudo service openvpn start"

Vous pouvez vérifier votre ip en utilisant : https://ipleak.net/ et le lien magnet fourni :)
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#9
10. On ajoute un outils de surveillance des disques durs :

Il est utile de savoir si un disque vq lâcher afin de le changer à temps. Pour cela, on va mettre en place de la supervision des disques.
On va utiliser : Smartmontools
Et on a du tuto ici : https://wiki.debian-fr.xyz/Smartmontools

Des infos sur comment interpréter tout cela : https://www.deltasight.fr/monitoring-serieux-de-disques-durs-avec-smartmontools/

On commence par l'installer :
Code :
sudo apt-get install smartmontools

Une fois fait on peut tester nos disques. Vous pouvez retrouver la bonne lettre de vos disques dans les infos avec la commande suivante :
Code :
sudo fdisk -l

Puis vous utilisez la commande :
Code :
smartctl -i /dev/sdX
(remplacez donc "X" avec la lettre voulue)

Vous devriez obtenir un truc du style :
Code :
smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     SAMSUNG HD204UI
Serial Number:    S2H7J9AB505399
Firmware Version: 1AQ10001
User Capacity:    2 000 398 934 016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 6
Local Time is:    Sat Aug 13 01:12:47 2011 EAT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Pas forcément toutes ces lignes mais dans le style et avec à la fin des messages de support de SMART :
Code :
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-8-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

/dev/sdb: Unknown USB bridge [0x0781:0x5567 (0x100)]
Please specify device type with the -d option.

Use smartctl -h to get a usage summary
Vous pouvez aussi tester sur la clef usb et vous aurez surement un soucis. Dans ce cas vous pouvez spécifié le type de disque pour le test avec la comande suivante :
Code :
sudo smartctl -d OPTIONS -i /dev/sdX
Remplacez "OPTIONS" par la bonne optoin :
Code :
-d TYPE, --device=TYPE
Specifies  the  type  of  the  device.   The  valid arguments to this option are ata, scsi, sat, marvell,3ware,N,
areca,N, usbcypress, usbjmicron, usbsunplus, cciss,N, hpt,L/M (or hpt,L/M/N), and test.
Dans le cas d'une clef usb, il s'agit de "scsi".
Source : https://superuser.com/questions/1064119/...-s-m-a-r-t

Maintenant qu'on sait que nos disques supportent smaart, on va activer des options dessus avec la commande suivante :
Code :
sudo smartctl -s on -o on -S on /dev/sdX
Les options indiquées servent à : "s" on active le support smart, "o" on active la collecte de données hors connexion et "S" on active la sauvegarde auto des attributs.

On obtient ceci :
Code :
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-8-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.

Sur la clef usb j'ai eu :
Code :
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
Informational Exceptions (SMART) enabled
Temperature warning disabled
Enable autosave (clear GLTSD bit) faile

On va débuter les tests et pour ça on commence avec la commande suivante :
Code :
sudo smartctl -H /dev/sdX

Qui devrait vous retourner :
Code :
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-8-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

C'est là que ça devient sympa, si vous avez le test qui a FAILED, et bien vous êtes bon pour racheter tout de suite un nouveau disque dur :)

On va voir les tests que l'on peut réaliser sur les disques avec la commande suivante :
Code :
sudo smartctl -c /dev/sdX

Cela va vous retourner pas mal de trucs :
Code :
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-8-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                   was completed without error.
                   Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                   without error or no self-test has ever
                   been run.
Total time to complete Offline
data collection:        (  430) seconds.
Offline data collection
capabilities:            (0x5b) SMART execute Offline immediate.
                   Auto Offline data collection on/off support.
                   Suspend Offline collection upon new
                   command.
                   Offline surface scan supported.
                   Self-test supported.
                   No Conveyance Self-test supported.
                   Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                   power-saving mode.
                   Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                   General Purpose Logging supported.
Short self-test routine
recommended polling time:    (   1) minutes.
Extended self-test routine
recommended polling time:    (  92) minutes.

Dans le tas vous voyez ce que vous cherchez :
- capabilities: Self-test supported.
- Short self-test routine recommended polling time:    (   1) minutes.
- Extended self-test routine recommended polling time:    (  92) minutes.

On va commencer avec un test assez court :)
Code :
sudo smartctl -t short /dev/sdX

On attend le temps annoncé et on va voir le résultat :
Code :
sudo smartctl -l selftest /dev/sdX

Vous aurez la confirmation que cela s'est bien passé avec "Completed without error" dans :
Code :
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%     16156         -

On peut lancer un long test :
Code :
sudo smartctl -t long /dev/sdX

Une fois le temps achevé, de même, vous pouvez obtenir le résultat avec :
Code :
sudo smartctl -l selftest /dev/sdX

Qui donne :
Code :
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%     16157         -
# 2  Short offline       Completed without error       00%     16156         -

Les deux tests se sont donc bien passés :)

On va maintenant configurer smartmontools pour qu'il lance tout seul des scans courts et longs à des intervalles choisis. Pour cela il faut éditer le fichier "smartd.conf" :
Code :
sudo nano /etc/smartd.conf

Dedans vous verrez une ligne de test qu'il faut commenter pour désactiver (= ajouter un dièse en début de ligne) :
Code :
#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner

Et on ajoute les scans des disques en ajoutant des lignes :
Code :
/dev/sdX -a -d sat -o on -S on -s (S/../.././01|L/../../7/03) -m monmail@domaine.tld -M exec /usr/share/smartmontools/smartd-runner
Les détails :
- sdX, vous remplacez le X par la lettre du disque sur lequel vous voulez lancer le test
- a, une option qui en remplace plusieurs d'un coup selon la doc :
Code :
-a     Equivalent to turning on all of the following Directives: ´-H´ to check the SMART health status,  ´-f´  to  report failures of Usage (rather than Prefail) Attributes, ´-t´ to track changes in both Prefailure and Usage Attributes, ´-l selftest´ to report increases in the number of Self-Test Log errors, ´-l error´ to report increases in the number of  ATA  errors, ´-C  197´ to report nonzero values of the current pending sector count, and ´-U 198´ to report nonzero values of the offline pending sector count.
- d, avec le paramètre "sat", on a vu cela pour la clef usb, cela donne le type de disque, pas obligatoire si votre disque était bien reconnu
- s, avec le paramètre "(S/../.././01|L/../../7/03)" qui donne les dates de lancement des tests. La programmation suit le style suivant "T/MM/DD/d/HH" avec T pour l type de test (court ou long), MM qui donne le mois (de 01 pour janvier à 12 pour décembre), DD qui est le jour du mois (de 01 à 31), d qui est le jour de la semaine (de 1 pour lundi à 7 pour dimanche) et HH qui est l'heure du jour. Ici on a donc un test court tous les jours à 1h du matin et un test long tous les dimanches à 3h du matin.
- m, avec le paramètre "monmail@domaine.tld" qui va enoyer un mail à "root" à la fin du test pour avoir les infos.
- M, avec la paramètre "exec /usr/share/smartmontools/smartd-runner" qui permet d'exécuter smartd-runner qui va lancer les scripts dispos dans "/etc/smartmontools/run.d/". Un de ces scripts envoie l'email.
Plus dinfos : http://manpages.ubuntu.com/manpages/trus...onf.5.html

Une fois les changements réalisés, vous redémarrez smartmontools avec la commande :
Code :
/etc/init.d/smartmontools restart

Vous pouvez ausi tester la fonciton d'envoie d'email en modifiant vos commandes précédentes et en mettant :
Code :
/dev/sdX -a -d sat -o on -S on -s (S/../.././01|L/../../7/03) -m monmail@domaine.tld -M test
a la place, "exec /usr/share/smartmontools/smartd-runner" est donc devenu "test".

Vous relancez smartmontools :
Code :
/etc/init.d/smartmontools restart

Et vous devriez recevoir un mail du genre :
Code :
This message was generated by the smartd daemon running on:
host name: hostname
DNS domain: dnsname
The following warning/error was logged by the smartd daemon:
TEST EMAIL from smartd for device: /dev/sda [SAT]
Device info: ST3654560UT, S/N:7MK1TVBB, FW:3.AAD, 250 GB
For details see host's SYSLOG.

Si c'est bon, remettez votre ligne comme avant et relancez smartmontools.

Pour lancer smartmontools automatiquement au lancement de la machine, on édite :
Code :
sudo nano /etc/default/smartmontools

Et on change la ligne suivante en la décommentant :
Code :
# uncomment to start smartd on system startup
start_smartd=yes

Maintenant, si un jour vous recevez un message signalant des erreurs sur un de vos disques :
Code :
The following warning/error was logged by the smartd daemon:

Device: /dev/sda [SAT], 16 Currently unreadable (pending) sectors

Vous pouvez changer ce disque avant qu'il ne rende l'âme complètement.
Des infos pour "prolonger" la vie de ce disque par ici : https://wiki.debian-fr.xyz/Smart_error.
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre
#10
11. Reprendre disque chiffré :

En bref, si vous n'avez pas sauvegardé les fichiers necessaires :

Donc j'ai réinstallé un système sur une nouvelle clef usb.
Je n'ai pas sauvegardé le header du disque ni la clef.

Je ne peux pas retrouver ces données.
Et voilà, faites ce que je dis, pas ce que je fais ^^

Tuto fini, vous n'aurez plus accès à vos données :)


Si vous avez bien sauvegardé le header du disque et la clef :

Mais bon, je voulais quand même vérifier cette possibilité de retrouver ses données si on réinstalle le système.
J'ai réalisé une nouvelle installation et j'ai refais un disque chiffré. Ce coup ci j'ai bien sauvegardé le header et la clef.

J'ai formaté la clef du système et réinstallé une nouvelle fois debian en suivant la partie "1. Installation de Debian sur clef usb".
Note : J'ai utilisé les même paramètres de "hostname", "domainname", et autres paramètres utilisés lors de l'installation.

Je relance la machine une fois le disque chiffré rebranché sur la machine.
Une fois la phrase de passe du système de rentrée et la fin du démarage, on a pas mal de message d'erreur à cause du volume que l'on a rajouté puisqu'il est chiffré et ne peut être monté.

J'ouvre une fenêtre ssh depuis mon ordi et je me connecte à la machine.
Je reprends la partie "2. Ajout de disques durs".
Code :
sudo apt install cryptsetup

On crée le dossier sur lequel on va monter ce disque chiffré :
Code :
mkdir /home/utilisateur/disque

J'ai du mal à trouver le disque chiffré avec la commande
Code :
sudo blkid

Donc j'éteinds la machine, je débranche le disque, je fais la commande
Code :
sudo blkid

Je note le résultat dans un bloc note. J'éteinds la machine et je rebranche la machine et je refais la commande
Code :
sudo blkid

On regarde la différence et on lance aussi la commande :
Code :
df -h

alors on peut noter la bonne ligne :
Code :
/dev/sdX1: UUID="bla-bla-bla" TYPE="crypto_LUKS" PARTUUID="blo-blo-blo"

Note : Lors du redémarrage en branchant le disque chiffré, l'emplacement des disque sdX peut être modifié vis à vis du démarrage sans le disque de branché, faites bien attention à celui que vous devez trouver.

On recrée le dossier pour la clef du disque :
Code :
sudo mkdir /etc/keys

On importe notre sauvegarde de la clef dans ce dossier via filezilla et connexion par sftp.
On lui donne les bons droits :
Code :
sudo chmod 0400 /etc/keys/sdX1.luks

On ajoute cette clef à notre disque chiffré :
Code :
sudo cryptsetup luksAddKey /dev/sdX1 /etc/keys/sdX1.luks

On modifie le fichier suivant :
Code :
sudo nano /etc/crypttab

Dedans on ajoute :
Code :
# Ajout volume sdX1
sdX1_homecrypt UUID="bla-bla-bla" /etc/keys/sdX1.luks luks

On modifie fstab :
Code :
sudo nano /etc/fstab

On ajoute en fin de fichier :
Code :
# Ajout volume sdX1
/dev/mapper/sdX1_homecrypt /home/utilisateur/media ext4 defaults 0 2

On reboot.

C'est tout bon o//
Vous avez accès à vos anciens fichiers sur cette nouvelle installation ! :)
Kirinenko a écrit :Je m'autoquote si je veux, d'abord.
Nyanyanyanyan . . . . . . . . . . . . . . . [Image: chat-moche-27c1d17.gif]
[Image: 4yi3an10-3858b7.gif]
Aimer Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Accès ChatBox

Mαlice Fαnsub

Dernières sorties

Are you ready
Hey, you girl !

Kakugo

Terminé 5 / 5

Gye Baek
GyeBeak

En cours 28 / 36
Ep 29 prévu
pour la semaine
des quatres jeudis

Romance Theater
Midnight

Todome no kiss
& parallel

Todome

En cours 3 / 10
+ 3 / 10

Midnight runners
Midnight

Oh brother,
oh sister

Onodera

Gomen, aishiteru
GomenA

Terminé 10 / 10

Narratage
Narratage

Higurashi no naku
koro ni

Higurashi

En cours 2 / 6