informatique:hardware:synology_ds415plus
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:hardware:synology_ds415plus [2015/01/15 13:23] – correction desc processeur pteu | informatique:hardware:synology_ds415plus [2024/03/22 11:05] (current) – [Sécurisation du NAS] pteu | ||
---|---|---|---|
Line 18: | Line 18: | ||
< | < | ||
CPU : Atom Quad-Core C2538(4C/ | CPU : Atom Quad-Core C2538(4C/ | ||
- | Mémoire : 2 GB DDR3 (non-extensible) | + | Mémoire : 2 GB DDR3 (extensible |
Emplacements : 4x baies 3.5" hot-swappable ; max 24 TB (4 disques de 6 TB, connexion interne SATA II), tiroirs screwless (sans vis) | Emplacements : 4x baies 3.5" hot-swappable ; max 24 TB (4 disques de 6 TB, connexion interne SATA II), tiroirs screwless (sans vis) | ||
Line 58: | Line 58: | ||
< | < | ||
- | + excellentes performances, | + | + excellentes performances |
+ petite taille (mais costaud.. ) | + petite taille (mais costaud.. ) | ||
+ bon rapport qualité/ | + bon rapport qualité/ | ||
Line 64: | Line 64: | ||
+ l'OS DSM bien fini et extensible via les extensions | + l'OS DSM bien fini et extensible via les extensions | ||
- | - pas de virtualisation possible, alors que d' | + | - il arrive |
- | - les disques | + | - performances multi-tâches limitées |
</ | </ | ||
+ | =====Sécurisation du NAS===== | ||
+ | |||
+ | Cette partie traite de la sécurisation (hardening) d'un NAS Synology. Parce qu'il arrive qu'il contienne des données sensibles et qu'il soit connecté à Internet, il faut prendre quelques précautions. | ||
+ | |||
+ | Sources: | ||
+ | * [[https:// | ||
+ | |||
+ | ====système==== | ||
+ | |||
+ | * activer la détection des nouvelles mises à jour de DSM : '' | ||
+ | * les installer en urgence s'il corrige une faille critique | ||
+ | * sinon attendre quelques jours pour laisser les autres utilisateurs essuyer les éventuels plâtres à votre place (oui ça arrive qu'un patch casse tout !) | ||
+ | |||
+ | ====réseau==== | ||
+ | |||
+ | * si votre NAS est derrière une box ou un réseau NATté, **ne rediriger que les ports utiles** sur votre routeur/box (par ex. que le port HTTPS) | ||
+ | * **désactiver l' | ||
+ | * **changer le port d' | ||
+ | * installer un certificat SSL/TLS authentifié par une autorité de certification sûre | ||
+ | * activer le firewall intégré et ajouter les règles limitant les accès des IPs non-LAN | ||
+ | * MEP de la géolocalisation (l' | ||
+ | * sauvegarder la configuration du NAS régulièrement : '' | ||
+ | * **activer l'IP Auto Block** qui bloque les IPs qui ont trop d' | ||
+ | * **activer le NTP** (actif par défaut dans DSM 5.0) | ||
+ | |||
+ | ====utilisateur==== | ||
+ | |||
+ | * on ne peut pas supprimer le compte de l' | ||
+ | * créer un **nouveau compte avec les droits d' | ||
+ | * mettre un mot de passe fort puis **désactiver le compte utilisateur " | ||
+ | * n' | ||
+ | * mettre en place une **stratégie de mot de passe forte** (taille du mot de passe > 8 caractères, | ||
+ | * //utiliser une double authentification// | ||
+ | |||
+ | ====alertes==== | ||
+ | |||
+ | * configurer les notifications par mail | ||
+ | |||
+ | =====MIBs/ | ||
+ | |||
+ | Voici un aide-mémoire des OIDs intéressants à pooler en SNMP pour métrologiser le NAS. | ||
+ | < | ||
+ | |||
+ | // synoSystem | ||
+ | systemStatus .1.3.6.1.4.1.6574.1.1.0 = INTEGER: 1 | ||
+ | -> Normal(1), Failed(2) | ||
+ | systemTemperature .1.3.6.1.4.1.6574.1.2.0 = INTEGER: 32 | ||
+ | powerStatus .1.3.6.1.4.1.6574.1.3.0 = INTEGER: 1 | ||
+ | systemFanStatus .1.3.6.1.4.1.6574.1.4.1.0 = INTEGER: 1 | ||
+ | cpuFanStatus .1.3.6.1.4.1.6574.1.4.2.0 = INTEGER: 1 | ||
+ | modelName .1.3.6.1.4.1.6574.1.5.1.0 = STRING: " | ||
+ | serialNumber .1.3.6.1.4.1.6574.1.5.2.0 = STRING: " | ||
+ | version .1.3.6.1.4.1.6574.1.5.3.0 = STRING: "DSM 5.1-5022" | ||
+ | upgradeAvailable .1.3.6.1.4.1.6574.1.5.4.0 = INTEGER: 2 | ||
+ | -> Available(1), | ||
+ | |||
+ | // synoDisk | ||
+ | diskIndex .1.3.6.1.4.1.6574.2.1.1.2.0 = STRING: "Disk 1" | ||
+ | diskID ? | ||
+ | diskModel .1.3.6.1.4.1.6574.2.1.1.3.0 = STRING: " | ||
+ | diskType .1.3.6.1.4.1.6574.2.1.1.4.0 = STRING: " | ||
+ | diskStatus .1.3.6.1.4.1.6574.2.1.1.5.0 = INTEGER: 1 | ||
+ | -> Normal(1), Initialized(2), | ||
+ | diskTemperature .1.3.6.1.4.1.6574.2.1.1.6.0 = INTEGER: 29 | ||
+ | |||
+ | // synoRaid | ||
+ | raidIndex ? | ||
+ | raidName .1.3.6.1.4.1.6574.3.1.1.2.0 = STRING: " | ||
+ | raidStatus .1.3.6.1.4.1.6574.3.1.1.3.0 = INTEGER: 1 | ||
+ | -> Normal(1), Repairing(2), | ||
+ | RaidParityChecking(8), | ||
+ | |||
+ | // synoUPS : .1.3.6.1.4.1.6574.4 | ||
+ | pas intéressant | ||
+ | |||
+ | // autres OIDs | ||
+ | Load | ||
+ | .1.3.6.1.4.1.2021.10.1.2.1 = STRING: " | ||
+ | .1.3.6.1.4.1.2021.10.1.2.2 = STRING: " | ||
+ | .1.3.6.1.4.1.2021.10.1.2.3 = STRING: " | ||
+ | .1.3.6.1.4.1.2021.10.1.3.1 = STRING: " | ||
+ | .1.3.6.1.4.1.2021.10.1.3.2 = STRING: " | ||
+ | .1.3.6.1.4.1.2021.10.1.3.3 = STRING: " | ||
+ | Usage CPU | ||
+ | User .1.3.6.1.4.1.2021.11.9.0 = INTEGER: 1 | ||
+ | System .1.3.6.1.4.1.2021.11.10.0 = INTEGER: 0 | ||
+ | Idle .1.3.6.1.4.1.2021.11.11.0 = INTEGER: 98 | ||
+ | Mémoire | ||
+ | memTotalSwap .1.3.6.1.4.1.2021.4.3.0 = INTEGER: 3317676 | ||
+ | memAvailSwap .1.3.6.1.4.1.2021.4.4.0 = INTEGER: 3311992 | ||
+ | memTotalReal .1.3.6.1.4.1.2021.4.5.0 = INTEGER: 2035652 | ||
+ | memAvailReal .1.3.6.1.4.1.2021.4.6.0 = INTEGER: 114792 | ||
+ | memTotalFree .1.3.6.1.4.1.2021.4.11.0 = INTEGER: 3426784 | ||
+ | ? | ||
+ | memShared .1.3.6.1.4.1.2021.4.13.0 = INTEGER: 0 | ||
+ | memBuffer .1.3.6.1.4.1.2021.4.14.0 = INTEGER: 37300 | ||
+ | memCached .1.3.6.1.4.1.2021.4.15.0 = INTEGER: 1585848 | ||
+ | Reseau | ||
+ | ifName .1.3.6.1.2.1.31.1.1.1.1 | ||
+ | ifHCInOctets .1.3.6.1.2.1.31.1.1.1.6 | ||
+ | ifHCOutOctets .1.3.6.1.2.1.31.1.1.1.10 | ||
+ | </ | ||
+ | |||
+ | src: [[http:// | ||
+ | |||
+ | =====Logiciels===== | ||
+ | |||
+ | Pour ajouter des fonctionnalités supplémentaires sur le NAS, on peut installer des logiciels. Comme sur les distribs Linux, on les installe depuis des dépôts, que l'on peut personnaliser dans l' | ||
+ | * **SynoCommunity** (Location=http:// | ||
+ | * **cphub** (Location=https:// | ||
+ | |||
+ | ====synogear==== | ||
+ | Certains outils de base des distributions Linux sont installables en CLI avec la commande '' | ||
+ | <code bash> | ||
+ | # installation, | ||
+ | synogear install | ||
+ | | ||
+ | |||
+ | # lister les composants installés | ||
+ | synogear list | ||
+ | </ | ||
+ | |||
+ | On retrouvera par exemple iperf, dig, iostat, tcpdump, tracepath, tmux etc... | ||
+ | |||
+ | ====Tiny Tiny RSS==== | ||
+ | |||
+ | C'est un client RSS ; il dépend du paquet MariaDB (dont le mdp root est vide par défaut). | ||
+ | |||
+ | ===MySQL root password=== | ||
+ | |||
+ | Depuis la version DSM 6, TT RSS ne se lance plus (avec l' | ||
+ | <code bash> | ||
+ | sudo mkdir -p / | ||
+ | sudo ln -s / | ||
+ | </ | ||
+ | |||
+ | ===Flux non MAJ=== | ||
+ | |||
+ | Toujours en DSM 6, les flux ne se mettent pas à jour. En remplaçant le chemin vers l' | ||
+ | <code php> | ||
+ | vi / | ||
+ | |||
+ | // | ||
+ | define(' | ||
+ | </ | ||
+ | |||
+ | Puis redémarrer le paquet tt-rss via l' | ||
+ | |||
+ | ====Audio Station==== | ||
+ | |||
+ | [[https:// | ||
+ | * dans le Panneau de configuration, | ||
+ | * cliquer sur " | ||
+ | * valider puis cliquer sur " | ||
+ | |||
+ | Pour qu'un utilisateur puisse utiliser Audio Station, aller dans le Panneau de configuration/ | ||
+ | |||
+ | ====Jellyfin==== | ||
+ | Logiciel de catalogue et lecteur multimédia en mode web. Dockerisable, | ||
+ | |||
+ | Avec DSM 7 il faut octroyer les droits d' | ||
+ | {{ : | ||
+ | |||
+ | =====Virtualisation===== | ||
+ | |||
+ | A l' | ||
+ | |||
+ | En pratique on peut quand même tester le **Virtual Machine Manager** fraîchement pondu par Synology, moyennant : | ||
+ | * d' | ||
+ | * d' | ||
+ | * d' | ||
+ | |||
+ | ====Upgrade de la RAM==== | ||
+ | |||
+ | De base le boitier dispose de 2 Go de mémoire vive, ce qui est suffisant pour la grande majorité des utilisations. Cependant si l'on souhaite goûter à la joie de la virtualisation, | ||
+ | |||
+ | L' | ||
+ | |||
+ | FIXME insérer des images ici | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | Une fois la mémoire ajoutée, on pourra vérifier sa bonne prise en compte dans le Centre d'info : | ||
+ | {{ : | ||
+ | |||
+ | ====Virtual Machine Manager==== | ||
+ | |||
+ | Normalement comme tous les paquets en bêta, [[https:// | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Le paquet est ensuite disponible dans le menu principal : | ||
+ | {{ : | ||
+ | |||
+ | |||
+ | =====Docker===== | ||
+ | |||
+ | Pour installer Docker, aller dans Centre de paquets > Docker > Installer | ||
+ | |||
+ | {{ : | ||
+ | ====Installer pihole==== | ||
+ | |||
+ | Une fois Docker, installer, le lancer ; | ||
+ | * dans **Registre** on peut rechercher une image sur le dockerhub ; rechercher " | ||
+ | * une fois l' | ||
+ | |||
+ | Pour la configuration, | ||
+ | * donner un nom au conteneur, par ex " | ||
+ | * cliquer sur paramètres avancés | ||
+ | * dans **Volume**, on va partager des répertoires du Syno avec le conteneur, afin d' | ||
+ | <code bash> | ||
+ | # | ||
+ | docker/ | ||
+ | docker/ | ||
+ | </ | ||
+ | * dans l' | ||
+ | * dans l' | ||
+ | <code bash> | ||
+ | # mot de passe de l' | ||
+ | WEBPASSWORD=MDP4cc3sInterfaceWeb | ||
+ | |||
+ | # Spécifie au pihole de répondre à tous les clients qui lui demande | ||
+ | # Si on n'est pas sûr de ce que l'on veut faire, il vaut mieux préciser " | ||
+ | # que " | ||
+ | DNSMASQ_LISTENING=all | ||
+ | |||
+ | # port d' | ||
+ | WEB_PORT=8080 | ||
+ | |||
+ | # bind le serveur web sur toutes les adresses locales du NAS | ||
+ | # | ||
+ | |||
+ | |||
+ | # si vous avez configuré un DNS pour votre Syno, vous pouvez le préciser ici | ||
+ | VIRTUAL_HOST=pihole.local.perso | ||
+ | |||
+ | # dans mon cas j'ai déjà un résolveur DNS, donc je le spécifie ici. Sinon, ne pas ajouter cette ligne | ||
+ | PIHOLE_DNS_=192.168.1.65 | ||
+ | # on peut préciser plusieurs forwarders séparés par un ";", | ||
+ | PIHOLE_DNS_=192.168.1.65# | ||
+ | </ | ||
+ | |||
+ | On clique sur **Action > Démarrer** et c'est parti, on peut logiquement accéder à l' | ||
+ | |||
+ | A noter que si on choisit de changer des variables d' | ||
+ | <code bash> | ||
+ | ::: Testing lighttpd config: Error: duplicate array-key: VIRTUAL_HOST. Please get rid of the duplicate entry. | ||
+ | </ | ||
+ | Pour contourner cela, sélectionner le conteneur puis : " | ||
+ | |||
+ | ===Mise à jour du conteneur=== | ||
+ | |||
+ | Globalement la procédure consiste à arrêter le conteneur, le supprimer, supprimer l' | ||
+ | Pour automatiser la re-création du conteneur, on peut créer le user-script suivant dans le planificateur de tâche du syno (à lancer en root, et en désactivant la répétition pour ne le lancer que manuellement) : | ||
+ | <code bash> | ||
+ | docker run -d --name=pihole-new \ | ||
+ | -e WEB_PORT=3443 \ | ||
+ | -e WEBPASSWORD=MDP4cc3sInterfaceWeb \ | ||
+ | -e DNSMASQ_LISTENING=local \ | ||
+ | -e VIRTUAL_HOST=pihole.local.perso \ | ||
+ | -e PIHOLE_DNS_=127.0.0.1# | ||
+ | -e TZ=FR \ | ||
+ | -v docker/ | ||
+ | -v docker/ | ||
+ | --net=host \ | ||
+ | --restart=unless-stopped \ | ||
+ | pihole/ | ||
+ | </ | ||
+ | |||
+ | Ressources : | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | ====Docs docker==== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | =====Hyperbackup===== | ||
+ | |||
+ | Mise en place d'une sauvegarde Hyperbackup sur un NAS Synology vers un serveur rsync " | ||
+ | |||
+ | Sur le serveur OMV distant : | ||
+ | * créer un nouveau partage " | ||
+ | * activer le SSHd et créer un utilisateur " | ||
+ | * activer le service rsyncd : dans Services> | ||
+ | * onglet Server : " | ||
+ | * créer un nouveau Module, déclarer le dossier partagé, activer " | ||
+ | |||
+ | Sur le NAS Syno source, installer puis lancer "Hyper Backup" | ||
+ | * type : serveur compatible rsync | ||
+ | * chiffrement activé | ||
+ | * saisir l'IP distante, l' | ||
+ | * choisir le répertoire à sauvegarder | ||
+ | |||
+ | Lancer la sauvegarde. Les fichiers **rsyncd.conf** et **rsyncd.secrets** seront créés dans le dossier distant. | ||
=====Tips===== | =====Tips===== | ||
+ | ====Installer les plugins OMV-extra==== | ||
+ | |||
+ | Vu ici : https:// | ||
+ | <code bash> | ||
+ | wget -O - https:// | ||
+ | </ | ||
====Connexion SSH==== | ====Connexion SSH==== | ||
- | Pour se connecter en SSH au NAS, il faut activer le service dans le Panneau de configuration > System : Terminal & SNMP. | + | |
- | Puis on s' | + | Pour se connecter en SSH au NAS, il faut activer le service dans le Panneau de configuration > System : Terminal & SNMP. Puis on s' |
+ | |||
+ | <WRAP center round important 80%> | ||
+ | NB : Depuis DSM 6, on ne peut plus se connecter avec le login root, il faut se connecter avec un compte utilisateur ayant les droits d' | ||
+ | </ | ||
+ | |||
+ | ====Certificat SSL/TLS let's encrypt==== | ||
+ | |||
+ | Pour renouveler son certificat [[https:// | ||
+ | * ouvrir le port public tcp/80 vers le port tcp/80 syno | ||
+ | * se logguer en SSH avec un compte admin au syno, puis : '' | ||
+ | <code bash> | ||
+ | sudo / | ||
+ | |||
+ | DEBUG: Issuer name of certificate. [Let'' | ||
+ | DEBUG: Issuer name of certificate. [Synology Inc.]-> | ||
+ | DEBUG: certificate is not issued by Let'' | ||
+ | DEBUG: start to renew [/ | ||
+ | DEBUG: setup acme url https:// | ||
+ | DEBUG: GET Request: https:// | ||
+ | DEBUG: GET Request: https:// | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: Failed to port map router detect. [1] | ||
+ | DEBUG: failed to open port 80. | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: dns-01 is not support for toto.fr | ||
+ | DEBUG: Setup challenge for toto.fr with type http-01 | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: ==> start new-cert. | ||
+ | DEBUG: generate csr & private key | ||
+ | DEBUG: get new-cert | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: Post JWS Request: https:// | ||
+ | DEBUG: Post Request: https:// | ||
+ | DEBUG: get issuer-cert | ||
+ | DEBUG: save to files | ||
+ | DEBUG: renew success. [/ | ||
+ | </ | ||
+ | (PS : le '' | ||
+ | |||
+ | Et si KO : penser à ouvrir bien grand (permit any any) le firewall Syno, cf anecdote qui suit. | ||
+ | |||
+ | ====Erreur syno-letsencrypt==== | ||
+ | |||
+ | <WRAP center round tip 80%> | ||
+ | TL;DR : Le problème vient d'un filtrage géographique dans le firewall du Syno. Malgré que celui-ci soit désactivé, | ||
+ | </ | ||
+ | |||
+ | Je suis récemment tombé sur un os lors du renouvellement de mon certificat letsencrypt : alors que la redirection tcp/80 était bien en place sur mon routeur, le script se vautre en renvoyant l' | ||
+ | <code bash> | ||
+ | sudo / | ||
+ | [..] | ||
+ | DEBUG: DNS challenge failed, reason: {" | ||
+ | DEBUG: Normal challenge failed, reason: {" | ||
+ | </ | ||
+ | |||
+ | Sympa l' | ||
+ | |||
+ | On passe en mode Columbo : on désactive le firewall du Syno et on relance le script avec l' | ||
+ | <code bash> | ||
+ | # morceaux choisis du debug : | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | lD20Th6mHJzDNhBDkURHo1ZFBHxh5F-A-0: | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ce challenge permet de valider que : | ||
+ | * c'est bien vous qui avez initié la demande de renouvellement | ||
+ | * c'est bien vous le propriétaire du domaine | ||
+ | |||
+ | Ce fichier est mis à disposition en HTTP par le serveur nginx du Syno : | ||
+ | <code bash> | ||
+ | grep -Ri -A3 " | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | C'est bourrin mais ça paie : le dossier est bien configuré dans nginx, et il est situé "en vrai" dans **/ | ||
+ | |||
+ | Le dossier existe bel et bien et dispose des bons droits, mais en fouinant dans les logs d' | ||
+ | <code bash> | ||
+ | 2018/11/02 15:35:20 [error] 6972#6972: *51124 access forbidden by rule, client: 64.78.149.164, | ||
+ | "GET / | ||
+ | </ | ||
+ | J'aime les erreurs " | ||
+ | |||
+ | Les fichiers de challenge sont temporaires et supprimés à la fin du script ; aussi on va faire le test avec un autre fichier : | ||
+ | <code bash> | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Puis, j' | ||
+ | <code bash> | ||
+ | wget -d http:// | ||
+ | [..] | ||
+ | 2018-11-02 16:21:06 (121 KB/s) — « test » sauvegardé [5/5] | ||
+ | </ | ||
+ | Et là ça passe ! | ||
+ | |||
+ | C'est donc un filtrage en fonction de l'IP source ; n' | ||
+ | <code bash> | ||
+ | / | ||
+ | [..] | ||
+ | DEBUG: renew success. [/ | ||
+ | </ | ||
+ | ... et BIM ça marche ! | ||
+ | |||
+ | Aussi saugrenu que ça paraisse^W soit, chez Synology quand on décoche la case " | ||
+ | |||
+ | Mais ma curiosité s' | ||
+ | |||
+ | |||
+ | ====Erreur find en tâche planifiée==== | ||
+ | |||
+ | Description du problème : un script utilisant l' | ||
+ | > **find: cannot get current directory: Permission denied** | ||
+ | |||
+ | D' | ||
=====Liens===== | =====Liens===== | ||
Line 78: | Line 508: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * Topics utiles sur HFR : | ||
+ | * [[https:// | ||
+ | * [[https:// |
informatique/hardware/synology_ds415plus.1421328219.txt.gz · Last modified: 2015/01/15 13:23 by pteu