Повысьте безопасность IPv4 с помощью Fail2Ban и Tinyhoneypot на Debian Jessie
На этой странице
- Ингредиенты
- Настройки
- Убедитесь, что он работает
- Давайте настроим ваш Fail2Ban для взаимодействия с TinyHoneyPot.
- Постскриптум
Это пятиминутное упражнение, чтобы повысить безопасность на машине с 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 должен иметь фильтр, чтобы знать, что запрещать. Там
:~# 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. Если вы считаете это руководство полезным, поделитесь им! Сообщите об этом своим друзьям.