Aller au contenu

[TUTO] [VPS] OpenVPN/Nginx pour l’ouverture de ports en 4G


Einsteinium

Messages recommandés

Bonjour à tous,

 

Introduction :

Alors dans ce tutoriel nous allons voir l’installation d’un VPS avec OpenVPN et Nginx, afin de pouvoir ouvrir des ports vers notre NAS lorsque l’on passe par la 4G ou alors si on ne désire pas exposer directement notre IP/Serveur à la façon cloudfire.

Je parlerai de l’installation sous OVH, ce dernier permettant un firewall performant et simple en entrée avant même de pouvoir atteindre le VPS et évitant donc de jouer avec iptables, cela permet donc aux novices de mettre en application ce tutoriel sans trop de difficulté.

Informations importantes Dans ce tutoriel soit vous vous limitez à OpenVPN avec l’ouverture de port direct, soit vous poussez plus loin avec un domaine, Nginx et lets encrypts pour faire du reverse proxy et ne pas ouvrir directement des ports.

Niveau requis : Être familier avec le ssh (putty) et l’édition de fichier en mode console (vim), je détaillerai chaque commande ssh pour les novices.

 

Le VPS :

https://www.ovh.com/fr/vps/vps-ssd.xml

Pour ma part j’ai pris le plus petit à 2,99€ HT (3,59€. TTC), inutile de prendre plus gros, le serveur ne servira que de passerelle.

Une fois validé la localisation de votre serveur, il faudra « Sélectionnez une image » et c’est ici que l’on choisira « Système d'exploitation seul » puis « debian 10 » (Anglais).

Vous recevrez après paiement, le VPS sous une dizaine de minute, avec un mail contenant adresse et identifiants.

 

Configuration du firewall network :

lWI5j59.jpg

Vous cliquez dans le menu sur « IP », vous verrez les deux IP de notre VPS une IPV4 et une IPV6. En bout de ligne IPV4, on fait les 3 petits points et on active le firewall, après quelques minutes nous aurons le choix au même endroit de configurer le firewall, les règles de base à mettre :

Priorité 0 | Action autoriser | Protocole TCP | Drapeaux established 

Priorité 19 | Action refuser | Protocole IPV4

Nous rajouterons ensuite entre deux les ports de notre serveur que nous utiliserons :

1194 en UDP sur notre seule IP si possible. (OpenVPN)

943/22 en TCP sur notre seule IP si possible. (Serveur web OpenVPN d’administration et SSH)

80/443 en TCP pour toutes les IP. (Serveur Nginx, uniquement si vous comptez le mettre)

Pour ma part je suis chez free en internet fixe, je n’autorise donc que cette IP pour le port 943/22 pour l’administration du serveur. (Port 22 que nous changerons par la suite)

Pour le port 1194, vu que je passe par free mobile via routeur 4G, j’ai fait 3 règles qui n’autorisent que les IP free mobile à se connecter à OpenVPN, là aussi afin de réduire à néant les tentatives d’attaques sur le serveur (Sachant que nous mettrons une protection contre les tentatives de connections multiples, mais à ce jour je n’ai subi aucune tentative de connection venant d’un utilisateur free mobile en dehors des miennes)

HiFUlz9.jpg

Vous pouvez fermer la fenêtre, profitez en pour renseigner le reverse dns du domaine que vous avez pris si tel est le cas.

 

Installation du VPS :

Vous avez reçu par mail l’adresse et les identifiants de votre VPS, on s’y connecte en ssh et on y va...

passwd root

(changement du password root)

adduser VOTREUSER --force-badname

(Création d’un utilisateur, afin de désactiver la connection direct par root)

cd /home/VOTREUSER

(on se déplace dans le dossier personnel de votre utilisateur)

apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian buster main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as

(on installe OpenVPN)

passwd openvpn

(on change le mdp du compte admin d’openvpn)

 

Configuration de OpenVPN :

On configure désormais OpenVPN via l’interface web, et l’identifiant openvpn :

https://IPDEVOTREVPS:943/admin/

Ci joints les différents paramètres à avoir.

 

TLS Settings :

6HTvWNi.jpg

 

Server Network Setting :

MuLizIO.jpg

 

VPN Setting :

ucs5WPi.jpg

 

User Authentification :

5OxyOpJ.jpg

 

User Permissions :

Dans new username on indique le nom d’utilisateur précédemment créé :

nOkcyHj.jpg

De là on modifie les settings afin de mettre une IP fixe à la machine :

tAgN3tD.jpg

Alors admettons que vous vouliez ouvrir directement un port car vous n’avez pas de domaine, je vous mets un exemple ci dessous, sachant que si vous ouvrez un port directement, il faudra aussi le mettre dans le firewall network d’ovh :

