Uygulama

Debian 11/10 Üzerinde PowerDNS Admin Kurulumu

Bu yazıda, PowerDNS Admin’i Debian 11/Debian 10’a nasıl kolayca yükleyeceğinizi öğreneceksiniz.  PowerDNS Admin  , PowerDNS için bir web yönetim arabirimidir. Bir web tarayıcısından kolayca DNS bölgeleri oluşturmanıza ve yönetmenize olanak tanır.

PowerDNS Admin, PowerDNS’yi yönetmek için gelişmiş özellikler sağlar. Bunlar;

  • Çoklu alan yönetimi
  • Alan şablonu
  • Kullanıcı yönetimi
  • Etki alanına dayalı kullanıcı erişim yönetimi
  • Kullanıcı etkinliği günlüğü
  • Yerel DB / SAML / LDAP / Active Directory kullanıcı kimlik doğrulamasını destekleyin
  • Google / Github / Azure / OpenID OAuth’u destekleyin
  • İki faktörlü kimlik doğrulamayı (TOTP) destekleyin
  • Pano ve pdns hizmet istatistikleri
  • DynDNS 2 protokol desteği
  • IPv6 adreslerini doğrudan kullanarak IPv6 PTR’lerini düzenleyin (artık değişmez adreslerin düzenlenmesi yok!)
  • Bölgeleri ve kayıtları işlemek için sınırlı API

Gerekli Paket Bağımlılıklarını Yükleyin

Python 3 kitaplığını ve geliştirme araçlarını yükleyin

apt install python3-dev

Gerekli derleme araçlarını ve paket bağımlılıklarını kurun.

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

NodeJS’yi Debian 10/Debian 11’e yükleyin;

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

Yarn’ı Debian 11/Debian 10’a yükleyin

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt update
apt install yarn -y

Nginx HTTP Sunucusu Debian 10/Debian 11’i yükleyin

apt install nginx -y

PowerDNS Admin Kaynak Kodunu Klonlayın

PowerDNS Admin git kaynak kodunu Nginx web kök dizininize kopyalayın.

Bu kurulumda, PowerDNS Admin web kök dizinimiz olarak /var/www/html/pdns kullanıyoruz. Sizin durumunuz için farklı olabilir.

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

PowerDNS Admin Virtualenv’i oluşturun

PowerDNS Admin web kök dizinine gidin ve bir sanalenv oluşturun.

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

Ardından, Python 3 Sanal ortamınızı etkinleştirin ve gerekli Python 3 kitaplıklarını kurun

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

PowerDNS Webadmin Veritabanı Bağlantısını Yapılandırma

Virtualenv’den çıkın.

deactivate

Veritabanı bağlantı ayrıntılarını tanımlamak için varsayılan PowerDNS yönetici yapılandırma dosyasını, $WEB_ROOT/powerdnsadmin/default_config.py’yi düzenleyin.

$WEB_ROOT’u web kök dizininizin yolu ile değiştirin.

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

Temel Uygulama yapılandırmalarında SALT ve SECRET_KEY anahtarlarını değiştirebilir, bağlantı adresini ve bağlantı noktasını ayarlayabilirsiniz;

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

Veritabanı yapılandırmalarında, PowerDNS veritabanı bağlantı ayrıntılarınızı yapılandırın.

### 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

Yapılandırmayı kaydedin ve çıkın.

Ardından, sanal ortamı yeniden etkinleştirin, DB geçişini çalıştırın;

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

Yukarıdaki komut tamamlandığında, iplik ile varlık dosyaları oluşturun;

yarn install --pure-lockfile
flask assets build

Sanal ortamı devre dışı bırakın.

deactivate

PowerDNS Webadmini Çalıştırma

Kurulduktan sonra, web kök dizinindeki run.py dosyasını yürüterek PowerDNS admin’i bağımsız modda çalıştırabilirsiniz.

Bu kurulumda, PowerDNS Yöneticisine erişmek için Nginx web sunucusunu kullanacağız.

PowerDNS API erişimini etkinleştirin

PowerDNS Yetkili Sunucusu, bir JSON/REST API’sini ortaya çıkaran yerleşik bir web sunucusuna sahiptir. Bu API, çeşitli işlevlerin kontrol edilmesine, istatistiklerin okunmasına ve bölge içeriğinin, meta verilerin ve DNSSEC anahtar materyalinin değiştirilmesine izin verir .

  • PowerDNS yapılandırma dosyasını açın
  • API’yi etkinleştir
  • API Anahtarını oluşturun ve ayarlayın;
