# Практическая работа №*. Развертывание сервера на базе Debian 11
###### tags: `Организация сетевой безопасности`
---
::: spoiler 1. Установка Debian 11
### Установка serverPRO

> `lsb_release`
> `cat /etc/debian_version`
### Настройка serverPRO и установка вспомогательного ПО
> `sudo apt install sudo lshw hwinfo lsscsi inxi sysstat htop ssh lvm2 mdadm samba smbclient iptables fail2ban ipset chrony tripwire rsync lynis auditd scalpel nmap selinux-basics selinux-policy-default libpam-cracklib quota krb5-kdc krb5-admin-server logwatch aide dump neofetch -y`
> `usermod -aG sudo alku`
### Вывод информации об установленной системе

> `neofetch`
---
### Установка clientPRO

> `lsb_release`
> `cat /etc/debian_version`
### Настройка clientPRO и установка вспомогательного ПО
> `sudo apt install sudo neofetch smbclient chrony krb5-user libpam-ccreds libpam-krb5 -y`
> `usermod -aG sudo alku`
### Вывод информации об установленной системе

> `neofetch`
> `ip -c -br a`
:::
::: spoiler 2. Получение перечня оборудования в системе и подробной информации о каждом компоненте serverPRO
## serverPRO
### Вывод списка аппаратных устройств

> `sudo lshw -short`
### Вывод информации об аппаратуре компьютера

> `sudo hwinfo`
### Вывод информации о процессоре и его составляющих

> `sudo lscpu`
### Вывод информации о шинах PCI и устройствах, которые к ним подключены

> `sudo lspci`
### Вывод информации об устройствах scsi/sata (жесткие диски/оптические приводы)

> `sudo lsscsi`
### Вывод информации о контроллерах usb и подключенным к ним устройствам

> `sudo lsusb`
### Вывод информации об аппаратном обеспечении в читаемом виде

> `sudo inxi -Fx`
### Вывод информации о блочных устройствах

> `sudo lsblk`
### Вывод информации о разделах, их точеках монтирования и свободном месте

> `sudo df -h`
### Вывод информации о файлах /proc (конфигурации и аппаратное обеспечение)

> `sudo cat /proc/cpuinfo`

> `sudo cat /proc/meminfo`

> `sudo cat /proc/verison`

> `sudo cat /proc/partitions`
:::
::: spoiler 3. Сбор максимальной информации о дистрибутиве утилитами df, du, free, iostat, mpstat, vmstat, w, htop
## df
### Отчет о доступном и используемом дисковом пространстве в читаемом режиме с указанием типа файловой системы и включением итога обо всей ОС

> `df -a -h -T --total`
---
## du
### Отчет о занятом файлами месте на диске в читаемом режиме и включением итога по всему разделу

> `du -a -h --max-depth=1 /`
---
## free
### Отчет о распределении физической памяти и памяти подкачки, а также о свободной и используемой памяти в читаемом режиме

> `free -h -w -t`
---
## iostat
### Отчет по статисктике процессора и статистике I/O для устройств и разделов в читаемом режиме

> `iostat -h -x`
---
## mpstat
### Отчет по статистике, связанной с работой всех процессоров/ядер

> `mpstat -P ALL`
---
## vmstat
### Отчет о распределении виртуальной памяти и памяти подкачки, а также о свободной и используемой памяти в формате таблицы

> `vmstat -s`
---
## w
### Отчет о пользователе и о его действиях

> `w`
---
## htop
### Интерактивный отчет о процессах системы

> `htop`
:::
::: spoiler 4. Выделение двух жестких дисков
### Вывод информации об установленной системе
#### Добавление дисков в VMware

#### Просмотр подключенных устройств

> `sudo fdisk -l`
:::
::: spoiler 5. Разбиение дисков на логические разделы с монтированием к директориям
## serverPRO
### Проверка подключения двух дополнительных дисков и их доступности в системе

> `sudo fdisk -l`
### Инициализация дисков для дальнейшего использования LVM

> `sudo pvcreate /dev/sd{b,c}`
### Проверка, что данные диски могут использоваться LVM

> `sudo pvdisplay`
### Создание группы томов через объединение ранее помеченных дисков

> `sudo vgcreate test /dev/sd{b,c}`
### Проверка создания группы томов

> `sudo vgdisplay`
### Создание логических томов определенных размеров

> `sudo lgcreate -L 4G test`
> `sudo lgcreate -L 2G test`
### Вывод информации о логических томах

> `sudo lvdisplay`
### Создание файловой системы на логических томах

> `sudo mkfs.ext4 /dev/test/lvol0`
> `sudo mkfs.ext4 /dev/test/lvol1`
### Создание директорий для монтирования к ним логических томов

> `sudo mkdir /home/lvol0`
> `sudo mkdir /home/lvol1`
### Добавление монтирования логических томов в процесс загрузки системы

> `/dev/test/lvol0 /home/lvol0 ext4 defauts 1 2`
> `/dev/test/lvol1 /home/lvol1 ext4 defauts 1 2`
### Проверка монтирования логических томов

> `sudo mount -a`
> `dh -h`
> `sudo lsblk`
:::
::: spoiler 6. Добавление жестких дисков и организация RAID1
## serverPRO
### Создание дополнительных дисков

### Создание раздела /dev/sdd1

> `sudo fdisk /dev/sdd`
### Создание раздела /dev/sde1

> `sudo fdisk /dev/sde`
### Создание массива RAID1 при помощи mdadm

> `sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1`
### Назначение файловой системы на RAID1

> `sudo mkfs.ext4 /dev/dm1`
### Создание директории и монтирование к ней RAID1, проверка на скорость записи и чтения

> `sudo mkdir /home/raid1`
> `sudo mount /dev/dm1 /home/raid1`
> `sudo dd if=/dev/zero of=/home/raid1/file.txt bs=1G count=1`
### Добавление монтирования RAID1 в процесс загрузки системы

> `sudo nano /etc/fstab`
### Проверка монтирования RAID1

> `sudo mount -a`
> `sudo df -h`
:::
::: spoiler 7. Настройка статического интерфейса
### serverPRO. Файл конфигурации и проверка настройки интерфейса

---
### clientPRO. Файл конфигурации, проверка настройки интерфейса и связанности с serverPRO

:::
::: spoiler 8. Организация синхронизации времени с помощью Chrony
### Проверка статуса сервиса chrony

### Изменение конфигурационного файла /etc/chrony/chrony.conf

### Просмотр ntp-серверов и синхронизация времени

> Есть два времени: локальное и глобальное (uefi/bios). При загрузке системы локальное время берется из глобавльного, затем при синхронизации с ntp/chrony серверами локальное время меняется (utc без timezone), добавляется разница временных зон и присваивается в локальное. Глобальное время также меняется.
:::
::: spoiler 9. Выключение компьютера по времени с предупреждением пользователей
### Выключение через 10 минут с предупреждающим сообщением

### Сообщение удаленным пользоватетем

### Выключение в определенное время с предупреждающим сообщением

### Сообщение удаленным пользоватетем

:::
::: spoiler 10. Организация выключения компьютера на ночь
### Планирование выключения на ночь с предупреждением пользователей

:::
::: spoiler 11. Организация включения компьютера по рассписанию с помощью UEFI
### Организовать автозапуск виртуальной машины можно только из гипервизора. Симитировать можно программой rtcwake.

> `sudo rtcwake -m on -s 60`

> `date +%s -d "2022-12-12 8:00"`
> `sudo rtcwake -m off -t 1670832000`
:::
::: spoiler 12. Проверка наличия systemd
### Проверка местоположения systemd

### Проверка табуляции systemd

:::
::: spoiler 13. Просмотр всех установленных служб
### Просмотр всех установленных служб

> `sudo systemctl list-unit-files --type=service`
:::
::: spoiler 14. Выяснение длительности загрузки системы с помощью systemd
### Анализ потраченного времени при загрузке системы с целью выявить сервис, затрачивающий слишком много времени

> `sudo systemd-analyze blame`

> `sudo systemd-analyze critical-chain`
:::
::: spoiler 15. Определение UID и GID
### Определение UID и GID пользователя с помомoщью id

> `id -u`
> `id -g`
:::
::: spoiler 16. Создание системного пользователя без домашнего каталога и оболочки входа
### Создание системного пользователя без домашнего каталога и оболочки входа

> `sudo useradd --no-create-home --system alki`
:::
::: spoiler 17. Проверка целостности файлов с УЗ
### Установка tripwire для проверки целостности системы

> Изменение конфигов - `/etc/tripwire/twpol.txt`
> Сохранение правил - `tripwire --update-policy /etc/tripwire/twpol.txt`
> Создание отчета - `tripwire --check --interactive`
:::
::: spoiler 18. Отключение УЗ пользователя без удаления
### Отключение и включение УЗ пользователя

> отключение - `sudo usermod -L` || `sudo passwd -l`
> включение - `sudo usermod -U` || `sudo passwd -u`
:::
::: spoiler 19. Настройка SSH-сервера
### Настройка serverPRO. Файл конфигурации ssh-сервера по паролю и ключу

### Настройка clientPRO. Генерация ключей и передача их на ssh-сервер для подключения по ключу

### Настройка clientPRO. Создание alias для удобного подключения к ssh-серверу

### Настройка serverPRO. Файл конфигурации ssh-сервера по ключу

### Подключение клиента к серверу по ключу

:::
::: spoiler 20. Настройка явного указаниня пользователя об удаленном взаимодействии с сервером по SSH
### Настройка serverPRO. Создание отдельного пользователя с определенными правами и своей домашней директорией для удаленного подключения
```
sudo adduser ssh-user
```
### Настройка serverPRO. Изменение скрипта инициализации оболочки пользователя ssh-user таким образом, чтобы было явно понятно, что пользователь работает удаленно по SSH

```
PS1=\e[1;33mSSH-USER\e[4;92m@\e[0;95m\h\e[m \e[4;92m\W\e[m\$ \n
echo "[---------]"
echo "[--!SSH!--]"
echo "[---------]"
```
> `добавление в конец конфига /home/ssh-user/.bashrc`
:::
::: spoiler 21. Установка и настройка Samba-сервера (+скрипт)
### Просмотр статуса сервиса samba

> `sudo systemctl status smb.service`
### Создание директории для подключения по smb, создание группы и пользователя для назначения прав на подключение по smb

> `sudo mdir -p /samba/share`
> `sudo chmod -R 0755 /samba/share`
> `sudo groupadd smbgrp`
> `sudo useradd smbuser`
> `sudo usermod -aG smbgrp smbuser`
> `sudo chown smbuser.smbgroup`
> `sudo smbpasswd -a smbuser`
### Просмотр конфигов samba-сервера

/etc/samba/smb.conf
```
[global]
workgroup = WORKGROUP
map to guest = bad user
security = user
recycle:versions = yes
recycle:touch = yes
recycle:keeptree = yes
recycle:repository = /samba/share/.trash
vfs object = recycle
include = /etc/samba/share.conf
```
/etc/samba/share.conf
```
[share]
path = /samba/share
valid users = smbuser
guest ok = no
browseable = yes
writeble = yes
```
### Проверка подключения и работоспособности общей корзины

> `sudo smbclient -U smbuser \\\\192.168.100.100\\share`
### Правила iptables для ssh и samba

