Поиск по сайту:

Повысьте безопасность IPv4 с помощью Fail2Ban и Tinyhoneypot на Debian Jessie


На этой странице

  1. Ингредиенты
  2. Настройки
  3. Убедитесь, что он работает
  4. Давайте настроим ваш Fail2Ban для взаимодействия с TinyHoneyPot.
  5. Постскриптум

Это пятиминутное упражнение, чтобы повысить безопасность на машине с IPv4-адресом. Целью настройки, описанной в этом руководстве, является блокировка сканеров портов и вредоносных открывателей портов на определенный период времени. Это упражнение опробовано и применено только к Debian Jessie. Во время упражнения каждая команда фиксируется как root. Это ваше дело, как получить root-доступ.

Либо su -, sudo, вход в консоль и т.д...

Инструкция для ленивых новичков: Когда я представляю приглашение bash, просто скопируйте и вставьте жирную часть текста в свою.

Ингредиенты

  • Программное обеспечение fail2ban может динамически обрабатывать правила вашего брандмауэра, чтобы блокировать злоумышленников.
  • Tinishhoneypot может прослушивать TCP/IP-порт и регистрировать информацию об открывателях.
  • Служба xinetd запускает tinyhoneypot и управляет прослушиваемыми портами.

Установите ингредиенты: (просто скопируйте и вставьте выделенную жирным шрифтом часть текста)

:~# apt-get install tinyhoneypot fail2ban xinetd

Настройки

Чтобы заставить SSH прослушивать другой порт, замените файл конфигурации ssh на и альтернативный порт ssh:

:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config

Ваша исходная конфигурация /etc/ssh/sshd_config сохраняется как /etc/ssh/sshd_config.orig.

Когда вы перезапустите службу SSH, она теперь будет прослушивать порт 2201 (а не 22).

:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd

Все идет нормально..

Настройте Xinetd для запуска tinyhoneypot и прослушивания порта 22 TCP:

:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/

Отредактируйте файл /etc/xinetd.d/thp-pasv следующим образом:

:~# cat /etc/xinetd.d/thp-pasv
# default: on
# description: thp-ftpd calls the generic thpsvcs with param "ftp",
#       resulting in an ftpd emulation.

service thp-pasv
{
        type                    = UNLISTED
        socket_type             = stream
        protocol                = tcp
        port                    = 22
        wait                    = no
        user                    = thpot
        server                  = /usr/sbin/thpot
        server_args             = nullresp
        nice                    = 10
        disable                 = no
        instances               = 1
        per_source              = 1

}

(RE) Запустите xinetd с новыми настройками и убедитесь, что он прослушивает порт 22.

:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

Убедитесь, что он работает

Откройте ssh-соединение с другой машины.

:~$ ssh 192.168.88.212

Через некоторое время ничего не должно происходить, прервите его [Ctrl + C]

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

:~# cat /var/log/thpot/captures
Feb 29 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39

Если все прошло хорошо, в вашем журнале захвата должна быть запись.

Давайте настроим ваш Fail2Ban для взаимодействия с TinyHoneyPot

:/etc/fail2ban# cp -v jail.conf jail.local

Никогда не редактируйте ваш jail.conf!! Сделайте его копию как jail.local и внесите изменения ТОЛЬКО в файл .local!

Найдите раздел [ssh] в файле jail.local и измените его в зависимости от [порта 2201] файла /etc/ssh/sshd_config.

[ssh]

enabled  = true
port     = 2201
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Сделать и ввести в разделе JAIL файла jail.local:

Это заставит Fail2Ban прочитать файл журнала tinyhoneypot и получить от него IPv4-адрес для отказа. Я рекомендую разместить его после раздела [ssh]. Речь идет о 137-м ряду.

[thp-ssh]

enabled  = true
port     = all
filter   = thpot
logpath  = /var/log/thpot/captures
banaction = iptables-allports
maxretry = 1
findtime = 1800
bantime = 99999

Fail2ban должен иметь фильтр, чтобы знать, что запрещать. Там есть макрос, который заменяет IPv4-адрес. Создайте для него фильтр:

:~# cat /etc/fail2ban/filter.d/thpot.local
[Definition]

failregex = SRC=<HOST>
ignoreregex =

Это было сделано!

Просто короткое тестирование....

:~# service fail2ban restart

Вы должны увидеть нечто подобное в конце /var/log/fail2ban.log.

2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Creating new jail 'thp-ssh'
2016-02-29 13:54:06,915 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' uses pyinotify
2016-02-29 13:54:06,920 fail2ban.jail   [6102]: INFO    Initiated 'pyinotify' backend
2016-02-29 13:54:06,922 fail2ban.filter [6102]: INFO    Added logfile = /var/log/thpot/captures
2016-02-29 13:54:06,923 fail2ban.filter [6102]: INFO    Set maxRetry = 1
2016-02-29 13:54:06,925 fail2ban.filter [6102]: INFO    Set findtime = 1800
2016-02-29 13:54:06,926 fail2ban.actions[6102]: INFO    Set banTime = 99999
2016-02-29 13:54:06,934 fail2ban.jail   [6102]: INFO    Jail 'ssh' started
2016-02-29 13:54:06,940 fail2ban.jail   [6102]: INFO    Jail 'thp-ssh' started

Вы можете увидеть свои пользовательские значения на сайте jail.local и при необходимости настроить их.

findtime = 1800
bantime = 99999

Посмотрите на ваши текущие правила iptables:

:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:05:17 2016
*filter
:INPUT ACCEPT [2:64]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:05:17 2016

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

:~# ssh 192.168.88.212
ssh: connect to host 192.168.88.212 port 22: Connection refused

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

Ваши правила iptables должны выглядеть так:

:~# iptables-save
# Generated by iptables-save v1.4.21 on Mon Feb 29 14:10:53 2016
*filter
:INPUT ACCEPT [4:542]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1:88]
:fail2ban-ssh - [0:0]
:fail2ban-thp-ssh - [0:0]
-A INPUT -p tcp -j fail2ban-thp-ssh
-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban-ssh
-A fail2ban-ssh -j RETURN
-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-thp-ssh -j RETURN
COMMIT
# Completed on Mon Feb 29 14:10:53 2016

Результат: ПК злоумышленника ОТКЛОНЯЕТСЯ на каждом порту.

Постскриптум

На момент написания этого руководства ни Fail2Ban, ни tinyhoneypot не могли работать с IPv6. Если вы считаете это руководство полезным, поделитесь им! Сообщите об этом своим друзьям.