Рубрики
Без рубрики

Как блокировать нежелательные попытки входа в систему SSH с PyFilter на Ubuntu 16.04

Pyfilter стремится отфильтровывать все незаконные запросы входа в систему на свой сервер и заблокировать их, если слишком много отправляется. В этом руководстве вы устанавливаете и настроите PyFilter, чтобы заблокировать запросы SSH. Помечено Python, безопасность.

Автор: Джейсон Холл

Вступление

Secure Shell (SSH) – это криптографический сетевой протокол для эксплуатации сетевых служб надежно. Обычно используется для дистанционного управления компьютерной системой или для передачи файлов. Когда SSH подвергается публичному интернету, он становится проблемой безопасности. Например, вы найдете боты, пытающиеся угадать свой пароль через методы грубой силы.

Pyfilter Стремится отфильтровывать все незаконные запросы входа в систему на свой сервер и заблокируйте их, если слишком много отправляется. Он работает с помощью файлов журналов и проверки, если неудачный запрос произошел из того же IP-адреса в настраиваемом пользователем количества времени. Затем он добавляет правила в брандмауэр, если он захватывает слишком много неудачных попыток, отказывая возможность подключения к вашему серверу.

В этом руководстве вы устанавливаете и настроите PyFilter, чтобы заблокировать запросы SSH. Затем вы устанавливаете PyFilter в качестве службы, а также опционально настроить синхронизацию BAR SERVER Server, функцию, позволяющую нескольким серверам делиться списком забаненных IP-адресов и включить PyFilter для записи данных о местонахождении о IP-адресе. Наконец, вы будете исследовать, как un-ban IP-адреса.

Предварительные условия

Чтобы завершить это руководство, вам понадобится:

  • Один сервер Ubuntu 16.04, созданный следующим Руководство по установке сервера Ubuntu 16.04 , в том числе audo без root пользователя и брандмауэр.
  • Python 3, который уже установлен по умолчанию на Ubuntu 16.04.
  • Пип установлен с Sudo APT-Get Установить Python3-Pip Отказ
  • (Необязательно) Redis, установленный следующим Как установить Redis на Ubuntu 16.04 Если вы хотите настроить функцию синхронизации Ban Ban Syncing Pyfilter Шаг 4 Отказ

Шаг 1 – Загрузка и настройка PyFilter

Мы скачаем Pyfilter, клонируя его репозиторий из GitHub. Переключитесь на свой домашний каталог и клонировать репозиторий:

cd ~
git clone https://github.com/Jason2605/PyFilter.git

Это создаст каталог под названием Pyfilter Отказ Переместите эту папку в /usr/local папка:

sudo mv PyFilter /usr/local/PyFilter

Затем перейдите на /usr/local/pyfilter каталог:

cd /usr/local/PyFilter

Далее нам нужно сделать файл конфигурации. Pyfilter поставляется с файлом конфигурации по умолчанию, расположенными в Config/config.default.json Отказ Мы скопируем это и отредактируем скопированную версию, а не редактировать файл по умолчанию напрямую. Таким образом, если что-то было пойти не так, у вас есть файл конфигурации по умолчанию для сравнения.

Скопируйте файл конфигурации по умолчанию:

sudo cp Config/config.default.json Config/config.json

Вы можете использовать меньше Команда для просмотра содержимого файла конфигурации:

less Config/config.json

Настройки по умолчанию требуют запросов в течение 5 секунд после последнего запроса, и это должно произойти 5 раз, они достаточно хороши, чтобы идти. Давайте запустим PyFilter и убедитесь, что вещи работают.

Шаг 2 – работает Pyfilter

Загрузка Pyfilter включает в себя скрипт под названием Run.sh который вы должны использовать для запуска PyFilter.

Во-первых, измените разрешения на скрипт, чтобы сделать его исполняемым исполняемым.

sudo chmod +x run.sh

Как только разрешения были предоставлены, запустите скрипт, чтобы начать PyFilter:

./run.sh

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

[secondary_label Output]
No file to check within rule: Mysql
No file to check within rule: Apache
No file to check within rule: Nginx
Checking Ssh logs

По умолчанию PyFilter Bans IPS, которые делают пять или более неудачных запросов, которые происходят в течение 5 секунд после предыдущего неудачного запроса. Вы можете изменить это в файле конфигурации PyFilter.