```
sudo iptables -F
sudo iptables -P INPUT DROP
sudo iptables -A INPUT -t tcp -m tcp --dport 445 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t tcp -m tcp --dport 139 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 138 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 137 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t tcp -m tcp --dport 22 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -P INPUT DROP
```
### Скрипт для прописывания и сохранения правил фильтрации трафика
```
#!/bin/bash
case "$1" in
-d)
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT ;;
-ssh)
sudo iptables -A INPUT -t tcp --dport 22 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-smb)
sudo iptables -A INPUT -t tcp -m tcp --dport 445 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t tcp -m tcp --dport 139 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 138 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 137 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-chr)
sudo iptables -A INPUT -t udp -m udp --dport 123 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-sh)
sudo iptables -L -v -n ;;
-sv)
sudo bach -c "iptables-save > /etc/iptables/rules.v4" ;;
-rs)
sudo bach -c "iptables-restore /etc/iptables/rules.v4" ;;
esac
```
> `upd`
:::
::: spoiler 22. Защита ssh-сервера с помощью iptables, fail2ban, ipset
## Настройка iptables
> `sudo iptables -A INPUT -t tcp --dpor 22 -s 192.168.100.0/24 -j ACCEPT`
## Настройка fail2ban
### Установка fail2ban

### Настройка fail2ban

/etc/fail2ban/jail.local
```
[sshd]
enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 127.0.0.1
```
### Проверка работы fail2ban (включена аутентификация по паролю)

> fail2ban создает правило для бана каждого ip-адреса в iptables
## Настройка ipset
### Добавление действия для бана по ipset

/etc/fail2ban/jail.local
```
[sshd]
enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 127.0.0.1
action = iptables-ipset-proto6[name=SSH, port=ssh, protocol=tcp, bantime=3600]
```
### Проверка работы fail2ban (включена аутентификация по паролю)

> fail2ban создает одно правило для бана объединения ip-адресов в iptables
:::
::: spoiler 23. Настройка планировщика Cron
### Создание расписания для проверки доступности интернета, определения пользователей в системе и запуска ssh-сервера

### Скрипт для проверки доступности интернета, определения пользователей в системе

### Скрипт для запуска ssh-сервера

### Логи

:::
::: spoiler 24. Создание расписания резервного копирования с помощью rsync
### Создание расписания для резервного копирования

### Скрипт для резервного копирования и восстановления

### Резервное копирование с помощью rsync
`rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/media/*","/lost+found/"} /tmp/backup1`
> создание бэкапа
`rsync -aAXv /tmp/backup1 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/media/*","/lost+found/"} /`
> откат до бэкапа
:::
::: spoiler 25. Составить отчет с помощью Lynis
### Составление отчета с помощью lynis

> `sudo bash -c "lynis audit system >> /var/log/lynis.txt"`
> логи: `/var/log/lynis.log` и `/var/log/lynis-report.dat`
:::
::: spoiler 26. Установка и настройка auditd
### Создание правил аудирования критических файлов

> `-w /etc/passwd -p -wa -k pass_filter`
> `-w /etc/shadow -p -wa -k shadow_filter`
### Просмотр логов по ключам правил

> `sudo ausearch -i -k pass_filter`
:::
::: spoiler 27. Проверка соответствию безопасности
## 1. Шифрование передачи данных для сервера
### Добавление группы, пользователя и директории для работы по sftp

```
sudo groupadd sftpgroup
sudo useradd -g sftpgroup sftpuser
sudo passwd sftpuser
sudo mkdir -p /data/sftpuser/upload
sudo chowm -R root.sftpgroup /data/sftpuser
sudo chown -R sftpuser.sftpgroup /data/sftpuser/upload
```
### Настройки ssh-сервера

```
PasswordAuthentication yes
Match group sftpgroup
ChrootDirectory /data/sftpuser
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp
```
### Проверка работы sftp

> sftp sftpuser@192.168.100.100
## 2. Удаление устаревших служб ftp, telnet, rlogin и rsh

`sudo apt --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server`
## 3. Минимизация ПО

> `sudo dpkg --list`
## 4. Распределение сетевых служб по разным хостам
### serverPRO. Samba-сервер

### clientPRO. Rsyslog

## 5. Поддержка ПО в актуальном состоянии

