---
# System prepended metadata

title: Практическая работа №*. Развертывание сервера на базе Debian 11
tags: [Организация сетевой безопасности]

---

# Практическая работа №*. Развертывание сервера на базе Debian 11

###### tags: `Организация сетевой безопасности`

---

::: spoiler 1. Установка Debian 11

### Установка serverPRO

![](https://i.imgur.com/d68wgPs.png)

> `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`

### Вывод информации об установленной системе

![](https://i.imgur.com/kDjENR7.png)

> `neofetch`

---

### Установка clientPRO

![](https://i.imgur.com/mvBep1K.png)

> `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`

### Вывод информации об установленной системе

![](https://i.imgur.com/Us5B0lT.png)

> `neofetch`
> `ip -c -br a`

:::

::: spoiler 2. Получение перечня оборудования в системе и подробной информации о каждом компоненте serverPRO

## serverPRO

### Вывод списка аппаратных устройств

![](https://i.imgur.com/GjqIRnv.png)

> `sudo lshw -short`

### Вывод информации об аппаратуре компьютера

![](https://i.imgur.com/ouD02n4.png)

> `sudo hwinfo`

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

![](https://i.imgur.com/LMHBSiS.png)

> `sudo lscpu`

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

![](https://i.imgur.com/EfgVqAM.png)


> `sudo lspci`

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

![](https://i.imgur.com/bXpQ2fF.png)

> `sudo lsscsi`

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

![](https://i.imgur.com/uJKh5Tn.png)

> `sudo lsusb`

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

![](https://i.imgur.com/RnMjsjm.png)

> `sudo inxi -Fx`

### Вывод информации о блочных устройствах

![](https://i.imgur.com/XfFllwR.png)

> `sudo lsblk`

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

![](https://i.imgur.com/nwgt7I6.png)

> `sudo df -h`

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

![](https://i.imgur.com/BOexLOW.png)

> `sudo cat /proc/cpuinfo`

![](https://i.imgur.com/jij4pl2.png)

> `sudo cat /proc/meminfo`

![](https://i.imgur.com/Hy2djDB.png)

> `sudo cat /proc/verison`

![](https://i.imgur.com/YRVUuIA.png)

> `sudo cat /proc/partitions`

:::

::: spoiler 3. Сбор максимальной информации о дистрибутиве утилитами df, du, free, iostat, mpstat, vmstat, w, htop

## df

### Отчет о доступном и используемом дисковом пространстве в читаемом режиме с указанием типа файловой системы и включением итога обо всей ОС

![](https://i.imgur.com/xcjJgYh.png)

> `df -a -h -T --total`

---

## du

### Отчет о занятом файлами месте на диске в читаемом режиме и включением итога по всему разделу

![](https://i.imgur.com/M9R9DzW.png)

> `du -a -h --max-depth=1 /`

---

## free

### Отчет о распределении физической памяти и памяти подкачки, а также о свободной и используемой памяти в читаемом режиме

![](https://i.imgur.com/Qp2lCGQ.png)

> `free -h -w -t`

---

## iostat

### Отчет по статисктике процессора и статистике I/O для устройств и разделов в читаемом режиме

![](https://i.imgur.com/DrRbeEe.png)

> `iostat -h -x`

---

## mpstat

### Отчет по статистике, связанной с работой всех процессоров/ядер

![](https://i.imgur.com/ziQ46lj.png)

> `mpstat -P ALL`

---

## vmstat

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

![](https://i.imgur.com/gJXaG5a.png)

> `vmstat -s`

---

## w

### Отчет о пользователе и о его действиях

![](https://i.imgur.com/jxowQiX.png)

> `w`

---

## htop

### Интерактивный отчет о процессах системы

![](https://i.imgur.com/t8X0xOA.png)

> `htop`

:::

::: spoiler 4. Выделение двух жестких дисков

### Вывод информации об установленной системе

#### Добавление дисков в VMware

![](https://i.imgur.com/C335LIA.png)

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

![](https://i.imgur.com/2Y82S10.png)

> `sudo fdisk -l`

:::

::: spoiler 5. Разбиение дисков на логические разделы с монтированием к директориям

## serverPRO

### Проверка подключения двух дополнительных дисков и их доступности в системе

![](https://i.imgur.com/ynkGUM7.png)

> `sudo fdisk -l`

### Инициализация дисков для дальнейшего использования LVM

![](https://i.imgur.com/b19JZF1.png)

> `sudo pvcreate /dev/sd{b,c}`

### Проверка, что данные диски могут использоваться LVM

![](https://i.imgur.com/8kbD6QG.png)

> `sudo pvdisplay`

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

![](https://i.imgur.com/2ZRdczJ.png)

> `sudo vgcreate test /dev/sd{b,c}`

### Проверка создания группы томов

![](https://i.imgur.com/f9q2tnt.png)

> `sudo vgdisplay`

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

![](https://i.imgur.com/sMwkHcE.png)

> `sudo lgcreate -L 4G test`
> `sudo lgcreate -L 2G test`

### Вывод информации о логических томах

![](https://i.imgur.com/p8EG5Ka.png)

> `sudo lvdisplay`

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

![](https://i.imgur.com/Em9UT58.png)

> `sudo mkfs.ext4 /dev/test/lvol0`
> `sudo mkfs.ext4 /dev/test/lvol1`

### Создание директорий для монтирования к ним логических томов

![](https://i.imgur.com/7dFfzut.png)

> `sudo mkdir /home/lvol0`
> `sudo mkdir /home/lvol1`

### Добавление монтирования логических томов в процесс загрузки системы

![](https://i.imgur.com/jRF30fC.png)

> `/dev/test/lvol0 /home/lvol0 ext4 defauts 1 2`
> `/dev/test/lvol1 /home/lvol1 ext4 defauts 1 2`

### Проверка монтирования логических томов

![](https://i.imgur.com/JJoF3kw.png)

> `sudo mount -a`
> `dh -h`
> `sudo lsblk`

:::

::: spoiler 6. Добавление жестких дисков и организация RAID1

## serverPRO

### Создание дополнительных дисков

![](https://i.imgur.com/RvvOyao.png)

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

![](https://i.imgur.com/juuWCMt.png)

> `sudo fdisk /dev/sdd`

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

![](https://i.imgur.com/Xmott5E.png)

> `sudo fdisk /dev/sde`

### Создание массива RAID1 при помощи mdadm

![](https://i.imgur.com/yNsrZJE.png)

> `sudo mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1`

### Назначение файловой системы на RAID1

![](https://i.imgur.com/sGOnP6D.png)

> `sudo mkfs.ext4 /dev/dm1`

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

![](https://i.imgur.com/TDP4l8N.png)

> `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 в процесс загрузки системы

![](https://i.imgur.com/4jgEIY6.png)

> `sudo nano /etc/fstab`

### Проверка монтирования RAID1

![](https://i.imgur.com/LHIDdHR.png)

> `sudo mount -a`
> `sudo df -h`

:::

::: spoiler 7. Настройка статического интерфейса

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

![](https://i.imgur.com/NUXur70.png)

---

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

![](https://i.imgur.com/tHV7wgs.png)

:::

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

### Проверка статуса сервиса chrony

![](https://i.imgur.com/VbWbmuJ.png)

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

![](https://i.imgur.com/AleY6sd.png)

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

![](https://i.imgur.com/EFbPkYi.png)

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

:::

::: spoiler 9. Выключение компьютера по времени с предупреждением пользователей

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

![](https://i.imgur.com/ZAZt1NZ.png)

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

![](https://i.imgur.com/jQeEHte.png)

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

![](https://i.imgur.com/WV27dz2.png)

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

![](https://i.imgur.com/tFrsRhm.png)

:::

::: spoiler 10. Организация выключения компьютера на ночь

### Планирование выключения на ночь с предупреждением пользователей

![](https://i.imgur.com/hSj6i1c.png)

:::

::: spoiler 11. Организация включения компьютера по рассписанию с помощью UEFI

### Организовать автозапуск виртуальной машины можно только из гипервизора. Симитировать можно программой rtcwake.

![](https://i.imgur.com/xGFtHni.png)

> `sudo rtcwake -m on -s 60`

![](https://i.imgur.com/AjlpvSZ.png)

> `date +%s -d "2022-12-12 8:00"`
> `sudo rtcwake -m off -t 1670832000`

:::

::: spoiler 12. Проверка наличия systemd

### Проверка местоположения systemd

![](https://i.imgur.com/oFc0y2n.png)

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

![](https://i.imgur.com/LkT5XeR.png)

:::

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

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

![](https://i.imgur.com/uKTB1an.png)

> `sudo systemctl list-unit-files --type=service`

:::

::: spoiler 14. Выяснение длительности загрузки системы с помощью systemd

### Анализ потраченного времени при загрузке системы с целью выявить сервис, затрачивающий слишком много времени

![](https://i.imgur.com/l7DGBlc.png)

> `sudo systemd-analyze blame`

![](https://i.imgur.com/kbvZz02.png)

> `sudo systemd-analyze critical-chain`

:::

::: spoiler 15. Определение UID и GID

### Определение UID и GID пользователя с помомoщью id

![](https://i.imgur.com/VKHpjzo.png)

> `id -u`
> `id -g`

:::

::: spoiler 16. Создание системного пользователя без домашнего каталога и оболочки входа

### Создание системного пользователя без домашнего каталога и оболочки входа

![](https://i.imgur.com/I38e1H1.png)

> `sudo useradd --no-create-home --system alki`

:::

::: spoiler 17. Проверка целостности файлов с УЗ

### Установка tripwire для проверки целостности системы

![](https://i.imgur.com/GCBZqqC.png)

> Изменение конфигов - `/etc/tripwire/twpol.txt`
> Сохранение правил - `tripwire --update-policy /etc/tripwire/twpol.txt`
> Создание отчета - `tripwire --check --interactive`

:::

::: spoiler 18. Отключение УЗ пользователя без удаления

### Отключение и включение УЗ пользователя

![](https://i.imgur.com/qCKcBLy.png)

> отключение - `sudo usermod -L` || `sudo passwd -l`
> включение - `sudo usermod -U` || `sudo passwd -u`

:::

::: spoiler 19. Настройка SSH-сервера

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

![](https://i.imgur.com/X2VWYj1.png)

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

![](https://i.imgur.com/GPeTOpG.png)

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

![](https://i.imgur.com/8xh80Fh.png)

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

![](https://i.imgur.com/pxLXZSc.png)

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

![](https://i.imgur.com/O1ael5l.png)

:::

::: spoiler 20. Настройка явного указаниня пользователя об удаленном взаимодействии с сервером по SSH

### Настройка serverPRO. Создание отдельного пользователя с определенными правами и своей домашней директорией для удаленного подключения

```
sudo adduser ssh-user
```

### Настройка serverPRO. Изменение скрипта инициализации оболочки пользователя ssh-user таким образом, чтобы было явно понятно, что пользователь работает удаленно по SSH

![](https://i.imgur.com/y3Ag17T.png)

```
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 

![](https://i.imgur.com/85kvOQT.png)

> `sudo systemctl status smb.service`

### Создание директории для подключения по smb, создание группы и пользователя для назначения прав на подключение по smb

![](https://i.imgur.com/HIK63uM.png)

> `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-сервера

![](https://i.imgur.com/L3q2VUN.png)

/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
```

### Проверка подключения и работоспособности общей корзины

![](https://i.imgur.com/hq2aoPK.png)

> `sudo smbclient -U smbuser \\\\192.168.100.100\\share`

### Правила iptables для ssh и samba

![](https://i.imgur.com/8GHyyMg.png)

```
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

![](https://i.imgur.com/nm0IAuS.png)

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

![](https://i.imgur.com/nUHCFiA.png)

/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 (включена аутентификация по паролю)

![](https://i.imgur.com/zZplIVk.png)

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

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

### Добавление действия для бана по ipset

![](https://i.imgur.com/zVSbxhy.png)

/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 (включена аутентификация по паролю)

![](https://i.imgur.com/VpIvOQ6.png)

> fail2ban создает одно правило для бана объединения ip-адресов в iptables

:::

::: spoiler 23. Настройка планировщика Cron

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

![](https://i.imgur.com/3orlhCh.png)

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

![](https://i.imgur.com/2OBmGTk.png)

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

![](https://i.imgur.com/e5X3MrG.png)

### Логи

![](https://i.imgur.com/wsZ7hds.png)

:::

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

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

![](https://i.imgur.com/6zjSqX6.png)

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

![](https://i.imgur.com/rEeykh4.png)

### Резервное копирование с помощью 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

![](https://i.imgur.com/VahCBeo.png)

> `sudo bash -c "lynis audit system >> /var/log/lynis.txt"`
> логи: `/var/log/lynis.log` и `/var/log/lynis-report.dat`

:::

::: spoiler 26. Установка и настройка auditd

### Создание правил аудирования критических файлов

![](https://i.imgur.com/P12Yc9N.png)

> `-w /etc/passwd -p -wa -k pass_filter`
> `-w /etc/shadow -p -wa -k shadow_filter`

### Просмотр логов по ключам правил

![](https://i.imgur.com/9SR5ppL.png)

> `sudo ausearch -i -k pass_filter`

:::

::: spoiler 27. Проверка соответствию безопасности

## 1. Шифрование передачи данных для сервера

### Добавление группы, пользователя и директории для работы по sftp

![](https://i.imgur.com/CARfnMn.png)

```
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-сервера

![](https://i.imgur.com/CHWVwDf.png)

```
PasswordAuthentication yes

Match group sftpgroup
    ChrootDirectory /data/sftpuser
    X11Forwarding no
    AllowTCPForwarding no
    ForceCommand internal-sftp
```

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

![](https://i.imgur.com/SwqpFCI.png)

> sftp sftpuser@192.168.100.100

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

![](https://i.imgur.com/O1t3Yxm.png)

`sudo apt --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server`

## 3. Минимизация ПО

![](https://i.imgur.com/PBfdnur.png)

> `sudo dpkg --list`

## 4. Распределение сетевых служб по разным хостам

### serverPRO. Samba-сервер

![](https://i.imgur.com/24Z6kcg.png)

### clientPRO. Rsyslog

![](https://i.imgur.com/bigNIDW.png)

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

![](https://i.imgur.com/HDSI7H6.png)

> `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

![](https://i.imgur.com/zIVqmM9.png)

> `SELINUX=enforsing`

## 8. Создание парольной политики

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

/etc/pam.d/common-password

![](https://i.imgur.com/cUZxrQQ.png)

> Было
> `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`

### Предупреждения о небезопасности пароля

![](https://i.imgur.com/weLkO0u.png)

> Они необязательны, пароль применяется при несоответствии советам политики

## 9. Создание расписания замены паролей

### Изменение конфигурационного файла

![](https://i.imgur.com/KVuss2Z.png)

> `chage -i ssh-user`

## 10. Ограничение использования бывших паролей

/etc/pam.d/common-password

![](https://i.imgur.com/7ytMQAF.png)

> `auth sufficient pam_unix.so likeauthnullok`
> `password sufficient pam_unix.so remember`

## 11. Блокировка учетных записей пользователей после неудачного входа в систему

### Вывод информации о количестве неуспешных входов

![](https://i.imgur.com/4tUcaeQ.png)

> `sudo faillog -a`

### Ограничение попыток входа

![](https://i.imgur.com/dY8Ep8l.png)

> `sudo faillog -l -u ssh-user`
> `sudo faillog -m 3 -u alku`
> `sudo faillog -a`


## 12. Проверка пустых паролей пользователей

![](https://i.imgur.com/yPvc8y2.png)

> `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

![](https://i.imgur.com/ovgiQDk.png)

> `sudo cat /etc/shadow | awk -F: '($3 == "0") {print $1}'`

## 14. Отключение доступа до root

![](https://i.imgur.com/rBIUiQX.png)

> было
> `root:x:0:0:root:/root:/bin/bash`
> стало
> `root:x:0:0:root:/root:/sbin/nologin`

## 15. Настройка пароля на GRUB

![](https://i.imgur.com/WsBoWyq.png)

> `grub-mkpasswd-pbkdf2`

## 16,35. Отключение служб

### Просмотр служб

![](https://i.imgur.com/JHXPBM9.png)

> `sudo systemctl list-unit-files --type=service`

### Выключение rsyslog

![](https://i.imgur.com/P41glGU.png)

> `sudo systemctl stop rsyslog`
> `sudo systemctl disable rsyslog`
> `sudo systemctl status rsyslog`

## 17. Просмотр прослушиваемых сетевых портов

### Просмотр с помощью netstat

![](https://i.imgur.com/Y2oESUt.png)

> `netstat -tunlpa`

### Просмотр с помощью ss

![](https://i.imgur.com/b9Fcmr2.png)

> `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. Усиление ядра

![](https://i.imgur.com/spb1gOJ.png)

/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. Отдельные разделы диска

![](https://i.imgur.com/Noh309A.png)

> было проделано на другой VM

## 22. Выделение квот

### Проверка модулей ядра

![](https://i.imgur.com/gykhIyf.png)

> `find /lib/modules/`uname -r` -type f -name '*quota_v*.ko*'`

### Изменение квот

![](https://i.imgur.com/aCjhZI3.png)

> было
> `errors=remount-ro`
> стало
> `errors=remount-ro,usrquota,grpquota`

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

![](https://i.imgur.com/lIY8sJr.png)

> `sudo systemctl daemon-reload`
> `sudo mount -o remount /`
> `sudo mount | grep quota`

## 23. Отключение IPv6

### Изменение настроек ядра

/etc/sysctl.conf

![](https://i.imgur.com/67o1rRP.png)

> `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

![](https://i.imgur.com/mM2R1aD.png)

> `find / -perm -4000`

### Проверка файлов с GID=2000

![](https://i.imgur.com/FYVzata.png)

> `find / -perm -2000`

## 25. Проверка файлов с записью из вне

![](https://i.imgur.com/94MTcHq.png)

> `sudo find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print`

## 26. Проверка файлов, не принадлежащих пользователям

![](https://i.imgur.com/HZQyd0c.png)

> `sudo find / -xdev \( -nouser -o -nogroup \) -print`

## 27-28. Установка Kerberos

![](https://i.imgur.com/LpcO8KT.png)

> `sudo krb5_newrealm`

![](https://i.imgur.com/nwYbASo.png)

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

![](https://i.imgur.com/E6jIXQp.png)

> `sudo kadmin.local`

![](https://i.imgur.com/aFsPcdz.png)

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

![](https://i.imgur.com/qy3fVI0.png)

> `kinit user/admin (не работает)`

## 29. Логирование и аудит

### serverPRO. Настройка отправки логов с помощью [rsyslog](https://hackmd.io/@Traglodit/H1yTdf7nq)

/etc/rsyslog.conf

![](https://i.imgur.com/nheazbO.png)

```
*.* @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

![](https://i.imgur.com/Z3bBcWr.png)

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

![](https://i.imgur.com/5ici8P9.png)

```
sudo mkdir /var/cahche/logwatch
sudo bash -c "logwatch > /var/cache/logwatch/logwatch.log"
sudo head /var/cache/logwatch/logwatch.log
```

## 31. Системный учет

### Создание правил аудирования критических файлов

![](https://i.imgur.com/P12Yc9N.png)

> `-w /etc/passwd -p -wa -k pass_filter`
> `-w /etc/shadow -p -wa -k shadow_filter`

### Просмотр логов по ключам правил

![](https://i.imgur.com/9SR5ppL.png)

> `sudo ausearch -i -k pass_filter`

## 32. Безопасный ssh-сервер

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

![](https://i.imgur.com/X2VWYj1.png)

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

![](https://i.imgur.com/GPeTOpG.png)

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

![](https://i.imgur.com/8xh80Fh.png)

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

![](https://i.imgur.com/pxLXZSc.png)

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

![](https://i.imgur.com/O1ael5l.png)

## 33. Intrusion Detection System

### Создание базового состояния системы

![](https://i.imgur.com/dDUD38B.png)

> `sudo aide --init --config /etc/aide/aide.conf`

### Создание отчета с анализом изменений

![](https://i.imgur.com/z9ECunO.png)

> `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

![](https://i.imgur.com/3LtK6TB.png)

> `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

![](https://i.imgur.com/nm0IAuS.png)

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

![](https://i.imgur.com/nUHCFiA.png)

/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 (включена аутентификация по паролю)

![](https://i.imgur.com/zZplIVk.png)

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

## 39. Создание резервных копий

![](https://i.imgur.com/Bo2Mahr.png)

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

![](https://i.imgur.com/E6PfiwD.png)

> `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

![](https://i.imgur.com/qX9FA2U.png)

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

![](https://i.imgur.com/Nh9jodG.png)

> восстановление было показано на примере формата pdf

:::

::: spoiler 29. Сканирование сети с помощью Nmap

### Сканирование сети на выявление хостов

![](https://i.imgur.com/PSSwPwR.png)

> `sudo nmap -sn 192.168.100.0/24`

### Сканирование портов и определение ОС на 192.168.100.1

![](https://i.imgur.com/tuPl8av.png)

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

:::
