PowerDNS est un serveur de noms gratuit et open source faisant autorité. Il est écrit en C++ et fonctionne sur les systèmes d'exploitation Unix, Linux et macOS. Il utilise MySQL, MariaDB, PostgreSQL et Oracle pour stocker les fichiers et les enregistrements de zone.
PowerDNS Admin est un outil Web utilisé pour gérer PowerDNS. Vous pouvez créer et gérer des zones DNS à l'aide du navigateur Web. Il est livré avec un riche ensemble de fonctionnalités. Certains d'entre eux sont répertoriés ci-dessous :
- Prise en charge IPv4 et IPv6
- Page d'état affichant des informations utiles
- Créer/mettre à jour automatiquement les enregistrements PTR inversés
- Prise en charge de la création de domaines en masse
- Compatibilité avec les modèles de domaine
- Assistance DNSSec
- Prise en charge de l'authentification des utilisateurs de base de données locale, SAML, LDAP et Active Directory
Dans ce tutoriel, nous allons vous montrer comment installer PowerDNS et PowerDNS admin sur le serveur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur le serveur.
Installer et configurer le serveur MariaDB
Avant de commencer, vous devrez installer le serveur de base de données MariaDB sur votre système. Par défaut, la dernière version de MariaDB n'est pas disponible dans le référentiel par défaut d'Ubuntu 20.04. Vous devrez donc ajouter le référentiel MariaDB à votre système.
Tout d'abord, installez les packages requis avec la commande suivante :
apt-get install software-properties-common gnupg2 -y
Une fois tous les packages installés, ajoutez la clé de signature MariaDB avec la commande suivante :
apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
Ensuite, ajoutez le référentiel MariaDB avec la commande suivante :
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirrors.ukfast.co.uk/sites/mariadb/repo/10.5/ubuntu focal main'
Ensuite, installez le serveur MariaDB en exécutant la commande suivante :
apt-get install mariadb-server -y
Une fois installé, vous devrez créer une base de données et un utilisateur pour PowerDNS.
Tout d'abord, connectez-vous à MariaDB avec la commande suivante :
mysql
Une fois connecté, créez une base de données et un utilisateur avec la commande suivante :
MariaDB [(none)]> crée des pdns de base de données ;
MariaDB [(none)]> accorde tout sur pdns.* à [email protected] identifié par 'password' ;
Ensuite, videz les privilèges et quittez le shell MariaDB avec la commande suivante :
MariaDB [(none)]> flush privilèges ;
MariaDB [(none)]> exit ;
Installer PowerDNS
Tout d'abord, vous devrez désactiver le service résolu par systemd de votre système. Vous pouvez le désactiver avec la commande suivante :
systemctl disable --now systemd-resolved
Ensuite, supprimez le fichier resolv.conf par défaut et créez un nouveau fichier :
rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8"> /etc/resolv.conf
Ensuite, installez le serveur PowerDNS avec la commande suivante :
apt-get install pdns-server pdns-backend-mysql -y
Une fois le PowerDNS installé, vous pouvez passer à l'étape suivante.
Configurer PowerDNS
Tout d'abord, vous devrez importer le schéma de base de données PowerDNS dans la base de données PowerDNS. Vous pouvez l'importer avec la commande suivante :
mysql -u pdnsadmin -p pdnsEnsuite, vous devrez définir les détails de connexion à la base de données PowerDNS. Vous pouvez le faire en éditant le fichier pdns.local.gmysql.conf :
nano /etc/powerdns/pdns.d/pdns.local.gmysql.confModifiez les lignes suivantes :
# Configuration MySQL## Lancer gmysql backendlaunch+=gmysql# gmysql parametersgmysql-host=127.0.0.1gmysql-port=3306gmysql-dbname=pdnsgmysql-user=pdnsadmingmysql-password=passwordgmysql-dnssec=yes# gmysql-socket=Enregistrez et fermez le fichier puis donnez la permission appropriée au fichier pdns.local.gmysql.conf :
chmod 640 /etc/powerdns/pdns.d/pdns.local.gmysql.confEnsuite, arrêtez le serveur PowerDNS et vérifiez le PowerDNS avec la commande suivante :
systemctl stop pdns
pdns_server --daemon=no --guardian=no --loglevel=9Si tout va bien, vous devriez obtenir le résultat suivant :
Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 gmysql Connexion réussie. Connecté à la base de données 'pdns' sur '127.0.0.1'.Nov 02 10:43:47 Lancement des discussions terminé, prêt à distribuer les questionsEnsuite, démarrez le serveur PowerDNS avec la commande suivante :
systemctl start pdnsÀ ce stade, PowerDNS est démarré et écoute sur le port 53. Vous pouvez le vérifier avec la commande suivante :
ss -alnp4 | grep pdnVous devriez obtenir le résultat suivant :
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* utilisateurs :(("pdns_server",pid=33140,fd=5)) tcp LISTEN 0 128 0.0.0.0:53 0.0.0.0:* utilisateurs :(("pdns_server",pid=33140,fd=7))Installer l'administrateur PowerDNS
Dans cette section, nous allons vous montrer comment installer PowerDNS admin avec Nginx.
Installer les dépendances requises
Tout d'abord, installez toutes les dépendances requises pour l'administration PowerDNS avec la commande suivante :
apt-get install nginx python3-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3- flacon -yUne fois toutes les dépendances installées, ajoutez le dépôt Node.js avec la commande suivante :
curl -sL https://deb.nodesource.com/setup_14.x | bash -Ensuite, installez le Node.js avec la commande suivante :
apt-get install nodejs -yEnsuite, ajoutez le dépôt de fil avec la commande suivante :
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.listEnsuite, mettez à jour le référentiel et installez Yarn avec la commande suivante :
apt-get update -y
apt-get install yarn -yÀ ce stade, toutes les dépendances requises sont installées, vous pouvez maintenant passer à l'étape suivante.
Télécharger l'administrateur PowerDNS
Ensuite, téléchargez la dernière version de PowerDNS admin depuis le référentiel Git vers le répertoire racine Nginx :
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdnsEnsuite, changez le répertoire vers le répertoire téléchargé et créez un environnement virtuel Python avec la commande suivante :
cd /var/www/html/pdns/
virtualenv -p flacon python3Ensuite, activez l'environnement virtuel et installez toutes les dépendances Python avec la commande suivante :
source ./flask/bin/activate
pip install -r requirements.txtEnsuite, désactivez depuis l'environnement virtuel avec la commande suivante :
désactiverDéfinir la connexion à la base de données
Ensuite, vous devrez définir les détails de connexion à la base de données PowerDNS dans le fichier default_config.py :
nano /var/www/html/pdns/powerdnsadmin/default_config.pyModifiez les lignes suivantes :
SALT ='votreclésecrète'SECRET_KEY ='votreclésecrète'BIND_ADDRESS ='0.0.0.0'PORT =9191HSTS_ENABLED =FalseOFFLINE_MODE =FalseSQLA_DB_USER ='pdnsadmin'SQLA_DB_PASSWORD ='password'SQLA_DB_HOST ='127.0.0.1'SQLA_DB_STRACKIFICATION' ='SQLMO_DB_NSIFICATION' ='SQLMO_DB_NSIFICATION VraiEnregistrez et fermez le fichier puis changez le répertoire en pdns et activez l'environnement virtuel :
cd /var/www/html/pdns/
source ./flask/bin/activateEnsuite, mettez à jour la base de données avec la commande suivante :
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask assets buildEnsuite, désactivez l'environnement virtuel avec la commande suivante :
désactiverActiver l'API d'administration PowerDNS
L'administrateur PowerDNS utilise l'API JSON pour lire les statistiques et modifier le contenu de la zone, les métadonnées et le matériel de clé DNSSEC. Vous pouvez l'activer en éditant le fichier pdns.conf :
nano /etc/powerdns/pdns.confModifiez les lignes suivantes :
api=yesapi-key=votreclésecrèteEnregistrez et fermez le fichier puis redémarrez le service PowerDNS pour appliquer les modifications :
systemctl redémarrer pdnsConfigurer Nginx pour l'administrateur PowerDNS
Ensuite, vous devrez configurer l'administrateur Nginx pour PowerDNS. Pour ce faire, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :
nano /etc/nginx/conf.d/pdns-admin.confAjoutez les lignes suivantes :
serveur { écouter *:80; nom_serveur pdnsadmin.exemple.com ; index index.html index.htm index.php; racine /var/www/html/pdns ; access_log /var/log/nginx/pdnsadmin_access.log combiné ; error_log /var/log/nginx/pdnsadmin_error.log ; client_max_body_size 10 m ; client_body_buffer_size 128k ; proxy_redirect désactivé ; proxy_connect_timeout 90 ; proxy_send_timeout 90 ; proxy_read_timeout 90 ; proxy_buffers 32 4k ; proxy_buffer_size 8k ; proxy_set_header Hôte $hôte ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_headers_hash_bucket_size 64 ; emplacement ~ ^/statique/ { inclure /etc/nginx/mime.types ; racine /var/www/html/pdns/powerdnsadmin ; emplacement ~* \.(jpg|jpeg|png|gif)$ { expire 365j ; } emplacement ~* ^.+.(css|js)$ { expire 7j ; } } emplacement / { proxy_pass http://unix:/run/pdnsadmin/socket ; proxy_read_timeout 120 ; proxy_connect_timeout 120 ; proxy_redirect désactivé ; }}Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -tVous devriez obtenir le résultat suivant :
nginx :la syntaxe du fichier de configuration /etc/nginx/nginx.conf est oknginx :le test du fichier de configuration /etc/nginx/nginx.conf est réussiEnsuite, changez la propriété des pdns en www-data :
chown -R www-data:www-data /var/www/html/pdnsEnfin, redémarrez le service Nginx pour appliquer les modifications :
systemctl redémarrer nginxCréer un fichier de service Systemd pour l'administrateur PowerDNS
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service PowerDNS.
Commencez par créer un fichier de service pdns avec la commande suivante :
nano /etc/systemd/system/pdnsadmin.serviceAjoutez les lignes suivantes :
[Unit]Description=PowerDNS-AdminRequires=pdnsadmin.socketAfter=network.target[Service]PIDFile=/run/pdnsadmin/pidUser=pdnsGroup=pdnsWorkingDirectory=/var/www/html/pdnsExecStart=/var/www/html /pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()'ExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/ kill -s TERM $MAINPIDPrivateTmp=true[Install]WantedBy=multi-user.targetEnregistrez et fermez le fichier puis créez un fichier sockt pdnsadmin avec la commande suivante :
nano /etc/systemd/system/pdnsadmin.socketAjoutez les lignes suivantes :
[Unit]Description=PowerDNS-Admin socket[Socket]ListenStream=/run/pdnsadmin/socket[Install]WantedBy=sockets.targetEnregistrez et fermez le fichier puis créez les fichiers et répertoires requis avec la commande suivante :
echo "d /run/pdnsadmin 0755 pdns pdns -">> /etc/tmpfiles.d/pdnsadmin.conf
mkdir /run/pdnsadmin/
chown -R pdns :/run/pdnsadmin /
chown -R pdns :/var/www/html/pdns/powerdnsadmin/Ensuite, rechargez le démon systemd avec la commande suivante :
rechargement du démon systemctlEnsuite, activez le service pdnsadmin pour qu'il démarre au redémarrage du système avec la commande suivante :
systemctl enable --now pdnsadmin.service pdnsadmin.socketEnsuite, vérifiez l'état des deux services à l'aide de la commande suivante :
statut systemctl pdnsadmin.service pdnsadmin.socketVous devriez obtenir le résultat suivant :
? pdnsadmin.service - PowerDNS-Admin chargé :chargé (/etc/systemd/system/pdnsadmin.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le lundi 2020-11-02 10:54:19 UTC ; il y a 5sTriggeredBy : ? pdnsadmin.socket PID principal :38881 (gunicorn) Tâches :2 (limite :2353) Mémoire :62,5 Mo CGroup :/system.slice/pdnsadmin.service ??38881 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa> ??38898 /var/www/html/pdns/flask/bin/python / var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsa>Nov 02 10:54:19 pdnsadmin.example.com systemd[1] :Démarré PowerDNS-Admin.Nov 02 10:54:19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Démarrage de gunicorn 20.0.4Nov 02 10:54 :19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Écoute sur :unix :/run/pdnsadmin/socket (38881)Nov 02 10 :54:19 pdnsadmin.example.com gunicorn[38881] :[2020-11-02 10:54:19 +0000] [38881] [INFO] Utilisation de worker :syncNov 02 10:54:19 pdnsadmin.example.com gunicorn[ 38898] :[2020-11-02 10:54:19 +0000] [38898] [INFO] Démarrage du travailleur avec pid :38898 ? pdnsadmin.socket - Socket PowerDNS-Admin Chargé :chargé (/etc/systemd/system/pdnsadmin.socket; activé; préréglage fournisseur :activé) Actif :actif (en cours d'exécution) depuis le lundi 2020-11-02 10:54:19 UTC; il y a 5s Déclencheurs :? pdnsadmin.service Écoute :/run/pdnsadmin/socket (Stream) CGroup :/system.slice/pdnsadmin.socketNov 02 10:54:19 pdnsadmin.example.com systemd[1] :écoute sur le socket PowerDNS-Admin.Accéder à l'interface utilisateur Web d'administration de PowerDNS
Maintenant, ouvrez votre navigateur Web et accédez à l'interface Web d'administration de PowerDNS à l'aide de l'URL http://pdnsadmin.example.com . Vous serez redirigé vers la page suivante :
Cliquez sur Créer un compte bouton. Vous devriez voir l'écran suivant :
Fournissez vos informations d'utilisateur administrateur et cliquez sur S'inscrire bouton pour créer un compte. Vous devriez voir la page de connexion de l'administrateur PowerDNS dans l'écran suivant :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur, puis cliquez sur Connexion bouton. Vous devriez voir l'interface Web d'administration de PowerDNS sur la page suivante :
Ici, fournissez l'URL de l'API PowerDNS pour vous connecter à PowerDNS et la gérer. Cliquez ensuite sur Mettre à jour bouton pour enregistrer les modifications. Vous devriez voir la page suivante :
Cliquez sur le tableau de bord bouton. Vous devriez voir le tableau de bord d'administration de PowerDNS dans l'écran suivant :
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès PowerDNS et PowerDNS admin sur le serveur Ubuntu 20.04. Vous pouvez désormais créer des zones et ajouter des enregistrements via l'interface Web d'administration de PowerDNS.