Files
linux_intro/labs/lab4/report.typ
2025-10-07 15:20:38 +03:00

256 lines
6.9 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#set text(size: 1.3em)
#set page(footer: context {
if counter(page).get().first() > 1 [
#align(center)[
#counter(page).display("1")
]
]
})
#show raw.where(block: false): box.with(
fill: luma(240),
inset: (x: 3pt, y: 0pt),
outset: (y: 3pt),
radius: 2pt,
)
#show raw.where(block: true): block.with(
fill: luma(240),
inset: 10pt,
radius: 4pt,
)
// title
#align(center)[Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики]
\
\
\
#align(center)[Факультет инфокоммуникационных технологий]
#align(center)[Направление подготовки 11.03.02]
\
\
#align(center)[Лабораторная работа №4]
#align(center)[Элементы безопасности в Linux]
\
\
\ //#align(center)[Вариант 19]
\
\
\
\
\
\
\
#align(right)[Выполнил:]
#align(right)[Дощенников Никита Андреевич]
#align(right)[Группа: К3221]
#align(right)[Проверил:]
#align(right)[Береснев Артем Дмитриевич]
\
\
#align(center)[Санкт-Петербург]
#align(center)[2025]
#pagebreak()
=== Цель работы:
Получить практические навыки работы с сетевой подсистемой в Linux, научится управлять пользователями, правами на файлы и каталоги, научиться
настраивать сетевые интерфейсы, NAT и настраивать ssh.
=== Часть 1. Подготовка конфигурации.
У себя на машине я создал новую виртуальную сеть:
```bash
virsh net-define /tmp/intnet.xml
virsh net-autostart intnet
virsh net-start intnet
```
Содержание файла `/tmp/intnet.xml`:
```xml
<network>
<name>intnet</name>
<forward mode='none'/>
</network>
```
К первой машине я добавил дополнительный интерфейс, подключенный к сети intnet:
```bash
virsh attach-interface --domain ubuntu24.04 --type network --source intnet --model virtio --config --live
```
Вторую машину я полностью перевел во внутреннюю сеть:
```bash
virsh detach-interface --domain ubuntu24.04-clone --type network --mac 52:54:00:76:1f:db --config --live
virsh attach-interface --domain ubuntu24.04-clone --type network --source intnet --model virtio --config --live
```
#align(center)[#image("assets/1.png")]
#align(center)[#image("assets/2.png")]
На `c7-1`:
#align(center)[#image("assets/3.png")]
#align(center)[#image("assets/5.png")]
#align(center)[#image("assets/6.png")]
#align(center)[#image("assets/8.png")]
На `c7-2`:
#align(center)[#image("assets/4.png")]
#align(center)[#image("assets/7.png")]
#align(center)[#image("assets/9.png")]
=== Часть 2. Создание пользователей и настройка OpenSSH Server (sshd).
Я создал пользователя на каждой машине:
#align(center)[#image("assets/10.png")]
#align(center)[#image("assets/11.png")]
Затем я настроил `ssh` на обеих машинах:
#align(center)[#image("assets/12.png")]
И перезапустил daemon:
#align(center)[#image("assets/13.png")]
Все те же действия я проделал на второй машине.
Попробовал подключиться с `c7-1` на `c7-2`:
#align(center)[#image("assets/14.png")]
=== Часть 3. Подключение к виртуальной машине c7-1 по ssh через NAT VirtualBox.
У себя на машине:
#align(center)[#image("assets/15.png")]
#align(center)[#image("assets/16.png")]
#align(center)[#image("assets/17.png")]
Копирование файла с `c7-2` на `c7-1`:
#align(center)[#image("assets/18.png")]
Копирование с `c7-2` на `c7-1`:
#align(center)[#image("assets/19.png")]
=== Часть 4. Установка и настройка NAT в iptables.
Я установил `iptables`:
#align(center)[#image("assets/20.png")]
Настроил клиентский NAT, то есть настроил связь между `10.0.0.0/24` и `enp1s0` через роутер `c7-1`.
#align(center)[#image("assets/21.png")]
Затем я разрешил форвардинг трафика на `c7-1`:
#align(center)[#image("assets/22.png")]
После этого я проверил работу интернета с `c7-2`:
#align(center)[#image("assets/23.png")]
Я настроил проброс порта:
#align(center)[#image("assets/24.png")]
На `c7-1`:
#align(center)[#image("assets/25.png")]
Локально:
#align(center)[#image("assets/26.png")]
Текущие правила:
#align(center)[#image("assets/27.png")]
Настройки не сбрасываются после перезагрузки:
#align(center)[#image("assets/28.png")]
=== Часть 5. Настройка прав на файлы и каталоги.
Я создал скрипт `mkuser.sh`:
```bash
#!/usr/bin/env bash
set -euo pipefail
count="${1:?}"
start="${2:?}"
for ((i=0;i<count;i++)); do
n=$((start+i))
u="u${n}"
p="DerParol${n}"
id -u "$u" >/dev/null 2>&1 || adduser --disabled-password --gecos "" "$u"
echo "${u}:${p}" | chpasswd
done
```
#align(center)[#image("assets/29.png")]
#align(center)[#image("assets/30.png")]
Затем я создал группу:
#align(center)[#image("assets/31.png")]
Членам группы я выдал полный доступ, а остальным только чтение:
#align(center)[#image("assets/32.png")]
#align(center)[#image("assets/33.png")]
Проверим:
#align(center)[#image("assets/34.png")]
Я сделал так, чтобы в `/DATA/sec1` любой мог писать, но удалять - только свои файлы:
#align(center)[#image("assets/35.png")]
Проверим:
#align(center)[#image("assets/36.png")]
`/DATA/sec2` настроен на полный доступ для спец. пользователя, для пользователей `uN` только чтение, для прочих нельзя.
#align(center)[#image("assets/37.png")]
Проверим:
#align(center)[#image("assets/38.png")]
В `/DATA/sec3` скопировал `nano` и любой пользователь смог изменять с помощью его файлы в нем.
#align(center)[#image("assets/39.png")]
Проверим:
#align(center)[#image("assets/40.png")]
#align(center)[#image("assets/41.png")]
Права:
#align(center)[#image("assets/42.png")]
=== Часть 6. Настройка аутентификации по ключу.
=== Часть 7. Sudo.
=== Часть 8. Получение информации о пользователях.