1 Настройка файлового сервера в корпоративной инфраструктуре Для начала скачаю Samba на Linux сервер. Далее создам папку, к которой в будущем пользователи будут иметь общий доступ ![](https://i.imgur.com/2jdHoXV.png) А также папку для ограниченного количества пользователей и, соответственно, группу пользователей, которая будет иметь к ней доступ, а также задам пароль для доступа ![](https://i.imgur.com/xHRxBMl.png) После этого в конфиге написал все раздаваемые папки и их параметры ![](https://i.imgur.com/pKtOO2y.png) При заходе с windows и авторизации через пользователя igor (не входит в группу SMB) вижу следующую картину: ![](https://i.imgur.com/gsxrlD4.png) И при попытке открыть папку private: ![](https://i.imgur.com/CAtL4B9.png) и даже если сейчас ввести данные пользователя SMBuser1, то будет ошибка, т.к. надо изначально авторизироваться под нужным пользователем. Если изначально авторизироваться под пользователем SMB, то откроются спокойно обе папки. Чтобы подключиться с другого linux через консоль, есть утилита smbclient: sudo apt install smbclient После можно подключится при помощи команды: smbclient //<ip адрес>/<имя папки> -U <имя пользователя> Также можно посмотреть список всех сетевых папок: smbclient -L \\<ip адрес> -N ![](https://i.imgur.com/35dmvaJ.png) (флаг -N - авторизация без пароля. Это можно использовать только для доступа к публичным папкам.) 2 Fail2Ban-SSH и Brute-force attack Fail2Ban – программа для защиты серверов от атак brute force. Программа считывает логи и блокирует IP-адреса, активность которых является подозрительной (например, большое количество попыток войти с неправильно введенным паролем, выполнение опасных или бессмысленных действий и т.д.). В случае обнаружения подобных действий программа обновляет правила брандмауэра для блокировки такого IP-адреса на определенный промежуток времени. Скачаю fali2ban ![](https://i.imgur.com/FOKS2Rz.png) и посмотрю файлы конфигурации ![](https://i.imgur.com/6bzwdDF.png) После посмотрю файл jail.conf ![](https://i.imgur.com/BxYYNvD.png) В нем сказано, что для того, чтобы настроить конфигурацию надо создать файл jail.local и уже в нем писать нашу конфигурацию, т.к. при обновлении файл jail.conf может тоже обновиться и наши настройки из-за этого могут слететь. Настрою конфигурацию в jail.local ![](https://i.imgur.com/JAxJwiR.png) Здесь: [название правила] enable - вкл/выкл фильтра port - порт целевого сервиса filter - фильтр, который будет использоваться для поиска подозрительных действий (в нашем случае sshd, который соответствует файлу /etc/fail2ban/filter.d/sshd.conf) logpath - расположение лог-файла, в котором фильтр будет искать подозрительную активность на основе описанных критериев maxretry - количество попыток ввода пароля пользователем, прежде чем его заблокируют bantime - время блокировки пользователя в секундах ignoreip - список ip адресов, которые не будут попадать под фильтр После этого я перезагрузил сервис, чтобы настройки применились и проверил ее на работоспособность ![](https://i.imgur.com/bHxjHQ2.png) (Вот после 3х неправильных попыток ввода пароля, мне заблокировали доступ) Также можно посмотреть журнал банов и увидеть там заблокированный ip ![](https://i.imgur.com/noaSqGB.png) Для того, чтобы разблокировать 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 - подробный вывод ![](https://i.imgur.com/2bKlFVh.png) (можно увидеть, что он по-немногу перебирает пароли и рано или поздно мог подобрать его) Теперь включу обратно fail2ban и снова запущу hydra ![](https://i.imgur.com/F3M5mOi.png) (Можно увидеть, что сервер сразу блокирует пользователя и программа сразу завершает свою работу) 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 ![](https://i.imgur.com/gOpkV7Q.png) И после этого надо ввести 2 последние команды, чтобы окончательно установить nginx: sudo apt update sudo apt install nginx Далее настрою nginx Сначала выставлю в /etc/nginx/sites-enabled/default следующие параметры: limit_req zone=ltwo burst=5 nodelay ![](https://i.imgur.com/wIkaxj1.png) (Задам зону разделяемой памяти (zone) и максимальный размер всплеска запросов (burst). Если скорость поступления запросов превышает описанную в зоне, то их обработка задерживается так, чтобы запросы обрабатывались с заданной скоростью) Теперь внесу изменения в /etc/nginx/nginx.conf: ![](https://i.imgur.com/JjXupoC.png) После этого попробую справоцировать ошибки 503 и посмотреть их в log файле ![](https://i.imgur.com/ou4c8yU.png) ![](https://i.imgur.com/LJtVFwT.png) Теперь настрою fail2ban для защиты нашего сервера от таких DDoS атак. Так, добавим новое правило jail.local: ![](https://i.imgur.com/9UBVnEX.png) А также изменим настройку iptables, чтоб он отсылал не reject, а drop, т.к. это более эффективно против ботов. Для этого в /etc/fail2ban/action.d/ создадим файл iptables-blocktype.local, чтобы наши настройти не слетели после обновления: ![](https://i.imgur.com/eiCWiIk.png) Проверю, применились ли настройки: ![](https://i.imgur.com/OsqDEo5.png) Т.к. все применилось, попробую снова поделать многочисленные запросы в nginx: ![](https://i.imgur.com/7yBEpZZ.png) (меня заблокировал fail2ban, а значит, всё работает) ![](https://i.imgur.com/e0jS1ud.png)