МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Казанский национальный исследовательский технический университет

им. А.Н. Туполева – КАИ»

Институт компьютерных технологий и защиты информации

Отделение СПО ИКТЗИ (Колледж информационных технологий)

ЛАБОРАТОРНЫЕ РАБОТЫ

по дисциплине

Организация администрирования компьютерных систем

Работу выполнили

Студенты гр.4436

Александров А.П.

Принял

Преподаватель Муртазин Р.М.

Казань 2025

1

Устройство Адаптер Назначение Название IP Gateway VMnet
ISP ens33 интернет NAT - -
ens34 172.16.1.0 ISP-HQ 172.16.1.1/28 - VMnet3
ens35 172.16.2.0 ISP-BR 172.16.2.1/28 - VMnet4
HQ-RTR ens34 172.16.1.0 IPS-HQ 172.16.1.2/28 172.16.1.1 VMnet3
ens35.100 192.168.100.0 SRV-NET 192.168.100.1/27 - VMnet7
ens36.200 192.168.200.0 CLI-NET 192.168.200.1/28 - VMnet9
Ens34.999 172.16.99.0 MGMT 172.16.99.1/30
BR-RTR ens34 172.16.2.0 ISP-BR 172.16.2.2/28 172.16.2.1 VMnet4
ens35 192.168.2.0 BR-NET 192.168.2.1/28 - VMnet6

Топология сети

Интерфейсы устройств

(название интерфейсов могут изменяться)

ISP:

HQ-RTR:

BR-RTR:

Настройка NAT

ISP:

Сначала устанавливаем iptables: apt install iptables-persistent

И пишем команды:

/usr/sbin/iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

здесь указывается название интерфейса, идущего в сторону интернета (isp – ens33, hq-rtr – ens34, br-rtr – ens34)

/usr/sbin/iptables-save > /etc/iptables/rules.v4

Теперь заходим в файл nano /etc/sysctl.conf, находим строку net.ipv4.ip_forward=1, убираем решетку, сохраняем, выходим и перезагружаем командой /usr/sbin/sysctl -p

На соседних машинах заходим в файл nano /etc/resolv.conf и там пишем: nameserver 8.8.8.8

HQ-RTR, BR-RTR:

Проделываем всё тоже самое, но пишем интерфейс, выходящий к ISP.

Создание локальных учетных записей на серверах (HQ-SRV, BR-SRV) и роутерах (HQ-RTR, BR-RTR) (1.3)

HQ-SRV, BR-SRV:

Сначала добавляем пользователя remote_user без пароля и идентификатора:

/usr/sbin/useradd remote_user

Добавляем пользователя с идентификатором этой командой:

useradd -m -s /bin/bash -u 2026 sshuser

Задаем пароль пользователя командой:

passwd sshuser

Далее потребуется ввести пароль два раза.

Чтобы запускать sudo без пароля надо перейти в файл /etc/sudoers и там ввести:

sshuser ALL=(ALL) NOPASSWD:ALL

HQ-RTR, BR-RTR:

Добавляем пользователя командой:

useradd -m -s /bin/bash net_admin

И пароль:

passwd net_admin

И вводим пароль (P@ssw0rd) два раза

Чтобы запускать sudo без пароля надо перейти в файл /etc/sudoers и там ввести:

net_admin ALL=(ALL) NOPASSWD:ALL

Настройка SSH на HQ-SRV и BR-SRV

Устанавливаем ssh командой:

apt install openssh-server

Заходим в файл /etc/ssh/sshd_config, раскомментируем строку #port 22 и меняем порт на нужный (2026).

В этом же файле находим строку #permitrootlogin, раскомментируем ее и пишем значение no, чтобы отключить вход суперпользователю. Далее добавляем строку AllowUsers sshuser, чтобы разрешить вход только пользователю sshuser.

Опять в этом же файле находим строку #MaxAuthTries, раскомментируем и пишем значение 2, чтобы ограничить вход по ssh только до двух раз.

Теперь в этом же файле добавляем строку Banner /etc/issue.net. Заходим в файл /etc/issue.net и пишем Authorized access only.

