---
title: Практическая работа 4
tags: pt-start, linux basics
---
## Настройка samba
### Базовая настройка
Заданием по тз было натсроить возможность записи в папку для группы admins и пользователя ptuser. Идем в /etc/samba/smb.conf и добавляем папку share. Указываем ей путь, после чего делаем ее read only. Теперь создаем белый список из тех, у кого есть доступ на запись в данный ресурс: это будет группа admins и пользователь ptuser.

Добавляем smb в автозапуск на сервер системе

ДОбавляем группу admins и PT(не обязательно).

Теперь создаем пользователей. Так как эти пользователи будут использоваться только для smb, то отдельной директории home создавать им не будет, а параметр --ingroup позволит указать в какой группе они будут состоять.



Теперь добавляем их через smbpasswd -a user

Для подключения к smb с системы windows требуется включить поддержку общего доступа в менб программ.

Теперь включаем поддержку протокола smbv2.
```commands
Set-SmbServerConfiguration | Select EnableSMB2Protocol
Set-SmbServerConfiguration -EnableSMB2Protocol $true
```

Теперь подключаемся, введя в поисковую строку. Таким образом мы можем подключаться к сетевым папкам от систем windows
```
\\<ip>\<shared name>
```

Теперь подключаемся с клиент системы к серверу от имени adminsmb(у него есть доступ к редактированию). Создавать директории нам разрешено

Подключаемся от имени ptuser и проверяем тоже самое. Доступ должен быть. Видим, что директории создавать можем, а следовательно редактирование разрешено.

Теперь пробуем подключиться от пользователя. Так как это обычный пользователь, то доступа у него не должно быть, следовательно ему выведет "доступ запрещен".

Теперь разберем подробнее команду smbstatus. В ней расписывается версия samba, а чуть ниже самое важное: данные подключения пользователей. Тут присутствует номер процесса подключения, имя пользователя, его группа, ip адрес, с которого производится подключение, протокол подключение, шифрование(если есть), а также способ подключения(может быть пустым).
Дальше можно увидеть активные подключения к сетевым папкам и время, когда соединение было открыто.

### Настройка корзины общего доступа
Создаем настройку для корзины.
> [name=despersy]
> Сразу отмечу, что делать корзину в общей папке не стоит, если не включено hide dot files для папки, ибо пользователя будут видеть общую корзину.

Теперь добавдяем настройку в нашк общую папку

Проверяем результат. Закидываем любой файл, после чего удаляем его. Теперь проверяем в папке trash.

## Работа с Fail2ban
Скачиваем fail2ban. apt install fail2ban.

Теперь добавляем его в автозапуск.

Смотрим структуру директорий fail2ban(удобнее было бы использовать tree для этого, но по умолчанию он не скачан)

Включаем настройку fail2ban. Так как у меня ssh включен на другом порту, что и настройка немного другая.

Вот полная настройка /etc/fail2ban/jail.conf

Перезапускаем для введения настроек в силу и проверяем его работу
```commands
systemctl restart fail2ban
systemctl status fail2ban
```

Так как подключения по паролю у меня было отключено, его стоит теперь включить, ибо иначе атаку провести не сможем.

> [name=despersy]
> Так как гидра отказывается работать на на моем порту, мне пришлось использовать аналог - медузу
> 
Выполняем атаку и попадаем в бан.

Смотрим результат атаки. Видим одного пользователя в бане - это наш атакующий, если посмотреть более подробное описание.
```commands
fail2ban-client status
fail2ban-client status sshd
```


## Базовая защита от DoS атак.
Скачиваем пакеты
```
apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring -y
```

теперь скачиваем ключ подписи для репозитория.
> [name=despersy]
> Ловим ошибку... Ясно, будем ипровизировать.
> 
> Меняем немного команду на скачивание, получаем удовлетворительный результат
> 
> Результарующая команда
> ``` curl -N -s https://nginx.org/keys/nginx_signing.key | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null ```
Теперь добавялем репозиторий в список. Добавилось успешно, осталось проверить.

Устанавливаем повышенный приоритет для пакета nginx именно из этого репозитория.

> [name=despersy]
> А booksworm то в релизах пока еще нет... Ясно будем брать что есть
> 
> Скачиваем nginx
> 
Теперь остается отключить apache2 и включить nginx, после чего откроется стартовая страница apache2, ибо мы ее не заменяли.
```
systemctl stop apache2
systemctl start nginx
```

Переходим в /var/www/html и заменяем тут два файла.

Вот результат

Переходим к защите. Скачиваем ipset

И делаем настройку в /etc/nginx/sites-enabled/default

После этого переходим в основной конфиг nginx и добавляем выделенные строчки

Теперь при удерживании на сайте ctrl+r(перезагрузка страницы) мы будем имитровать DoS атаку. Сервер через пару секунд даст нам 503 ошибку

Посмотрим логи наших действий

### Защита от DoS при помощи fail2ban
В jail.conf настраиваем лимит подключение для nginx, чтобы после этого кидать пользователя в банлист

> [name=despersy]
> Но нам выдаст ошибку при запуске, поэтому комментим пару строчек
> 
Теперь смотрим применение настроек
Выполнив опять предыдущую атаку мы попадем в бан
```
iptables -L -v
fail2ban-client status
fail2ban-client status nginx-limit-req
```



Вот результат атаки с fail2ban

Теперь убираем и бана наш ip

И опять получаем доступ к сайту
