- Python 82.6%
- Rust 17.4%
| rust | ||
| blacklist.txt | ||
| detect_scan_port.py | ||
| honeypot.service | ||
| keywords.txt | ||
| nettest.py | ||
| README.md | ||
| whitelist.txt | ||
Honeypot Service
Этот проект реализует honeypot для Linux, блокирующий нежелательные IP-адреса с использованием nftables и отправляющий уведомления в Telegram.
Описание
Скрипт на Python прослушивает указанный порт, автоматически добавляет подключившиеся IP-адреса в черный список nftables и отправляет уведомление в Telegram. Скрипт периодически синхронизирует списки разрешенных/запрещенных IP-адресов и ключевых слов из удаленных источников.
Состав проекта:
nettest.py: Основной скрипт honeypot на Python.honeypot.service: Файл systemd для управления службой honeypot.whitelist.txt: Список IP-адресов, которые не должны быть заблокированы.blacklist.txt: Список IP-адресов для блокировки.keywords.txt: Список ключевых слов для обнаружения подозрительных хостов.
Требования:
- Python 3.6 или выше
nftablespython3-requests(библиотека Python Requests)- Активный Telegram-бот и ID чата
- Прямой интернет доступ (не через прокси, без DPI)
Установка
-
Клонируйте репозиторий (или загрузите файлы):
git clone https://gitflic.ru/project/opencard/honeypot.git /root/honeypot cd /root/honeypot -
Установите необходимые пакеты Python:
apt-get update apt-get install python3-pip pip3 install requests ipaddress python3-systemd -
Настройте переменные окружения:
- Отредактируйте
nettest.pyи укажите свойTELEGRAM_BOT_TOKENиTELEGRAM_CHAT_ID. - Настройте остальные параметры конфигурации в
nettest.py(например,PORT,BASE_DIR,REMOTE_URL_WHITELISTи т.д.).
- Отредактируйте
-
Разместите файлы конфигурации:
mkdir -p /etc/honeypot mv whitelist.txt /etc/honeypot/ mv blacklist.txt /etc/honeypot/ mv keywords.txt /etc/honeypot/ -
Установите права:
chmod +x /root/honeypot/nettest.py -
Установите и запустите службу systemd:
mv honeypot.service.txt honeypot.service mv honeypot.service /etc/systemd/system/ systemctl daemon-reload systemctl enable honeypot.service systemctl start honeypot.service
Управление службой:
-
Запуск службы:
systemctl start honeypot.service -
Остановка службы:
systemctl stop honeypot.service -
Перезапуск службы:
systemctl restart honeypot.service -
Просмотр статуса службы:
systemctl status honeypot.service
Проверка работоспособности:
-
Проверьте статус службы:
systemctl status honeypot.serviceУбедитесь, что служба запущена и не имеет ошибок. Проверьте
/var/log/honeypot.logна наличие ошибок. -
Проверьте правила
nftables:nft list table ip honeypotУбедитесь, что таблица
honeypotсоздана и содержит цепочкиinputиoutputс правилами для блокировки трафика. Убедитесь, что наборblacklistсуществует. -
Проверьте блокировку IP-адреса:
-
Подключитесь к серверу с IP-адреса, которого нет в
whitelist.txt. Для этого можно использоватьtelnet,netcat,sshили любой другой протокол. -
Проверьте уведомления в Telegram. Вы должны получить уведомление о блокировке IP-адреса.
-
Проверьте черный список
nftables:nft list set ip honeypot blacklistВ списке должен появиться заблокированный IP-адрес.
-
-
Проверьте синхронизацию списков:
- Измените содержимое файлов
whitelist.txt,blacklist.txtилиkeywords.txtна удаленном сервере (указанном вREMOTE_URL_WHITELIST,REMOTE_URL_BLACKLISTиREMOTE_URL_KEYWORDS). - Дождитесь следующего интервала синхронизации (по умолчанию 1 час).
- Проверьте, что изменения были применены в локальных файлах
/etc/honeypot/whitelist.txt,/etc/honeypot/blacklist.txtи/etc/honeypot/keywords.txt. - Проверьте уведомления в Telegram. Вы должны получить уведомление об изменениях в списках.
- Измените содержимое файлов
Рекомендации:
- Настройте систему ротации логов: Чтобы избежать переполнения диска, настройте систему ротации логов для файла
/var/log/honeypot.log. - Используйте Fail2Ban (опционально): Вы можете интегрировать honeypot с Fail2Ban для более продвинутой защиты.
- Безопасность Telegram-бота: Храните токен Telegram-бота в безопасном месте и не публикуйте его в открытом доступе.
Примеры алиасов (для файла .bashrc или .zshrc):
alias hps='systemctl status honeypot.service' # Статус службы
alias hpr='systemctl restart honeypot.service' # Перезапуск службы
alias hpl="nft list table ip honeypot" # Список правил nftables
alias hpbl="nft list set ip honeypot blacklist" # Список заблокированных IP
alias hpctl="tail -f /var/log/honeypot.log" # Просмотр лога в реальном времени
# Применить алиасы
# source ~/.bashrc # для bash
# source ~/.zshrc # для zsh