Туннель GRE на HQ-RTR и BR-RTR

Заходим в файл /etc/modules и пишем ip_gre, перезагружаем вм.

Далее заходим в файл /etc/network/interfaces и пишем:

Для HR-RTR:

auto gre30

iface gre30 inet tunnel

address 10.10.10.1

netmask 255.255.255.252

mode gre

local 172.16.1.2

endpoint 172.16.2.2

ttl 225

post-up ip route add 192.168.2.0/28 via 10.10.10.2

Для BR-RTR:

auto gre30

iface gre30 inet tunnel

address 10.10.10.2

netmask 255.255.255.252

mode gre

local 172.16.2.2

endpoint 172.16.1.2

ttl 225

post-up ip route add 192.168.100.0/27 via 10.10.10.1

post-up ip route add 192.168.200.0/28 via 10.10.10.1

Потом перезагружаем сеть командой: systemctl restart networking.

И изменяем брандмауэр командой:

iptables -A INPUT -p gre -j ACCEPT

Настройка динамической маршрутизации на HQ-RTR и BR-RTR

Устанавливаем frr командой: apt install frr.

Заходим в файл /etc/frr/daemons и у строки ospfd ставим значение yes вместо no.

Потом пишем: systemctl enable frr и перезагружаем машину.

Заходим в оболочку командой vtysh и пишем:

Для HQ-RTR:

conf t

ip forwarding

router ospf

network 192.168.1.0/27 area 0

network 10.10.10.0/30 area 0

exit

exit

wr

exit

Для BR-RTR:

conf t

ip forwarding

router ospf

network 192.168.2.0/28 area 0

network 10.10.10.0/30 area 0

exit

exit

wr

exit

Чтобы установить пароль надо прописать на обоих устройствах здесь же:

int gre30

ip ospf authentication message-digest

ip ospf message-digest-key 1 md5 1c+rYtGm

DHCP на HQ-RTR

Устанавливаем DHCP командой:

apt install isc-dhcp-server

Заходим в файл /etc/default/isc-dhcp-server, там находим строки #DHCPDv4_CONF=/etc/dhcp/dhcpd.conf и #DHCPDv4_PID=/var/run/dhcpd.pid

и раскомментируем их. Потом находим строку INTERFACESv4="" и в кавычках пишем название интерфейса, который будет раздавать ip-адреса.

Потом заходим в файл /etc/dhcp/dhcpd.conf и редактируем его: в строке option domain-name в кавычках пишем au-team.irpo; в строке option domain-name-servers пишем ip-адрес dns-сервера (в нашем случае это HQ-SRV (192.168.100.1)). И дальше пишем так:

Далее запускаем dhcp командой:

systemctl enable isc-dhcp-server

DNS на HQ-SRV

Для настройки DNS на HQ-SRV необходимо сначала установить bind9:

apt install bind9

Далее заходим в файл /etc/bind/named.conf.options и сделать всё, как на скрине:

Далее заходим в файл /etc/bind/named.conf.local и пишем зоны:

zone “7.16.172.in-addr.arpa” IN {

type master;

file “/etc/bind/zones/db.7.16.172”

}

Дальше создаем директорию и создаем файлы этих зон:

mkdir /etc/bind/zones

cd /etc/bind

cp db.local /etc/bind/zones/db.au-team.irpo

cp db.127 /etc/bind/zones/db.100.168.192

cp db.127 /etc/bind/zones/db.200.168.192

cp db.127 /etc/bind/zones/db.1.16.172

cp db.127 /etc/bind/zones/db.2.16.172

cp db.127 /etc/bind/zones/db.2.168.192

Потом заходим в каждую из этих зон и пишем:

Модуль 2

Samba

BR-SRV:

export DEBIAN_FRONTEND=noninteractive

apt-get install samba winbind libnss-winbind krb5-user smbclient ldb-tools python3-cryptography

unset DEBIAN_FRONTEND

Далее заходим в файл /etc/krb5.conf и там пишем в самом начале (где [libdefaults]):

default_realm = AU-TEAM.IRPO

