1 Настройка файлового сервера в корпоративной инфраструктуре
Для начала скачаю Samba на Linux сервер.
Далее создам папку, к которой в будущем пользователи будут иметь общий доступ

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

После этого в конфиге написал все раздаваемые папки и их параметры

При заходе с windows и авторизации через пользователя igor (не входит в группу SMB) вижу следующую картину:

И при попытке открыть папку private:

и даже если сейчас ввести данные пользователя SMBuser1, то будет ошибка, т.к. надо изначально авторизироваться под нужным пользователем.
Если изначально авторизироваться под пользователем SMB, то откроются спокойно обе папки.
Чтобы подключиться с другого linux через консоль, есть утилита smbclient:
sudo apt install smbclient
После можно подключится при помощи команды:
smbclient //<ip адрес>/<имя папки> -U <имя пользователя>
Также можно посмотреть список всех сетевых папок:
smbclient -L \\<ip адрес> -N

(флаг -N - авторизация без пароля. Это можно использовать только для доступа к публичным папкам.)
2 Fail2Ban-SSH и Brute-force attack
Fail2Ban – программа для защиты серверов от атак brute force. Программа считывает логи и блокирует IP-адреса, активность которых является подозрительной (например, большое количество попыток войти с неправильно введенным паролем, выполнение опасных или бессмысленных действий и т.д.). В случае обнаружения подобных действий программа обновляет правила брандмауэра для блокировки такого IP-адреса на определенный промежуток времени.
Скачаю fali2ban

и посмотрю файлы конфигурации

После посмотрю файл jail.conf

В нем сказано, что для того, чтобы настроить конфигурацию надо создать файл jail.local и уже в нем писать нашу конфигурацию, т.к. при обновлении файл jail.conf может тоже обновиться и наши настройки из-за этого могут слететь.
Настрою конфигурацию в jail.local

Здесь:
[название правила]
enable - вкл/выкл фильтра
port - порт целевого сервиса
filter - фильтр, который будет использоваться для поиска подозрительных действий (в нашем случае sshd, который соответствует файлу /etc/fail2ban/filter.d/sshd.conf)
logpath - расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев
maxretry - количество попыток ввода пароля пользователем, прежде чем его заблокируют
bantime - время блокировки пользователя в секундах
ignoreip - список ip адресов, которые не будут попадать под фильтр
После этого я перезагрузил сервис, чтобы настройки применились и проверил ее на работоспособность

(Вот после 3х неправильных попыток ввода пароля, мне заблокировали доступ)
Также можно посмотреть журнал банов и увидеть там заблокированный ip

Для того, чтобы разблокировать ip адрес, нужно ввести команду:
fail2ban-client set <название правила> unbanip <ip адрес>
Hydra - это программное обеспечение с открытым исходным кодом для перебора паролей в реальном времени от различных онлайн сервисов, веб-приложений, FTP, SSH и других протоколов. Её особенность в том, что перебор выполняется не по хэшу, а напрямую с помощью запросов к серверу, а значит с её помощью можно проверить, правильно ли настроены фаерволы, работает ли защита, а также способна ли система вообще определить такую атаку на сервер.
Установлю ее на linux-клиент, отключу fail2ban на сервере и попробую атаковать его.
Для этого введу команду:
sudo hydra -l igor -P /usr/share/hydra/dpl4hydra_local.csv ssh://<ip адрес> -I -v
где:
-l - показывает, к какому пользователю надо подключаться
-P <путь к папке> - использование пароля из файла со списком (выше я использовал список dpa (default password list) это список паролей по умолчанию, который скачивается вместе с самой Hydra)
-I - игнорирование файла восстановления (для более быстрого перебора)
-v - подробный вывод

(можно увидеть, что он по-немногу перебирает пароли и рано или поздно мог подобрать его)
Теперь включу обратно fail2ban и снова запущу hydra

(Можно увидеть, что сервер сразу блокирует пользователя и программа сразу завершает свою работу)
3 Fail2Ban и Dos/DDoS attack
В начале были скачаны необходимые пакеты и ключ, чтобы подключить apt-репозиторию:
пакеты:
sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
ключ:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Проверить ключ можно командой:
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

И после этого надо ввести 2 последние команды, чтобы окончательно установить nginx:
sudo apt update
sudo apt install nginx
Далее настрою nginx
Сначала выставлю в /etc/nginx/sites-enabled/default
следующие параметры:
limit_req zone=ltwo burst=5 nodelay

(Задам зону разделяемой памяти (zone) и максимальный размер всплеска запросов (burst). Если скорость поступления запросов превышает описанную в зоне, то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью)
Теперь внесу изменения в /etc/nginx/nginx.conf:

После этого попробую справоцировать ошибки 503 и посмотреть их в log файле


Теперь настрою fail2ban для защиты нашего сервера от таких DDoS атак. Так, добавим новое правило jail.local:

А также изменим настройку iptables, чтоб он отсылал не reject, а drop, т.к. это более эффективно против ботов. Для этого в /etc/fail2ban/action.d/ создадим файл iptables-blocktype.local, чтобы наши настройти не слетели после обновления:

Проверю, применились ли настройки:

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

(меня заблокировал fail2ban, а значит, всё работает)
