---
# System prepended metadata

title: Инструкция к заданиям

---

# Инструкция к заданиям   
# Настройка VirtualBox   
## 1. Сетевые настройки ВМ   
- Позволяет ВМ получать IP-адрес в той же сети, что и основной компьютер (на котором мы эту ВМ запускаем).   
- Можно подключаться к ним с хоста (нашего рабочего компа, на котором их запускаем) напрямую будто это внешние серверы.   
- ВМ смогут видеть друг друга (будто они в одной локальной сети).   
- Для работы нужен **физический сетевой адаптер** (например, Wi-Fi или Ethernet).   
   
**Как настроить:**   
1. Открыть настройки ВМ → "Сеть" (Network).   
2. Включить **Адаптер 1** и выбрать **Сетевой мост (Bridged Adapter)**.   
3. Убедиться, что выбрано правильное сетевое устройство (Wi-Fi или Ethernet).   
4. Запустить ВМ и проверить IP-адрес с помощью `ip a` (Linux) или `ipconfig` (Windows).   
   
💡 Этот вариант удобен, если хочешь, чтобы ВМ была видна в твоей локальной сети (например, к ней можно было подключаться по SSH с любого устройства в сети).   
 --- 
## 2. Настройки дисков   
- **Ubuntu и Rocky Linux**: Минимум **20 ГБ** диска.   
- **Windows 10**: Лучше выделить **40 ГБ+**, так как система занимает много места.   
- Использовал **динамический диск** (VDI) в VirtualBox, чтобы не занимать место сразу.   
 --- 
   
## 3. Аппаратные настройки   
### Процессор   
- Для Linux выделил 1 ядро на VM (так как они серверные все).   
- Для Windows 10 выделил 2** **ядра.   
   
### ОЗУ   
- **Ubuntu Server / Rocky Linux**: 2 ГБ   
- **Windows 10**: 4 ГБ   
   