dns_lookup_kdc = true

dns_lookup_realm = false

Потом листаем дальше и у [realms] пишем (с табом):

AU-TEAM.IRPO = {

kdc = br-srv.au-team.irpo

admin_server = br-srv.au-team.irpo

}

И в самом конце у [domain_realm] пишем:

.au-team.irpo = AU-TEAM.IRPO

au-team.irpo = AU-TEAM.IRPO

Удаляем файл конфигурации самбы:

rm -f /etc/samba/smb.conf

Останавливаем все службы файлового сервера:

systemctl stop samba winbind smbd nmbd

Начинаем инициализация домена командой samba-tool domain provision и там надо будет по очереди вводить:

AU-TEAM.IRPO

Нажать enter

Нажать enter

Нажать enter

8.8.8.8

И вводим пароль администратора

Потом удаляем файл:

rm -f /var/lib/samba/private/krb5.conf

И заменим его ссылкой

ln -s /etc/krb5.conf /var/lib/samba/private/krb5.conf

Активируем samba:

systemctl disable samba winbind nmbd smbd

systemctl mask samba winbind nmbd smbd

systemctl unmask samba-ad-dc

systemctl enable samba-ad-dc

systemctl restart samba-ad-dc

И для проверки пишем:

kinit Administrator

klist

Надо, чтобы вывод был такой, иначе придется что-то чинить:

(не забываем заполнить файл /etc/resolv.conf)

Добавление на HQ-CLI (?) пользователей:

for i in {1..5}; do samba-tool user create hquser$i 'P@ssw0rd'; done

samba-tool group add hq

samba-tool group addmembers hq hquser1,hquser2,hquser3,hquser4,hquser5

Заходим в /etc/sudoers и у групп добавляем строку:

%hq ALL=(ALL:ALL) NOPASSWD: /usr/bin/cat, /usr/bin/grep, /usr/bin/id

Перед этим добавляем зоны на HQ-SRV (см. ниже)

Теперь вводим HQ-CLI в домен:

apt install -y realmd sssd-tools sssd libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y

realm discover au-team.irpo –verbose

realm join au-team.irpo

HQ-SRV:

В файл/etc/bind/zones/db.au-team.irpo добавляем строки:

_ldap._tcp.au-team.irpo. IN SRV 0 100 389 br-srv.au-team.irpo.

_kerberos._tcp.au-team.irpo. IN SRV 0 100 88 br-srv.au-team.irpo.

_kerberos._udp.au-team.irpo. IN SRV 0 100 88 br-srv.au-team.irpo.

_kpasswd._tcp.au-team.irpo. IN SRV 0 100 464 br-srv.au-team.irpo.

_kpasswd._udp.au-team.irpo. IN SRV 0 100 464 br-srv.au-team.irpo.

_ldap._tcp.dc._msdcs.au-team.irpo IN SRV 0 100 389 br-srv.au-team.irpo.

Далее переходим в файл /etc/bind/named.conf.local, добавляем к каждой зоне пару строк:

allow-transfer { none; };

allow-update { none; };

Потом внизу файла добавляем:

dlz "samba-dlz"

{

//database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_11.so";

};

Переходим в файл /etc/bind/named.conf.options и добавляем строку в самый низ (до последней фигурной скобки):

allow-update {192.168.2.2;}; <здесь надо писать адрес BR-SRV>

Перезагружаем bind9:

apt install bind9

HQ-CLI:

Устанавливаем это на клиента командой:

apt-get install realmd sssd oddjob oddjob-mkhomedir adcli samba-common packagekit sssd-tools krb5-user

При установке откроется окно и там надо будет по очереди написать:

AU-TEAM.IRPO

br-srv.au-team.irpo

br-srv.au-team.irpo

Еще раз проверяем:

kinit Administrator

klist

Подключаем машину к samba:

/usr/sbin/realm join --user=user1 AU-TEAM.IRPO –v

Вводим пароль от пользователя, созданного выше, и машина подключена

Теперь пишем: groups hquser1@au-team.irpo. В конце нам должно выдать число. Копируем его. Заходим в /etc/sudoers и ближе к концу пишем:

%#1897400513 ALL=(ALL) NOPASSWD: /bin/cat, /bin/grep, /usr/bin/id <это число надо заменить на свое>

RAID

HQ-SRV:

Смотрим название добавленных дисков командой: lsblk. диск, возможно, будет называться sdb, sdc.

Устанавливаем mdadm:

apt install mdadm

Создаем raid0:

/usr/sbin/mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb /dev/sdc

Сохраняем конфигурацию массива:

/usr/sbin/mdadm --detail --scan >> /etc/mdadm/mdadm.conf

/usr/sbin/update-initramfs -u

Создаём раздел на RAID-устройстве:

fdisk /dev/md0

Здесь надо будет по очереди писать:

n

нажать enter

нажать enter

нажать enter

нажать enter

w

Форматируем раздел в ext4:

/usr/sbin/mkfs.ext4 /dev/md0p1

Создаем папку и примонтируем туда раздел:

mkdir raid

mount /dev/md0p1 /raid

Для автоматического монтирования переходим в файл /etc/fstab и добавляем строку:

/dev/md0p1 /raid ext4 defaults 0 0

Монтируем:

mount -a

NFS

HQ-SRV:

Устанавливаем nfs-сервер:

apt install nfs-server

Создаем папку для общего пользования и назначаем ей права доступа:

mkdir /raid/nfs

chmod 766 /raid/nfs

Заходим в /etc/exports и добавляем туда строку:

/raid/nfs 192.168.200.0/28 (rw, no_root_squash) <здесь маска и подсеть HQ-CLI>

Экспортируем файловую систему и запускаем сервер:

/usr/sbin/exportfs -arv

systemctl enable nfs-server

systemctl restart nfs-server

HQ-CLI:

Устанавливаем nfs для клиента:

apt install nfs-common

Создаем папку для общего пользования и назначаем ей права доступа:

mkdir /mnt/nfs

chmod 777 /mnt/nfs

Заходим в /etc/fstab и там пишем:

192.168.100.2:/raid/nfs /mnt/nfs nfs defaults 0 0 <здесь указан адрес HQ-SRV>

Монтируем:

mount –a

Проверка:

df -h /mnt/nfs

Chrony

ISP:

Устанавливаем chrony командой:

apt install chrony

Переходим в файл /etc/chrony/chrony.conf, под строкой # Use Debian vendor zone. стираем или закомментируем строку pool 2.debian… и пишем:

Server 127.0.0.1 iburst prefer

local stratum 5

allow 0/0

Перезагружаем и добавляем автозапуск chrony:

systemctl restart chrony

systemctl enable chrony

На клиентах ntp (HQ-SRV, HQ-CLI, BR-RTR, BR-SRV):

Устанавливаем chrony командой:

apt install chrony

Переходим в файл /etc/chrony/chrony.conf, под строкой # Use Debian vendor zone. стираем или закомментируем строку pool 2.debian… и пишем:

server 172.16.1.1 iburst <это адрес для ветки HQ, для ветки BR здесь пишем 172.16.2.1>

Перезагружаем и добавляем автозапуск chrony:

systemctl restart chrony

systemctl enable chrony

Ansible

Здесь будут необходимы новые пользователи, поэтому придется их создать (HQ-RTR, BR-RTR, HQ-CLI):

useradd -m -s /bin/bash -u 2026 sshuser

passwd sshuser

Заходим в /etc/sudoers и там пишем в конце у пользователя root:

sshuser ALL=(ALL) NOPASSWD:ALL

Устанавливаем ssh на все машины кроме isp:

apt install openssh-server

Заходим в /etc/ssh/sshd_config, там меняем порт на 2026 (по желанию, я сделал) и находим строку #PermitRootLogin, раскомментируем ее и пишем значение no. Далее добавляем строку AllowUsers sshuser.

BR-SRV:

Устанавливаем ansible:

apt install -y ansible sshpass

Создаем каталог и изменяем конфигурацию:

mkdir -p /etc/ansible

chown $USER:$USER /etc/ansible

