Yesterday

final

ISP

auto ens33

iface ens33 inet dhcp

auto ens37

iface ens37 inet static

address 172.16.70.1/28

auto ens38

iface ens38 inet static

address 172.16.80.1/28

HQ-RTR

auto ens33

iface ens33 inet static

address 172.16.70.2/28

gateway 172.16.70.1

auto ens37

iface ens37 inet manual

auto ens37.114

iface ens37.114 inet static

address 192.168.10.1/27

auto ens37.214

iface ens37.214 inet static

address 192.168.10.33/28

BR-RTR

auto ens33

iface ens33 inet static

address 172.16.80.2/28

gateway 172.16.80.1

auto ens37

iface ens37 inet static

address 192.168.11.1/28

BR-SRV

auto ens33

iface ens33 inet static

address 192.168.11.2/28

gateway 192.168.11.1

HQ-SRV

auto ens33

iface ens33 inet manual

auto ens33.114

iface ens33.114 inet static

address 192.168.10.2/27

gateway 192.168.10.1

dns-nameserver 192.168.10.2 8.8.8.8

HQ-CLI

auto ens33

iface ens33 inet manual

auto ens33.214

iface ens33.214 inet dhcp

gateway 192.168.10.33

dns-nameservers 8.8.8.8

vlan-raw-device ens33

Настройка PAT (ISP, HQ-RTR, BR-RTR)

nano /etc/sysctl.conf

apt install -y iptables-persistent

iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

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

sysctl -p

В устройствах, которые будут получать интернет от этого устройства, надо зайти в файл nano /etc/resolv.conf и написать там nameserver 8.8.8.8

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

HQ-SRV, BR-SRV:

useradd sshuser -m -p $(openssl passwd -6 "P@ssw0rd") -s /bin/bash -u 2014 -G sudo

nano /etc/sudoers

sshuser ALL=(ALL) NOPASSWD:ALL

HQ-RTR, BR-RTR:

useradd -m net_admin && echo "net_admin:P@ssword" | chpasswd

nano /etc/sudoers net_admin ALL=(ALL) NOPASSWD:ALL

VLAN

на hq-rtr

auto ens37.814

iface ens37.814 inet static

address 192.168.10.49/29

echo "8021q" >> /etc/modules && modprobe 8021q

modprobe 8021q

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

apt install openssh-server

nano /etc/ssh/sshd_config

port 2014

permitrootlogin no

AllowUsers sshuser

MaxAuthTries 2

Banner /etc/issue.net

echo "Authorized access only" > /etc/issue.net

Проверка ssh sshuser@(ip/имя) -p 2014

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

echo "ip_gre" >> /etc/modules

modprobe ip_gre

nano /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.70.2

endpoint 172.16.80.2

ttl 225

Для BR-RTR:

auto gre30

iface gre30 inet tunnel

address 10.10.10.2

netmask 255.255.255.252

mode gre

local 172.16.80.2

endpoint 172.16.70.2

ttl 225

systemctl restart networking

/usr/sbin/iptables -A INPUT -p gre -j ACCEPT

Проверка после того как прописала, введи на HQ-RTR: ip a show gre30

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

apt install frr

nano /etc/frr/daemons там ospfd yes

systemctl enable frr

systemctl restart frr

vtysh

Для HQ-RTR:

conf t

ip forwarding

router ospf

network 192.168.10.0/27 area 0

network 192.168.10.0/28 area 0

network 10.10.10.0/30 area 0

int gre30

no ip ospf passive

ip ospf authentication message-digest

ip ospf message-digest-key 1 md5 1

exit

exit

wr

exit

Для BR-RTR:

conf t

ip forwarding

router ospf

network 192.168.11.0/28 area 0

network 10.10.10.0/30 area 0

int gre30

no ip ospf passive

ip ospf authentication message-digest

ip ospf message-digest-key 1 md5 1

exit

exit

wr

exit

DHCP на HQ-RTR

apt install isc-dhcp-server

nano /etc/default/isc-dhcp-server

строка INTERFACESv4="" ens37.214

nano /etc/dhcp/dhcpd.conf