vim /etc/powerdns/pdns.conf
#################################
# api REST API'yi etkinleştirin/devre dışı bırakın (HTTP dinleyicisi dahil)
#
# API=hayır
API=evet

#################################
# api-key REST API'ye erişim için önceden paylaşılan statik kimlik doğrulama anahtarı
#
# api anahtarı=
api anahtarı=ahqu4eiv2vaideep8AQu9nav5Aing0

Dosyayı kaydedip çıkın ve PowerDNS’i yeniden başlatın;

systemctl restart pdns

PowerDNS Yönetici Nginx Sitesi Oluşturun

Aşağıdaki içeriklerle PowerDNS Admin Nginx sitesi oluşturun. Web kök dizinini buna göre değiştirin.

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;
  }

}

Dosyayı kaydedin ve çıkın.

Varsayılan Nginx varsayılan sitesini kaldırın.

mv /etc/nginx/sites-enabled/default{,.old}

Yapılandırma sözdizimi kontrolünü çalıştırın.

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Pdns Admin web kök dizininin sahipliğini web kullanıcısına ayarlayın;

chown -R www-data: /var/www/html/pdns

Nginx’i yeniden başlatın;

systemctl restart nginx

PowerDNS Admin Systemd Hizmet Birimi Oluşturun

PowerDNS Admin’i systemd hizmeti olarak çalıştırabilmek için aşağıdaki komutu çalıştırarak bir birim dosyası oluşturun;

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/

Sistem Yapılandırmalarını yeniden yükleyin ve PowerDNS Yönetici hizmetini sistem önyüklemesinde çalışacak şekilde başlatın ve etkinleştirin;

systemctl enable --now pdnsadmin.service pdnsadmin.socket

Durumu kontrol edin;

systemctl status pdnsadmin.service pdnsadmin.socket

PowerDNS Webadmin Arayüzüne Erişme

Harici erişime izin vermek için güvenlik duvarında Nginx’i açın;

ufw allow "Nginx Full"

Yukarıdaki yapılandırmamıza göre, http://sunucu-ana bilgisayar adı adresinden PowerDNS Admin web arayüzüne erişebilirsiniz. PowerDNS Yönetici oturum açma ekranını görebilmeniz gerekir. (değilse, ipuçları için PowerDNS yönetici hizmetinin durumunu veya Nginx hata günlüklerini kontrol edin).

PowerDNS Webadmin yönetici hesabı oluşturun

 İlk PowerDNS Yönetici yönetici kullanıcısını oluşturmak için Hesap oluştur’a tıklayın  . Kullanıcı ayrıntılarını girin.

 Bir hesap oluşturmak için Kaydol’a tıklayın

Daha sonra vermiş olduğunuz kullanıcı bilgilerini kullanarak giriş yapınız. Başarılı oturum açtıktan sonra, PowerDNS Yönetici arayüzüne inmelisiniz.

API kurulumunu tamamlamanızı isteyen bir hata göreceksiniz.

PowerDNS Yöneticisinin PowerDNS’e bağlanabilmesi ve yönetebilmesi için şunları sağlamanız gerekir:

  • API Anahtarı URL’si, genellikle http://127.0.0.1:8081varsayılan olarak
  • PowerDNS yapılandırma dosyasında tanımladığınız API Anahtarı.

Güncelle’yi tıkladığınızda   hata kaybolmalıdır.

 PowerDNS Yönetici panosuna gitmek için Panoya tıklayın

Gördüğünüz gibi bir önceki rehberimizde DNS kayıtlarını zaten eklemiştik.

Barındırılan Alan Adları (yukarıdaki ekran görüntüsünde vurgulanmıştır) altındaki alan adını tıklarsanız,  daha önce eklediğimiz kayıtları;

Bu, ileri bölge kayıtlarıdır.

Dashboard > Hosted Domains in-addr altında ters bölgeye tıklarsanız , ters bölge kayıtlarını görmelisiniz.

Artık DNS kayıtlarınızı kolayca yönetebilirsiniz.

Yazının orijinalini buradan okuyabilirsiniz