Заходим в /etc/ansible/ansible.cfg и пишем:

[defaults]

inventory = /etc/ansible/hosts

remote_user = sshuser

host_key_checking = False

deprecation_warnings = False

interpreter_python = /usr/bin/python3

Теперь заходим в /etc/ansible/hosts и пишем:

[hq]

HQ-SRV ansible_host=192.168.100.2 ansible_user=sshuser ansible_port=2026

HQ-CLI ansible_host=192.168.200.2 ansible_user=sshuser ansible_port=2026

HQ-RTR anisble_host=172.16.1.2 ansible_user=sshuser ansible_port=2026

[br]

BR-SRV ansible_connection=local ansible_user=local ansible_port=2026

BR-RTR ansible_host=172.16.2.2 ansible_user=sshuser ansible_port=2026

[all:vars]

ansible_become=yes

host_key_checking=False

Создаем ключ на BR-SRV: ssh-keygen -t rsa -b 4096 и копируем его на остальные машины:

ssh-copy-id -p 2026 sshuser@hq-srv

ssh-copy-id -p 2026 sshuser@hq-cli

ssh-copy-id -p 2026 sshuser@hq-rtr

ssh-copy-id -p 2026 sshuser@br-srv

ssh-copy-id -p 2026 sshuser@br-rtr

И проверяем соединение с ansible:

ansible all -m ping

Должно быть все грин, ред флаг красиво и заманчиво, но с ним сеть не построишь….

Docker

Устанавливаем dokcer и docker-compose:

apt install docker docker-compose

Скачиваем additional по ссылке https://disk.yandex.ru/d/0MGlkrp2B9nXDw, используя радикальные меры:

Загружаем образы:

docker load -i /mnt/additional/docker/mariadb_latest.tar

docker load -i /mnt/additional/docker/site_latest.tar

Создаем директорию, переходим в нее и там создаем файл:

mkdir -p /opt/testapp

cd /opt/testapp

nano docker-compose.yml

Заполняем файл:

version: '3.8'

services:

testapp:

image: site:latest

container_name: testapp

ports:

- "8080:8000"

depends_on:

- db

environment:

- DB_HOST=db

- DB_NAME=testdb

- DB_TYPE=maria

- DB_USER=test

- DB_PASS=P@ssw0rd

- SERVER_PORT=8080

restart: unless-stopped

db:

image: mariadb:10.11

container_name: db

environment:

MYSQL_ROOT_PASSWORD: rootP@ssw0rd

MYSQL_DATABASE: testdb

MYSQL_USER: test

MYSQL_PASSWORD: P@ssw0rd

volumes:

- db_data:/var/lib/mysql

restart: unless-stopped

volumes:

db_data:

Запускаем docker:

docker-compose up -d

Переходим в браузер и вводим:

Localhost:8080

Должно быть так:

Apache

HQ-SRV:

Второй способ additional iso – это скачать ее на хост, в vmware присоединить его и написать:

mkdir -p /mnt/additional

mount -t iso9660 /dev/sr0 /mnt/additional

Устанавливаем необходимые пакеты:

apt install apache2 mariadb-server php php-mysql php-cli php-gd

Включаем apache и mariadb:

systemctl enable apache2 mariadb

systemctl enable apache2 mariadb

Заходим в mariadb, создаем бд, пользователя и даем права:

mariadb -u root

CREATE DATABASE webdb;

CREATE USER web@localhost IDENTIFIED BY 'P@ssw0rd';

GRANT ALL PRIVILEGES ON webdb.* TO web@localhost;

FLUSH PRIVILEGES;

exit;

Импортируем бд:

mariadb -u root -p webdb < /mnt/additional/web/dump.sql

Копируем файлы приложения в каталог Apache:

cp /mnt/additional/web/index.php /var/www/html/

Создаем папку images и помещаем туда картинку:

mkdir /var/www/html/images

cp /mnt/additional/web/logo.png /var/www/html/images/

Копируем index.php:

cp /mnt/additional/web/index.php /var/www/html/

Устанавливаем права доступа:

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

chmod -R 755 /var/www/html/

