Alors, un tuto pour mettre en place une seedbox sur un serveur dédié avec un vpn et une interface web pour gérer les torrents et le téléchargement des fichiers. Il sera aussi mis en place un bot xdcc qui pourra proposé vos fichiers sur votre channel ainsi qu'une interface web pour le listing des fichiers. Grâce à cela plus de problème de ratio, vous pourrez aussi proposer au téléchargement via p2p, téléchargement direct ou encore xdcc les dernières vidéos d'anniversaire à toute votre famille. Une petite image explicative :
Dans mon cas, on se servira d'un serveur kimsufi KS2 ( http://www.kimsufi.com/fr/index.xml ) pour l'heure actuelle. Pour le vpn, je n'ai pas encore décidé mais je regarderais ce qu'il y a sur ce site : http://torrentfreak.com/which-vpn-servic...on-140315/ et bien entendu je regarderais aussi les CGU sur les sites qui pourraient m'aller.
Update : Je voulais prendre IPredator ( https://www.ipredator.se/ ) au départ. Ils ne font pas dans l'extravagance et offre un bon service de ce que j'ai lu dans les conditions générales de vente. Il s'est avéré que je suis pas arrivé à mettre en place la redirection de la connexion vpn sur le torrent. J'ai donc finalement opté pour Mullvad : https://mullvad.net/en/ . Je noterais aussi l'existance de oVPN http://ovpn.to/ et toonux http://toonux.net/ qui ont l'air d'être de fiables partenaires (sauf p2p ^^).
Sommaire :
Installation du système d'exploitation
Mise en place d'un service de téléchargement par xdcc des fichiers
Installation de l'explorateur de fichier web h5ai
Listing web des packs offerts via xdcc et mise en commun ddl/xdcc
On sécurise un peu le serveur
Pare-feu iptables
Bannissement sous échec d'identification, fail2ban
Installation du client torrent, transmission-daemon
Mise en place d'un accès par mot de passe pour l'exploration web des fichiers
Mise en place de l'https pour l'explorateur de fichier web
Mise en place d'un vpn sur les connexions de transmission
Ajout d'un nom de domaine
Design page d'accueil par défaut
Petit mot
Ajout d'une autre instance transmission
Ajouter une image à la page de _h5ai
Noubliez pas
Mot de la fin
Installation du système d'exploitation :
Alors, si vous n'en avez pas, vous prenez un serveur et puis vous allez dans le panel d'administration. Le tout nouveau tout beau tant qu'à faire ( https://www.kimsufi.com/fr/manager/ ). Dans mon cas je vais devoir réinstaller :
Vous choisissez la dernière version de debian :
On lance tout ça avec confirmer :
Vous laissez l'installation se réaliser :
Bon bon, maintenant que c'est bon, on peut fermer le manager ovh et on va attaquer la machine
Pour se connecter à notre machine, on va utiliser putty (si vous ne l'avez pas, c'est par ici : http://www.chiark.greenend.org.uk/~sgtat...nload.html ). Vous remplissez le champ de l'ip avec celle de votre machine, vous laissez le port 22 et SSh de coché puis "open" :
Vous acceptez cette nouvelle clef :
Et vous pourrez alors vous loguer avec l'identifiant root et le mot de passe qu'ovh vous a envoyé par e-mail. Il est normal que vous ne voyiez pas le mot de passe affiché des caractères lorsque vous l'entrez. Si tout se passe bien vous aurez un truc dans le genre :
On va commencer par changez ce mot de passe d'administration. Pour cela, puisque vous êtes logué en root, tapez :
Puis tapez votre mot de passe 2 fois et le tour est joué. Vous pouvez redémarrer votre session putty pour bien voir que les changements sont pris en compte. Pour quitter il suffit de faire :
Et on se reconnecte via putty en utilisant le nouveau mot de passe pour "root". On réalise maintenant la mise à jour de notre machine même si avec une installation toute fraîche ça devrait être bon, pour cela, tapez :
Puis :
Et dites oui (y) quand c'est demandé d'utiliser de l'espace pour installer tout ça.
Installez "sudo" comme commande :
Utile pour plus tard :)
Mise en place d'un service de téléchargement par xdcc des fichiers :
Afin de pouvoir avoir la mise à disposition de fichiers par un bot sur irc et d'obtenir un listing tout beau en page web on va utiliser deux programmes distincts : iroffer-dinoex (pour les bots) et XDCCParser-global (pour le listing).
Commencons par iroffer-dinoex on va suivre le tuto dispo dans le dossier doc du package qu'on a via github.
On se connecte en root à sa machine et on commence par se créer un nouvel utilisateur avec son dossier :
N'utilisez pas de majuscules et y'a plein de nom dispos ici : http://fr.wikipedia.org/wiki/Liste_des_d...ie_grecque XD
On lui crée son mot de passe :
Vous rentrez deux fois le mot de passe.
On va dans le dossier et on crée un dossier pour pouvoir télécharger ce dont on aura besoin :
On télécharge les sources du programme :
On extrait tout ça :
On configure tout cela pour notre version de linux :
Vous devriez avoir de l'erreur, pour remédier à cela :
On refait un petit :
Puis on compile le programme :
On copie le programme au bon endroit :
On se copie via ftp le fichier sample.config qui est dans "/home/nom_d'utilisateur/iroffer/iroffer-dinoex-snap" et on change les lignes suivantes :
Note : Enlevez les # pour décommenter les lignes.
Dans "- channels (up to 50) -" changez les connexions aux chans pour :
Note : Supprimez les autres et changez les nom du chan et du server pour les votres.
Et dans "- adddir exclude pattern -", modifiez et ajoutez :
Vous copiez votre fichier modifié par dessus celui qui est sur le serveur.
Note : l'ajout de "*.htaccess" dans les fichiers à exclure permttra de ne pas lister le fichier htaccess dont on se servira pour restreindre l'accès à des dossiers.
On retourne dans la console de putty.
On copie la config :
On génère un mot de passe pour l'administration :
On crée le dossier "files" qui contiendra les fichiers :
Maintenant on crée un script de démarrage :
Et on colle le code suivant :
On rend le script exécutable :
On reboot et on se logue avec l'autre utilisateur et non root (on ne peut lancer iroffer en mode root). On retourne dans le bon dossier et :
Et hop o/ Vous devriez voir votre bot arriver sur votre chan :) Et vous pouvez ajouter des fichiers par ftp dans le dossier "files" de votre utilisateur et en tapant :
Vous devriez les voir être présent après 1 minute.
Note : Si le bot ne vient pas, vous pouvez essayer de changer les permissions des fichiers :
Note² : Pour avoir plusieurs bots : copier le fichier config en changeant son nom et les paramètres à l'intérieur et ajoutez une ligne pour son lancement dans le fichier start-iroffer.sh.
Installation de l'explorateur de fichier web h5ai :
On passe à l'installation de ce qui nous servira à afficher les fichiers dans le navigateur web. Pour cela, j'utilise un tuto que j'ai trouvé grâce au cache de google, j'ai donc réalisé une copie d'écran afin de pouvoir le citer :
Alors donc on redemarre et on se connecte en root et on commence par installer un campement d'indiens apaches :
Puis des dépendances :
Et on finit avec la gestion mysql :
Entrez un mot de passe lorsque c'est demandé.
Puis on redémarre la machine :
Vérifiez que la dernière version de h5ai est la 0.26.1 sinon il faudra changer le lien en conséquence dans les lignes de code suivantes : http://larsjung.de/h5ai/
On se connecte en root.
Puis on paramètre apache :
Et vous ajoutez la ligne suivante dans la première section directory :
Ce qui donne à peu près ceci :
Puis "CTRL+x" pour quitter, "y" pour dire qu'on veut enregistrer les changements et "entrée" pour valider l'utilisation du même nom.
Maintenant, si dans votre navigateur sur vous allez sur :
Vous obtenez :
Et on nous informe donc qu'on peut mettre en place un ti mot de passe dans le fichier "/_h5ai/server/php/index.php". On fait donc cela dès maintenant.
On retourne dans putty et :
Et on peut voir au début les ligne suivantes :
Si on va sur le site mentionné :
http://www.sha1.cz/
Et qu'on laisse le champ vide et qu'on demande le hash, on obtiendra exactement "da39a3ee5e6b4b0d3255bfef95601890afd80709", c'est donc le mot de passe pour champ vide. C'est ceci qu'on change.
Vous rentrez le mot de passe que vous voulez sur le site http://www.sha1.cz/ et vous remplacez "da39a3ee5e6b4b0d3255bfef95601890afd80709" par ce que vous obtenez.
Puis vous enregistrez le fichier avec les changements.
Maintenant, rechargez la page "IP_de_la_machine/_h5ai" et le mot de passe vous sera demandé. Maintenant que c'est fait, vous rentrez le mot de passe et l'on obtient la liste de ce qui est activé pour h5ai. Ce qui nous interesse, c'est la ligne : "Cache directory no".
Afin d'autorisez ce cahe, il faut dans putty, taper :
On va voir maintenant si tout fonctionne bien :
Vous tapez du texte de test et enregistrez ça :)
Puis :
Maintenant on va à l'url : "IP_de_la_machine/turlulu" et un listing devrait apparaître comme ceci :
PS : Il m'a fallu faire un reboot de la machine :
Note : Pour mettre en place les fonctionnalités supplémentaires, on peut faire :
Note : Perso nop :)
On voit que tout fonctionne bien, on peut dl le fichier d'un clique droit ou l'ouvrir directement en cliquant dessus. Bon maintenant que cela est en place, on va voir à mettre en place la partie de partage de fichiers :)
On a plus besoin de turlulu et huhu.txt ^^ On supprime ça. Connexion via putty et :
Listing web des packs offerts via xdcc et mise en commun ddl/xdcc :
Pour commencer on va simplement mettre en commun les fichiers offerts via xdcc et ddl. Pour cela, on va faire pointer un alias web vers un dossier situé dans le dossier de notre utilisateur de home. En effet, dans l'offre kimsufi, l'espace disponible est monté sur "/home" (un petit "df -h" pour voir) et donc afin de profiter pleinement de cet espace, on va l'utiliser pour nos fichiers. Le dossier que l'on utilisera sera le dossier "files" précédemment créé. Après avoir testé différentes configurations, il semble que l'utilisation d'un symlink serait celle qui fonctionne.
On va donc créer un lien reliant "/var/www/nouveau_dossier" à "/home/nom_d'utilisateur/files/" :
Sources : https://github.com/lrsjng/h5ai/issues/167
http://stackoverflow.com/questions/91043...-in-ubuntu
Et on va voir si tout fonctionne bien :
Hop, on met ce qu'on veut et on enregistre, on reboot, puis on va voir l'url suivante : "IP_de_la_machine/nouveau_dossier".
Et ça devrait être bon :)
Et pour l'ajout du listing web, on va donc utiliser XDCCParser-global
Vous vous connectez en root via ftp à votre machine et vous balancez ça dans "/var/www".
On se connecte en root via ssh et hop :
Puis on édite le mot de passe admin :
Et on modifie les lignes suivantes :
Maintenant si vous vous rendez sur la page web : "ip_du_serveur/XDCCParser-global-master/admin.php" vous pouvez ajouter votre bot :
- Add a new bot
- Nick : mybotDCC
- Access URI : /home/le_nom_que_vous_voulez/iroffer/mybot.txt
- Submit
Et donc maintenant en vous rendant sur "ip_du_serveur/XDCCParser-global-master/" vous avez le listing tout beau :)
Note : Les fichiers trop petits ou txt ne sont pas pris en compte.
Vous pouvez modifier le nom de dossier XDCCParser-global-master avec la commande suivante :
Et vous avez donc un accès via "ip_du_serveur/nouveau_nom/". (après un ti reboot :) )
Vous pouvez aussi mettre des sous-dossiers, le réglage par défaut de la config irc prend en charge les fichiers dans un sous-répertoire :
On sécurise un peu le serveur :
On reboot et on se connecte en root.
On change des paramètres afin "d'augmenter" la sécurité de la machine. On édite donc le fichier de configuration ssh (ce par quoi on est connecté en ce moment avec putty) :
Vous modifiez les lignes :
Vous faites "CTRL+x" pour quitter, puis "y" pour sauvez les changements et "entrée" pour garder le même nom de fichier. Ainsi, vous n'utiliserez plus le port commun 22 pour le ssh ce qui évitera les scans sur ce port. Par contre, en empêchant le login en root, cela vous empêchera de vous connecter en root sur le ftp, donc penser à changer ça si vous en avez besoin :)
Il faudra donc vous conecter avec votre second utilisateur sur le bon port avec de passer en root dans la console en utilisant la commande "su".
Note : Si vous suivez le tuto de sorrodje qui est mis dans les liens sources à un moment ^^, il est possible de mettre en place un accès ssh par échange de clefs RSA. Perso non, j'ai assez donné avec le nas et ces fichues clefs et je veux pouvoir me connecter depuis différents ordinateurs sans soucis. Donc je laisse l'accès par mot de passe en place.
Pare-feu iptables :
On passe à la mise en place du pare-feu afin de réguler les connexions. Je vais utiliser la méthode de sorrodje car je la trouve très simple d'utilisation. Il suffit de créer un petit scripts dans lequel les règles sont définies et hop. On peut donc éditer ce fichier comme bon nous semble :) Cela utilise Iptables :
De même si déjà présent, cela sera notifié.
Le script est le suivant :
Note : Je reprends quasi en copier/coler le script de sorrodje, il se peut que les ports soit à changer !notamment celui du port ssh! et selon la config de la machine.
Les lignes commencant par "#" sont des lignes commentées et ne seront pas exécutées.
Note : Les règles pour les ports 80 et 443 seront utiles pour utiliser les interfaces web dont nous aurons besoin plus tard. Et l'on peut voir les règles pour le port http du bot xdcc renseigné dans le fichier config et aussi un port pour irc. Par défaut, on utilise 6667 normalement, vérifiez ce port si vous avez un soucis de connexion à un serveur irc.
Vous copiez ce script avec vos modifs (12345) dans un clique droit, et on repasse sur putty. Vous tapez :
Et avec un simple clique droit cela va copier le texte dans l'interface. Un "CTRL+x" pour quitter, "y" pour enregistrer les changements et "entrée" pour garder le nom de fichier.
On passe le script en mode exécutable avec la commande suivante :
Le script sera peut-être démarré automatique à chaque démarrage ou alors pour le démarrer manuellement il faut faire :
Sinon, afin de lancer ces règles à chaque redémarrage de la machine, il faut donc les activer et ensuite :
Vous obtiendrez le message suivant :
Il ne s'agit pas d'une erreur mais d'un message d'information
Source : https://lists.debian.org/debian-user/201...00120.html
Et le script sera lancé à chaque démarrage.
Bannissement sous échec d'identification, fail2ban :
Pour compléter ce pare-feu, on va installer un ti truc afin de bannir automatiquement pour une certaine durée ce qui pourrait s'être perdu devant notre porte. On va utiliser fail2ban pour faire ça :
On configure fail2ban pour se caler sur le port ssh qu'on spécifié auparavant :
à la ligne concernant le port ssh, on change pour le bon :
Vous enregistrez tout ça et c'est bon o/ Vous pouvez tester en faisant plus de 6 essais manqués
Installation du client torrent, transmission-daemon :
Bon bon, c'était bien toute cette mise en place mais on a aussi envie de passer à l'installation de la seedbox ! Alors hop, c'est parti o//
On reste en mode "root" et on installe transmission, le client p2p :
Une fois accepté l'installation, c'est tout bon. Pas trop dur hein :)
On peut voir que transmission est bien installé et est en fonction :
ou tout simplement avec :
On va maintenant configurer le client p2p transmission mais pour cela il faut l'arrêter au préalable :
On peut vérifier que c'est bien le cas avec :
Si ce n'est pas le cas, on peut utiliser la commande :
On va maintenant associer l'utilisateur supplémentaire qu'on a créé plus tôt à transmission. Cela afin de lui donner les droits de télécharger et échanger. On inclut donc notre utilisateur dans le groupe de transmission :
Puis on crée un dossier pour stocker les fichiers en cours de transert :
Une fois cela fait, on édite le fichier de configuration de transmission :
Et on modifie les lignes suivantes :
Note : Vous pouvez utiliser le compte préalablement créé, c'pas le mieux mais au moins moins de mot de passe ^^
Puis vous enregistrez les changements dans le fichier.
On redémarre transmission :
Et maintenant si on se connecte à
Ba on obtient une erreur Et oui, il faut configurer le pare-feu pour autoriser cela :)
On ajoute donc les règles qu'il faut dans le fichier de configuration diptables :
Et on ajoute tout en bas de fichier :
Note : On peut remarquer des lignes pour les ports 51413 et 49152 - 65535 en plus. Il s'agit des autres ports sur lesquels transmission communique pour échanger les fichiers. Ces règles ont donc été ajoutées en conséquence.
Puis bien sûr on enregistre les changements.
Source : http://forum.kimsufi.com/archive/index.php/t-10975.html
Et ensuite on donne les droits d'accès au dossier principal de l'utilisateur à transmission :
Note : les droits sont à 775 pour permettre les torrents de se télécharger dans le dossier.
Et on devrait maintenant avoir accès depuis :
Ou alors un ti reboot
Vous pouvez alors ajouter vos torrents. Faites un essai pour voir si tout va bien. Et vous pouvez voir vos fichiers via l'url : "IP_de_la_machine/nom_d'_utilisateur"
Pour l'exploration web.
Sources : http://www.experience2geek.com/?p=4113
http://sorrodje.alter-it.org/index.php?a...ansmission
http://ubuntuforums.org/showthread.php?t=1605906&s=cf26d27cf6c617e1ec62b25748b11cfd&p=11612949#post11612949
http://blog.idleman.fr/billet-invite-cre...pberry-pi/
Mise en place d'un accès par mot de passe pour l'exploration web des fichiers :
Bon bon bon, voilà une première partie de faite. On va mettre en place un accès par mot de passe à un dossier. Cela peut-être bien utile si vous voulez pas laissez tout ça ouvert à tous :)
Du tuto source : http://httpd.apache.org/docs/2.4/howto/auth.html (en français !!)
et : https://www.feralhosting.com/faq/view?question=22
Note : pour activer les modules d'apache, vous pouvez tapez :
L'étoile permettra l'activation de tous les modules. Est ce bon à faire ? Je ne sais pas mais hop.
Il vous faudra ensuite redémarrer apache :
Note bis : je suis en train de refaire ce tuto pour voir si tout fonctionne enfin, et je ne me souviens absolument pas du tout du pourquoi de cette note mais comme par la suite j'utilise la mise en place d'un accès par mot de passe via apache, je vais activer tout cela :)
On commence par créer un mot de passe pour notre utilisateur. Il faudra stocker ce fichier dans un repertoire hors zone "web" histoire qu'ils ne puissent pas être accessible facilement. Par exemple : "/usr/local/apache"
On crée donc le dossier déjà, connexion putty en root :
Et on passe à la création du fichier de mot de passe :
Il vous sera alors demandé le mot de passe.
On va utiliser un fichier .htaccess même si l'utilisation du fichier httpd.conf est conseillé car on a la main totale sur le serveur. Mais après du temps de recherche, je n'ai pas trouvé de contenu défaut concernant ce fichier. Et le tuto que je suis ne donne que les lignes à ajouter.
Il faut paramétrer la configuration du serveur afin de permettre l'utilisation de ce fichier :
Et on change la portion :
"AllowOverride None" devient "AllowOverride All"
On enregistre les changements.
Puis :
Dans notre dossier dont on veut mettre un mot de passe, un va donc créer ce fameux fichiers .htaccess. On fait donc :
Et vous copiez les lignes suivantes (en changeant le nom d'utilisateur...) :
On enregistre les changements.
Pour appliquer les changements.
Pour autorisez plusieurs comptes, une des méthodes consiste à modifier la ligne
par
dans le fichier .htaccess.
Et pour créer un nouvel utilisateur, on fait :
Note : il n'y a pas de "-c" dans la ligne de commande ce coup ci
Pour supprimer un compte, supprimez la ligne correspondante dans le fichier :
Pour appliquer les changements.
Le fichier .htaccess mets les droits récursivement. Ainsi, si vous voulez donner d'autres droits à un dossier contenu dans le dossier de départ, il vous suffit de lui créer un fichier .htaccess dedans et d'autoriser les utilisateurs comme précédemment. Utilisez aussi un autre fichier pour contenir les mots de passe.
Note : il faut voir à donner les bons drois d'accès aux fichier .htaccess.
Sinon ça marche pas.
Vous pouvez ajouter des fichiers par ftp à ce dossier ou alors changer le dossier de réception dans les paramètres de l'interface web de transmission pour cibler les fichiers à mettre là bas. Par contre, si vous avez activé les sous dossiers dans la config du bot, ces fichiers seront listés et il faudra alors changer le fichier config afin de régler ça. Pour moi et la suite du tuto, je me servirait de "xdcclist" comme nom de dossier.
Mise en place de l'https pour l'explorateur de fichier web :
Et puis afin qu'on ne puisse pas savoir ce qui transite via notre interface web et bin on va ajouter du ssl. On va donc mettre en place la connexion par ssl afin d'avoir une connexion chiffrée entre nous et le serveur. Cela a l'air d'être pas trop trop compliqué à mettre en place selon le guide de debian : https://wiki.debian.org/Self-Signed_Certificate
Hop on y va, on reboot en root et on installe openssl si c'est pas déjà fait :
S'il n'était pas déjà activé :
Maintenant, on crée le fichier certificat (il s'agit d'un certificat auto-signé, c'est payant d'en obtenir un pour le moment, jetez un oeil à ce projet pour voir où ça en est : https://letsencrypt.org/ cela sera gratuit :) ):
Note : 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 pourra ajouter différents dossiers si on veut utiliser différents certificats. Il faut se souvenir de "/etc/ssl/" et "/etc/sss/localcerts" qui gardent les certificats. Il faudra cependant pointer vers le bon dossier plus tard pour la configuration de l'emplacement des certificats.
Note : Il faudra donc renouveler le certificat dans un an. J'espère que j'y penserais quand ça plantera et ferais alors une tite réponse à ce topic ^^
Puis :
Et dans la section "", vous ajoutez :
Juste après l'email de l'administrateur serveur. Et en changeant "example.com" par l'ip du serveur.
Puis vous recherchez les lignes suivantes et modifiez pour :
La première est séparée des suivantes mais juste au-dessus Et vous remplacez les chemins des fichiers pem et key selon la commande un poil plus haut.
Vous enregistrez les changements dans le fichier.
Puis :
On note la remarque, c'est utile :)
(on le fait donc...)
Maintenant, si vous vous connectez sur
Il vous sera demandé d'accepter un certificat :) Vous l'acceptez et conservez cette autoristaion sinon il faudra l'accepter à chaque fois.
Tout cela est bien mais l'on peut encore visiter la page alors qu'on est pas en https, pour modifier ça globalement :
Et vous ajoutez
dans la première section de "Directory".
Voilà, maintenant il est obligatoire de se connecter par https :)
Par contre on peut voir que l'index des fichiers n'utilise plus h5ai, afin de palier à ceci :
Et vous ajoutez la ligne suivante dans la première section directory :
On enregistre les changements.
Puis :
Afin que h5ai prenne en compte le htacess en https, il faut aussi éditer le fichier suivant :
Et on change la portion :
"AllowOverride None" devient "AllowOverride All"
On enregistre les changements.
Un ti reboot et hop.
On peut voir par contre que ça merde pour le listing des fichiers "https://ip_du_serveur/xdcclist". Cela car les scripts javascript et le css ne sont pa directement dans le code mais sont appelés via leur adresse. Et cela n'appelle pas sur du https et donc ça ne prend pas cela en compte (de ce que j'ai compris) : http://www.reddit.com/r/webdev/comments/...abling_my/
Si on fait un clique droit et voir le code source de la page, j'obtiens :
On voit donc que certains fichiers sont appelés via leur adresse http et non pas https.
Cette méthode par contre, oui :
Alors au final avec l'https j'ai toujours eu des problèmes, cela s'est résolu en changeant dans le fichier "index.php" :
Le petit rajout d'un "s" à http et tout à l'air de fonctionner.
Si vous avez des soucis pour uploader un torrent avec un "error permission denied" ou une erreur de permission via ftp, revoyez les permissions du dossier de réception :
On n'oublie pas de remettre la connexion en root via ssh à "no" si on s'arrête là, sinon on laisse, on va en avoir besoin pour la suite :)
Liens de tutos ayant servis : http://www.debian-administration.org/art...th_Apache2
https://www.digitalocean.com/community/t...untu-12-04
https://wiki.debian.org/Self-Signed_Certificate
http://askubuntu.com/questions/51840/ssl...is-missing
http://softwareinabottle.wordpress.com/2...ntudebian/
http://serverfault.com/questions/429634/...irectories
Mise en place d'un vpn sur les connexions de transmission :
Donc c'est bien on a mis le https sur les fichiers mais cela n'affecte pas transmission et comme dans nos pays il est d'usage de vouloir chiffrer ses communications, on va faire de même pour transmission. Et donc on prend un vpn et on faire transiter les protocoles d'échange de fichier via cette machine. Je me suis donc servi de mullvad comme service vpn : (je n'ai aps réussi à faire fonctionner ipredator avec cette methode ou la leur).
Le tuto source pour cela est le suivant : https://tech.kanka.ch/index.php/faire-tr...ur-debian/ , un très bon tuto avec beaucoup de commentaires et donc beaucoup de lecture en perspective :)
Pour résumer ce que l'on va faire : on va lier transmission à une adresse lo:1 que l'on va créer et qui aura pour fonction de relier les communications de transmission via le vpn.
On est connecté en root sur la machine via putty. On installe openvpn :
On commence par ajouter une nouvelle table de routage :
On crée l'interface lo:1, pour cela on édite le fichier suivant :
Et on ajoute les ligne suivantes à la fin du fichier avant de l'enregistrer :
On se rend sur le site de Mullvad et on récupère les fichiers suivants (perso, je me mets avec une config pour une sortie en Suède) :
- ca.crt
- crl.pem
- mullvad.crt
- mullvad.key
- mullvad_linux.conf
Via FTP, vous mettez tous les fichiers sauf le fichier .conf dans "/etc/openvpn/mullvad/files" et le fichier .conf dans "/etc/openvpn/mullvad" et en même temps vous créez le dossier "/etc/openvpn/mullvad/scripts".
Avant de le copier, on édite le fichier config et il doit ressembler à ceci :
Note : Je ne pense pas que ce soit très bon de virer la partie resolve-conf mais comme je n'arrivais pas en la laissant, ba hop. Cela impacte peut-être le dns et peut causer de la perte de sécurité. Si quelqu'un veut m'éclairer :)
Afin que cette configuration se lance automatiquement, il lui faut un chemin depuis le dossier openvpn, pour cela un lien symbolique :
Et on passe aux scripts up.sh et down.sh :
Et dedans on met :
Vous enregistrez ça.
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 :
Et en début de fichier on ajoute :
Puis on désactive lignes suivantes en fin de fichier :
Et on met à la place :
Puis on crée le script down.sh :
Et on copie ceci avant d'enregistrer :
Dans le tuto qu'on suit, on ajoute un ti script qui vérifie que openvpn fonctionne toujours bien afin de couper transmission si ce dernier a lâché et qu'il ne l'a pas vu :)
Et on met ceci :
Note : L'adresse ip 80.67.169.12 correspond à une adresse dns de FDN, dans le tuto original, il est mis www.google.com, je préfère éviter de faire venir google :)
On donne des permissions aux scripts :
On dit à openvpn de lancer la bonne config au démarrage, dans le fichier :
Vous changez la ligne :
Maintenant, afin que transmission soit relier à l'adresse lo:1 qu'on a crée, il faut éditer sa config. On commence par arrêter le client et on édite la configuration :
Et on change les lignes :
On reboot et tout devrait fonctionner. On prie très fort le Dieu de la bière pour ça :)
Bon on dirait qu'on a pas encore assez prié, alors reprenez une bière et continuons ^^
SI vous vous connectez en root via putty et tapez "ifconfig", vous pouvez voir que tun0 est bien là, lo:1 aussi, tout à l'air bien mais les torrents n'ont pas de sources. On va donc se penchez sur le message de mullvad qui était présent en haut du fichier configuration.
Puis on édite le fichier "nano /etc/openvpn/mullvad/scripts/up.sh" et vers la fin on ajoute :
Puis le fichier "nano /etc/openvpn/mullvad/scripts/down.sh" et à la fin on met :
On reboot.
Et ensuite ça marche pas alors dans le fichier de config du pare-feu on ajoute :
Et puis là moi ça fonctionne :) Alors je suis bien content
Vous pouvez vérifier votre ip torrent à l'aide du site suivant : http://ipleak.net/
Et on note qu'on a une ipv6 détecté alors que transmission ne devrait pas s'en servir suite à notre réglage. On va donc désactiver complètement l'ipv6 :
Et dedans on met à la fin :
Et hop, ipleak ne nous montre plus d'ipv6 d'annoncé :)
Ajout d'un nom de domaine :
Bon bon, tout fonctionne bien mais taper l'url c'est pas très sexy alors on va ajouter un nom de domaine afin que l'on puisse donner l'url plus facilement. On prend un domaine gratuit en .ovh pasque ça le vaut bien ! C'est gratuit alors ne nous en privons pas, d'autant que j'ai assez confiance en ovh. C'est par ici que ça se passe : http://www.ovh.com/fr/domaines/ (vous êtes bien sûr connecté à votre compte ovh ^^)
Prenez l'option DNS Classique, c'est tout comme les logiciels qui veulent vous intaller des barres de recherches sur votre navigateur, faut faire gaffe !
Vous dites que vous ne voulez pas d'hébergement et hop o// Un domaine gratuit pour 1an o/
Lors du choix des sélection de serveurs DNS, vous indiquez ceux d'ovh pour kimsufi.
Vous acceptez les contrats sans les lire pasque putin vous avez autre chose à foutre et on espère que tout va bien. M'en fou moi, j'ai ma patte de lapin tout fraîche en poche
Vous validez la commande gratuitement tout en bas à gauche et :) On retourne donc sur notre machine maintenant :)
On commence par changer un paramètre de Bind, en lui autorisant une écoute globale :
Et on modifie :
en
Vous enregistrez et hop.
Maintenant, on récupère l'adresse ip du DNS secondaire lié à notre machine :
Cela envoie 3 paquets à l'adresse et on peut récupérer l'ip : ici 231.186.33.199
Puis toujours dans "/etc/bind" on édite un nouveau fichier :
Et dedans on ajoute :
Note : Il faut remplacer domaine.tld par votre nom de domaine, tout comme l'ip du DNS.
Puis on crée le fichier "db.domaine.tld" et dedans on met :
Note : Il faut changer les "domaine.tld" en "votre-nom-de-domaine", le "ns######.ip-12-124-126.eu" doit correspondre au votre et "xx.xx.xx.xx" doit être l'ip de votre machine (dispo via l'amin web de kimsufi.
Puis toujours depuis le répertoire "/etc/bind", on regarde si la zone est bien paramétrée.
Si c'est "OK", vous pouvez relancer bin :
Maintenant, on paramètre le serveur DNS secondaire de notre machine kimsufi et cela se passe dans l'admin web de kimsufi. Vous vous rendez dans la partie "DNS" (en petit au milieu de l'interface ^^) et vous ajoutez un DNS secondaire.
Il vous sera demandé d'ajouter une entrée avec un code via l'adminnistration web associé à votre nom de domaine.
Une fois cela effectué, il faut faire pointer le nom de domaine vers notre machine. Pour cela, on se rend dans la section "Accueil > Mutualisé > Domaines & DNS > Zone DNS" et vous ajoutez un champ A.
Vous laissez le champ de sous-domaine vide et choisissez une destination personnalisée pour l'ip et vous rentrez l'ip de votre machine.
Et il vou faut aussi un CNAME qui relie "www" à "nom-de-domaine" :
www.nom-de-domaine.ovh
CNAME
nom-de-domaine.ovh
Vous laissez le temps faire, il faut un ti paquet d'heure pour que la résolution DNS soit effective.
Sources : http://www.memoinfo.fr/configurer-serveu...i-ovh.html
http://forum.ovh.com/showthread.php?9713...un-Kimsufi
Design page d'accueil par défaut :
Bon un ti truc à la con pour se reposer, on va changer la page par défaut "It works", histoire de poser une page toute simple à la place.
Et donc rien de plus simple, cette page est dispo via ftp dans le dossier "/var/www" et se nomme "index.html" et elle contient le code suivant :
Vous pouvez changer pour ce que vous voulez en restant dans le html : http://www.w3schools.com/html/
Voilà c'est tout pour le moment, la fin au prochain message ^^ Je pouvais pas faire plus long, surement dû à une limite sur la taille d'une donnée dans la bdd.
Dans mon cas, on se servira d'un serveur kimsufi KS2 ( http://www.kimsufi.com/fr/index.xml ) pour l'heure actuelle. Pour le vpn, je n'ai pas encore décidé mais je regarderais ce qu'il y a sur ce site : http://torrentfreak.com/which-vpn-servic...on-140315/ et bien entendu je regarderais aussi les CGU sur les sites qui pourraient m'aller.
Update : Je voulais prendre IPredator ( https://www.ipredator.se/ ) au départ. Ils ne font pas dans l'extravagance et offre un bon service de ce que j'ai lu dans les conditions générales de vente. Il s'est avéré que je suis pas arrivé à mettre en place la redirection de la connexion vpn sur le torrent. J'ai donc finalement opté pour Mullvad : https://mullvad.net/en/ . Je noterais aussi l'existance de oVPN http://ovpn.to/ et toonux http://toonux.net/ qui ont l'air d'être de fiables partenaires (sauf p2p ^^).
Sommaire :
Installation du système d'exploitation
Mise en place d'un service de téléchargement par xdcc des fichiers
Installation de l'explorateur de fichier web h5ai
Listing web des packs offerts via xdcc et mise en commun ddl/xdcc
On sécurise un peu le serveur
Pare-feu iptables
Bannissement sous échec d'identification, fail2ban
Installation du client torrent, transmission-daemon
Mise en place d'un accès par mot de passe pour l'exploration web des fichiers
Mise en place de l'https pour l'explorateur de fichier web
Mise en place d'un vpn sur les connexions de transmission
Ajout d'un nom de domaine
Design page d'accueil par défaut
Petit mot
Ajout d'une autre instance transmission
Ajouter une image à la page de _h5ai
Noubliez pas
Mot de la fin
Installation du système d'exploitation :
Alors, si vous n'en avez pas, vous prenez un serveur et puis vous allez dans le panel d'administration. Le tout nouveau tout beau tant qu'à faire ( https://www.kimsufi.com/fr/manager/ ). Dans mon cas je vais devoir réinstaller :
Vous choisissez la dernière version de debian :
On lance tout ça avec confirmer :
Vous laissez l'installation se réaliser :
Bon bon, maintenant que c'est bon, on peut fermer le manager ovh et on va attaquer la machine
Pour se connecter à notre machine, on va utiliser putty (si vous ne l'avez pas, c'est par ici : http://www.chiark.greenend.org.uk/~sgtat...nload.html ). Vous remplissez le champ de l'ip avec celle de votre machine, vous laissez le port 22 et SSh de coché puis "open" :
Vous acceptez cette nouvelle clef :
Et vous pourrez alors vous loguer avec l'identifiant root et le mot de passe qu'ovh vous a envoyé par e-mail. Il est normal que vous ne voyiez pas le mot de passe affiché des caractères lorsque vous l'entrez. Si tout se passe bien vous aurez un truc dans le genre :
On va commencer par changez ce mot de passe d'administration. Pour cela, puisque vous êtes logué en root, tapez :
Code :
passwd
Code :
exit
Et on se reconnecte via putty en utilisant le nouveau mot de passe pour "root". On réalise maintenant la mise à jour de notre machine même si avec une installation toute fraîche ça devrait être bon, pour cela, tapez :
Code :
apt-get update
Code :
apt-get upgrade
Installez "sudo" comme commande :
Code :
apt-get install sudo
Mise en place d'un service de téléchargement par xdcc des fichiers :
Afin de pouvoir avoir la mise à disposition de fichiers par un bot sur irc et d'obtenir un listing tout beau en page web on va utiliser deux programmes distincts : iroffer-dinoex (pour les bots) et XDCCParser-global (pour le listing).
Commencons par iroffer-dinoex on va suivre le tuto dispo dans le dossier doc du package qu'on a via github.
On se connecte en root à sa machine et on commence par se créer un nouvel utilisateur avec son dossier :
Code :
cd /
useradd -d /home/le_nom_que_vous_voulez -m le_nom_que_vous_voulez
On lui crée son mot de passe :
Code :
passwd le_nom_que_vous_voulez
On va dans le dossier et on crée un dossier pour pouvoir télécharger ce dont on aura besoin :
Code :
cd /home/le_nom_que_vous_voulez
mkdir iroffer
cd iroffer
On télécharge les sources du programme :
Code :
wget http://iroffer.dinoex.net/iroffer-dinoex-snap.tar.gz
On extrait tout ça :
Code :
tar -xvzf iroffer-dinoex-snap.tar.gz
rm iroffer-dinoex-snap.tar.gz
On configure tout cela pour notre version de linux :
Code :
cd iroffer-dinoex-snap
./Configure -curl -geoip -ruby
Vous devriez avoir de l'erreur, pour remédier à cela :
Code :
cd /
sudo aptitude install make
sudo aptitude install gcc
sudo aptitude install libc-dev
sudo aptitude install libcurl4-openssl-dev
sudo aptitude install libgeoip-dev
sudo aptitude install libssl-dev
sudo aptitude install ruby1.8-dev
sudo aptitude install ruby1.8
sudo aptitude install libruby-extras
On refait un petit :
Code :
cd /home/le_nom_que_vous_voulez/iroffer/iroffer-dinoex-snap
./Configure -curl -geoip -ruby
Puis on compile le programme :
Code :
make
On copie le programme au bon endroit :
Code :
cp -p iroffer ..
cp *.html ..
cp -r htdocs ../
On se copie via ftp le fichier sample.config qui est dans "/home/nom_d'utilisateur/iroffer/iroffer-dinoex-snap" et on change les lignes suivantes :
Code :
http_port 8000
http_dir htdocs
filedir /home/le_nom_que_vous_voulez/files
autoadd_time 60
autoadd_dir /home/le_nom_que_vous_voulez/files
Dans "- channels (up to 50) -" changez les connexions aux chans pour :
Code :
# 2nd Network
network nom_network
{
server irc.nom_network 6667
channel #nom_chan -noannounce
}
Et dans "- adddir exclude pattern -", modifiez et ajoutez :
Code :
#adddir_exclude *.txt
#adddir_exclude *.md5
adddir_exclude *.htaccess
adnew *.htaccess
autoadd *.htaccess
Vous copiez votre fichier modifié par dessus celui qui est sur le serveur.
Note : l'ajout de "*.htaccess" dans les fichiers à exclure permttra de ne pas lister le fichier htaccess dont on se servira pour restreindre l'accès à des dossiers.
On retourne dans la console de putty.
On copie la config :
Code :
cp sample.config ../mybot.config
cd ..
On génère un mot de passe pour l'administration :
Code :
./iroffer -c mybot.config
On crée le dossier "files" qui contiendra les fichiers :
Code :
cd ..
mkdir files
Maintenant on crée un script de démarrage :
Code :
nano -w start-iroffer.sh
Et on colle le code suivant :
Code :
#!/bin/sh
cd /home/nom_d'utilisateur/iroffer
./iroffer -b /home/nom_d'utilisateur/iroffer/mybot.config
On rend le script exécutable :
Code :
chmod +x start-iroffer.sh
On reboot et on se logue avec l'autre utilisateur et non root (on ne peut lancer iroffer en mode root). On retourne dans le bon dossier et :
Code :
sh start-iroffer.sh
Et hop o/ Vous devriez voir votre bot arriver sur votre chan :) Et vous pouvez ajouter des fichiers par ftp dans le dossier "files" de votre utilisateur et en tapant :
Code :
/msg mybotDCC xdcc list
Note : Si le bot ne vient pas, vous pouvez essayer de changer les permissions des fichiers :
Code :
chown -R le_nom_que_vous_voulez: /home/le_nom_que_vous_voulez
chmod -R 775 /home/le_nom_que_vous_voulez
Note² : Pour avoir plusieurs bots : copier le fichier config en changeant son nom et les paramètres à l'intérieur et ajoutez une ligne pour son lancement dans le fichier start-iroffer.sh.
Installation de l'explorateur de fichier web h5ai :
On passe à l'installation de ce qui nous servira à afficher les fichiers dans le navigateur web. Pour cela, j'utilise un tuto que j'ai trouvé grâce au cache de google, j'ai donc réalisé une copie d'écran afin de pouvoir le citer :
Alors donc on redemarre et on se connecte en root et on commence par installer un campement d'indiens apaches :
Code :
cd /
apt-get install apache2 apache2-doc apache2-utils
Puis des dépendances :
Code :
apt-get install libapache2-mod-php5 php5 php-pear php5-xcache php5-mysql
Et on finit avec la gestion mysql :
Code :
apt-get install mysql-server mysql-client
Puis on redémarre la machine :
Code :
reboot
Vérifiez que la dernière version de h5ai est la 0.26.1 sinon il faudra changer le lien en conséquence dans les lignes de code suivantes : http://larsjung.de/h5ai/
On se connecte en root.
Code :
cd /var/www
wget http://release.larsjung.de/h5ai/h5ai-0.26.1.zip
apt-get install unzip
unzip ./h5ai-0.26.1.zip
rm ./h5ai-0.26.1.zip
Puis on paramètre apache :
Code :
cd /etc/apache2/sites-available
nano default
Et vous ajoutez la ligne suivante dans la première section directory :
Code :
DirectoryIndex index.html index.php /_h5ai/server/php/index.php
Ce qui donne à peu près ceci :
Puis "CTRL+x" pour quitter, "y" pour dire qu'on veut enregistrer les changements et "entrée" pour valider l'utilisation du même nom.
Maintenant, si dans votre navigateur sur vous allez sur :
Code :
IP_de_la_machine/_h5ai
Vous obtenez :
Et on nous informe donc qu'on peut mettre en place un ti mot de passe dans le fichier "/_h5ai/server/php/index.php". On fait donc cela dès maintenant.
On retourne dans putty et :
Code :
cd /
nano /var/www/_h5ai/server/php/index.php
Code :
/*********************************************************************
SHA1 hash of the info page password, the preset password is the
empty string. You might change it to keep this information private.
Online hash generator: http://www.sha1.cz/
*********************************************************************/
define("PASSHASH", "da39a3ee5e6b4b0d3255bfef95601890afd80709");
Si on va sur le site mentionné :
http://www.sha1.cz/
Et qu'on laisse le champ vide et qu'on demande le hash, on obtiendra exactement "da39a3ee5e6b4b0d3255bfef95601890afd80709", c'est donc le mot de passe pour champ vide. C'est ceci qu'on change.
Vous rentrez le mot de passe que vous voulez sur le site http://www.sha1.cz/ et vous remplacez "da39a3ee5e6b4b0d3255bfef95601890afd80709" par ce que vous obtenez.
Puis vous enregistrez le fichier avec les changements.
Maintenant, rechargez la page "IP_de_la_machine/_h5ai" et le mot de passe vous sera demandé. Maintenant que c'est fait, vous rentrez le mot de passe et l'on obtient la liste de ce qui est activé pour h5ai. Ce qui nous interesse, c'est la ligne : "Cache directory no".
Afin d'autorisez ce cahe, il faut dans putty, taper :
Code :
chmod o+w /var/www/_h5ai/cache/
On va voir maintenant si tout fonctionne bien :
Code :
cd /
cd /var/www
mkdir turlulu
cd turlulu
nano huhu
Puis :
Code :
cd ..
chmod -R 775 turlulu
PS : Il m'a fallu faire un reboot de la machine :
Code :
reboot
Note : Pour mettre en place les fonctionnalités supplémentaires, on peut faire :
Code :
apt-get install php5-gd ffmpeg zip imagemagick
On voit que tout fonctionne bien, on peut dl le fichier d'un clique droit ou l'ouvrir directement en cliquant dessus. Bon maintenant que cela est en place, on va voir à mettre en place la partie de partage de fichiers :)
On a plus besoin de turlulu et huhu.txt ^^ On supprime ça. Connexion via putty et :
Code :
cd /var/www
rm -rf turlulu
Listing web des packs offerts via xdcc et mise en commun ddl/xdcc :
Pour commencer on va simplement mettre en commun les fichiers offerts via xdcc et ddl. Pour cela, on va faire pointer un alias web vers un dossier situé dans le dossier de notre utilisateur de home. En effet, dans l'offre kimsufi, l'espace disponible est monté sur "/home" (un petit "df -h" pour voir) et donc afin de profiter pleinement de cet espace, on va l'utiliser pour nos fichiers. Le dossier que l'on utilisera sera le dossier "files" précédemment créé. Après avoir testé différentes configurations, il semble que l'utilisation d'un symlink serait celle qui fonctionne.
On va donc créer un lien reliant "/var/www/nouveau_dossier" à "/home/nom_d'utilisateur/files/" :
Code :
sudo ln -s /home/nom_d'utilisateur/files /var/www/nouveau_dossier
http://stackoverflow.com/questions/91043...-in-ubuntu
Et on va voir si tout fonctionne bien :
Code :
cd /home/nom_d'utilisateur/files/
mkdir bidule
cd bidule
nano test.txt
cd /
chown -R nom_d'utilisateur: /home/nom_d'utilisateur/files
chmod -R 775 /home/nom_d'utilisateur/files
Et ça devrait être bon :)
Et pour l'ajout du listing web, on va donc utiliser XDCCParser-global
Vous vous connectez en root via ftp à votre machine et vous balancez ça dans "/var/www".
On se connecte en root via ssh et hop :
Code :
cd /var/www
unzip XDCCParser-global-master.zip
rm XDCCParser-global-master.zip
cd XDCCParser-global-master
chmod 777 templates_c
chmod 777 cache
Puis on édite le mot de passe admin :
Code :
nano admin.php
Et on modifie les lignes suivantes :
Code :
//set your user and password here
define('ADMIN_USER', "changeme");
define('ADMIN_PASS', "yougonnagethackedifyoudont");
Maintenant si vous vous rendez sur la page web : "ip_du_serveur/XDCCParser-global-master/admin.php" vous pouvez ajouter votre bot :
- Add a new bot
- Nick : mybotDCC
- Access URI : /home/le_nom_que_vous_voulez/iroffer/mybot.txt
- Submit
Et donc maintenant en vous rendant sur "ip_du_serveur/XDCCParser-global-master/" vous avez le listing tout beau :)
Note : Les fichiers trop petits ou txt ne sont pas pris en compte.
Vous pouvez modifier le nom de dossier XDCCParser-global-master avec la commande suivante :
Code :
mv /var/www/XDCCParser-global-master /var/www/nouveau_nom
Vous pouvez aussi mettre des sous-dossiers, le réglage par défaut de la config irc prend en charge les fichiers dans un sous-répertoire :
Code :
include_subdirs
On sécurise un peu le serveur :
On reboot et on se connecte en root.
On change des paramètres afin "d'augmenter" la sécurité de la machine. On édite donc le fichier de configuration ssh (ce par quoi on est connecté en ce moment avec putty) :
Code :
nano /etc/ssh/sshd_config
Vous modifiez les lignes :
Port 2653 #(par exemple)
PermitRootLogin no
Note : N'utilisez pas votre pad numérique qui est reconnu en temps que pavé de touches directionnelles.PermitRootLogin no
Vous faites "CTRL+x" pour quitter, puis "y" pour sauvez les changements et "entrée" pour garder le même nom de fichier. Ainsi, vous n'utiliserez plus le port commun 22 pour le ssh ce qui évitera les scans sur ce port. Par contre, en empêchant le login en root, cela vous empêchera de vous connecter en root sur le ftp, donc penser à changer ça si vous en avez besoin :)
Il faudra donc vous conecter avec votre second utilisateur sur le bon port avec de passer en root dans la console en utilisant la commande "su".
Note : Si vous suivez le tuto de sorrodje qui est mis dans les liens sources à un moment ^^, il est possible de mettre en place un accès ssh par échange de clefs RSA. Perso non, j'ai assez donné avec le nas et ces fichues clefs et je veux pouvoir me connecter depuis différents ordinateurs sans soucis. Donc je laisse l'accès par mot de passe en place.
Pare-feu iptables :
On passe à la mise en place du pare-feu afin de réguler les connexions. Je vais utiliser la méthode de sorrodje car je la trouve très simple d'utilisation. Il suffit de créer un petit scripts dans lequel les règles sont définies et hop. On peut donc éditer ce fichier comme bon nous semble :) Cela utilise Iptables :
Code :
apt-get install iptables
Le script est le suivant :
Note : Je reprends quasi en copier/coler le script de sorrodje, il se peut que les ports soit à changer !notamment celui du port ssh! et selon la config de la machine.
Les lignes commencant par "#" sont des lignes commentées et ne seront pas exécutées.
Code :
#!/bin/sh
#/etc/init.d/firewall
### BEGIN INIT INFO
# Provides: iptables
# Required-Start:
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-description: iptables
# Description: Firewall
### END INIT INFO
### RAZ
iptables -t filter -F
iptables -t filter -X
### FERMETURE TOTALE PAR DEFAUT
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
### MAINTIEN DES CONNEXIONS EXISTANTES
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
### AUTORISATION DU LOOPBACK
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
### AUTORISATION DU PING
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
### AUTORISATIONS LIEES AUX SERVICES
# SSH port 22
#iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
# SSH port 12345
iptables -t filter -A OUTPUT -p tcp --dport 12345 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 12345 -j ACCEPT
# DNS
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
# HTTP
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
# HTTP BOT XDCC
iptables -t filter -A OUTPUT -p tcp --dport 8000 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8000 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 8000 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 8000 -j ACCEPT
# IRC PORT
iptables -t filter -A OUTPUT -p tcp --dport 6667 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 6667 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 6667 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 6667 -j ACCEPT
Note : Les règles pour les ports 80 et 443 seront utiles pour utiliser les interfaces web dont nous aurons besoin plus tard. Et l'on peut voir les règles pour le port http du bot xdcc renseigné dans le fichier config et aussi un port pour irc. Par défaut, on utilise 6667 normalement, vérifiez ce port si vous avez un soucis de connexion à un serveur irc.
Vous copiez ce script avec vos modifs (12345) dans un clique droit, et on repasse sur putty. Vous tapez :
Code :
nano /etc/init.d/firewall
On passe le script en mode exécutable avec la commande suivante :
Code :
chmod +x /etc/init.d/firewall
Le script sera peut-être démarré automatique à chaque démarrage ou alors pour le démarrer manuellement il faut faire :
Code :
/etc/init.d/firewall
Sinon, afin de lancer ces règles à chaque redémarrage de la machine, il faut donc les activer et ensuite :
Code :
update-rc.d firewall defaults
Vous obtiendrez le message suivant :
Code :
update-rc.d: using dependency based boot sequencing
Source : https://lists.debian.org/debian-user/201...00120.html
Et le script sera lancé à chaque démarrage.
Bannissement sous échec d'identification, fail2ban :
Pour compléter ce pare-feu, on va installer un ti truc afin de bannir automatiquement pour une certaine durée ce qui pourrait s'être perdu devant notre porte. On va utiliser fail2ban pour faire ça :
Code :
apt-get install fail2ban
On configure fail2ban pour se caler sur le port ssh qu'on spécifié auparavant :
à la ligne concernant le port ssh, on change pour le bon :
Code :
nano /etc/fail2ban/jail.conf
Vous enregistrez tout ça et c'est bon o/ Vous pouvez tester en faisant plus de 6 essais manqués
Installation du client torrent, transmission-daemon :
Bon bon, c'était bien toute cette mise en place mais on a aussi envie de passer à l'installation de la seedbox ! Alors hop, c'est parti o//
On reste en mode "root" et on installe transmission, le client p2p :
Code :
apt-get install transmission-daemon
On peut voir que transmission est bien installé et est en fonction :
Code :
ps aux | grep transmission
ou tout simplement avec :
Code :
/etc/init.d/transmission-daemon status
On va maintenant configurer le client p2p transmission mais pour cela il faut l'arrêter au préalable :
Code :
/etc/init.d/transmission-daemon stop
On peut vérifier que c'est bien le cas avec :
Code :
/etc/init.d/transmission-daemon status
Si ce n'est pas le cas, on peut utiliser la commande :
Code :
service transmission-daemon stop
On va maintenant associer l'utilisateur supplémentaire qu'on a créé plus tôt à transmission. Cela afin de lui donner les droits de télécharger et échanger. On inclut donc notre utilisateur dans le groupe de transmission :
Code :
usermod -a -G debian-transmission nom_d'_utilisateur
Puis on crée un dossier pour stocker les fichiers en cours de transert :
Code :
mkdir /home/nom_d'utilisateur/files/incomplete
Une fois cela fait, on édite le fichier de configuration de transmission :
Code :
nano /etc/transmission-daemon/settings.json
Et on modifie les lignes suivantes :
Code :
"download-dir" : "/home/nom_d'utilisateur/files", #Chemin dans lequel les fichiers terminés seront enregistrés.
"incomplete-dir" : "/home/nom_d'utilisateur/files/incomplete", #Chemin dans lequel les fichiers temporaires seront stockés.
"incomplete-dir-enabled" : true, #Permet d’activer la séparation des fichiers téléchargés et incomplets.
"rpc-authentication-required": true, #Active l’authentification pour le contrôle distant.
"rpc-enabled": true, #Active le contrôle à distance.
"rpc-password": l000lc4ts #Choisir le mot de passe pour l’accès distant (remplacer par ce que vous voulez).
"rpc-port": 9091, #Port pour l’accès distant.
"rpc-username": Chatsmarrants #un pseudo
"rpc-whitelist-enabled": false, #Desactiver la liste blanche pour se connecter de partout.
Puis vous enregistrez les changements dans le fichier.
On redémarre transmission :
Code :
service transmission-daemon start
Et maintenant si on se connecte à
Code :
http://ip_de_la_machine:9091/transmission/web
On ajoute donc les règles qu'il faut dans le fichier de configuration diptables :
Code :
nano /etc/init.d/firewall
Et on ajoute tout en bas de fichier :
Code :
# Transmission-daemon
iptables -t filter -A OUTPUT -p tcp --dport 9091 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 9091 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 51413 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 51413 -j ACCEPT
iptables -t filter -A OUTPUT -m owner --gid-owner debian-transmission -j ACCEPT
Puis bien sûr on enregistre les changements.
Source : http://forum.kimsufi.com/archive/index.php/t-10975.html
Et ensuite on donne les droits d'accès au dossier principal de l'utilisateur à transmission :
Code :
chown -R nom_d'_utilisateur:debian-transmission /home/nom_d'utilisateur/files
chmod -R 775 /home/nom_d'utilisateur/files
Et on devrait maintenant avoir accès depuis :
Code :
http://ip_de_la_machine:9091/transmission/web
Vous pouvez alors ajouter vos torrents. Faites un essai pour voir si tout va bien. Et vous pouvez voir vos fichiers via l'url : "IP_de_la_machine/nom_d'_utilisateur"
Pour l'exploration web.
Sources : http://www.experience2geek.com/?p=4113
http://sorrodje.alter-it.org/index.php?a...ansmission
http://ubuntuforums.org/showthread.php?t=1605906&s=cf26d27cf6c617e1ec62b25748b11cfd&p=11612949#post11612949
http://blog.idleman.fr/billet-invite-cre...pberry-pi/
Mise en place d'un accès par mot de passe pour l'exploration web des fichiers :
Bon bon bon, voilà une première partie de faite. On va mettre en place un accès par mot de passe à un dossier. Cela peut-être bien utile si vous voulez pas laissez tout ça ouvert à tous :)
Du tuto source : http://httpd.apache.org/docs/2.4/howto/auth.html (en français !!)
et : https://www.feralhosting.com/faq/view?question=22
Note : pour activer les modules d'apache, vous pouvez tapez :
Code :
a2enmod
*
Il vous faudra ensuite redémarrer apache :
Code :
service apache2 restart
On commence par créer un mot de passe pour notre utilisateur. Il faudra stocker ce fichier dans un repertoire hors zone "web" histoire qu'ils ne puissent pas être accessible facilement. Par exemple : "/usr/local/apache"
On crée donc le dossier déjà, connexion putty en root :
Code :
cd /
mkdir /usr/local/apache
Code :
htpasswd -c /usr/local/apache/passwords nom_d'_utilisateur
On va utiliser un fichier .htaccess même si l'utilisation du fichier httpd.conf est conseillé car on a la main totale sur le serveur. Mais après du temps de recherche, je n'ai pas trouvé de contenu défaut concernant ce fichier. Et le tuto que je suis ne donne que les lignes à ajouter.
Il faut paramétrer la configuration du serveur afin de permettre l'utilisation de ce fichier :
Code :
nano /etc/apache2/sites-available/default
Code :
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
On enregistre les changements.
Puis :
Code :
/etc/init.d/apache2 restart
Dans notre dossier dont on veut mettre un mot de passe, un va donc créer ce fameux fichiers .htaccess. On fait donc :
Code :
mkdir /home/nom_d'utilisateur/files/private
nano /home/nom_d'utilisateur/files/private/.htaccess
Code :
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwords
Require user nom_d'_utilisateur
On enregistre les changements.
Code :
/etc/init.d/apache2 restart
Pour autorisez plusieurs comptes, une des méthodes consiste à modifier la ligne
Code :
Require user nom_d'_utilisateur
Code :
Require valid-user
Et pour créer un nouvel utilisateur, on fait :
Code :
htpasswd /usr/local/apache/passwords nouveau_compte
Pour supprimer un compte, supprimez la ligne correspondante dans le fichier :
Code :
nano /usr/local/apache/passwords
Code :
/etc/init.d/apache2 restart
Le fichier .htaccess mets les droits récursivement. Ainsi, si vous voulez donner d'autres droits à un dossier contenu dans le dossier de départ, il vous suffit de lui créer un fichier .htaccess dedans et d'autoriser les utilisateurs comme précédemment. Utilisez aussi un autre fichier pour contenir les mots de passe.
Note : il faut voir à donner les bons drois d'accès aux fichier .htaccess.
Code :
chmod 755 /home/nom_d'utilisateur/files/private/.htaccess
Vous pouvez ajouter des fichiers par ftp à ce dossier ou alors changer le dossier de réception dans les paramètres de l'interface web de transmission pour cibler les fichiers à mettre là bas. Par contre, si vous avez activé les sous dossiers dans la config du bot, ces fichiers seront listés et il faudra alors changer le fichier config afin de régler ça. Pour moi et la suite du tuto, je me servirait de "xdcclist" comme nom de dossier.
Mise en place de l'https pour l'explorateur de fichier web :
Et puis afin qu'on ne puisse pas savoir ce qui transite via notre interface web et bin on va ajouter du ssl. On va donc mettre en place la connexion par ssl afin d'avoir une connexion chiffrée entre nous et le serveur. Cela a l'air d'être pas trop trop compliqué à mettre en place selon le guide de debian : https://wiki.debian.org/Self-Signed_Certificate
Hop on y va, on reboot en root et on installe openssl si c'est pas déjà fait :
Code :
cd /
apt-get install openssl
S'il n'était pas déjà activé :
Code :
a2enmod ssl
Maintenant, on crée le fichier certificat (il s'agit d'un certificat auto-signé, c'est payant d'en obtenir un pour le moment, jetez un oeil à ce projet pour voir où ça en est : https://letsencrypt.org/ cela sera gratuit :) ):
Code :
mkdir -p /etc/ssl/localcerts
openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
On pourra ajouter différents dossiers si on veut utiliser différents certificats. Il faut se souvenir de "/etc/ssl/" et "/etc/sss/localcerts" qui gardent les certificats. Il faudra cependant pointer vers le bon dossier plus tard pour la configuration de l'emplacement des certificats.
Note : Il faudra donc renouveler le certificat dans un an. J'espère que j'y penserais quand ça plantera et ferais alors une tite réponse à ce topic ^^
Puis :
Code :
nano /etc/apache2/sites-available/default-ssl
Et dans la section "
Code :
ServerName example.com:443
Puis vous recherchez les lignes suivantes et modifiez pour :
Code :
SSLEngine on
SSLCertificateFile /etc/ssl/localcerts/apache.pem
SSLCertificateKeyFile /etc/ssl/localcerts/apache.key
Vous enregistrez les changements dans le fichier.
Puis :
Code :
a2ensite default-ssl
Code :
To activate the new configuration, you need to run:
service apache2 reload
Maintenant, si vous vous connectez sur
Code :
https://IP_de_la_machine
Tout cela est bien mais l'on peut encore visiter la page alors qu'on est pas en https, pour modifier ça globalement :
Code :
nano /etc/apache2/sites-available/default
Code :
SSLRequireSSL
Voilà, maintenant il est obligatoire de se connecter par https :)
Par contre on peut voir que l'index des fichiers n'utilise plus h5ai, afin de palier à ceci :
Code :
nano /etc/apache2/sites-available/default-ssl
Code :
DirectoryIndex index.html index.php /_h5ai/server/php/index.php
Puis :
Code :
/etc/init.d/apache2 restart
Afin que h5ai prenne en compte le htacess en https, il faut aussi éditer le fichier suivant :
Code :
nano /etc/apache2/sites-available/default-ssl
Code :
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
On enregistre les changements.
Un ti reboot et hop.
On peut voir par contre que ça merde pour le listing des fichiers "https://ip_du_serveur/xdcclist". Cela car les scripts javascript et le css ne sont pa directement dans le code mais sont appelés via leur adresse. Et cela n'appelle pas sur du https et donc ça ne prend pas cela en compte (de ce que j'ai compris) : http://www.reddit.com/r/webdev/comments/...abling_my/
Si on fait un clique droit et voir le code source de la page, j'obtiens :
On voit donc que certains fichiers sont appelés via leur adresse http et non pas https.
Texte caché qui ne fonctionnait pas au final :
Cette méthode par contre, oui :
Alors au final avec l'https j'ai toujours eu des problèmes, cela s'est résolu en changeant dans le fichier "index.php" :
Code :
//figure out url, if needed.
if(!URL) {
$uri = explode("/",$_SERVER['REQUEST_URI']);
array_pop($uri);
define('_URL', "https://".$_SERVER['SERVER_NAME'].implode("/",$uri)."/");
} else {
define('_URL', URL);
}
Le petit rajout d'un "s" à http et tout à l'air de fonctionner.
Si vous avez des soucis pour uploader un torrent avec un "error permission denied" ou une erreur de permission via ftp, revoyez les permissions du dossier de réception :
Code :
chown -R nom_d'_utilisateur:debian-transmission /var/www/nom_d'_utilisateur
chmod -R 775 /var/www/nom_d'_utilisateur
On n'oublie pas de remettre la connexion en root via ssh à "no" si on s'arrête là, sinon on laisse, on va en avoir besoin pour la suite :)
Liens de tutos ayant servis : http://www.debian-administration.org/art...th_Apache2
https://www.digitalocean.com/community/t...untu-12-04
https://wiki.debian.org/Self-Signed_Certificate
http://askubuntu.com/questions/51840/ssl...is-missing
http://softwareinabottle.wordpress.com/2...ntudebian/
http://serverfault.com/questions/429634/...irectories
Mise en place d'un vpn sur les connexions de transmission :
Donc c'est bien on a mis le https sur les fichiers mais cela n'affecte pas transmission et comme dans nos pays il est d'usage de vouloir chiffrer ses communications, on va faire de même pour transmission. Et donc on prend un vpn et on faire transiter les protocoles d'échange de fichier via cette machine. Je me suis donc servi de mullvad comme service vpn : (je n'ai aps réussi à faire fonctionner ipredator avec cette methode ou la leur).
Le tuto source pour cela est le suivant : https://tech.kanka.ch/index.php/faire-tr...ur-debian/ , un très bon tuto avec beaucoup de commentaires et donc beaucoup de lecture en perspective :)
Pour résumer ce que l'on va faire : on va lier transmission à une adresse lo:1 que l'on va créer et qui aura pour fonction de relier les communications de transmission via le vpn.
On est connecté en root sur la machine via putty. On installe openvpn :
Code :
apt-get install openvpn
On commence par ajouter une nouvelle table de routage :
Code :
echo 1 VPN >> /etc/iproute2/rt_tables
On crée l'interface lo:1, pour cela on édite le fichier suivant :
Code :
nano /etc/network/interfaces
Et on ajoute les ligne suivantes à la fin du fichier avant de l'enregistrer :
Code :
# The secondary loopback network interface
auto lo:1
iface lo:1 inet static
address 192.168.0.1
netmask 255.255.255.255
On se rend sur le site de Mullvad et on récupère les fichiers suivants (perso, je me mets avec une config pour une sortie en Suède) :
- ca.crt
- crl.pem
- mullvad.crt
- mullvad.key
- mullvad_linux.conf
Via FTP, vous mettez tous les fichiers sauf le fichier .conf dans "/etc/openvpn/mullvad/files" et le fichier .conf dans "/etc/openvpn/mullvad" et en même temps vous créez le dossier "/etc/openvpn/mullvad/scripts".
Avant de le copier, on édite le fichier config et il doit ressembler à ceci :
Code :
# Notice to Mullvad customers:
#
# Apart from openvpn, you also need to install the
# package "resolvconf", available via apt, e.g.
#
# For those of you behind very restrictive firewalls,
# you can use our tunnels on tcp port 443, as well as
# on udp port 53.
client
dev tun
proto udp
#proto udp
#proto tcp
route-nopull
remote se.mullvad.net 1194
#remote openvpn.mullvad.net 1194
#remote openvpn.mullvad.net 443
#remote openvpn.mullvad.net 53
#remote se.mullvad.net # Servers in Sweden
#remote nl.mullvad.net # Servers in the Netherlands
#remote de.mullvad.net # Servers in Germany
#remote us.mullvad.net # Servers in the USA
# Tunnel IPv6 traffic as well as IPv4
#tun-ipv6
# Keep trying indefinitely to resolve the
# host name of the OpenVPN server. Very useful
# on machines which are not permanently connected
# to the internet such as laptops.
resolv-retry infinite
# Most clients don't need to bind to
# a specific local port number.
#nobind
# Try to preserve some state across restarts.
persist-key
persist-tun
# Enable compression on the VPN link.
comp-lzo
# Set log file verbosity.
verb 3
remote-cert-tls server
ping-restart 60
# Allow calling of built-in executables and user-defined scripts.
script-security 2
# Scripts vpn
up /etc/openvpn/mullvad/scripts/up.sh
down /etc/openvpn/mullvad/scripts/down.sh
ping 10
ca /etc/openvpn/mullvad/files/ca.crt
cert /etc/openvpn/mullvad/files/mullvad.crt
key /etc/openvpn/mullvad/files/mullvad.key
crl-verify /etc/openvpn/mullvad/files/crl.pem
Note : Je ne pense pas que ce soit très bon de virer la partie resolve-conf mais comme je n'arrivais pas en la laissant, ba hop. Cela impacte peut-être le dns et peut causer de la perte de sécurité. Si quelqu'un veut m'éclairer :)
Afin que cette configuration se lance automatiquement, il lui faut un chemin depuis le dossier openvpn, pour cela un lien symbolique :
Code :
ln -s /etc/openvpn/mullvad/mullvad_linux.conf /etc/openvpn/client.conf
Et on passe aux scripts up.sh et down.sh :
Code :
nano /etc/openvpn/mullvad/scripts/up.sh
Et dedans on met :
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 VPN
# 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 VPN
# Pass traffic from tur0 IP address to the VPN routing table
ip rule add from $4/32 table VPN
#sed -i 's/\(\"bind-address-ipv4\":\).*/\1\ \"'"$4"'\",/' /etc/transmission-daemon/settings.json
#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 $
iptables -A PREROUTING -t nat -i $1 -p tcp --dport 1194 -j DNAT --to 192.168.0.1
iptables -A PREROUTING -t nat -i $1 -p udp --dport 1194 -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 --dport 51413 -j ACCEPT # rTorrent random range
iptables -A SERVICES -p udp --dport 51413 -j ACCEPT # DHT
iptables -A OUTPUT -m owner --gid-owner debian-transmission -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 transmission
/etc/init.d/transmission-daemon restart
#Demarrage du script verifiant que le VPN est toujours actif
killall checkVPN
/usr/bin/checkVPN &
Vous enregistrez ça.
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 :
nano /etc/init.d/firewall
Code :
iptables -N SERVICES
Puis on désactive lignes suivantes en fin de fichier :
Code :
#iptables -A INPUT -p tcp --dport 51413 -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 51413 -j ACCEPT
#iptables -t filter -A OUTPUT -m owner --gid-owner debian-transmission -j ACCEPT
Et on met à la place :
Code :
# VPN
iptables -t filter -A OUTPUT -p udp --dport 1194 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 1194 -j ACCEPT
Puis on crée le script down.sh :
Code :
nano /etc/openvpn/mullvad/scripts/down.sh
Et on copie ceci avant d'enregistrer :
Code :
#! /bin/sh
# This script disables policy routing before the tunnel interface is brought down
killall checkVPN
/etc/init.d/transmission-daemon stop
#On efface les règles iptables ajoutées
iptables -D FORWARD -s 192.168.0.1/32 -o eth0 -j DROP
iptables -D OUTPUT -m owner --gid-owner debian-transmission -j ACCEPT
iptables -D SERVICES -p udp --dport 51413 -j ACCEPT # DHT
iptables -D SERVICES -p tcp --dport 51413 -j ACCEPT # rTorrent random range
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 1194 -j DNAT --to 192.168.0.1
iptables -D PREROUTING -t nat -i $1 -p tcp --dport 1194 -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 VPN
# Remove rule for tun0 IP address
ip rule del from $4/32 table VPN
Dans le tuto qu'on suit, on ajoute un ti script qui vérifie que openvpn fonctionne toujours bien afin de couper transmission si ce dernier a lâché et qu'il ne l'a pas vu :)
Code :
nano /usr/bin/checkVPN
Et on met ceci :
Code :
#! /bin/bash
#On fait un ping vers www.google.com toutes les 5min, et si aucun paquet n'est reçu en retour (0 packets received, le 0 étant à 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 :
chmod +x /etc/openvpn/mullvad/scripts/up.sh
chmod +x /etc/openvpn/mullvad/scripts/down.sh
chmod +x /usr/bin/checkVPN
On dit à openvpn de lancer la bonne config au démarrage, dans le fichier :
Code :
nano /etc/default/openvpn
Vous changez la ligne :
Code :
AUTOSTART="client"
Maintenant, afin que transmission soit relier à l'adresse lo:1 qu'on a crée, il faut éditer sa config. On commence par arrêter le client et on édite la configuration :
Code :
service transmission-daemon stop
nano /etc/transmission-daemon/settings.json
Et on change les lignes :
Code :
"bind-address-ipv4": "192.168.0.1",
"bind-address-ipv6": "fe80::",
On reboot et tout devrait fonctionner. On prie très fort le Dieu de la bière pour ça :)
Bon on dirait qu'on a pas encore assez prié, alors reprenez une bière et continuons ^^
SI vous vous connectez en root via putty et tapez "ifconfig", vous pouvez voir que tun0 est bien là, lo:1 aussi, tout à l'air bien mais les torrents n'ont pas de sources. On va donc se penchez sur le message de mullvad qui était présent en haut du fichier configuration.
Code :
apt-get install resolvconf
Puis on édite le fichier "nano /etc/openvpn/mullvad/scripts/up.sh" et vers la fin on ajoute :
Code :
#Resolveconf mullvad
/etc/openvpn/update-resolv-conf
Puis le fichier "nano /etc/openvpn/mullvad/scripts/down.sh" et à la fin on met :
Code :
#Resolveconf mullvad
/etc/openvpn/update-resolv-conf
On reboot.
Et ensuite ça marche pas alors dans le fichier de config du pare-feu on ajoute :
Code :
cd /
nano /etc/init.d/firewall
iptables -A INPUT -m state –state RELATED,ESTABLISHED -p udp –dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp –sport 51413 -j ACCEPT
Et puis là moi ça fonctionne :) Alors je suis bien content
Vous pouvez vérifier votre ip torrent à l'aide du site suivant : http://ipleak.net/
Et on note qu'on a une ipv6 détecté alors que transmission ne devrait pas s'en servir suite à notre réglage. On va donc désactiver complètement l'ipv6 :
Code :
nano /etc/sysctl.conf
Code :
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
Et hop, ipleak ne nous montre plus d'ipv6 d'annoncé :)
Ajout d'un nom de domaine :
Bon bon, tout fonctionne bien mais taper l'url c'est pas très sexy alors on va ajouter un nom de domaine afin que l'on puisse donner l'url plus facilement. On prend un domaine gratuit en .ovh pasque ça le vaut bien ! C'est gratuit alors ne nous en privons pas, d'autant que j'ai assez confiance en ovh. C'est par ici que ça se passe : http://www.ovh.com/fr/domaines/ (vous êtes bien sûr connecté à votre compte ovh ^^)
Prenez l'option DNS Classique, c'est tout comme les logiciels qui veulent vous intaller des barres de recherches sur votre navigateur, faut faire gaffe !
Vous dites que vous ne voulez pas d'hébergement et hop o// Un domaine gratuit pour 1an o/
Lors du choix des sélection de serveurs DNS, vous indiquez ceux d'ovh pour kimsufi.
Vous acceptez les contrats sans les lire pasque putin vous avez autre chose à foutre et on espère que tout va bien. M'en fou moi, j'ai ma patte de lapin tout fraîche en poche
Vous validez la commande gratuitement tout en bas à gauche et :) On retourne donc sur notre machine maintenant :)
On commence par changer un paramètre de Bind, en lui autorisant une écoute globale :
Code :
cd /
cd /etc/bind
nano named.conf.options
Et on modifie :
Code :
listen-on { 127.0.0.1; };
Code :
listen-on { any; };
Maintenant, on récupère l'adresse ip du DNS secondaire lié à notre machine :
Code :
ping -c 3 ns.kimsufi.com
Puis toujours dans "/etc/bind" on édite un nouveau fichier :
Code :
nano named.conf.local
Code :
zone "domaine.tld" {
type master;
file "/etc/bind/db.domaine.tld";
allow-transfer {213.186.33.199;};
allow-query{any;};
notify yes;
};
Puis on crée le fichier "db.domaine.tld" et dedans on met :
Code :
$TTL 86400
domaine.tld. IN SOA ns######.ip-12-124-126.eu. hostmaster.domaine.tld. (
2013121206 ; serial à changer à chaque modification
43200 ; refresh, 12h
3600 ; retry, 1h
1209600 ; expire
86400 ) ; negative cache, 24h
domaine.tld. IN NS ns######.ip-12-124-126.eu.
domaine.tld. IN NS ns.kimsufi.com.
domaine.tld. IN A xx.xx.xx.xx
www IN A xx.xx.xx.xx
;
;mail IN A xx.xx.xx.xx
;domaine.tld. IN A xx.xx.xx.xx
;domaine.tld. IN MX 10 domaine.tld.
Puis toujours depuis le répertoire "/etc/bind", on regarde si la zone est bien paramétrée.
Code :
named-checkzone domaine.tld db.domaine.tld
Si c'est "OK", vous pouvez relancer bin :
Code :
service bind9 reload
Maintenant, on paramètre le serveur DNS secondaire de notre machine kimsufi et cela se passe dans l'admin web de kimsufi. Vous vous rendez dans la partie "DNS" (en petit au milieu de l'interface ^^) et vous ajoutez un DNS secondaire.
Il vous sera demandé d'ajouter une entrée avec un code via l'adminnistration web associé à votre nom de domaine.
Une fois cela effectué, il faut faire pointer le nom de domaine vers notre machine. Pour cela, on se rend dans la section "Accueil > Mutualisé > Domaines & DNS > Zone DNS" et vous ajoutez un champ A.
Vous laissez le champ de sous-domaine vide et choisissez une destination personnalisée pour l'ip et vous rentrez l'ip de votre machine.
Et il vou faut aussi un CNAME qui relie "www" à "nom-de-domaine" :
www.nom-de-domaine.ovh
CNAME
nom-de-domaine.ovh
Vous laissez le temps faire, il faut un ti paquet d'heure pour que la résolution DNS soit effective.
Sources : http://www.memoinfo.fr/configurer-serveu...i-ovh.html
http://forum.ovh.com/showthread.php?9713...un-Kimsufi
Design page d'accueil par défaut :
Bon un ti truc à la con pour se reposer, on va changer la page par défaut "It works", histoire de poser une page toute simple à la place.
Et donc rien de plus simple, cette page est dispo via ftp dans le dossier "/var/www" et se nomme "index.html" et elle contient le code suivant :
Code :
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>
Vous pouvez changer pour ce que vous voulez en restant dans le html : http://www.w3schools.com/html/
Voilà c'est tout pour le moment, la fin au prochain message ^^ Je pouvais pas faire plus long, surement dû à une limite sur la taille d'une donnée dans la bdd.