subnet 192.168.10.32 netmask 255.255.255.240 {

range 192.168.10.34 192.168.10.46;

option domain-name-servers 192.168.10.2, 8.8.8.8;

option domain-name "au-team.irpo";

option routers 192.168.10.33;

option broadcast-address 192.168.10.47;

default-lease-time 600;

max-lease-time 7200;

}

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

systemctl enable isc-dhcp-server

systemctl restart isc-dhcp-server

DNS на HQ-SRV

apt install bind9

cp /etc/bind/db.empty /var/lib/bind/db.au-team.irpo

cp /etc/bind/db.127 /var/lib/bind/db.192.168.10

nano /etc/bind/named.conf.options

Options {

Directory “/var/cache/bind” ;

Forwarders {

1.1.1.1;

8.8.8.8;

};

Allow-recursion { any; };

Allow-query { any; };

Listen-on {

127.0.0.1;

192.168.10.2;

};

};

nano /etc/bind/named.conf.local

zone "au-team.irpo" {

type master;

file "/var/lib/bind/db.au-team.irpo";

};

zone "10.168.192.in-addr.arpa" {

type master;

file "/var/lib/bind/db.192.168.10";

};

nano /var/lib/bind/db.au-team.irpo

В файле поменять на hq-srv.au-team.irpo. рядом должно быть root.au-team.irpo.

Снизу все должно выглядеть вот так:

;

@ IN NS hq-srv.au-team.irpo.

hq-srv IN A 192.168.10.2

br-rtr IN A 192.168.11.1

br-srv IN A 192.168.11.2

hq-cli IN A 192.168.10.34

hq-rtr IN A 192.168.10.1

docker IN A 172.16.70.2

web IN A 172.16.80.2

; SRV records for Active Directory Domain Controller

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

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

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

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

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

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

В файле nano /var/lib/bind/db.192.168.10

Меняем на hq-srv.au-team.irpo. рядом должно быть root.au-team.irpo.

Ниже должно быть

;

@ IN NS hq-srv.au-team.irpo.

1 IN PTR hq-rtr.au-team.irpo.

2 IN PTR hq-srv.au-team.irpo.

34 IN PTR hq-cli.au-team.irpo.

named-checkzone au-team.irpo /var/lib/bind/db.au-team.irpo

показывает точные ошибки: named-checkconf -z

на всех машинах кроме isp

nano /etc/resolv.conf

domain au-team.irpo

search au-team.irpo

nameserver 192.168.10.2

nameserver 8.8.8.8

чтобы не менялся файл резолва

chattr +i /etc/resolv.conf

чтобы отменить

chattr -i /etc/resolv.conf

Потом всего этого systemctl restart bind9

2 Модуль

Задание 2 RAID на HQ-SRV

Добавить 2 жестких диска по 1 гб

apt install mdadm -y

проверка названия дисков lsblk типо просто как называется

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

Если спросит "Continue creating array?", пиши y и жми Enter.

mkfs.ext4 /dev/md0
mkdir /data
mount /dev/md0 /data
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u

nano /etc/fstab

/dev/md0    /data    ext4    defaults    0    2

проверка cat /proc/mdstat

Должно быть написано: md0 : active raid1 и две буквы [UU] (значит, оба диска работают).

Задание 3 NFS-сервер на HQ-SRV и автоматическое монтирование на HQ-CLI

apt install nfs-kernel-server -y
mkdir -p /srv/nfs/share
chown nobody:nogroup /srv/nfs/share
chmod 777 /srv/nfs/share

nano /etc/exports

/srv/nfs/share 192.168.10.0/24(rw,sync,no_subtree_check)
exportfs -a
systemctl restart nfs-kernel-server

На HQ-CLI

apt update 
apt install nfs-common -y
mkdir -p /mnt/nfs_share

nano /etc/fstab

192.168.10.2:/srv/nfs/share /mnt/nfs_share nfs defaults,_netdev 0 0

mount -a

df -h

Задание 4 Служба сетевого времени

apt install chrony (HQ-SRV, HQ-CLI, BR-RTR, BRSRV)

На hq-srv

nano /etc/chrony/chrony.conf закомментировать строчку с пул