vO1vr72.jpg

 

Si vous ne comprenez pas certains choix, faites le savoir en commentaire.

 

Poursuite de l’installation du VPS :

On termine la configuration du VPS en repartant en ssh.

apt update

(On met à jour la liste des paquets)

apt upgrade

(On met à jour le serveur)

apt install fail2ban htop dnsutils unzip sendmail whois

(on installe plusieurs paquets qui seront utiles, fail2ban pour la sécurité par exemple et empêcher les attaques par brute force)

On va désactiver l’ipv6 sur le VPS, inutile dans notre cas et par sécurité :

vim /etc/sysctl.conf

On va à la fin du fichier, on appuie sur « i » pour pouvoir insérer du texte et on met :

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.autoconf = 0

On fait ensuite « echap », on tape « :wq » et enfin « entrée », cela sauvegarde et ferme le fichier (on appliquera le même principe pour la suite des modifications), on tapera ensuite afin de valider les changements pour l’ipv6 :

sysctl -p

On va modifier fail2ban maintenant, on commence par l’augmentation de durée de bannissement.

vim /etc/fail2ban/jail.conf

Et on modifie la valeur :

bantime 604800

Durée en seconde d’un ban, soit 7 jours, bien mieux que les 10 minutes d’origine.

vim /etc/fail2ban/jail.d/defaults-debian.conf

On rajoute dedans :

[pam-generic]
enabled = true

Vous remarquerez les premières lignes déjà présentes qui protègent le ssh, ici nous rajoutons pour protéger la connection à OpenVPN, on relance le service maintenant.

/etc/init.d/fail2ban restart

On modifie maintenant le port ssh et on désactive la connection root.

vim /etc/ssh/sshd_config

On modifie :

PermitRootLogin no
Port ???

A vous de choisir, on n’oubliera pas de supprimer le 22 puis de mettre ce nouveau dans le firewall network d’ovh, on relance ensuite le service

/etc/init.d/ssh restart

On ne tient pas à devoir surveiller les updates de sécurité du serveur pour ne pas avoir de failles, on automatise donc cela.

Attention après re connection ssh à partir de maintenant, la connection se fera avec notre utilisateur créé précédemment et on tapera « su », on validera puis on tapera le mot de passe root.

apt install unattended-upgrades apt-listchanges
vim /etc/apt/apt.conf.d/50unattended-upgrades

On modifie les deux valeurs suivantes telles quelles :

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

On lance ensuite pour vérifier :

unattended-upgrades -v

Et voilà nous aurons une machine qui fera tous ses updates de sécurité et qui s’il faut reboot, le fera à 3 heures du matin.

Voilà si vous n’avez pas de domaine et faites de l’ouverture de port directement à travers OpenVPN, le tutoriel est fini pour vous, vous récupérez le profil client.opvn pour connecté votre nas à cette adresse en utilisant notre utilisateur précédemment créé :

https://ipdevotrevps:943

Pour les autres la suite démarre dans le poste suivant 🙂

Lien vers le commentaire
Partager sur d’autres sites

Installation d'un domaine avec son serveur web :

Attendre son serveur avec l'ip c'est cool, mais avec un domaine c'est bien plus sympa pour le partage de serveur plex, chat ou filestation à mon gout, je condense les blocs de commandes qui s'enchainent ici, attention pour utilisateurs confirmés, je donne des configs complètes et parfaitement optimisées, si vous suivez à la lettre ce qui suit, votre serveur sera parfaitement sécurisé.

Il vous faudra un site à mettre à la racine, mais aussi une page 404 et timeout si vous suivez mon exemple, à vous de laisser court à votre créativité ou de reprendre de l'existant, cela ne sera qu'une vitrine (voir plus si vous voulez...)

Praparation DNS chez OVH :

Chez OVH on modifie le pointage DNS, l'exemple concret :

R5EdALc.png

 

Installation du serveur WEB :

echo "deb http://nginx.org/packages/debian/ buster nginx">/etc/apt/sources.list.d/nginx.list
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt update
apt install nginx php7.3-fpm
sudo update-rc.d nginx enable

(installation de ngix et php 7.3)

 

vim /etc/nginx/conf.d/default.conf

On modifie juste avec son domaine :

server_name VOTREDOMAINE;

 

On remplace le contenu du fichier suivant :

vim /etc/nginx/nginx.conf

Par :

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
	worker_connections 1024;
}

