Este artigo ensina como integrar o Telegram com Fail2Ban, para o serviço de mensagens. Com esta integração, a notificação do Fail2Ban será enviado através de serviços do Telegram. A instalação foi feita no Ubuntu 14.04.4 LTS.
Bom galera, vamos primeiramente fazer a atualização do sistema:
sudo apt-get update
Em seguida, o upgrade:
sudo apt-get upgrade
Agora vamos fazer a instalação do Fail2Ban:
sudo apt-get install fail2ban
Instalado com sucesso. Agora, vamos baixar o telegram-cli:
cd /opt sudo wget https://dl.dropboxusercontent.com/u/10090428/telegram-cli_1.0.6-1_amd64.deb
Instalando as dependências:
sudo apt-get -y install libjansson4
Instalando o telegram-cli:
sudo dpkg -i telegram-cli_1.0.6-1_amd64.deb
Depois de instalado, vamos registrar o nosso telegram-cli, com o nosso número. Digitando:
sudo telegram-cli
Telegram-cli version 1.3.3, Copyright (C) 2013-2015 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
Telegram-cli uses libtgl version 2.0.3
Telegram-cli includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
Telegram-cli uses libpython version 2.7.6
I: config dir=[/var/lib/telegram-cli/.telegram-cli]
phone number: 55929XXXXXXXX # numero do celular que será registrado o telegram.
code ('CALL' for phone code): 55278 # Código enviado ao número registrado acima.
> contact_list # digitar o comando para ser listado os contatos salvos na agenda do telegram ContatoTeste # exemplo de um contato salvo na agenda do telegram
> msg ContatoTeste "Mensagem de Teste" # enviando uma mensagem de teste para o contato.
> safe_quit # comando para sair do telegram, caso não saia, digite somente quit sem o safe_ para sair.
Configurando o Fail2Ban com o Telegram
Depois de instalar telegrama-cli e suas dependências, agora vamos adicionar telegram.conf.config em /etc/fail2ban/action.d.
# # Author: Mohammad Hafiz bin # Modified by: Rondinelle Lima Bispo <rondinellepqd@gmail.com> # # $Revision$ #
[Definition]
# Option: actionstart # Notes.: command executed once at the start of Fail2Ban. # Values: CMD #
actionstart = /usr/share/fail2ban/fail2ban-telegram.sh start
# Option: actionstop # Notes.: command executed once at the end of Fail2Ban # Values: CMD #
actionstop = /usr/share/fail2ban/fail2ban-telegram.sh stop
# Option: actioncheck # Notes.: command executed once before each actionban command # Values: CMD #
actioncheck =
# Option: actionban # Notes.: command executed when banning an IP. Take care that the # command is executed with Fail2Ban user rights. # Tags: IP address # number of failures # # Values: CMD #
actionban = /usr/share/fail2ban/fail2ban-telegram.sh ban
# Option: actionunban # Notes.: command executed when unbanning an IP. Take care that the # command is executed with Fail2Ban user rights. # Tags: IP address # number of failures # # Values: CMD #
actionunban = /usr/share/fail2ban/fail2ban-telegram.sh unban
[Init]
init = 'Fail2Ban Telegram plugins activated"
## FIM DO ARQUIVO TELEGRAM.CONF ##
Ctrl+x para sair e Y para salvar o arquivo, para quem vai usar o editor nano.
Script
Agora vamos precisar criar o script que será chamado pelo nosso plugin Telegram.
#!/bin/bash
# Sends text messages using telegram api
# to alert server administrator of ip banning.
#
# Requires one argument, one of the following:
# start
# stop
# ban
# unban
#
# Optional second argument: IP for ban/unban
#replace this with your own telegram contact
to=ContatoTeste #contato que recebera as notificações pelo telegram
# Display usage information
function show_usage {
echo "Usage: $0 action <ip>"
echo "Where action is start, stop, ban, unban"
echo "and ip is optional passed to ban, unban"
exit
}
# Actually send telegram message
# Expects the telegram content (body) to be passed
# as argument.
function send_telegram {
msg="[`date -Iminutes`] - `hostname`: Notice: $1 "
echo "$msg" >> /var/log/fail2ban-telegram.log
(echo "contact_list";sleep 30;echo "msg $to $msg"; echo "safe_quit") | telegram-cli
exit
}
# Check for script arguments
if [ $# -lt 1 ]
then
show_usage
fi
# Take action depending on argument
if [ "$1" = 'start' ]
then
message="Fail2ban just started."
send_telegram "$message"
elif [ "$1" = 'stop' ]
then
message="Fail2ban just stopped."
send_telegram "$message"
elif [ "$1" = 'ban' ]
then
message=$([ "$2" != '' ] && echo "Fail2ban just banned $2" || echo 'Fail2ban just banned an ip.' )
send_telegram "$message"
elif [ "$1" = 'unban' ]
then
message=$([ "$2" != '' ] && echo "Fail2ban just unbanned $2" || echo "Fail2ban just unbanned an ip." )
send_telegram "$message"
else
show_usage
fi
### FIM DO ESCRIPT ###
Ctrl+x para sair e Y para salvar o arquivo. Para quem vai usar o editor nano.
Depois disso, vamos precisar dar permissão de execução para o nosso script. Digitando:
Ctrl+x para sair e Y para salvar o arquivo. Para quem vai usar o editor nano.
Concluído, vamos reiniciar o serviço Fail2Ban:
sudo service fail2ban restart
Após a reinicialização do servidor Fail2Ban e se você acompanhou os passos acima, estará recebendo a mensagem do Telegram e e-mail de notificação sobre a inicialização Fail2Ban.