И в конце файла

server 127.0.0.1 iburst prefer

local stratum 5

allow 0/0

systemctl restart chrony

systemctl enable chrony

На «клиентах» ( HQ-CLI, BR-RTR, BRSRV)

nano /etc/chrony/chrony.conf

Server 172.16.70.1 iburst prefer ( это айпи асп)

systemctl restart chrony

systemctl enable chrony

после чего на isp проверяем клиентов chronyc clients

На клиентах прописываем chronyc sources -v

chronyc tracking

пункт leap status должен быть normal, время должно быть как на hq-r (время НЕ мск, лондонское)

Задание 5. Ansible на BR-SRV

1. Настройка на BR-SRV

apt-get update

apt-get install ansible sshpass -y

mkdir -p /etc/ansible

nano /etc/ansible/ansible.cfg

[defaults]

inventory = /etc/ansible/hosts

host_key_checking = False

sudo mkdir -p /etc/ansible

sudo nano /etc/ansible/hosts

[all:vars]

ansible_password=P@ssw0rd

ansible_port=2014

[routers]

# Используем внутренние адреса шлюзов

HQ-RTR ansible_host=192.168.10.1 ansible_user=net_admin

BR-RTR ansible_host=192.168.11.1 ansible_user=net_admin

[servers]

HQ-SRV ansible_host=192.168.10.2 ansible_user=sshuser

BR-SRV ansible_host=192.168.11.2 ansible_user=sshuser

[clients]

HQ-CLI ansible_host=192.168.10.34 ansible_user=sshuser

2. Подготовка управляемых узлов (HQ-SRV, HQ-CLI, HQ-RTR, BR-RTR)

apt-get update

apt-get install openssh-server python3 -y

systemctl enable --now ssh

ssh-keygen -A

systemctl restart ssh

ansible all -m ping

если он не поднял клиента, то на br-rtr

ip route add 192.168.10.0/27 via 10.10.10.1

ip route add 192.168.10.32/28 via 10.10.10.1

hq-rtr

ip route add 192.168.11.0/28 via 10.10.10.2

если вдруг он не поднял сервер, то нужно проверить какой порт слушает для этого

ss -tulpn | grep ssh

далее проверить порт в конфиге ssh и если все четко то systemctl restart ssh

Задание 6. Веб приложение в docker на сервере BR-SRV

apt install curl -y

curl -fsSL https://get.docker.com -o get-docker.sh

curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

mkdir -p /mnt/additional

mount /dev/sr0 /mnt/additional
sudo sh get-docker.sh

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' (0)

services: (0)

testapp: (2)

image: site:latest (4)

container_name: testapp (4)

ports:

- "8080:8000" (6)

depends_on: (4)

- db (6)

environment: (4)

- DB_HOST=db (6)

- DB_NAME=testdb

- DB_TYPE=maria

- DB_USER=test

- DB_PASS=P@ssw0rd

- SERVER_PORT=8080

restart: unless-stopped (4)

db: (2)

image: mariadb:10.11 (4)

container_name: db

environment:

MYSQL_ROOT_PASSWORD: P@ssw0rd (6)

MYSQL_DATABASE: testdb

MYSQL_USER: test

MYSQL_PASSWORD: P@ssw0rd

volumes: (4)

- db_data:/var/lib/mysql (6)

restart: unless-stopped (4)

volumes: (0)

db_data: (2)

docker compose up -d или docker compose -f /opt/testapp/docker-compose.yml up -d

если не вышло docker compose -f /opt/testapp/docker-compose.yml up -d

docker ps

apt install tcpdump -y

tcpdump -i any port 8080 -n

На клиенте (HQ-CLI) еще раз обнови страницу в браузере или введи curl -v 192.168.11.2:8080

1. На BR-RTR

ip route add 192.168.10.0/27 via 10.10.10.1
ip route add 192.168.10.32/28 via 10.10.10.1

2. На HQ-RTR добавьте обратный маршрут к сети BR-SRV:

ip route add 192.168.11.0/28 via 10.10.10.2

3. Проверьте маршруты на BR-RTR:

ip route show | grep 192.168.10

