Bienvenue, Visiteur
S’enregistrer | Mot de passe ?

Nom d’utilisateur

Mot de passe




Derniers sujets
Hataraki man - \*o*/
Forum : J-Dramas
Dernier message : yorokobi58
Hier, 03:25
» Réponses : 1
» Affichages : 5 631
Faith : The great doctor
Forum : Licenciés coréens
Dernier message : kekeryry37
Jeu. 14 Fév 2019, 12:21
» Réponses : 4
» Affichages : 1 343
Présentation
Forum : Votre présentation
Dernier message : Kirinenko
Mer. 13 Fév 2019, 08:11
» Réponses : 1
» Affichages : 120
J-Pop & J-Rock
Forum : Miouzique
Dernier message : yorokobi58
Mar. 12 Fév 2019, 09:05
» Réponses : 76
» Affichages : 11 418
Ma présentation
Forum : Votre présentation
Dernier message : sixtus54
Mar. 12 Fév 2019, 03:57
» Réponses : 2
» Affichages : 39

Partenaires
partenaire logo

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

Statistiques du Forum
» Membres : 11 621
» Dernier membre : TBHKristia
» Sujets du forum : 5 324
» Messages du forum : 24 750

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
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. Installation du client torrent avec son interface web :
8. On pose un vpn sur rtorrent :


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 :)

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éalier 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 FAT32 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 !

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).

Note : Après avoir seulement formatté 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...

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 va choisira "" 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 "" 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]

Puis :
[Image: Tour_Image_14.jpg]
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é. 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: "".
[Image: Tour_Image_14.jpg]

On laisse bosser 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'écranb suivant, vous choisissez :
Vous mettez bien ainsi en sélectionnant "SSH server" :
[] 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]
"Continue" ! :)

Le bouzin a redémarré et c'est reparti pour une installation. On force l'arrêt du tout (bouton stop longtemps ^^). 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).

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
j'ai fait "entrer" ...
et ça m'a demandé de me loguer :
"Debian GNU/Linux 8 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

Puis on éteins la machine avec le bouton et on redémarre. !!! On charge les paramètres du BIOS au démarrage pour boot tout le temps sur l'usb au démarrage.

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. Je vais redémarrer la machine de mon côté, mais cela pourra être utile plus tard peut-être, alors je fais de même.
Note 2 : A ce stade, j'ai toujours l'écran d'édition de nano mais en dessous il y la ligne pour administrer la machine.
Note 3 : 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 4 : J'utilise les dns de FDN (https://www.fdn.fr/actions/dns/).

A l'aide de la commande :
Code :
ip a
vous pouvez lister vos connexions et vous verrez votre eth0 avec l'ip 192.168.1.22 que vous aurez asignée avant.

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

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.

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 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 la clef principale, on pourra remonter ce volume :
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/media 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 265 ici.

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 utilisé le port que l'on a renseigné et non plus le port 22 par défaut.

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

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.
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.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.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.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.tld

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" 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).
# Tested with nullmailer v1.13-r5 on Gentoo Linux.

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

# New value for "-f" argument.
newFrom="moi"

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

# Find (if present) "-f" argument and store it's 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.
# If "-f" is found, $optIndex will not be 0.
if (($optIndex != 0)); then
   # "-f" is found. Change its value.
   # $@ starts from 0 so we need to subtract 2 from $optIndex.
   args[(($optIndex-2))]=$newFrom

   # Set new arguments.
   set -- "${args[@]}"
else
   # "-f" is not found. Add "-f <fromName>" 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 argumentss.
   set -- "${new_args[@]}"
fi

# Change both "From" and "To" fields to $newAddress (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.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 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.tld

Vous devriez recevoir un mail test sans contenu.

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

Les mails en attente sont dans /var/spool/nullmailer/queue/ pour les supprimer :
Code :
sudo rm -f /var/spool/nullmailer/queue/*

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é :
Code :
sudo grep security /etc/apt/sources.list > /etc/apt/sources.list.d/security.list

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@protonmail.org"
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 "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 dan 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 :
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.

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. Ce qui nous permet ensuite de pouvoir régler les permissions comme l'on veut.
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.
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 édite iptables pour avoir le port https d'autorisé :
Code :
sudo nano /etc/init.d/iptablesrules

Avant la dernière ligne, on ajoute (si pas déjà fait avat) :
Code :
# HTTPS
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
# HTTP
# Commenter pour enlever le http
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT

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

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 testé si tout est ok avec :
Code :
sudo apache2ctl configtest

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

Vous devrez accepter votre certificat auto-signé :

[Image: Tour_Image_27.jpg]

[Image: Tour_Image_28.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 "".

On redémarre apache pour que çe prenne en compte cette modification :
Code :
sudo systemctl restart apache2
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. 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 l'utilisateur rtorrent.

On crée un nouvel utilisateur "rtorrent" et on lui assigne ce dossier comme home :
Code :
sudo useradd -s /sbin/nologin --home /home/utilisateur/second_disque 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 :
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 install rtorrent libtorrent19 libxmlrpc-core-c3

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

On crée le fichier de configuration de notre utilisateur rtorrent :
Code :
sudo nano /home/utilisateur/second_disque/.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/utilisateur/second_disque/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/utilisateur/second_disque/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load_start=/home/utilisateur/second_disque/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 = 57764-58774

# 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 = 56456

# 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 foncitonner 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/utilisateur/second_disque/.rtorrent.rc

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/utilisateur/second_disque/download'; // Upper available directory. Absolute path with trail slash.

Vous pouvez aussi vérifier quelques chemins avec la commande "whereis", example :
Code :
where gzip

et 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 pase 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 "ruTorrent_login"
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

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 at la partie active :
Code :
sudo ln -s /etc/apache2/passwords-available/rtorrentscgi /etc/apache2/passwords-enabled/rutorrent

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
</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émare apache :
Code :
sudo systemctl restart apache2

On fini par mettre en place le démarrage automatique de rtorrent avec la machine :
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/utilisateur/second_disque/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/utilisateur/second_disque/

[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

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
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. 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 commence par activer la redirection de port et on en choisit un, pour l'exemple ici, ce port sera le numéro 62567.
Ce port va nous servir pour rtorrent comme indiqué dans leur tutoriel, on va modifier le fichier de configuration de rtorrent :
Code :
sudo nano /home/utilisateur/second_disque/.rtorrent.rc

Et on mets ce port actif à cet endroit :
Code :
# Port range to use for listening. (port_range)
network.port_range.set = 62567-62567

On copie les fichiers suivants par sftp (pouvez utliser winSCP : https://winscp.net/ )
- 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 :
nano /etc/openvpn/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 62567 -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 59XXX:59YYY 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 :
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 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 62567 -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 59XXX:59YYY 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/utilisateur/second_disque/.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
#8
[Image: attachment.php?aid=6315]

Réservé  au besoin.


Pièces jointes Miniature(s)
   
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

Romance Theater
Midnight

Todome no kiss
& parallel

Todome

En cours 3 / 10
+ 3 / 10

Midnight runners
Midnight

Oh brother,
oh sister

Onodera

Are you ready
Hey, you girl !

Kakugo

En cours 2 / 5

Gomen, aishiteru
GomenA

Terminé 10 / 10

Narratage
Narratage

Higurashi no naku
koro ni

Higurashi

En cours 2 / 6

Kimi no sasageru
emblem [SP]

Emblem

The 100th love
with you

The100th

Gye Baek
GyeBeak

En cours 27 / 36
Ep 28 prévu
pour la semaine
des qautres jeudis