Instal dan Atur Admin PowerDNS dengan Mudah di Ubuntu 20.04

Dalam tutorial ini, Anda akan belajar cara menginstal dan mengatur PowerDNS Admin dengan mudah di Ubuntu 20.04. PowerDNS Admin adalah interface administratif web untuk PowerDNS. Ini memungkinkan Anda untuk dengan mudah membuat dan mengelola zona DNS dari browser web. Admin PowerDNS menyediakan fitur lanjutan untuk mengelola PowerDNS. Ini termasuk;

  • Beberapa manajemen domain
  • Template domain
  • Manajemen user
  • Manajemen akses user berdasarkan domain
  • Pencatatan aktivitas user
  • Mendukung otentikasi user DB / SAML / LDAP / Direktori Aktif Lokal
  • Mendukung Google / Github / Azure / OpenID OAuth
  • Mendukung otentikasi dua faktor (TOTP)
  • Statistik service dasbor dan pdns
  • Dukungan protokol DynDNS 2
  • Edit PTR IPv6 menggunakan alamat IPv6 secara langsung (tidak ada lagi pengeditan alamat literal!)
  • API terbatas untuk memanipulasi zona dan catatan

Instal dan Atur Admin PowerDNS dengan Mudah di Ubuntu 20.04

Instal dan Atur PowerDNS di Ubuntu 20.04

Untuk menginstal dan mengatur Admin PowerDNS dengan mudah di Ubuntu 20.04, Anda harus sudah menginstal dan mengatur server nama PowerDNS menggunakan beberapa database relasional.

Dalam panduan kami sebelumnya, kami membahas cara mengkonfigurasi server nama PowerDNS dengan MariaDB di Ubuntu 20.04. Ikuti tautan di bawah ini untuk mengaturnya.

Instal dan Atur PowerDNS dengan Mudah di Ubuntu 20.04

CATATAN: Kami menginstal PowerDNS Admin di server yang sama dengan PowerDNS yang sudah diinstal.

Instal Ketergantungan Paket yang Diperlukan

Instal pustaka Python 3 dan alat pengembangan

apt install python3-dev

Instal berbagai alat build dan dependensi paket yang diperlukan.

apt install 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-flask -y

Instal NodeJS

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt install -y nodejs

Pasang Benang

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt update apt install yarn

Instal Server HTTP Nginx

apt install nginx

Klon Kode Sumber Admin PowerDNS ke Direktori Root Web

Mengkloning kode sumber git Admin PowerDNS ke direktori root web Nginx Anda. Dalam pengaturan ini, kami menggunakan, /var/www/html/pdns, sebagai direktori root web Admin PowerDNS kami. Ini bisa berbeda untuk kasus Anda.

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdns

Buat Virtualenv Admin PowerDNS

Arahkan ke direktori root web Admin PowerDNS dan buat virtualenv.

cd /var/www/html/pdns/
virtualenv -p python3 flask

Selanjutnya, aktifkan lingkungan Virtual Python 3 Anda dan instal pustaka Python 3 yang diperlukan

source./flask/bin/activate
pip install -r requirements.txt

Konfigurasikan Koneksi Database Admin PowerDNS

Keluar dari virtualenv dan edit file konfigurasi admin PowerDNS default, $WEB_ROOT/powerdnsadmin/default_config.py, untuk menentukan detail koneksi database. Ganti $WEB_ROOT dengan path ke direktori root web Anda.

deactivate
vim /var/www/html/pdns/powerdnsadmin/default_config.py

Pada konfigurasi Aplikasi dasar, Anda dapat mengganti kunci SALT dan SECRET_KEY, mengatur alamat dan port pengikatan;

### BASIC APP CONFIG SALT = 'xohDoozee8Zuneekooch9ohrieghei' SECRET_KEY = 'hohru1aethaeyahpheH7Gaathaikah' BIND_ADDRESS = '192.168.57.3' PORT = 9191 HSTS_ENABLED = False OFFLINE_MODE = False