http {
	#Requete maximun par ip 
	limit_req_zone $binary_remote_addr zone=flood:10m rate=1000r/s; 
	limit_req zone=flood burst=100 nodelay; 

	#Connexions maximum par ip 
	limit_conn_zone $binary_remote_addr zone=ddos:10m; 
	limit_conn ddos 100;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	log_format main '$remote_addr - $remote_user [$time_local] "$request" '
			'$status $body_bytes_sent "$http_referer" '
			'"$http_user_agent" "$http_x_forwarded_for"';

	access_log /var/log/nginx/access.log main;

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	server_tokens off;

	gzip on;
	gzip_disable "msie6";
	gzip_vary on;
	gzip_proxied off;
	gzip_comp_level 6;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	include /etc/nginx/conf.d/*.conf;
}

(Mon fichier perso, alors je vais pas détailler chaque ligne, mais ne vous en faites pas il est tip top caviar, google est votre ami sinon)

 

On regarde ensuite dans le fichier :

vim /etc/php/7.3/fpm/pool.d/www.conf

Que l'on a bien :

listen = 127.0.0.1:9000

 

A partir d'ici avant de relancer nginx, nous lancerons un "nginx -t" afin de vérifier la configuration et ne pas planter ce dernier.
 

Ensuite on relance l'ensemble :

/etc/init.d/php7.3-fpm restart
/etc/init.d/nginx restart

 

Certificat Lets Encrypt :

cd /home/VOTREUSER
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

(logiciel qui va générer les certificats qu'on télécharge et place au bon endroit avec ces droits )

 

cd /etc/ssl/private
rm -f ocsp-certs.pem && wget -O- https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem https://letsencrypt.org/certs/lets-encrypt-x4-cross-signed.pem | tee -a ocsp-certs.pem > /dev/null

(Une petite augmentation du niveau de sécurité niveau certificat)

 

openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

(Là aussi, car j'aime bien avoir de bonnes notes en test)

 

/usr/local/bin/certbot-auto --nginx certonly --rsa-key-size 4096

(Ici on va générer le certificat pour le domaine mis plus haut, rien de compliqué, vous devriez y arriver sans difficultés, cela installe au passage certbot pour ce premier lancement)

 

/usr/local/bin/certbot-auto certonly --server https://acme-v02.api.letsencrypt.org/directory --manual -d '*.VOTREDOMAINE' --rsa-key-size 4096

(On crée maintenant le wildcard, il y aura un enregistrement à faire chez OVH, on remplace bien sûr dans la commande avec son domaine)

 

On va créer les snippets pour nos certificats, on remplacera bien sur par son domaine, on commence par le certificat de base :

vim /etc/nginx/snippets/ssl-VOTREDOMAINE.conf

On met dedans :

ssl_certificate /etc/letsencrypt/live/VOTREDOMAINE/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/VOTREDOMAINE/privkey.pem;

 

Et là encore pour le wildcard :

vim /etc/nginx/snippets/ssl-wildcard.VOTREDOMAINE.conf

Avec :

ssl_certificate /etc/letsencrypt/live/VOTREDOMAINE-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/VOTREDOMAINE-0001/privkey.pem;

 

On va maintenant s'occuper des paramètres ssl :

vim /etc/nginx/snippets/ssl-params.conf

Son contenu :

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:EECDH+CHACHA20:EECDH+AESGCM";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/ssl/private/ocsp-certs.pem;
resolver 213.186.33.99 valid=300s;
resolver_timeout 5s;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

 

Maintenant les paramètres proxy :

vim /etc/nginx/snippets/proxy-params.conf

Son contenu :

proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout 150;
proxy_send_timeout 150;
proxy_read_timeout 150;
send_timeout 150;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;

 

Maintenant on retourne modifier la configuration nginx pour l'intégration des certificats et la sécurité et je vous colle une édition des miens, avec en bonus un exemple de sous domaine pour plex, ici on regarde bien,

vim /etc/nginx/conf.d/default.conf

On met dedans :

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	return 301 https://$host$request_uri;
}
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;
	include snippets/ssl-wildcard.VOTREDOMAINE.conf;
	include snippets/ssl-params.conf;
	server_name *.VOTREDOMAINE;
	return 301 https://VOTREDOMAINE$request_uri;
	add_header X-Frame-Options "SAMEORIGIN" always;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header Content-Security-Policy "allow 'self'; base-uri 'self'";
	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
}
server {
	listen 443 ssl http2 default_server;
	listen [::]:443 ssl http2 default_server;
	include snippets/ssl-VOTREDOMAINE.conf;
	include snippets/ssl-params.conf;

	root /usr/share/nginx/DOSSIERQUEVOUSVOULEZRACINESITEWEB;

	index index.php;

	server_name VOTREDOMAINE;

	add_header X-Frame-Options "SAMEORIGIN" always;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header Content-Security-Policy "allow 'self'; base-uri 'self'";
	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

	error_page 403 404 429 500 502 503 504 /PAGE404.html;
        location = /PAGE404.html {
                root /usr/share/nginx/DOSSIERQUEVOUSVOULEZPAGE404/;
                internal;
	}

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		try_files $uri =404;
		fastcgi_index index.php;
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;
	}

	location ~ /\.ht {
		deny all;
	}
}
server {
	listen 443 ssl http2;
	listen [::]:443 ssl http2;
	include snippets/ssl-wildcard.VOTREDOMAINE.conf;
	include snippets/ssl-params.conf;
	include snippets/proxy-params.conf;

	server_name plex.VOTREDOMAINE;

	access_log /var/log/nginx/plex.access.log main;

	add_header X-Frame-Options "SAMEORIGIN" always;
	add_header X-Content-Type-Options nosniff;
	add_header X-XSS-Protection "1; mode=block";
	add_header Content-Security-Policy "allow 'self'; base-uri 'self'";
	add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

	error_page 403 404 429 500 502 503 504 /timeout.html;
        location = /TIMEOUT.html {
                root /usr/share/nginx/DOSSIERQUEVOUSVOULEZTIMEOUTQUANDSERVERDECONNECTERVPN/;
                internal;
        }

	location / {
		proxy_pass https://10.0.0.XXX:32400;
	}
}

Le premier bloc redirige les requêtes http vers https, le second bloc renverra les demandes de sous domaine inexistants, vers le domaine principal (VOTREDOMAINE à modifier 3 fois), le troisième bloc concerne le domaine principal (VOTREDOMAINE à modifier 2 fois & 2 chemins de dossier à modifier)

Enfin le 4ième et dernier bloc concerne un sous domaine qui ramène vers plex, dans la suite logique du tutoriel (VOTREDOMAINE à modifier 2 fois, un chemin de dossier et surtout l'ip que vous avez fixée à votre nas) Dans ce cas niveau OpenVPN on peut retirer la dmz mise dans le premier tutoriel et fermer le port dans le pare feu d'ovh.

 

On relance ensuite nginx et c'est tout bon 🙂

/etc/init.d/nginx restart

 

On va maintenant mettre à jour la protection du serveur via fail2ban :

vim /etc/fail2ban/jail.conf

Avec :

ignoreip = VOTREIPFIXE/32

(Afin de ne jamais se bannir)

 

Après le bloc [nginx-botsearch] on rajoute cela afin de bannir les abus et tentatives d'attaques et recherches de failles :

[nginx-301]

port    = http,https
logpath = /var/log/nginx/access.log
      /var/log/nginx/plex.access.log
findtime = 60
maxretry = 4

[nginx-400]

port    = http,https
logpath = /var/log/nginx/access.log
      /var/log/nginx/plex.access.log
maxretry = 1

[nginx-404]

port    = http,https
logpath = /var/log/nginx/access.log
      /var/log/nginx/plex.access.log
findtime = 60
maxretry = 4

(Sous domaine plex pour être dans la suite logique du tutoriel, mettre tous vos sous domaines au fil du temps)

 

On fait maintenant les filtres de ces nouvelles règles, en les reproduisant ensuite avec 400 & 404 :

vim /etc/fail2ban/filter.d/nginx-301.conf

Son contenu :

[Definition]
failregex = <HOST> - - \[.*?\] ".*?" 301
ignoreregex =

 

On rajoute maintenant des jails :

vim /etc/fail2ban/jail.d/defaults-debian.conf

En mettant à la fin :

[nginx-http-auth]
enabled = true

[nginx-limit-req]
enabled = true

[nginx-botsearch]
enabled = true

[nginx-301]
enabled = true

[nginx-400]
enabled = true

[nginx-404]
enabled = true

[php-url-fopen]
enabled = true

 

Et on relance ensuite fail2ban :

/etc/init.d/fail2ban restart

 

Il y aura les 2 commandes à faire tous les 3 mois pour re générer les certificats lets encrypt que vous avez exécutés plus haut, je ne le fais pas en auto car il y toujours quelque chose qui coince avec l'automatisme... après cela me donne l'occasion de voir un peu les logs au passage et de vérifier que tout tourne bien.

Voilà roulez jeunesse les amis, on peut aussi voir à limiter les ip entrantes, dans mon cas seules les ip françaises et belges peuvent naviguer sur le site, mais aussi recevoir un mail avec whois lorsqu'une IP se fait bannir, éventuellement je peux voir à mettre cela en plus dans le tutoriel s'il y a de la demande.

Concernant plex, il faudra générer le certificat et modifier 2/3 paramètres, si c'est l'usage que certains font, je vous donnerai la procédure en réponse dans le topic.

Alors bon je ne détaille pas tout... c'est le fruit de longues heures de recherches pour avoir des configurations parfaites, par exemple si vous ouvrez un sous domaine pour filestation, vous aurez l'adresse IP réelle de la personne, si vous voulez vérifier la qualité ssl du serveur vous aurez du A+ en note, mon serveur tourne maintenant depuis 1 an sans aucun soucis ou faiblesse de sécurité et je peux vous dire que les tentatives sur le serveur web sont légions, ce qui a résulté la création des filtres fail2ban 301/400/404 pour ne pas surcharger inutilement le serveur web (et polluer les logs).

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Dis moi pas que tu as fait ce tuto sur ta tablette 😧

Grand fou va 🤣

Bon sinon, plus sérieusement, tuto bien sympathique et hâte de lire la suite (partie domaine).

Je ne pense pas le mettre en application car je n'en vois pas trop l'intérêt de mon côté à part peut-être cacher ma réelle IP pour afficher celle du VPS...

Tu dis ceci :

Citation

afin de pouvoir ouvrir des ports vers notre NAS lorsque l’on passe par la 4G ou alors si on ne désire pas exposer directement notre IP/Serveur à la façon cloudfire.

Que veux-tu dire exactement ? Dans quel but exactement tu en as l'utilisation ? Tu veux dire que par exemple pour Plex, ça passe par le port 32400 via le VPS sans que ta connexion 4G (modem) ne bronche ?

Je pense qu'il me faudrait un schéma pour comprendre le fonctionnement 😅

Tu n'as donc plus cette limitation de 2m sur Plex ou ça n'a rien changé de ce côté là ?

Et niveau performance sur la ligne ? Tu notes des soucis ou rien du tout comme désagrément stp ?

Bravo en tout cas, beau tuto même si je suis pas certain qu'il attire les foules sur le forum.

PS: rahhh, tu me donnes envie de prendre de suite un VPS pour faire mumuse 😂

Lien vers le commentaire
Partager sur d’autres sites

Sur iPhone XS Max, et la mise en forme sur iPad Pro 12,9’´ 🤣

Oui ce tutoriel est utile pour ceux comme moi qui n’ont pas la fibre 🤣

Et bien en 4G on ne peut pas ouvrir de port globalement (hormis quelques exceptions coûteuses), dans mon cas oui cela me sert en t’autre pour plex, ds file et chat, le nas passant par la connection 4G au lieu de l’adsl.

Il y a des coupures en 4G, comme sur l’adsl en IP non fixe, mais le fait d’avoir une liaison VPN actif, réduit ses dernières, qui se font que lors des périodes de temps mort d’activité (on parle d’une micro coupure, qui ne se ressent même pas à l’usage, du moins avec mon routeur 4G), le nas lui ne se déconnecte même pas du VPN à vraie dire (sauf si reboot du VPS suite update), cela doit entrainé quelques millisecondes de timeout voir 1 seconde ou 2 grand Max avec le VPS...

Au début je passais que par cette méthode d’ouverture de port direct (bon après tu le sais à 15€ les 10 ans pour un .eu la promo...)

Je passes par le reverse dns, avec tout de déclare sur le serveur plex et c’est transparent et plus de bridage de débit, enfin si la limite du VPS qui est de 100mbits, mais à 12,5mo/s... faut déjà avoir de très gros flux.

Après en suivant ce que j’ai mis dans le tutoriel, le traffic du nas ne traverse pas en totalité le VPS, seul les échanges entre les services ouverts, quand on les interroges via les sous domaines/ports transitent, le reste passe normalement à travers la connection habituelle.

Lien vers le commentaire
Partager sur d’autres sites

Ok merci pour ces éclaircissements.

Avec ton routeur 4G, tu arrives à combien en débit 4G que ce soit en période creuse comme le soir tard ou les périodes moins creuses comme les rentrées de travail et d'école vers 17h30 ?

Parce que tu dis avoir cette limitation de 100m chez OVH mais il y a aussi le débit 4G en plus à prendre en compte et ses fluctuations.

 

Lien vers le commentaire
Partager sur d’autres sites

Alors j’habite dans un hameau de 3000 âmes qui n’a qu’une antenne 4G free, je suis à 1,2km à vol d’oiseau, le routeur et pas particulièrement bien placé (aussi bien chez moi, que géographiquement par l’antenne) et je n’utilises que ses deux oreilles de lapin.

C’est un routeur que je dois avoir mis en signature de mémoire, mais je n’ai pour le moment que deux bande sur l’antenne relais (bientôt 3 huhu), je download à environ 20mo/s et upload à 3mo/s (au lieu de 1mo/s et 115ko/s en adsl...), débit constant en permanence, par contre je remarque que en face y a des ralentissements sur les serveurs de téléchargement par exemple (je dois en cumulé plusieurs pour plafonné au lieu d’un seul, uptobox par exemple)

Nan franchement dans ma ville, je suis surpris de la 4G, après je penses aussi que le routeur y est pour beaucoup aussi sur la réception et la stabilité, car vue le nombre de gens chez free dans ma zone, l’antenne elle doit être bien chargée 🤣

Lien vers le commentaire
Partager sur d’autres sites

il y a 34 minutes, MS_Totor a dit :

au fait, la commande apt-get n'est plus utile sous debian 9, remplacée par apt...

je pense que unbound aurais sa place sur ton vps.

 

alors je suis de la vieille école moi, après apt-get à encore bien plus de fonction que apt qui est encore tout jeune comparé, voilà le pourquoi ici 😜

Unbound, c’est une fonction qui peu être envisageable pour un VPS, mais ici c’est vraiment pour servir de relais, la suite du tutoriel que je mettrais d’ici fin août, sera un peu plus costaud, surtout niveau sécurité pour nginx, et cela afin d’avoir une très bonne note, le tout en filtrant géographiquement les sous domaines contre les indésirables assez simplement.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Salut Einsteinium , merci pour ton tuto !

J'ai essayé le VPS par curiosité en voyant ce post.

J'ai suis directement parti sur Debian10 un peu a l'arrache je dois dire mais ça tient la route ^^.

Il manque juste une chose au début du tuto , il faut rajouter : 

 

wget https://openvpn.net/downloads/openvpn-as-bundled-clients-latest.deb

et

dpkg -i openvpn-as-bundled-clients-latest.deb

 

Sinon lors de la tentative d'installation on a un message comme quoi il manque une dépendance.

Pour l'instant j'ai pu connecter un de mes NAS et transféré des ports pour tester , celà fonctionne très bien !

Encore merci de nous mâcher le travail comme ça 🙄😋 .

J'ai hâte de voir la partie sur les domaines et certificats Let's Encrypt.

Lien vers le commentaire
Partager sur d’autres sites

La dépendance doit venir du dernier update de openvpn access server.

Il y aura plus de récupération Manuel, depuis la dernière version, il propose enfin un dépôt et donc les maj automatiques 💪🏼
 

La partie domaine d’ici un mois je penses, je peaufine quelques réglages niveau sécurité, afin que cela reste accessible au plus novice, simple, sans perdre en sécurité.

Lien vers le commentaire
Partager sur d’autres sites

Le 19/09/2019 à 20:59, El_Murphy a dit :

Salut Einsteinium , merci pour ton tuto !

J'ai essayé le VPS par curiosité en voyant ce post.

J'ai suis directement parti sur Debian10 un peu a l'arrache je dois dire mais ça tient la route ^^.

Il manque juste une chose au début du tuto , il faut rajouter : 

 

wget https://openvpn.net/downloads/openvpn-as-bundled-clients-latest.deb

et

dpkg -i openvpn-as-bundled-clients-latest.deb

 

Sinon lors de la tentative d'installation on a un message comme quoi il manque une dépendance.

Pour l'instant j'ai pu connecter un de mes NAS et transféré des ports pour tester , celà fonctionne très bien !

Encore merci de nous mâcher le travail comme ça 🙄😋 .

J'ai hâte de voir la partie sur les domaines et certificats Let's Encrypt.

Merci !

Je vais pouvoir suivre ce tuto à la lettre plutot que bidouiller

Lien vers le commentaire
Partager sur d’autres sites

J'aime bien essuyer les plâtres ^^.

Je me suis lancé juste pour découvrir le VPS et finalement je me suis laisser prendre au jeu comme pour tout le reste avec nos nas.

Du coup j'ai config nginx en reverse (n'y connaissant rien) , j'ai mis mes certificats dans un dossier et j'ai fais des tests avec différent blocks que j'ai trouvé par ci par là sur le net jusqu'a ce que ça fonctionne.

Et je dois dire que ça fonctionne vraiment bien , du coup j'ai mis tous mes domaines sur l'ip vps et j'ai fermé tous les ports de mes box.

Je repartirais de zéro quand Einsteinium nous fera sa deuxième partie.

J'hésite a me lancer dans openvpn opensource (x clients gratuis) pour contourner la restrictions du nombres de connections de la version AS (2 clients gratuis puis 150 €/an pour 10 clients).

Lien vers le commentaire
Partager sur d’autres sites

Bon bon bon... Attention mode boulet activé.

Ce coup-ci le tuto est suivi à la lettre.

Le Syno est connecté sur l'openvpn du VPS, pas de soucis.

Quelqu'un pour m'expliquer comment j'y accede maintenant depuis l'exterieur ?

Les buts sont :

1 _acceder aux fichiers des dossiers partagés "Films" et "Series" du NAS depuis mon smartphone via kodi (ça fonctionne très bien en local avec ftp)

2 _acceder aux mêmes fichiers depuis la Mibox d'amis à 40 bornes de la maison (et de preference en passant aussi par kodi et ftp)

Modifié par Hurlelune
Lien vers le commentaire
Partager sur d’autres sites

Est-ce que vous avez un nom de domaine ?

 

Edit : autant prendre de l'avance

 

Si vous avez un nom de domaine vous le faites pointer sur l'adresse ip de votre pvs.

Si vous n'avez pas de nom de domaine vous devez directement utilisez l'adresse ip du vps.

 

Ensuite sur l'interface admin de openvpn , vous allez dans les permissions des utilisateurs , vous éditez l'utilisateur que votre NAS utilise pour se connecter.

Vous cochez l'option DMZ comme dans l'exemple de Einsteinium et dans la case vous mettez :

IPDEVOTREVPS:tcp/21

Validez et c'est bon pour openvpn.

N'oubliez pas d'ouvrir le port 21 tcp dans le firewall ovh ainsi que sur votre NAS.

 

Modifié par El_Murphy
Lien vers le commentaire
Partager sur d’autres sites

Bon, pas accès avec Kodi en FTP.

En revanche, j'ai activé Webdav server et plus de probleme : je peux visionner mes films de n'importe où sur le smartphone.

Il reste juste à parametrer la mibox des potes la prochaine fois que je vais chez eux.

 

En revanche, y a un port special pour le centre de paquets ? Car je suis obliger de déconnecter openvpn pour utiliser le centre.

Lien vers le commentaire
Partager sur d’autres sites

A mon avis c'est un problème de DNS.

Essayez de le changer pour faire un test.

Panneau de Configuration => Réseau 

Mettez le dns de google (8.8.8.8) en serveur préféré.

 

Sinon pour ma part je suis passé sur openvpn community , j'ai mis en place les ip fixes et ça roule nickel.

Il y a juste le port forwarding que je n'arrive pas a faire.

J'ai essayé avec iptables mais ça n'a pas fonctionné , je pense que j'ai du rater quelques chose.

Je vais faire un peu plus de recherche là dessus.

Lien vers le commentaire
Partager sur d’autres sites

Le 21/09/2019 à 16:23, El_Murphy a dit :

Du coup j'ai config nginx en reverse (n'y connaissant rien) , j'ai mis mes certificats dans un dossier et j'ai fais des tests avec différent blocks que j'ai trouvé par ci par là sur le net jusqu'a ce que ça fonctionne.

A oui effectivement, dans mon tutoriel tu verras que l’on passe par un programme pour gérer cela facilement avec un wildcard, car faut pas oublié que letsencrypte publie la liste des certificats générés et on a pas envie que les méchants connaissent nos sous domaines.

Le 25/09/2019 à 12:00, Hurlelune a dit :

Bonne idée le DNS mais non.

Lorsque j'ouvre le centre de paquet, ça mouline et fini par me dire : "La connexion a echouée. Verifiez votre reseau et les parametres de l'heure

Dans vpn setting il y a deux options à modifier, pour ne pas modifier les dns du client et pour ne pas faire passé tous le traffic à travers le vpn.

Sur le nas dans la configuration du vpn on ne coche pas utilisé la passerelle distante, juste la reconnection automatique et on désactive les passerelles multiples.

Lien vers le commentaire
Partager sur d’autres sites

Ah mince je ne savais pas qu'il y avait un programme pour les redirections nginx , je les ai fais a la main >_<' .

Mes blocks ressemble a ça :

 

server {
        listen 80;
        server_name www.domain1.fr;
        return 301 https://$host$request_uri;
}

server {
        listen 443;
	server_name www.domain1.fr;
	ssl_certificate /etc/nginx/ssl/domain1.crt;
	ssl_certificate_key /etc/nginx/ssl/domain1.key;
        ssl on;
        
        location / {
                proxy_pass https://10.8.0.20:443/;
        }
}

Mes certificats sont des let's encrypt wildcard , je les avait fait sur: https://www.sslforfree.com/  (merci InfoYANN au passage).

Sinon pour Iptable c'est résolus , le problème était simple , je ne savais pas m'en servir 😭 .

Après un peu de lecture j'en suis arrivé a faire ça , et ça fonctionne très bien. (exemple pour drive)

 

iptables -t nat -A PREROUTING -d IP-VPS-OVH -p tcp --dport 6690 -j DNAT --to-dest 10.8.0.30:6690

iptables -I FORWARD 1 -d 10.8.0.30 -p tcp --dport 6690 -j ACCEPT

iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.8.0.30 -p tcp --dport 6690 -j SNAT --to-source 10.8.0.1

 

Il ne reste que 2 "soucis" :

L'adresse ip d'un utilisateur qui passe par le vps=>nginx proxy=>vpn =>nas s'affichera en 10.8.0.1 sur le NAS et non son ip publique , après un peu de lecture il semblerait que ce soit le boulot de X-Forwarded , je vais voir comment il fonctionne.

Et DS Cam n'arrive pas a voir le flux vidéo de mes caméras en passant par le vps.Je n'ai pas encore cherché comment réssoudre ça , j'ai un doute sur la redirection http=>https.

 

Edit : Problème DS Cam résolus en rajoutant les lignes header "web-sockets" dans mon block :

server {
        listen 443;
	server_name cam.domain1.fr;
	ssl_certificate /etc/nginx/domain1.crt;
	ssl_certificate_key /etc/nginx/domain1.key;
        ssl on;        
        
        location / {
                proxy_pass https://10.8.0.10:9901/;                
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";               
        }
}

 

Modifié par El_Murphy
Lien vers le commentaire
Partager sur d’autres sites

Il y a 21 heures, El_Murphy a dit :

Ah mince je ne savais pas qu'il y avait un programme pour les redirections nginx , je les ai fais a la main >_<' .

L'adresse ip d'un utilisateur qui passe par le vps=>nginx proxy=>vpn =>nas s'affichera en 10.8.0.1 sur le NAS et non son ip publique , après un peu de lecture il semblerait que ce soit le boulot de X-Forwarded , je vais voir comment il fonctionne.

 

Tu es trop impatient, je m’occupes du tutoriel la semaine prochaine, il en manque dans ton Nginx et tu t’en renderas vite compte, ton site doit avoir un score très bas sur la sécurisation des échanges ssl, moi j’ai bien les IP réelle qui s’affiche 😜

Maintenant moi je n’ouvre plus aucun port direct, c’est ouvrir les vannes en live sur le nas et je peux te dire que les tentatives d’attaques sont hallucinante par leurs nombres sur le port 443, d’ailleurs tu passes par iptables alors que cela ce fait directement dans openvpn.

Prépare toi, car sa va être cossue à digérer 😁

Lien vers le commentaire
Partager sur d’autres sites

Effectivement je préfère prendre de l'avance même si je dois mettre les mains dans le cambouis et faire des bétises ^^.

De cette façons je serais moins "perdus" quand je devrais le refaire façons tuto ^^.

Hmmm pour le test ssl je n'y avais même pas pensé , alors que je le faisais pour tester mon serveur mail.

Je viens d'en faire un par curiosité :

www_ssl.thumb.jpg.d1fc9243eba63cb472e02887817696cf.jpg

 

Edit: j'ai inclus le bundle dans mon certificat avec la commande cat

www_ssl2.thumb.jpg.0126dc1d97437eee88aaab32a7fc9d0e.jpg

 

Pour l'ouverture des ports je te rejoins la dessus , rien que le log de mon server mail me fait flipper (DKIM , SPF , Contenus Malveillant...etc).

Pour le port-forwarding  , je n'ai pas trouvé de solutions simple et efficace a part Iptables.

La version AS de Openvpn est effectivement capable de le faire avec l'option DMZ , mais pour la version opensource c'est un peu plus compliquer.

Et j'utilise la version opensource car je m'occupe de 3 NAS (signature) + 1 autres DS918+ qui est a un pote.

Je vais encore lire/chercher et peaufiner ça.

 

 

Modifié par El_Murphy
jpeg
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Salut, sur  mes vps debian, cela me facilite bien la vie, accès en proxy socks5 via un tunnel ssh.

en résumé, tout le trafic est encapsulé via ssh, HTTP, DNS, SFTP, LOG qui est d'ailleurs dans bien des cas, le seul port a ouvrir, pas d'accès par identification, seulement des keys client/srv.

webmin en mode minimal (léger) avec trois   modules: me servent de base pour mes tests de configuration avant produc

  • ConfigServer Security & Firewall (csf/lfd) (vient de Cpanel, j'en ai fais mon firewall de base depuis 8 ans) sinon pfsence ou untangle en kvm.
  • File manager
  • openvpn ou unbound, ou bind9, etc...

J’espère ne pas interférer, juste apporter ma petite pierre en gestion vps, on attends tous la suite 🤣

 

 

 

 

Modifié par MS_Totor
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.