Должно показать:

192.168.10.0/27 via 10.10.10.1 dev gre30
192.168.10.32/28 via 10.10.10.1 dev gre30

4. Проверьте маршруты на HQ-RTR:

ip route show | grep 192.168.11

Должно показать:

192.168.11.0/28 via 10.10.10.2 dev gre30

5. Теперь с HQ-CLI проверьте доступность BR-SRV:

ping 192.168.11.2

Если пинг пошёл — открывайте в браузере:

http://192.168.11.2:8080

Задание 7. Разверните веб приложение на сервере HQ-SRV:

apt install -y apache2 mariadb-server php libapache2-mod-php php-mysql php-curl php-json

lsblk

mount /dev/sr0 /mnt

rm /var/www/html/index.html

ls -laR /mnt/ ( в случае если дальше будет ошибки, можно проверить путь)

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

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

chmod 644 /var/www/html/index.php

sudo nano /var/www/html/index.php

$servername = "localhost";

$username = "web";

$password = "P@ssw0rd";

$dbname = "webdb";

sudo mysql -u root

CREATE DATABASE IF NOT EXISTS webdb;

DROP USER IF EXISTS 'web'@'localhost';

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

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

FLUSH PRIVILEGES;

EXIT;

mysql -u root webdb < /mnt/web/dump.sql

mysql -u root -e "USE webdb; SHOW TABLES;"

Проверка входа пользователя web (опционально):

mysql -u web -p -e "SELECT 1;"

Пароль: P@sswOrd

systemctl restart apache2

curl -I http://localhost

Или откройте в браузере:

http://IP-адрес-вашего-сервера/index.php

8. Если снова ошибка 500 — смотрите логи:

tail -30 /var/log/apache2/error.log

в марие сделать

ALTER USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd';
FLUSH PRIVILEGES;
EXIT;
Потом systemctl restart apache2

И на клиенте: http://hq-srv.au-team.irpo

Задание 8 Cтатическую трансляцию портов

На HQ-RTR

iptables -t nat -A PREROUTING -p tcp -d 172.16.70.2 --dport 8080 -j DNAT --to-destination 192.168.10.2:80

iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -A FORWARD -p tcp -d 192.168.10.2 --dport 80 -j ACCEPT

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

На BR-RTR

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 8080 -j DNAT --to 192.168.11.2:8080

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 2026 -j DNAT --to 192.168.11.2:2014

iptables -t nat -A POSTROUTING -d 192.168.11.2 -j MASQUERADE

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

на клиенте

http://172.16.70.2:8080

http://172.16.80.2:8080

Задание 9/10 Настройте веб-сервер nginx как обратный прокси-сервер на ISP и аутентификация на web