Заходим в файл /var/www/html/index.php и редактируем несколько строк:

$servername = "localhost";

$username = "web";

$password = "P@ssw0rd";

$dbname = "webdb";

Включаем модуль:

/usr/sbin/a2enmod rewrite

И потребуется перезагрузить apache:

systemctl restart apache2

Разрешаем HTTP трафик:

/usr/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Заходим в /etc/apache2/mods-enabled/dir.conf, удаляем всё содержимое и пишем:

apache

<IfModule mod_dir.c>

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

</IfModule>

Переименовываем:

mv /var/www/html/index.html /var/www/html/index.html.backup

И перезагружаем:

systemctl restart apache2

Заходим в браузер и пишем адрес HQ-SRV, должна появиться такая страница:

Статическая трансляция портов

HQ-RTR:

/sbin/iptables -t nat -A POSTROUTING -o ens34 -j MASQUERADE

/sbin/iptables -t nat -A PREROUTING -d 172.16.1.2 -p tcp --dport 8080 -j DNAT --to-destination 192.168.100.2:8080

/sbin/iptables -t nat -A PREROUTING -d 172.16.1.2 -p udp --dport 8080 -j DNAT --to-destination 192.168.100.2:8080

/sbin/iptables -t nat -A PREROUTING -d 172.16.1.2 -p tcp --dport 2026 -j DNAT --to-destination 192.168.100.2:2026

/sbin/iptables -t nat -A PREROUTING -d 172.16.1.2 -p udp --dport 2026 -j DNAT --to-destination 192.168.100.2:2026

BR-RTR:

/sbin/iptables -t nat -A POSTROUTING -o ens34 -j MASQUERADE

/sbin/iptables -t nat -A PREROUTING -d 172.16.2.2 -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.2:8080

/sbin/iptables -t nat -A PREROUTING -d 172.16.2.2 -p udp --dport 8080 -j DNAT --to-destination 192.168.2.2:8080

/sbin/iptables -t nat -A PREROUTING -d 172.16.2.2 -p tcp --dport 2026 -j DNAT --to-destination 192.168.2.2:2026

/sbin/iptables -t nat -A PREROUTING -d 172.16.2.2 -p udp --dport 2026 -j DNAT --to-destination 192.168.2.2:2026

NGINX

ISP:

Устанавливаем nginx:

apt install nginx

Включаем nginx:

systemctl enable nginx

systemctl restart nginx

Заходим в nano /etc/nginx/sites-available/reverse_proxy.conf и там пишем (здесь сначала идет адрес hq-srv, потом br-srv):

upstream hq_srv_app {

server 192.168.100.2:80;

}

upstream testapp_app {

server 192.168.2.2:8080;

}

server {

listen 80;

server_name web.au-team.irpo;

location / {

proxy_pass http://hq_srv_app;

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 $scheme;

}

}

server {

listen 80;

server_name docker.au-team.irpo;

location / {

proxy_pass http://testapp_app;

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 $scheme;

}

}

Теперь активируем сайт:

ln -s /etc/nginx/sites-available/reverse_proxy.conf \

/etc/nginx/sites-enabled/reverse_proxy.conf

Проверяем на клиенте:

http://docker.au-team.irpo/

http://web.au-team.irpo/

Должно быть так:

Web-based аутентификация:

ISP:

Устанавливаем дополнительные пакеты:

apt install apache2-utils

Создаем файл с пользователем (WEB) и после этого вводим пароль(P@ssw0rd):

htpasswd -c /etc/nginx/.htpasswd WEB

Заходим в этот файл nano /etc/nginx/sites-available/reverse_proxy.conf и добавляем две строки:

auth_basic "Restricted Access";

auth_basic_user_file /etc/nginx/.htpasswd;

Чтобы было вот так:

И перезагружаем:

systemctl reload nginx

Яндекс

HQ-CLI:

Пишем в браузере: скачать яндекс линукс, переходим по ссылке, скачиваем, заходим в загрузки, находим этот файл, нажимаем пкм и открываем с помощью установки приложений, дальше всё понятно. И готово, модуль готов