Pada konfigurasi database, konfigurasikan detail koneksi database PowerDNS Anda. Perhatikan bahwa kami menggunakan detail yang sudah dibuat saat menyiapkan PowerDNS seperti yang ditentukan dalam panduan kami.

 ### DATABASE CONFIG SQLA_DB_USER = 'pdnsadmin' SQLA_DB_PASSWORD = 'PdnSPassW0rd' SQLA_DB_HOST = '127.0.0.1' SQLA_DB_NAME = 'kifarunixdemopdns' SQLALCHEMY_TRACK_MODIFICATIONS = True

Simpan dan keluar dari konfigurasi.

Selanjutnya, aktifkan kembali virtualenv menjalankan migrasi DB;

cd /var/www/html/pdns/
source./flask/bin/activate
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade

Setelah perintah di atas selesai, buat file aset dengan benang;

yarn install --pure-lockfile flask assets build

Menjalankan Admin PowerDNS

Admin PowerDNS sekarang sudah siap dan siap. Itu dapat dijalankan dalam mode mandiri, dengan menjalankan run.pydi direktori root web.

Dalam pengaturan ini, kita akan menggunakan server web Nginx untuk mengakses Admin PowerDNS.

Aktifkan akses API PowerDNS

“ Server Resmi PowerDNS memiliki server web built-in yang mengekspos JSON/REST API. API ini memungkinkan untuk mengontrol beberapa fungsi, membaca statistik dan memodifikasi konten zona, metadata, dan materi kunci DNSSEC “.

Buka file konfigurasi PowerDNS dan aktifkan API dan atur Kunci API;

vim /etc/powerdns/pdns.conf
################################# # api Enable/disable the REST API (including HTTP listener) # # api=no api=yes ################################# # api-key Static pre-shared authentication key for access to the REST API # # api-key= api-key=ahqu4eiv2vaideep8AQu9nav5Aing0

Simpan dan keluar dari file dan mulai ulang PowerDNS;

systemctl restart pdns

Buat Situs Nginx Admin PowerDNS

Buat situs PowerDNS Admin Nginx dengan isi di bawah ini. Ganti direktori root web yang sesuai.