sudo apt update
sudo apt install -y nginx apache2-utils
sudo htpasswd -bc /etc/nginx/.htpasswd WEB P@ssw0rd
sudo chmod 640 /etc/nginx/.htpasswd
sudo chown root:www-data /etc/nginx/.htpasswd
sudo rm -f /etc/nginx/sites-enabled/default
sudo nano /etc/nginx/sites-available/proxy.conf
server {
    listen 80;
    server_name web.au-team.irpo;
    location / {
        # Включаем веб-аутентификацию ТОЛЬКО здесь
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
        # Проксируем запрос на внешний IP роутера HQ-RTR и порт проброса 8080
        proxy_pass http://172.16.70.2:8080; 
        # Передача заголовков клиента
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
server {
    listen 80;
    server_name docker.au-team.irpo;
    location / {
        # Здесь строк auth_basic НЕТ, сайт откроется свободно
        # Проксируем запрос на внешний IP роутера BR-RTR и порт проброса 8080
        proxy_pass http://172.16.80.2:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
sudo ln -sf /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/
sudo nginx -t

Если команда пишет syntax is ok и test is successful, то перезапускаем веб-

sudo systemctl restart nginx

на клиенте:

nano /etc/hosts

172.16.70.1    web.au-team.irpo docker.au-team.irpo

🏁 ИТОГОВАЯ ПРОВЕРКА В БРАУЗЕРЕ НА КЛИЕНТЕ

1.             Открываешь на Клиенте адрес http://web.au-team.irpo

o       Браузер сразу запрашивает логин и пароль.

o       Вводишь WEB и P@ssw0rd.

o       Открывается твое приложение с сервера HQ-SRV.

2.             Открываешь на Клиенте адрес http://docker.au-team.irpo

Задание 11 Яндекс Браузер

В лисе написать скачать яндексбраузер для дебиан 12, скачаваем, переходим в папку загрузки. Пкм нажимаем открыть с помощью и там будет установка приложений. ВСЕЕЕЕ

3 МОДУЛЬ

3 ЗАДАНИЕ гре с шифрованием HQ-RTR и BR-RTR:

(на обоих роутерах)

# Удалить Libreswan, если был (конфликтует с StrongSwan)

systemctl stop ipsec 2>/dev/null

apt remove --purge libreswan -y 2>/dev/null

apt update

apt install strongswan strongswan-starter libcharon-extra-plugins -y

# Убедиться, что сервис существует

ls /lib/systemd/system/ | grep strongswan

# Должен быть strongswan-starter.service

На HQ-RTR (172.16.70.2)

cat > /etc/ipsec.conf << 'EOF'

config setup

charondebug="all"

uniqueids=yes

conn gre-psk

authby=secret

left=172.16.70.2

right=172.16.80.2

type=transport

auto=add

keyexchange=ikev2

ike=aes256-sha256-modp2048!

esp=aes256-sha256!

dpdaction=restart

dpddelay=30s

dpdtimeout=120s

EOF

На BR-RTR (172.16.80.2) — зеркально

cat > /etc/ipsec.conf << 'EOF'

config setup

charondebug="all"

uniqueids=yes

conn gre-psk

authby=secret

left=172.16.80.2

right=172.16.70.2

type=transport

auto=add

keyexchange=ikev2

ike=aes256-sha256-modp2048!

esp=aes256-sha256!

dpdaction=restart

dpddelay=30s

dpdtimeout=120s

EOF

Шаг 2. Настройка `/etc/ipsec.secrets` (одинаково на обоих)

echo '172.16.1.2 172.16.80.2 : PSK "P@ssw0rd123"' > /etc/ipsec.secrets

chmod 600 /etc/ipsec.secrets

На ОБОИХ роутерах

systemctl enable strongswan-starter

systemctl restart strongswan-starter

systemctl status strongswan-starter

# На ОДНОМ из роутеров (например, HQ-RTR)

ipsec up gre-psk

Шаг 5. Проверка

# Статус соединения (должен быть ESTABLISHED)

ipsec statusall

# Проверить политики шифрования

ip xfrm state

ip xfrm policy

**Ожидаемый результат:**

Security Associations (1 up, 0 connecting):

gre-psk[1]: ESTABLISHED ...

vtysh -c "show ip ospf neighbor"

### Статус после настройки

Security Associations (1 up, 0 connecting):

gre-psk[1]: ESTABLISHED ... AES_CBC_256/HMAC_SHA2_256_128

Как проверить работу для отчета:

sudo ipsec status

Ты должен увидеть, что соединение gre-tunnel установлено (ESTABLISHED).

1.             Зайди в динамическую маршрутизацию:

sudo vtysh -c "show ip ospf neighbor"

ЗАДАНИЕ 5. Настройте принт-сервер cups на сервере HQ-SRV:

apt install cups cups-pdf -y

systemctl enable --now cups

sudo cupsctl --share-printers --remote-any

systemctl restart cups

lpstat -d

http://192.168.10.2:631 (на этом сайте добавляем любой принтер, там есть пункт разрешить совместный доступ, там ставим галку, после того как добавили в настройках дебиана находим наш принтер и ставим галку "использовать принтер по умолчанию" )

добавить принтер

принять рису и продолжить

Потом вводим логин/пароль (user/root)

Разрешанм совместный доступ

Далее выбираем любой принтер

В настройках потом выбираем раздел принтеры

Разблокировать

Нажимаем добавить принтер и находим свой

Использовать по умолчанию

lpstat -d (проверяет какой принтер по умолчанию)

6 задание Настройка центрального сервера логов (rsyslog) HQ-SRV

sudo apt update

sudo apt install -y rsyslog logrotate tcpdump

sudo nano /etc/rsyslog.conf

Раскомментируй строки для UDP (ВНИМАНИЕ: UDP, а не TCP!)

module(load="imudp")

input(type="imudp" port="514")

в КОНЕЦ файла

$template RemoteLogs,"/opt/%HOSTNAME%/%PROGRAMNAME%.log"

# Фильтр: логи из сети (не от себя) уровнем warning и выше

if ($fromhost-ip != '127.0.0.1' and $syslogseverity >= 4) then {

action(type="omfile" dynaFile="RemoteLogs")

stop

}

# Проверка синтаксиса

sudo rsyslogd -f /etc/rsyslog.conf -N1

sudo systemctl restart rsyslog

sudo ss -tulnp | grep 514

ШАГ 3. Настройка клиентов (HQ-RTR, BR-RTR, BR-SRV)

sudo apt update

sudo apt install -y rsyslog

sudo nano /etc/rsyslog.conf

*.warning @192.168.10.2:514

sudo systemctl restart rsyslog

sudo systemctl status rsyslog

Настройка ротации логов на сервере (HQ-SRV)

sudo nano /etc/logrotate.d/remote-logs

/opt/*/*.log {

weekly

minsize 10M

compress

rotate 4

missingok

notifempty

sharedscripts

postrotate

/usr/lib/rsyslog/rsyslog-rotate

endscript

}

sudo logrotate -d /etc/logrotate.d/remote-logs

Проверка работы

5.1. На клиенте (например, BR-SRV) отправь тест

logger -p daemon.warning "TEST_WARNING_$(date)"

5.2. На сервере проверь результат

ls -la /opt/

# Посмотреть содержимое лога

cat /opt/BR-SRV/*.log

# Или более универсально

find /opt -type f -name "*.log" -exec cat {} \;

## Типичные ошибки и их решение

| Ошибка | Причина | Решение |

|--------|---------|---------|

| `cat: '/opt/BR-SRV/*.log': Нет такого файла` | Логи не пишутся | См. проверки ниже |

| В `ss -tulnp` только `tcp` порт 514 | Включен TCP вместо UDP | Раскомментировать `imudp`, а не `imtcp` |

| `syntax error on token '*'` | Использован `*.warning` в `if` | Заменить на `$syslogseverity >= 4` |

| `tcpdump: command not found` | Не установлен tcpdump | `sudo apt install tcpdump` |

| Пакеты видны в tcpdump, но нет в `/opt/` | Ошибка в конфиге rsyslog | Проверить `sudo rsyslogd -f /etc/rsyslog.conf -N1` |

## Полезные команды диагностики

# Проверка, слушает ли сервер UDP 514

sudo ss -tulnp | grep 514

# Просмотр пакетов в реальном времени (на сервере)

sudo tcpdump -i any port 514 -n

# Проверка синтаксиса конфига rsyslog

sudo rsyslogd -f /etc/rsyslog.conf -N1

# Просмотр ошибок rsyslog

sudo journalctl -u rsyslog -n 50 --no-pager | grep -i error

# Проверка отправки с клиента напрямую через netcat

echo "TEST" | nc -u <IP_сервера> 514

# 📋 МЕТОДИЧКА: Задание 3.8 — Инвентаризация машин через Ansible

## 🎯 Цель задания

Настроить Ansible на сервере **BR-SRV** для сбора информации (имя хоста и IP-адрес) с машин **HQ-SRV** и **HQ-CLI**. Результат сохраняется в YAML-файлы в директории `/etc/ansible/PC-INFO/`.

## 🔧 ПОШАГОВАЯ НАСТРОЙКА

### Шаг 1. Убедись, что ты на правильной машине

**Важно!** Все действия выполняются на **BR-SRV**, а не на BR-RTR!

```bash

# Проверь, где ты находишься

hostname

# Должно показать: br-srv

```

Если ты на BR-RTR — выйди и подключись к BR-SRV:

```bash

exit

ssh -p 2014 sshuser@192.168.11.2

```

---

### Шаг 2. Проверь / создай файл инвентаря

```bash

cat /etc/ansible/hosts

```

Если файла нет или он пустой — создай:

```bash

nano /etc/ansible/hosts

```

Вставь содержимое:

```ini

[all:vars]

ansible_password=P@ssw0rd

ansible_port=2026

[HQ-SRV]

192.168.10.2 ansible_user=sshuser

[HQ-CLI]

192.168.10.34 ansible_user=sshuser

### Шаг 3. Проверь подключение к хостам

```bash

# Пинг до HQ-CLI

ping 192.168.10.34 -c 2

# Проверка SSH до HQ-CLI

ssh -p 2014 sshuser@192.168.10.34

```

Если пинг не идёт — добавь маршруты на **BR-RTR**:

```bash

# На BR-RTR (не на BR-SRV!)

ip route add 192.168.10.0/27 via 10.10.10.1

ip route add 192.168.10.32/28 via 10.10.10.1

nano /etc/ansible/get_hostname_address.yml

Вставь содержимое:

```yaml

- name: Инвентаризация машин(0 пробелов)

hosts: HQ-SRV, HQ-CLI(2 пробела)

tasks:(2 пробела)

- name: Получение данных с хоста(4 пробела)

delegate_to: localhost(6 пробелов)

copy:(6 пробелов)

dest: "/etc/ansible/PC-INFO/{{ ansible_hostname }}.yml"(8 пробелов)

content: |(8 пробелов)

Hostname: {{ ansible_hostname }}(10 пробелов)

IP_Address: {{ ansible_default_ipv4_address }}(10 пробелов)```

mkdir -p /etc/ansible/PC-INFO

cd /etc/ansible

ansible-playbook get_hostname_address.yml

#### ✅ Ожидаемый успешный вывод:

PLAY [Инвентаризация машин] ****************************************************

TASK [Gathering Facts] *********************************************************

ok: [HQ-SRV]

ok: [HQ-CLI]

TASK [Получение данных с хоста] ************************************************

changed: [HQ-SRV -> localhost]

changed: [HQ-CLI -> localhost]

PLAY RECAP *********************************************************************

HQ-CLI : ok=2 changed=1 unreachable=0 failed=0

HQ-SRV : ok=2 changed=1 unreachable=0 failed=0

```

### Шаг 7. Проверь результат

ls -la /etc/ansible/PC-INFO/

cat /etc/ansible/PC-INFO/hq-srv.yml

cat /etc/ansible/PC-INFO/hq-cli.yml

Хорошо, давай настроим **Fail2Ban** на **HQ-SRV** под твои параметры, согласно требованию задания 9 из 3 модуля.

## Настройка Fail2Ban на HQ-SRV

apt update

apt install fail2ban iptables -y

2. Создай конфигурационный файл

nano /etc/fail2ban/jail.d/sshd.local

3. Вставь содержимое (с учётом порта 2014):

[DEFAULT]

bantime = 60

maxretry = 3

findtime = 60

backend = systemd

[sshd]

enabled = true

port = 2014

logpath = %(sshd_log)s

4. Перезапусти Fail2Ban

systemctl restart fail2ban

systemctl enable fail2ban

5. Проверь статус

fail2ban-client status sshd

Ожидаемый вывод:**

Status for the jail: sshd

|- Filter

| |- Currently failed: 0

| |- Total failed: 0

| `- File list: /var/log/auth.log

`- Actions

|- Currently banned: 0

|- Total banned: 0

`- Banned IP list:

6. Проверь, что Fail2Ban слушает порт 2014

fail2ban-client get sshd port

Должно показать: `2014`

### 7. Проверка работы (тест блокировки)

С **другого устройства** (например, с HQ-CLI или BR-SRV) выполни несколько неправильных SSH-подключений:

# 4 раза с неправильным паролем

ssh -p 2014 sshuser@192.168.10.2

# Введи неправильный пароль 4 раза

После 3 неудачных попыток проверить на HQ-SRV

# Статус блокировок

fail2ban-client status sshd

Снять бан (если нужно):

fail2ban-client set sshd unbanip 192.168.x.x