Настройка 3 модуля демоэкзамена

Назад на главную

Настройка центра сертификации (ЦС) на базе HQ-SRV

Задачи:

Шаги для выполнения:

Для генерации сертификатов мы будем использовать библиотеку openssl

Организацию CA начнем со следующей команды:

openssl req -newkey rsa:4096 -nodes -keyout ca.key -x509 -days 365 -out ca.crt
    
Generating a RSA private key
.................+++++
.............................................................+++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
----- 
Country Name (2 letter code) [RU]: RU
State or Province Name (full name) []: Tatarstan
Locality Name (eg, city) []: Kazan
Organization Name (eg, company) []: KIT KAI
Organizational Unit Name (eg, section) []: DEMO
Common Name (e.g., your name or your server's hostname) []: AU-Team CA
Email Address []: example@gmail.com
    

Теперь мы имеем закрытый ключ, и сам сертификат (файла csr при этом не будет)

[root@hq-srv ~]# ls -l
total 12
-rw-r--r-- 1 root root 1159 Feb 28 15:57 ca.crt
-rw------- 1 root root 1708 Feb 28 15:56 ca.key
    

Создание сертификата для веб-сервера

Создаем закрытый ключ:

openssl genrsa -out web.key 4096

Запрос на подпись:

openssl req -key web.key -new -out web.csr

Здесь так же начнется ввод параметров:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: RU
State or Province Name (full name) [Some-State]: Tatarstan
Locality Name (eg, city) []: Kazan
Organization Name (eg, company) [Internet Widgits Pty Ltd]: KIT KAI
Organizational Unit Name (eg, section) []:DEMO
Common Name (e.g. server FQDN or YOUR name) []:*.au-team.irpo
Email Address []: example@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password  P@ssw0rd
An optional company name []:
    

Мы использовали wildcard домен *.au-team.irpo, чтобы не генерировать сертификаты отдельно под wiki и moodle.
Создайте файл openssl.cnf:

[req]
req_extensions = req_ext

[req_ext]
#Эту строку указывать необязательно, так как Common Name сертификата wildcard
subjectAltName = DNS:wiki.au-team.irpo, DNS:moodle.au-team.irpo
extendedKeyUsage = serverAuth
keyUsage = digitalSignature

Этот файл указывает, что сертификат можно будет использовать для создания TLS на веб-сервере
Теперь подписываем этот запрос через наш CA:

openssl x509 -req -in web.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out web.crt -days 365 -sha256 -extfile openssl.cnf -extensions req_ext

Получаем:

[root@hq-srv ~]# ls -l
total 24
ca.crt
ca.key
ca.srl
web.crt
web.csr
web.key

Перенастройка веб-серверов на HTTPS

Для каждого веб-сервиса (Moodle, Wiki):

# Скопируйте сертификаты и ключи на серверы:
scp /home/student/web.crt net_admin@:/home/net_admin
scp /home/student/web.key net_admin@:/home/net_admin

mv /home/user/web.* /etc/nginx
# Настройте конфигурацию NGINX:
sudo nano /etc/nginx/sites-available/reverse-proxy.conf

# Добавьте или измените секцию:
server {
listen 443 ssl;
server_name moodle.au-team.irpo;

ssl_certificate /etc/nginx/ssl/web.crt;
ssl_certificate_key /etc/nginx/ssl/web.key;

location / {
proxy_pass http://192.168.10.2/moodle/;
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_set_header X-Forwarded-Proto https;
proxy_redirect off;
}
}
server {
listen 443 ssl;
server_name wiki.au-team.irpo;

ssl_certificate /etc/nginx/ssl/web.crt;
ssl_certificate_key /etc/nginx/ssl/web.key;

location / {
proxy_pass http://192.168.10.2/moodle/;
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_set_header X-Forwarded-Proto https;
}
}
server { listen 80; server_name moodle.au-team.irpo; return 301 https://\$host\$request_uri; } server { listen 80; server_name wiki.au-team.irpo; return 301 https://\$host\$request_uri; }
# Перезапустите веб-сервер:
sudo systemctl restart nginx

Подправим moodle

HQ-SRV:
nano /var/www/html/moodle/config.php:
$CFG->wwwroot   = 'https://moodle.au-team.irpo';
$CFG->sslproxy  = true;

nano /etc/apache2/sites-available/moodle.conf:
ServerName 192.168.10.2

directory
    Options +FollowSymLinks

systemctl restart apache2

Обеспечение доверия сертификатам на HQ-CLI

# Скопируйте корневой сертификат на HQ-CLI:
scp /home/student/ca.crt user@ip_hq_cli:/home/user

mv /home/user/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Проверка HTTPS-соединений

curl -k https://<доменное_имя>
# Убедитесь, что предупреждений браузера нет.
    

Настройка принт-сервера CUPS на сервере HQ-SRV

Задачи:

Шаги для выполнения:

1. Установка CUPS на HQ-SRV

sudo apt update
sudo apt install cups cups-pdf -y
sudo systemctl start cups
sudo systemctl enable cups
    

2. Настройка CUPS

# Откройте конфигурационный файл CUPS:
sudo nano /etc/cups/cupsd.conf

# Внесите изменения для разрешения удалённого доступа:
# Найдите и измените строки:
Listen localhost:631
# Замените на:
Listen *:631

# Найдите все секции <Location /> и добавьте Allow all, Пример:
<Location />
  Order allow,deny
  Allow all
<Location>

# Сохраните изменения и перезапустите CUPS:
sudo systemctl restart cups
    

Доступ к веб-интерфейсу CUPS:

Откройте в браузере hq-cli: https://hq-srv.au-team.irpo:631

Для удалённого управления убедитесь, что CUPS настроен для доступа через веб.

Зайдите на вкладку Администрирование, залогиньтесь под root P@ssw0rd. Добавить принтер --> CUPS-PDF (Virtual PDF Printer) --> поставить галочку на разрешить совместный доступ к этому принтеру --> Создать HP --> HP DesignJet 750c pcl, 1.0 (en) --> Добавить принтер
Переходим в настройки --> Добавить принтер ipp://hq-srv.au-team.irpo и выбираем наш принтер, делаем его по умолчанию и отправляем тестовую печать, переходим в веб --> Задания и смотрим все задания, если все сделано правильно то там должно быть отправленое наше задание

Реализуйте механизм инвентаризации машин HQ-SRV и HQ-CLI через Ansible на BR-SRV

Задачи:

Установка и настройка Ansible

На сервере BR-SRV выполните:

sudo apt update
sudo apt install ansible -y

Перейдите в каталог /etc/ansible:

cd /etc/ansible

Создайте файл инвентаря inventory.yml

sudo nano /etc/ansible/inventory.yml

Создание плейбука

Создайте файл плейбука inventory.yml:

sudo nano /etc/ansible/inventory.yml

Добавьте следующий контент:

---

- name: Collect workstation information

  hosts: all
  gather_facts: yes
  tasks:
    - name: Gather computer name and IP address
      set_fact:
        computer_name: "{{ inventory_hostname }}"
        ip_address: "{{ ansible_default_ipv4.address }}"

    - name: Save inventory data to YAML file on the remote machine
      copy:
        content: |
          computer_name: "{{ computer_name }}"
          ip_address: "{{ ip_address }}"
        dest: "/tmp/{{ computer_name }}.yml"
        mode: '0644'

    - name: Create directory on BR-SRV for storing PC info
      delegate_to: localhost
      run_once: true
      file:
        path: "/etc/ansible/PC_INFO"
        state: directory
        mode: '0755'

    - name: Fetch inventory data to BR-SRV
      fetch:
        src: "/tmp/{{ computer_name }}.yml"
        dest: "/etc/ansible/PC_INFO/"
        flat: yes

    

Запуск плейбука

Запустите плейбук для выполнения инвентаризации:

ansible-playbook -i hosts /etc/ansible/inventory.yml

Проверка отчётов

Убедитесь, что файлы отчётов созданы в каталоге /etc/ansible/PC_INFO:

ls /etc/ansible/PC_INFO
cat /etc/ansible/PC_INFO/HQ-SRV.yml
cat /etc/ansible/PC_INFO/HQ-CLI.yml

Исправление предупреждения интерпретатора Python

Добавьте в файл инвентаря явный путь к интерпретатору Python для HQ-CLI:

HQ-CLI:
  ansible_host: 192.168.200.2
  ansible_user: user
  ansible_python_interpreter: /usr/bin/python3
    

Или добавьте в глобальную конфигурацию Ansible:

sudo nano /etc/ansible/ansible.cfg

Добавьте строки:

[defaults]
interpreter_python = /usr/bin/python3

Реализация механизма резервного копирования конфигурации для HQ-RTR и BR-RTR через Ansible на BR-SRV

Задачи:

Шаги для выполнения:

Плейбук для резервного копирования

sudo nano /etc/ansible/rtr.yml

Добавьте следующий контент:

---
- name: Backup network configuration
  hosts: rtr
  gather_facts: yes
  become: yes
  tasks:
    - name: Gather OSPF configuration (FRR)
      fetch:
        src: /etc/frr/frr.conf
        dest: /etc/ansible/NETWORK_INFO/{{ inventory_hostname }}/frr.conf
        flat: yes

    - name: Gather firewall rules (iptables)
      fetch:
        src: /etc/iptables.rules.v4
        dest: /etc/ansible/NETWORK_INFO/{{ inventory_hostname }}/iptables_rules.v4
        flat: yes

    - name: Gather network settings (interfaces)
      fetch:
        src: /etc/network/interfaces
        dest: /etc/ansible/NETWORK_INFO/{{ inventory_hostname }}/interfaces
        flat: yes

    - name: Gather DHCP settings
      fetch:
        src: /etc/dhcp/dhcpd.conf
        dest: /etc/ansible/NETWORK_INFO/{{ inventory_hostname }}/dhcpd.conf
        flat: yes
      when: inventory_hostname == "hq-rtr"

    - name: Ensure NETWORK_INFO directory exists on BR-SRV
      delegate_to: localhost
      run_once: true
      file:
        path: "/etc/ansible/NETWORK_INFO"
        state: directory
        mode: '0755'
    

Запуск плейбука

Запустите плейбук для резервного копирования:

ansible-playbook -i hosts /etc/ansible/rtr.yml

Проверка результатов

Убедитесь, что файлы конфигурации сохранены в папке NETWORK_INFO:

ls /etc/ansible/NETWORK_INFO/HQ-RTR
ls /etc/ansible/NETWORK_INFO/BR-RTR

Откройте файлы для проверки содержимого:

cat /etc/ansible/NETWORK_INFO/HQ-RTR/ospfd.conf
cat /etc/ansible/NETWORK_INFO/HQ-RTR/iptables_rules.v4

Примечания

Если файл конфигурации отсутствует на удалённой машине, плейбук продолжит выполнение из-за использования ignore_errors: yes.

Настройка мониторинга устройств на сервере HQ-SRV с помощью NetData

Задачи:

Настройка