> `sudo bash -c "apt update && apt upgrade -y"`
Для создания расписания обновления можно использовать [cron-apt](http://tdkare.ru/sysadmin/index.php/Cron-apt)
## 6-7. Использование SELinux для повышения безопасности
### Настройка базовых политик SELinux
/etc/selinux/config

> `SELINUX=enforsing`
## 8. Создание парольной политики
### Создание советов по назначению пароля
/etc/pam.d/common-password

> Было
> `password requisite pam_cracklib.so retry=3 minlen=8 difok=3`
> Стало
> `password requisite pam_cracklib.so retry=3 minlen=16 difok=3 ucredit=-1 lcredit=-2 ocredit=-2`
### Предупреждения о небезопасности пароля

> Они необязательны, пароль применяется при несоответствии советам политики
## 9. Создание расписания замены паролей
### Изменение конфигурационного файла

> `chage -i ssh-user`
## 10. Ограничение использования бывших паролей
/etc/pam.d/common-password

> `auth sufficient pam_unix.so likeauthnullok`
> `password sufficient pam_unix.so remember`
## 11. Блокировка учетных записей пользователей после неудачного входа в систему
### Вывод информации о количестве неуспешных входов

> `sudo faillog -a`
### Ограничение попыток входа

> `sudo faillog -l -u ssh-user`
> `sudo faillog -m 3 -u alku`
> `sudo faillog -a`
## 12. Проверка пустых паролей пользователей

> `sudo cat /etc/shadow | awk -F: '($2 == "") {print}' /etc/shadow`
> `sudo usermod -L clown1`
> `sudo usermod -L clown2`
> `sudo tail -n 2 /etc/shadow`
## 13. Поиск пользователей с UID=0

> `sudo cat /etc/shadow | awk -F: '($3 == "0") {print $1}'`
## 14. Отключение доступа до root

> было
> `root:x:0:0:root:/root:/bin/bash`
> стало
> `root:x:0:0:root:/root:/sbin/nologin`
## 15. Настройка пароля на GRUB

> `grub-mkpasswd-pbkdf2`
## 16,35. Отключение служб
### Просмотр служб

> `sudo systemctl list-unit-files --type=service`
### Выключение rsyslog

> `sudo systemctl stop rsyslog`
> `sudo systemctl disable rsyslog`
> `sudo systemctl status rsyslog`
## 17. Просмотр прослушиваемых сетевых портов
### Просмотр с помощью netstat

> `netstat -tunlpa`
### Просмотр с помощью ss

> `ss -tunlpa`
## 18. Удаление графической оболочки
`sudo apt autoremove gnome*`
## 19. Настройка iptables
/usr/bin/iP
```
#!/bin/bash
case "$1" in
-d)
sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD ACCEPT ;;
-ssh)
sudo iptables -A INPUT -t tcp --dport 22 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-smb)
sudo iptables -A INPUT -t tcp -m tcp --dport 445 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t tcp -m tcp --dport 139 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 138 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -A INPUT -t udp -m udp --dport 137 -s 192.168.100.0/24 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-chr)
sudo iptables -A INPUT -t udp -m udp --dport 123 -j ACCEPT
sudo iptables -P INPUT DROP ;;
-sh)
sudo iptables -L -v -n ;;
-sv)
sudo bach -c "iptables-save > /etc/iptables/rules.v4" ;;
-rs)
sudo bach -c "iptables-restore /etc/iptables/rules.v4" ;;
esac
```
## 20. Усиление ядра

/etc/sysctl.conf
```
net.ipv4.icmp_echo_ignore_all = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
```
## 21,38. Отдельные разделы диска

> было проделано на другой VM
## 22. Выделение квот
### Проверка модулей ядра

> `find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'`
### Изменение квот

> было
> `errors=remount-ro`
> стало
> `errors=remount-ro,usrquota,grpquota`
### Проверка настроек

> `sudo systemctl daemon-reload`
> `sudo mount -o remount /`
> `sudo mount | grep quota`
## 23. Отключение IPv6
### Изменение настроек ядра
/etc/sysctl.conf

> `net.ipv6.conf.all.disable_ipv6=1`
> `net.ipv6.conf.default.disable_ipv6=1`
> `net.ipv6.conf.lo.disable_ipv6=1`
> `ip -c -br a`
## 24. Проверка бинарных файлов SUID и SGID
### Проверка файлов с UID=4000

> `find / -perm -4000`
### Проверка файлов с GID=2000

> `find / -perm -2000`
## 25. Проверка файлов с записью из вне

> `sudo find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print`
## 26. Проверка файлов, не принадлежащих пользователям

> `sudo find / -xdev \( -nouser -o -nogroup \) -print`
## 27-28. Установка Kerberos

> `sudo krb5_newrealm`

> `sudo head -n 5 /etc/hosts`

> `sudo kadmin.local`

> `sudo grep -v "#" /etc/krb5kdc/kadm5.acl`

> `kinit user/admin (не работает)`
## 29. Логирование и аудит
### serverPRO. Настройка отправки логов с помощью [rsyslog](https://hackmd.io/@Traglodit/H1yTdf7nq)
/etc/rsyslog.conf

```
*.* @192.168.100.10:514
*.* @@192.168.100.10:514
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
```
### clientPRO. Настройка хранения логов с помощью [rsyslog](https://infoit.com.ua/linux/kak-nastroit-server-rsyslog-na-debian-11-bullseye/)
/etc/rsyslog.conf
```
# provides UDP syslog reception
module(load="imudp") - раскомментить
input(type="imudp" port="514") - раскомментить
# provides TCP syslog reception
module(load="imtcp") - раскомментить
input(type="imtcp" port="514") - раскомментить
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" - дописать
*.* ?remote-incoming-logs - дописать
```
### Просмотр наличия логов на clientPRO

## 30. Отслеживание событий с помощью logwatch

```
sudo mkdir /var/cahche/logwatch
sudo bash -c "logwatch > /var/cache/logwatch/logwatch.log"
sudo head /var/cache/logwatch/logwatch.log
```
## 31. Системный учет
### Создание правил аудирования критических файлов

> `-w /etc/passwd -p -wa -k pass_filter`
> `-w /etc/shadow -p -wa -k shadow_filter`
### Просмотр логов по ключам правил

> `sudo ausearch -i -k pass_filter`
## 32. Безопасный ssh-сервер
### Настройка serverPRO. Файл конфигурации ssh-сервера по паролю и ключу

### Настройка clientPRO. Генерация ключей и передача их на ssh-сервер для подключения по ключу

### Настройка clientPRO. Создание alias для удобного подключения к ssh-серверу

### Настройка serverPRO. Файл конфигурации ssh-сервера по ключу

### Подключение клиента к серверу по ключу

## 33. Intrusion Detection System
### Создание базового состояния системы

> `sudo aide --init --config /etc/aide/aide.conf`
### Создание отчета с анализом изменений

> `sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db`
> `sudo bash -c "aide --check --config /etc/aide/aide.conf > /var/log/aide.log"`
## 34. Отключение устройств USB/firewire/thunderbolt

> `echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf`
> `echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf`
> `echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf`
## 36. Использование fail2ban
### Установка fail2ban

### Настройка fail2ban

/etc/fail2ban/jail.local
```
[sshd]
enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
ignoreip = 127.0.0.1
```
### Проверка работы fail2ban (включена аутентификация по паролю)

> fail2ban создает правило для бана каждого ip-адреса в iptables
## 39. Создание резервных копий

> `sudo mkdir /opt/backup`
> `sudo dump -0f /opt/backup/user_home.dump /home`

> `sudo bash -c "restore -tf /opt/backup/user_home.dump > /var/log/backup_restore"`
> `sudo head /var/log/backup_restore`
:::
::: spoiler 28. Восстановление данных с логического раздела с помощью Scalpel
### Изменение конфигурационного файла /etc/scalpel/scalpel.conf

### Восстановление данных

> восстановление было показано на примере формата pdf
:::
::: spoiler 29. Сканирование сети с помощью Nmap
### Сканирование сети на выявление хостов

> `sudo nmap -sn 192.168.100.0/24`
### Сканирование портов и определение ОС на 192.168.100.1

> `sudo nmap -p- -sU -sT -O 192.168.100.1`
:::