## Доступы   
Я установил 2 VM с Ubuntu (ubuntu1 и ubuntu2) на обоих логин: `user`, пароль: `mmm`.   
Есть VM rockylinux, на ней логин: `rockylinux`, пароль: `rockylinux`.   
Винда (10 Pro), логин: `user`, пароль: `mmm`.   
# Установка вспомогательных утилит   
## nano   
В Ubuntu и RockyLinux устанавливаем утилиту nano (текстовый консольный редактор, чтобы было удобно править конфиги):   
```
# Ubuntu:
sudo apt install -y nano

# RockyLinux:
sudo dnf install -y nano

```
## docker   
В ubuntu1 (где будем разворачивать Wazuh) установим docker - это вспомогательный инструмент, который поможет быстро развернуть Wazuh.   
На самом деле он установился во время устновки самой Ubuntu - я выбрал его в процессе:   
![Selection\_001.png](https://i.imgur.com/xTfUXXA.png)    
   
Но если что, то его можно поставить и самостоятельно по инструкции: [https://docs.docker.com/engine/install/ubuntu/](https://docs.docker.com/engine/install/ubuntu/)    
Для удобства я еще выполнил пост-инсталяционные инструкции (чтобы удобнее было работать в docker): [https://docs.docker.com/engine/install/linux-postinstall/](https://docs.docker.com/engine/install/linux-postinstall/)    
# Настройка удобного сетевого взаимодействия   
Мы хотим чтобы каждая развернутая VM "видела" другую по сети не по голому IP адресу, а по имени, то для этого можно:   
На каждой VM (кроме Windows) меняем файл `/etc/hosts`  - добавляем туда на новой строчке пару (адрес и имя другой VM), например:   
```
ubuntu1 192.168.0.179
```
А чтобы узнать IP адрес VM, нужно в ней выполнить команду `ip a`  и посмотреть IP адрес в интерфейсе `enp0s3` .   
Чтобы проверить, что все корректно, можно выполнить команду `ping ubuntu1`    
# Работа с Wazuh   
Мы будем устанавливать его на VM ubuntu1 с помощью docker. У него есть возможность установить на 2 VM (multi-node deployment), но это более сложная схема, и так как **в задании явно не оговорено**, в каком режиме разворачивать - лучше сделать по-простому.   
Все делается по инструкции с официального сайта: [https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html#single-node-deployment](https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html#single-node-deployment)    
## Запуск сервера   
После перезагрузки VM ubuntu2 сервер нужно будет снова запускать, делать это нужно так:   
```
cd /home/user/wazuh-docker/single-node 
docker-compose up -d
```
## Проверка работы   
После запуска я поверяю ip адрес ubuntu1 через команду `ip a`  и вижу, что у меня это 192.168.0.179, поэтому я в браузере у себя на коме иду по ссылке: [https://192.168.0.179:443/](https://192.168.0.179) и попадаю на страницу авторизации, ввожу логин и пароль (`admin` и `SecretPassword` - с такими настройками по умолчанию сервер Wazuh запускался судя по docker-compose.yml конфигурации, из которой мы его запускали).   
![Screenshot from 2025-01-30 14-23-00.png](https://i.imgur.com/DT8UbZX.png)    
## Установка Wazuh-агентов   
На VM rockylinux я установил агента по такой инструкции: [https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-linux.html](https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-linux.html)    
На VM windows: [https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-windows.html](https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-windows.html)    
# Работа с SSH   
Для начала нужно ставим SSH-сервер на VM ubuntu2 и rockylinux.   
## Установка SSH-сервера на Ubuntu и Rocky Linux   
### 🟢 На Ubuntu   
1. **Обновите пакетный менеджер**:   
    ```
sudo apt update


```
2. **Установите OpenSSH-сервер**:   
    ```
sudo apt install -y openssh-server


```
3. **Проверьте статус службы SSH**:   
    ```
sudo systemctl status ssh


```
    Если сервер работает, вы увидите строку `Active: active (running)`. Если нет, запустите его вручную:   
    ```
sudo systemctl start ssh


```
4. **Разрешите автозапуск при загрузке**:   
    ```
sudo systemctl enable ssh


```
5. **Открытие порта в брандмауэре (если используется UFW)**:   
    ```
sudo ufw allow OpenSSH
sudo ufw enable


```
 --- 
   
### 🔴 На Rocky Linux (или CentOS, RHEL)   
1. **Обновите пакетный менеджер**:   
    ```
sudo dnf update -y


```
2. **Установите OpenSSH-сервер**:   
    ```
sudo dnf install -y openssh-server


```
3. **Запустите службу SSH**:   
    ```
sudo systemctl start sshd


```
4. **Разрешите автозапуск при загрузке**:   
    ```
sudo systemctl enable sshd


```
5. **Открытие порта в брандмауэре (если используется firewalld)**:   
    ```
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload


```
 --- 
   
Теперь необходимо на совем компе (откуда будем удаленно по SSH подключаться к серверам) сгенерировать SSH ключи   
Чтобы настроить доступ по SSH с помощью ключей и отключить авторизацию по логину и паролю на хостах Ubuntu и Rocky Linux, следуйте этим шагам:   
### 1. Создание SSH-ключей   
На локальной машине (клиент):   
1. Откройте терминал (если на рабочем компе стоит Windows, то можно использвоать WSL: [https://learn.microsoft.com/en-us/windows/wsl/install](https://learn.microsoft.com/en-us/windows/wsl/install) ).   
2. Создайте пару SSH-ключей с помощью команды:   
    ```
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"


```
    Следуйте инструкциям, чтобы сохранить ключи в стандартном месте (обычно это `~/.ssh/id\_rsa`) и задайте пароль для ключа (если нужно).   
3. После этого на вашей локальной машине будет два файла:   
    - `~/.ssh/id\_rsa` — приватный ключ (не передавайте его никому).   
    - `~/.ssh/id\_rsa.pub` — публичный ключ.   
   
### 2. Копирование публичного ключа на удаленный хост   
На удаленном сервере (например, Ubuntu или Rocky Linux):   
1. Скопируйте ваш публичный ключ на сервер с помощью команды:   
    ```
ssh-copy-id username@remote_host


```
    Замените `username` на имя пользователя на сервере, а `remote\_host` на IP-адрес виртуальной машины (узнаем его через команду `ip a` ).   
    Если команды `ssh-copy-id` нет на сервере, можно вручную добавить ключ:   
    1. Скопируйте содержимое файла `~/.ssh/id\_rsa.pub`.   
    2. На сервере создайте директорию `~/.ssh` (если она еще не существует):   
        ```
mkdir -p ~/.ssh
chmod 700 ~/.ssh


```
    3. Добавьте публичный ключ в файл `~/.ssh/authorized\_keys`:   
        ```
echo "your_public_key" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys


```
   
### 3. Отключение авторизации по логину и паролю   
Теперь нужно отключить авторизацию по паролю на сервере.   
На удаленном сервере:   
1. Отредактируйте конфигурационный файл SSH:   
    ```
sudo nano /etc/ssh/sshd_config


```
2. Найдите или добавьте следующие строки:   
    ```
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no


```
    Эти настройки отключат возможность авторизации через пароль.   
3. После внесения изменений, перезапустите службу SSH:   
    ```
sudo systemctl restart sshd


```
   
### 4. Проверка   
Теперь попробуйте подключиться к серверу с использованием SSH-ключа:   
```
ssh username@remote_host


```
Если все сделано правильно, вы подключитесь без необходимости вводить пароль. Если при этом подключение не удается, проверьте, что ваш публичный ключ правильно установлен в файле `~/.ssh/authorized\_keys`, и что настройки в файле `/etc/ssh/sshd\_config` верны.   
Чтобы проверить, что по логину и паролю теперь нельзя подключиться можно выполнить команду:   
```
ssh -o PubkeyAuthentication=no username@remote_host # должна завершиться ошибкой
```
# Работа с учетными записями   
Чтобы создать пользователей с разными уровнями прав в системе Ubuntu или Rocky Linux, выполните следующие шаги.   
 --- 
## 1. Создание обычных пользователей   
Создадим трёх пользователей:   
- `adminuser` — с правами `sudo`   
- `regularuser` — обычный пользователь без `sudo`   
- `restricteduser` — пользователь с ограниченными правами (без возможности входа в систему)   
   
### Создать пользователей   
Выполните следующие команды:   
```
sudo useradd -m -s /bin/bash adminuser
sudo useradd -m -s /bin/bash regularuser
sudo useradd -m -s /bin/bash restricteduser


```
Параметры:   
- `-m` — создаёт домашнюю директорию ( `/home/username`).   
- `-s /bin/bash` — назначает оболочку Bash.   
   
Задайте пароли для каждого пользователя:   
```
sudo passwd adminuser
sudo passwd regularuser
sudo passwd restricteduser


```
 --- 
## 2. Назначение привилегий   
### 2.1 Дать adminuser права sudo   
Добавим его в группу `sudo` (для Ubuntu) или `wheel` (для Rocky Linux):   
```
sudo usermod -aG sudo adminuser   # Для Ubuntu
sudo usermod -aG wheel adminuser  # Для Rocky Linux


```
Проверить группы можно командой:   
```
groups adminuser


```
 --- 
### 2.2 Оставить regularuser без sudo   
Этот пользователь остаётся обычным и не имеет `sudo`.   
 --- 
### 2.3 Ограничить restricteduser   
Чтобы запретить этому пользователю вход в систему, можно:   
- Отключить его пароль:   
    ```
sudo passwd -l restricteduser


```
- Изменить оболочку на `/usr/sbin/nologin`, чтобы запретить ему доступ в терминал:   
    ```
sudo usermod -s /usr/sbin/nologin restricteduser


```
   
Проверить оболочку можно командой:   
```
getent passwd restricteduser


```
 --- 
## 3. Проверка пользователей   
После создания пользователей можно протестировать их:   
1. Выйдите из текущей сессии и попробуйте войти под разными пользователями:   
    ```
su - adminuser


```
2. Попробуйте выполнить команду `sudo ls /root` — должно запросить пароль `adminuser`.   
3. Войдите под `regularuser` и попробуйте `sudo ls /root` — должно отказать в доступе.   
4. Попробуйте войти под `restricteduser` ( `su - restricteduser`) — должно отказать в доступе.   
   
# Работа с веб-сервером   
Чтобы развернуть веб-сервер Nginx на виртуальной машине с Ubuntu (я ставил на ubuntu2) и настроить доступ только по порту 443 (HTTPS), следуйте этим шагам:   
### 1. Обновление системы   
```
sudo apt update && sudo apt upgrade -y


```
### 2. Установка Nginx   
```
sudo apt install nginx -y


```
### 3. Открытие порта 443 в брандмауэре   
```
sudo ufw allow 443/tcp
sudo ufw enable
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT


```
(Отключите другие порты, если требуется: *`sudo ufw deny 80/tcp` закрывает HTTP)*   
### 4. Настройка SSL-сертификата   
Если у вас нет домена, используйте самоподписанный сертификат:   
```
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ssl/private/nginx-selfsigned.key \
  -out /etc/ssl/certs/nginx-selfsigned.crt


```
Создайте файл настроек для SSL:   
```
sudo nano /etc/nginx/snippets/self-signed.conf


```
Вставьте:   
```
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;


```
### 5. Настройка Nginx   
Открываем конфигурацию:   
```
sudo nano /etc/nginx/sites-available/default


```
Изменяем её:   
```
server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://$host$request_uri;
}


```
*(Первый блок отвечает за HTTPS, второй — перенаправляет HTTP на HTTPS)*   
### 6. Перезапуск Nginx   
```
sudo nginx -t
sudo systemctl restart nginx


```
### 7. Проверка   
- Перейдите на `https://ubuntu2:443/`   
- Убедитесь, что `http://ubuntu2:80/` перенаправляется на HTTPS или вообще недоступен (`nc -v ubuntu2 80`).   
   
Теперь ваш сервер доступен только по **443 порту**.    
Вместо ubuntu2 я использовал его IP адрес (смотрим его через `ip a` )   
# Работа с iptables   
### 🔒 Полная настройка блокировки ICMP и разрешения только необходимых портов и протоколов для Wazuh и Dr.Web через iptables   
 --- 
## 1️⃣ Блокируем ICMP (ping) на всех Linux-хостах   
Для полной блокировки ICMP (ping) на сервере:   
```
sudo iptables -A INPUT -p icmp -j DROP
sudo iptables -A OUTPUT -p icmp -j DROP


```
После этого **пинги перестанут работать**, проверим:   
```
ping google.com


```
Если ответов нет, значит ICMP успешно заблокирован.   
⚠️ **Примечание**: Иногда отключение ICMP может затруднить диагностику сети.   
 --- 
## 2️⃣ Настраиваем iptables для Wazuh   
### 📌 Открываем только нужные порты:   
Для Wazuh требуется разрешить:   
|        Сервис |         Протокол |     Порт |                                                           Описание |
|:--------------|:-----------------|:---------|:-------------------------------------------------------------------|
|   Wazuh Agent |              TCP |     1514 |                            Для связи с сервером (может быть и UDP) |
|  Wazuh Web UI |              TCP |    55000 |                                                  Веб-интерфейс API |
| ElasticSearch |              TCP |     9200 |                                              Если используется ELK |
|        Kibana |              TCP |     5601 |                                                Веб-интерфейс логов |

### 🛠 Настраиваем iptables для Wazuh   
```
sudo iptables -A INPUT -p tcp --dport 1514 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 55000 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9200 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5601 -j ACCEPT


```
 --- 
## 3️⃣ Настраиваем iptables для Dr.Web   
Dr.Web может использовать следующие порты:   
|        Сервис |         Протокол |     Порт |                              Описание |
|:--------------|:-----------------|:---------|:--------------------------------------|
| Dr.Web Server |              TCP |     2193 |                   Управление сервером |
|  Dr.Web Agent |              TCP |     9080 |                      Связь с агентами |
| Dr.Web Update |              TCP |     2210 |                            Обновления |
|         WebUI |              TCP |     8443 |                         Веб-интерфейс |

### 🛠 Добавляем правила для Dr.Web   
```
sudo iptables -A INPUT -p tcp --dport 2193 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9080 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2210 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8443 -j ACCEPT


```
 --- 
## 4️⃣ Блокируем всё остальное   
После настройки исключений **закрываем все остальные порты**:   
```
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT  # Разрешаем исходящие соединения (если нужно)


```
 --- 
## 5️⃣ Проверяем работоспособность   
1. 🔍 П**роверяем, что ICMP (ping) заблокирован   
    ```
ping google.com


```
    ✅ Ожидаемый результат: **100% packet loss (без ответа)**.   
2. 🔎 П**роверяем доступность Wazuh   
    ```
nc -zv YOUR_WAZUH_SERVER_IP 1514
nc -zv YOUR_WAZUH_SERVER_IP 55000
nc -zv YOUR_WAZUH_SERVER_IP 9200
nc -zv YOUR_WAZUH_SERVER_IP 5601


```
    ✅ Ожидаемый результат: **Successful connection**   
3. 🔎 П**роверяем Dr.Web   
    ```
nc -zv YOUR_DRWEB_SERVER_IP 2193
nc -zv YOUR_DRWEB_SERVER_IP 9080
nc -zv YOUR_DRWEB_SERVER_IP 2210
nc -zv YOUR_DRWEB_SERVER_IP 8443


```
    ✅ Ожидаемый результат: **Successful connection**   
4. 🚫 П**роверяем, что другие порты закрыты   
    ```
nc -zv YOUR_SERVER_IP 22


```
    ✅ Ожидаемый результат: **Connection refused**   
 --- 
   
## 6️⃣ Сохраняем правила iptables   
Чтобы правила не сбрасывались после перезагрузки:   
```
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
sudo netfilter-persistent reload


```
Если сервер на `RHEL/CentOS`:   
```
sudo service iptables save


```
 --- 
# Работа с антивирусом   
Я не нашел, где можно скачать сервер без ключа, поэтому возиться с ним не стал, но вот инструкция, как это сделать: [https://download.geo.drweb.com/pub/drweb/esuite/13.0.0/documentation/html/ru/installation\_manual/index.html?installation\_server\_unix.htm](https://download.geo.drweb.com/pub/drweb/esuite/13.0.0/documentation/html/ru/installation_manual/index.html?installation_server_unix.htm)    
   