Эти результаты регистрируются в /usr/local/pyfilter/log каталог также.

Когда IP достиг пределов, который гарантирует запрет, вы увидите вывод, аналогичный этому:

[secondary_label Output]
2018-03-22 14:18:18 Found IP: <^>203.0.113.13<^> from server: <^>your_server_name<^>.

Примечание : Если вы случайно зафиксировали себя из своей капли, потому что вы забанили себя, вы можете следить за руководством Как использовать консоль Digitalocean для доступа к вашей капельке вернуться. Затем следуйте инструкциям Шаг 6 Удалить запрещенный IP.

Закрыть Pyfilter, нажмите Ctrl + C Отказ

Теперь давайте установим PyFilter в качестве услуги, поэтому он работает автоматически.

Шаг 3 – Создание услуги для Pyfilter

Теперь, когда вы знаете, что Pyfilter работает, давайте настроим его, чтобы запустить как сервис, чтобы он начнут каждый раз, когда мы перезагрузим сервер.

В пределах Pyfilter каталог, есть сценарий под названием install.sh Что создает сервис для Pyfilter и позволяет ему запустить запуск системы.

Измените скрипт, чтобы вы могли его выполнить:

sudo chmod +x install.sh

Затем запустите скрипт:

./install.sh

Вы увидите этот вывод, указывающий, что установка была успешной:

[secondary_label Output]
Service created and enabled, check the status of it by using "sudo systemctl status PyFilter"

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

sudo systemctl status PyFilter

Вы увидите этот вывод, показывающий, что сервис – Активный :

[secondary_label Output]
● PyFilter.service - PyFilter
   Loaded: loaded (/etc/systemd/system/PyFilter.service; enabled; vendor preset: enabled)
   Active: <^>active^> (running) since Wed 2018-03-21 18:55:35 UTC; 12s ago
 Main PID: 8383 (bash)
   CGroup: /system.slice/PyFilter.service
           ├─8383 bash /usr/local/PyFilter/run.sh
           ├─8384 sudo python3 run.py
           └─8387 python3 run.py

Если вы видите ошибку, снова просмотрите шаги установки.

Далее давайте посмотрим, как настроить PyFilter, чтобы поделиться запрещенными IP-адресами с другими серверами.

Шаг 4 – Настройка PyFilter для Brance Server Ban Синхронизация (необязательно)

Синхронизация Ban Server позволяет синхронизировать забаненные IP-адреса со всеми другими серверами, использующими PyFilter, чтобы защитить их, и запретить этот адрес, даже если он не выполнил квалификацию, которые необходимо забанить. Это означает, что это может быть один шаг впереди потенциальных ботов, ориентированных на ваши другие системы, поскольку IP уже запрещен.

Как указано в предварительных условиях, вам нужно установить и настроить Redis.

Вам также нужен Redis Python модуль, который вы можете установить с пипс :

pip3 install redis

Затем отредактируйте свой файл конфигурации, чтобы использовать Redis вместо SQLite. Открыть Config/config.json Файл в вашем текстовом редакторе:

nano Config/config.json

Найдите следующую строку:

[label Config/config.json]
"database": "sqlite"

Изменить SQLite. к Redis :

[label Config/config.json]
"database": "<^>redis<^>"

Далее измените информацию о подключении Redis. Найдите этот раздел файла:

[label Config/config.json]
  "redis": {
    "host": "<^>127.0.0.1<^>",
    "password": <^>null<^>,
    "database": 0,
    "sync_bans": {
      "active": true,
      "name": "<^>your_hostname<^>",
      "check_time": 600
    }
  },

Измените этот раздел, чтобы он включает в себя данные подключения для вашего сервера Redis. Тогда в пределах sync_bans Раздел, изменить Имя к вашему имени хоста. Это имя должно быть уникальным для каждой отдельной системы, использующего PyFilter с использованием одного и того же сервера Redis для того, чтобы Banc Ban Sync Sync работать правильно.

Сохраните файл и выйдите из редактора. Затем перезапустите PyFilter, чтобы применить эти изменения:

sudo systemctl restart PyFilter

Pyfilter теперь установлен и работает.

