###### tags: `Linux Labs`
# Отчёт по лабораторной работе №4 - Безопасность Linux серверов
## Часть №1 - Настройка файлового сервера в корпоративной инфраструктуре
Обновим пакетную базу:

Далее стоит установить пакеты из главного репозитория. В моём случае уже было всё установленно:

Создадим резервную копию файла конфигурации samba:

Создадим папку, к которой все пользователи будут иметь доступ:

Изменим режим доступа и владельца:

Создадим каталог, доступ к которому будет иметь ограниченное число пользователей:

Создадим группу пользователей, которые будут иметь доступ к приватным данным:

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

Добавим в группу пользователя:

Изменим группу папки:

Зададим пароль, с помощью которого пользователь будет подключаться к каталогу:

Зименим содержимое файла конфигурации на следующее:

И перезапустим сервис:

Теперь присоединимся к серверу через unix машинку:

И через windows (я использовал хостовую систему):
Авторизируемся:


В качестве ещё одного доказательства работы, создам файлик в приватной папке:

Его видно как на ubuntu:

Так и на winodws:

Мы также можем посмотреть его содержимое:

Настройки iptables:

Также стоит добавить сервис в автозагрузку:

## Выполнение задания, связанного с папкой share:
Теперь создадим папку share и настрим её согласно требованиям:

Создадим пользователя PT и выдадим ему пароль:

Перезапустим сервис и проверим настройки:
Если пользователь user1 попробует создать, например, папку, то встретиться с запертом:


После авторизации через admin появится возможность полноценно использовать share:


В то время как user1 эта возможность всё ещё недоступна:

C PT тоже всё отлично:

Проверим и другие возможности.
User1 всё также может редактировать папку private:

А вот PT и admin - нет:

К public доступ имеют все:

Для сохранения правил iptables в debian и ubuntu добавили пакет iptables-persistent. Всё, что нужно для сохранения iptables - просто после их настройки ввести пару команд, преставленных ниже, и при следующей загрузке они будут применены:


Также не стоит забывать про настройку прав с помощью chmod, а также других средств.
## Часть №2 - Fail2Ban-SSH и Brute-force attack
Обновим пакетную базу:

Установим Fail2ban:

И запустим его:

Ознакомимся с файлами директории fail2ban:

Откроем его конфигурационный файл:

Прочтём рекомендации и выполним их. После этого получаем следующий кофигурационный файл:
Он блокирует все попытки bruteforc'а на 22 порт (в данном случае - ssh). В настройках установлено ограничение попыток авторизации в 3 раза, после чего пользователь получает бан на 3600 секунд т.е. на 1 час реального времени (такая судьба ждёт все ip, кроме 127.0.0.1 - сам сервер получать бан не будет):

Перезапустим fail2ban:

После этого проверим его статус. В случае, если ошибок не было допущено, программа запустится:

Попробуем ввести 3 раза пароль неверно:

Увидим, что нас забанили.
При запуске гидры получаем ошбику:

А при проверке fail2ban:

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


Достаточно чётко видно, что происходит атака.
## Часть №3 - "Fail2Ban и Dos/DDoS attack" на примере nginx
Установим пакеты, необходимые для подключения apt-репозитория:

Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов. Скачаем ключ:

Проверим достоверность ключа:

Ключ верный.
Для подключения apt-репозитория для стабильной версии nginx:

Для использования пакетов из нашего репозитория вместо распространяемых в дистрибутиве, настройте закрепление:

Запустим nginx:

Как видим, установка прошла успешно.
Установим fail2ban (в моём случае он уже был установлен):

Откроем файл стартовой странички nginx и выставляем следующие параметры:

Далее внесём некоторые изменения в конфигурационный файл nginx:

Зажав ctrl+r мы вызовем ошибку 503 (сервер недоступен):


Создадим файл jail.local и введём туда следующие параметры:

Создадим файл iptables-blocktype.local и внесём в него следующие параметры:

Перезапустим сервис и проверим его статус:

Просмотрим, что обрабатывает iptables, убедимся, что настройки fail2ban применились, также проверим бан лист nginx:

После многочисленных запросов сервер возвращает такой ответ:

Также iptables и nginx выводят следующие данные:

Следующей командой мы можем разбанить ip-адрес:
