3. Практика
Задачи
- Установить и настроить авторитетного DNS сервера
- Настроить DNS для работы в соответствии со стандартом RFC 2136
- Установка и настройка рекурсивного DNS
- Выпустить сертификат безопасности
СПроздаверить сертификата безопасностовый сайти
Построение стенда
Схема виртуального лабораторного стенда
Рисунок 1. Схема стенда
- Создать виртуальные машины для работы
Название виртуальной машины | Источник | Тип инстанса | Сети для внешнего подключения |
---|---|---|---|
web-server | Образ-Ubuntu-server20.04 | small | external-net |
dns-server | Образ-Ubuntu-server20.04 | small | external-net |
Так же нужно проверить развернутую инфраструктуру на соответствие схеме на рисунке 1.
В группах безопастности необходимо разрешить DNS
1. Установка и настройка авторитетного DNS сервера
Обновляем пакеты внутри системы до последней версии
sudo apt update
# Необязательно, но желательно
sudo apt full-upgrade -y
Устанавливаем сервер реализацию DNS сервера PowerDNS
sudo apt install pdns-server pdns-backend-sqlite3 sqlite3 -y
Настроить для работы c sqlite бд
sudo mkdir /var/lib/powerdns
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 < /usr/share/doc/pdns-backend-sqlite3/schema.sqlite3.sql
sudo chown -R pdns:pdns /var/lib/powerdns
Выключаем systemd-resolved
sudo systemctl disable --now systemd-resolved.service
Изменяем используемый dns-сервер на 172.17.1.10
sudo rm -rf /etc/resolv.conf
echo "nameserver 172.17.1.10" |sudo tee /etc/resolv.conf
Отредактировать /etc/powerdns/pdns.conf
include-dir=/etc/powerdns/pdns.d
launch=gsqlite3
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
security-poll-suffix=
setgid=pdns
setuid=pdns
Рисунок 2. Пример конфига
Активируем демона dns-сервера
sudo systemctl enable --now pdns
Создаем зону по имени пользователя(для примера используется devops-course.test)
sudo pdnsutil create-zone {zone name} ns1.{zone name}
sudo pdnsutil add-record {zone name}. www A 127.0.0.1
Проверьте работу сервера
nslookup www.devops-course.test {server ip}
Запрос делается с пользователького пк
Рисунок 3. Пример ответ при адресе сервера 172.17.36.216
2. Настроить DNS для работы в соответствии со стандартом RFC 2136
Для работы по стандарту rfc2136, необходимо изменить конфигурацию работы PowerDNS, в конфигурационном файле необходимо добавить строки:
dnsupdate=yes
allow-dnsupdate-from=172.16.0.0/12
Рисунок 4. Конфигурация после обновления
Создать TSIG ключ с именем dnsudpater
sudo pdnsutil generate-tsig-key dnsupdater hmac-sha512
Рисунок 5. Пример корректного создания TSIG ключа
Посмотреть существующие ключи можно командой:
sudo pdnsutil list-tsig-keys
Для проверки работы rfc2136 добавим новую A запись test указывающую, на наш web-сервер
nsupdate <<!
server {ip dns-server} 53
zone {zone name}
update add test.{zone name} 3600 A {ip web-server}
key hmac-sha512:{key name} {tsig key}
send
!
выполнять с устройства в сети 172.16.0.0/12
Проверить, что запись добавилась
nslookup test.{zone name} {ip dns-server}
3. Настройка рекурсивного DNS
Так как наша конфигурация подразумевает совместную работы рекурсивного и авторитетного сервера на одном виртуальном сервере, нам необходимо разграничить их по портам, так для авторитетного сервера, будет использовать порт 5353
Для этого в конфигурации авторитетного сервера необходимо изменить слушаемые порт добавив в конфигурационный файл строки
local-port=5353
После изменения конфигурации необходимо перезапустить службу
sudo systemctl restart pdns
Проверьте, что теперь слушается только порт 5353
ss -tulpan
Установите рекурсивный сервер DNS
sudo apt install pdns-recursor -y
Привести конфиг рекурсивного DNS к виду
config-dir=/etc/powerdns
hint-file=/usr/share/dns/root.hints
include-dir=/etc/powerdns/recursor.d
local-address=0.0.0.0
local-port=53
lua-config-file=/etc/powerdns/recursor.lua
public-suffix-list-file=/usr/share/publicsuffix/public_suffix_list.dat
quiet=yes
security-poll-suffix=
setgid=pdns
setuid=pdns
# authoritative zone
forward-zones={zone name}=127.0.0.1:5353
forward-zones-recurse={zone name}=127.0.0.1:5353
# also
forward-zones+=.=1.1.1.1
forward-zones-recurse+=.=1.1.1.1
Включаем и добавляем автозапуск демона
sudo systemctl enable --now pdns-recursor
4. Выпуск сертификата безопасности
Переходим на узел веб сервера и используя команду генерируем самоподписанный сертификат для нашего будущего тестового сайта
openssl req -x509 -nodes -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -subj '/CN={Доменное имя}' -addext "subjectAltName = DNS:{Доменное имя}" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "extendedKeyUsage = serverAuth"
Пример создания сертификата
Для проверки созданного сертификата можно использовать команду
openssl x509 -in cert.pem -noout -text
5. Проверка сертификата безопасности
Для проверки мы установим nginx и установим на него ранее созданный сертификат. Нам необходимо начать с установки nginx
sudo apt update
sudo apt install nginx -y
После установки необходимо конфигурацию по умолчанию(/etc/nginx/sites-available/default) и привести ее к виду:
server {
listen 80 default_server;
server_name test.devops-course.test;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name test.devops-course.test;
ssl_certificate /home/cloudadmin/cert.pem;
ssl_certificate_key /home/cloudadmin/key.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1.3;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/cloud.access.log;
error_log /var/log/nginx/cloud.error.log;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
}