Шаг 5 – Настройка PyFilter для сбора данных о местоположении о IP-адресах (необязательно)

Pyfilter может получить данные о местонахождении о запрещенном IP, чтобы обеспечить статистическую информацию о том, откуда приходит большинство атак. Этот дополнительный модуль добавит эту информацию в журналы Pyfilter.

Чтобы использовать эту функцию, вам сначала нужно Geoip2 Python модуль, который вы можете установить с пипс :

pip3 install geoip2

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

sudo systemctl restart PyFilter

Теперь, когда вы видите запрещенный IP-адрес, вы увидите дополнительную информацию о IP:

[secondary_label Output]
2018-03-22 14:18:18 Found IP: <^>203.0.113.13<^> from server: <^>your_server_name<^>. <^>The IP was from United Kingdom<^>.

Pyfilter теперь успешно регистрирует, какую страну выступают запросы от.

Наконец, давайте посмотрим, как не заменить адрес.

Шаг 6 – ООН запрещают IP-адреса

PyFilter является чисто средством запрета IP-адресов путем создания правил iptables. Когда он запрещает IP, он обновляет правила брандмауэра, а затем сохраняет снимки правил к файлам /usr/local/pyfilter/config/blacklist.v4 и /usr/local/pyfilter/config/blacklist.v6 Отказ

Вот пример нескольких запрещенных адресов IPv4 в /usr/local/pyfilter/config/blacklist.v4 :

[label /usr/local/PyFilter/Config/blacklist.v4]
# Generated by iptables-save v1.6.0 on Thu Mar 22 19:53:04 2018
*filter
:INPUT ACCEPT [217:30580]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [249:30796]
<^>-A INPUT -s 203.0.113.13/32 -j DROP<^>
<^>-A INPUT -s 203.0.113.14/32 -j DROP<^>
<^>-A INPUT -s 203.0.113.15/32 -j DROP<^>
COMMIT
# Completed on Thu Mar 22 19:53:04 2018

Чтобы не запретить этот IP-адрес, откройте связанный файл BlackList в вашем текстовом редакторе:

sudo nano /usr/local/PyFilter/Config/blacklist.v4

Удалите соответствующие правила iptables из файла. В этом случае мы удалили 203.0.113.13 из файла:

[label /usr/local/PyFilter/Config/blacklist.v4]
# Generated by iptables-save v1.6.0 on Thu Mar 22 19:53:04 2018
*filter
:INPUT ACCEPT [217:30580]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [249:30796]
<^>-A INPUT -s 203.0.113.14/32 -j DROP<^>
<^>-A INPUT -s 203.0.113.15/32 -j DROP<^>
COMMIT
# Completed on Thu Mar 22 19:53:04 2018

Затем сохраните файл и закройте редактор. Перезапустите Pyfilter с sudo systemctl перезагрузите pyfilter И Pyfilter обновит ваши правила брандмауэра, используя этот файл.

Посмотреть Как перечислить и удалить правила брандмауэра iptables Для получения дополнительной информации о управляющих правилах с iptables.

Вы также можете сказать PyFilter игнорировать определенные IP-адреса, добавив их в раздел WhiteListed в /usr/local/pyfilter/config/config.json файл.

Заключение

Теперь у вас установлен Pyfilter и мониторинг ваших SSH-соединений.

Чтобы узнать больше о каждом разделе файла конфигурации и как настроить мониторинг для других сервисов, таких как MySQL и Apache, проверьте Pyfilter сайт Отказ

Этот пост был первоначально опубликован на сайт сообщества на цифровой камере . Автор выбрал Code.org получить пожертвование в 200 долларов как часть Писать для пожертвования программа.

Отредактировано: Брайан Хоган

Создайте, тестируйте и развертывайте что-то новое на Digitalocean – разрабатыватели облачных платформы All-in-One и их команд любят. Начнитесь с бесплатным кредитным кредитом $ 100 для новых пользователей: do.co/devto

Эта работа лицензирована под Creative Commons Attribution-uncommercial-sharealike 4.0 Международная лицензия Отказ

Оригинал: “https://dev.to/digitalocean_staff/how-to-block-unwanted-ssh-login-attempts-with-pyfilter-on-ubuntu-1604-4a6j”