Ola, neste artigo vamos tratar de segurança de servidor linux, e principalmente do Asterisk, ja faz
algum tempo que tenho tido vários contatos perguntando sobre como configurar o ip junto com o
fai2ban para proteger o Asterisk.
Bom, estou usando Centos 5.5, para começar é muito importante alterar a porta do SSH para uma
por ta alta EX: 22854
para fazer esta modificação basta um comando:
sed -i "s/#Port 22/Port 22854/g" /etc/ssh/sshd_config
Agora que esta alterado reiniciamos o SSH:
service sshd restart
Agora vamos baixr e instalar o Fail2Ban
cd /usr/src
wget http://ufpr.dl.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-
0.8.4.tar.bz2
tar -jxf fail2ban-0.8.4.tar.bz2
cd fail2ban-0.8.4
yum install python iptables
python setup.py install
Iniciar o Fail2Ban no boot
cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban
chmod 755 /etc/init.d/fail2ban
Agora que estamos com tudo instalado vamos a configuração:
Editamos o arquivo /etc/fail2ban/jail.conf e colocamos estas linhas no final
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender= fail2ban@example.org Este endereço
de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo. ]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 259200
Apos criamos o arquivo /etc/fail2ban/filter.d/asterisk.conf com este conteúdo:
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer found
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name mismatch
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Device does not match ACL
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Peer is not supposed to register
NOTICE.* <HOST> failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Pronto já esta configurado nosso fail2ban.
Agora modificamos nosso arquivo /etc/asterisk/logger.conf
logo abaixo de [general] adicionamos
dateformat=%F %T
e verificamos a linha
messages => notice,warning,error
Cuide para deixar descomentada, retirando a virgula da frente
e ao final do arquivo adicionamos
syslog.local0 => notice
Agora reiniciamos nosso asterisk
service asterisk restart
Agora configuramos nosso iptables
Altere a 1º regra com sua porta do ssh:
iptables -I INPUT -p tcp --dport 22854 -j ACCEPT
iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
iptables -I INPUT -p udp -m multiport --dport 80 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4569 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5036 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 2727 -j ACCEPT
Salvamos as regras do iptables
service iptables save
Adicionamos os dois serviços no boot
chkconfig iptables on
chkconfig fail2ban on
Agora é só iniciar o iptables e apos o fail2ban
service iptables start
service fail2ban start
Pronto, agora seu servidor voip esta bastante protegido.
SCRIPT AUTOMÁTICO
Para quem gosta de facilitar as coisas deixo aqui um script para instalar automático:
cd /usr/src
wget http://www.magnussolution.com/billing/install_iptables_fail2ban.sh
chmod +x ./install_iptables_fail2ban.sh
./install_iptables_fail2ban.sh 22
OBS: Este segundo parametro no comando acima é a porta do SSH, você pode alterar se quizer,
ajuda muito na segurança.
Obrigado