vim /etc/nginx/conf.d/pdns-admin.conf
server { listen	*:80; server_name pdnsadmin.kifarunix-demo.com; index index.html index.htm index.php; root /var/www/html/pdns; access_log /var/log/nginx/pdnsadmin_access.log combined; error_log /var/log/nginx/pdnsadmin_error.log; client_max_body_size 10m; client_body_buffer_size 128k; proxy_redirect off; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffers 32 4k; proxy_buffer_size 8k; proxy_set_header Host $host; 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; location ~ ^/static/ { include /etc/nginx/mime.types; root /var/www/html/pdns/powerdnsadmin; location ~*.(jpg|jpeg|png|gif)$ { expires 365d; } location ~* ^.+.(css|js)$ { expires 7d; } } location / { proxy_pass http://unix:/run/pdnsadmin/socket; proxy_read_timeout 120; proxy_connect_timeout 120; proxy_redirect off; } }

Simpan dan keluar dari file.

Hapus situs default Nginx dan jalankan pemeriksaan sintaks konfigurasi.

mv /etc/nginx/sites-enabled/default{,.old}
nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf tes
t is successful
chown -R www-data: /var/www/html/pdns

Mulai ulang Nginx;

systemctl restart nginx

Buat Unit Layanan Sistem Admin PowerDNS

Untuk dapat menjalankan PowerDNS Admin sebagai service systemd, buat file unit seperti gambar di bawah ini;

cat > /etc/systemd/system/pdnsadmin.service << 'EOL' [Unit] Description=PowerDNS-Admin Requires=pdnsadmin.socket After=network.target [Service] PIDFile=/run/pdnsadmin/pid User=pdns Group=pdns WorkingDirectory=/var/www/html/pdns ExecStart=/var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()' ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target EOL
cat > /etc/systemd/system/pdnsadmin.socket << 'EOL' [Unit] Description=PowerDNS-Admin socket [Socket] ListenStream=/run/pdnsadmin/socket [Install] WantedBy=sockets.target EOL
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/

Reload Konfigurasi Sistem dan mulai serta aktifkan service Admin PowerDNS untuk berjalan saat boot sistem;

systemctl enable --now pdnsadmin.service pdnsadmin.socket

Periksa statusnya;

systemctl status pdnsadmin.service pdnsadmin.socket
● pdnsadmin.service - PowerDNS-Admin Loaded: loaded (/etc/systemd/system/pdnsadmin.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-10-10 17:18:50 UTC; 2s ago TriggeredBy: ● pdnsadmin.socket Main PID: 5646 (gunicorn) Tasks: 2 (limit: 2282) Memory: 61.5M CGroup: /system.slice/pdnsadmin.service ├─5646 /var/www/html/pdns/flask/bin/python /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket powerdnsadmin:crea> └─5663 /var/www/html/pdns/flask/bin/python /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket powerdnsadmin:crea> Oct 10 17:18:50 ubuntu20 systemd[1]: Started PowerDNS-Admin. Oct 10 17:18:51 ubuntu20 gunicorn[5646]: [2020-10-10 17:18:51 +0000] [5646] [INFO] Starting gunicorn 20.0.4 Oct 10 17:18:51 ubuntu20 gunicorn[5646]: [2020-10-10 17:18:51 +0000] [5646] [INFO] Listening at: unix:/run/pdnsadmin/socket (5646) Oct 10 17:18:51 ubuntu20 gunicorn[5646]: [2020-10-10 17:18:51 +0000] [5646] [INFO] Using worker: sync Oct 10 17:18:51 ubuntu20 gunicorn[5663]: [2020-10-10 17:18:51 +0000] [5663] [INFO] Booting worker with pid: 5663 ● pdnsadmin.socket - PowerDNS-Admin socket Loaded: loaded (/etc/systemd/system/pdnsadmin.socket; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-10-10 17:18:50 UTC; 2s ago Triggers: ● pdnsadmin.service Listen: /run/pdnsadmin/socket (Stream) CGroup: /system.slice/pdnsadmin.socket Oct 10 17:18:50 ubuntu20 systemd[1]: Listening on PowerDNS-Admin socket.

Mengakses Interface Web Admin PowerDNS

Buka Nginx di firewall untuk mengizinkan akses eksternal;

ufw allow "Nginx Full"

Sesuai konfigurasi kami di atas, Anda dapat mengakses interface web Admin PowerDNS melalui alamat http://server-hostname. Anda seharusnya dapat melihat layar login Admin PowerDNS. (if not, check status of the PowerDNS admin service or Nginx error logs for a hint).

Buat akun user administratif Admin PowerDNS

Klik Create an accountuntuk membuat user admin Admin PowerDNS pertama. Masukkan detail user.

Klik Register untuk membuat akun.

Setelah itu, login menggunakan detail user yang Anda berikan. Setelah login berhasil, Anda akan mendarat di interface Admin PowerDNS.

Agar Admin PowerDNS dapat terhubung ke PowerDNS dan mengelolanya, Anda perlu memberikan URL Kunci API, biasanya, http://127.0.0.1:8081 secara default, Kunci API yang Anda tetapkan di file konfigurasi PowerDNS.

Klik Update dan error seharusnya hilang begitu saja.

Klik pada Dashboard untuk pergi ke dasbor Admin PowerDNS.

Seperti yang Anda lihat, kami telah menambahkan catatan DNS di panduan kami sebelumnya. Jika Anda mengklik nama domain di bawahHosted Domains, Anda harus merekam yang telah kami tambahkan;

Itu adalah rekor zona maju.

Jika Anda mengklik zona terbalik di bawah Dasbor > Domain yang Dihosting di addr, Anda akan melihat catatan zona terbalik.

Dan itu menandai akhir dari tutorial kami tentang cara menginstal PowerDNS Admin dengan mudah di Ubuntu 20.04. Dalam panduan kami berikutnya, kami akan membahas cara mengelola catatan DNS dengan Admin PowerDNS. Menikmati.

Referensi

Menjalankan Admin PowerDNS di Ubuntu atau Debian

Tutorial Terkait Lainnya

Konfigurasi Server DNS Lokal menggunakan Dnsmasq di Ubuntu 20.04

Setup Server DNS Caching-Only menggunakan BIND9 di Ubuntu 20.04

Konfigurasikan BIND DNS Server menggunakan Webmin di CentOS 8

Setup Bind DNS Menggunakan Webmin di Debian 10

Konfigurasikan BIND sebagai Server DNS Budak di Ubuntu 18.04

Setup Master-Slave DNS Server menggunakan BIND di CentOS 7