By Carlos Domingues (cabdomingues)
IT Security - Como criar mapas (suportados no
Google maps) com a geolocalização dos ata...
IT Security - Como criar mapas (suportados no Google maps) com a geolocalização
dos atacantes usando o fail2ban / fail2sql...
Fail2ban
•Detectar tentativas
de acesso indevido à
rede (através de
análise de logs de
smtp, imap, ftp, ssh,
etc.)
Fail2sq...
Fail2ban - install
• Dependendo da distribuição de Linux, o processo de instalação poderá ser diferente
• yum install fail...
Fail2sql - install
Fail2SQL é escrito em PHP e usa o serviço do MaxMind GeoIP PHP API para dar informação geográfica do IP...
Fail2sql - install
O Fail2SQL instala-se de forma muito simples:
1º download
wget http://fail2sql.sourceforge.net/fail2sql...
Fail2sql – config
Editar o ficheiro /usr/share/fail2ban/fail2sql/bin/file2sql
(neste caso está em /usr/share/fail2ban/fail...
Fail2sql – install db
CREATE TABLE `fail2ban` (
`id` int NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`protocol` varchar...
Fail2sql – customize
Como adicionei mais um campo (datetime) na BD, pretendo que esse campo seja preenchido
com a data de ...
Fail2ban
• Pressupondo que o Fail2ban está corretamente configurado, a única alteração para este efeito
(usar o fail2sql) ...
NOTA:
Nesta fase, os IPs banidos pelo fail2ban já devem estar a ser inseridos na base de
dados mysql.
Se isso não acontece...
Google maps
Para poder usar os mapas Google, temos de criar em primeiro lugar, uma chave de API:
1º go to https://console....
Google maps
Fail2ban-geo - install
Download dos ficheiros do fail2ban-geo (chamei-lhe assim, mas o autor chama-lhe
banhammer).
http://...
Fail2ban-geo – customize
Editar index.php e adicionar a chave do Google:
Depois de criar “Chave para aplicativos do navega...
Fail2ban-geo – customize
Edit dbinfo.php
<?php //aconselho a adicionar php a seguir ao <? para evitar erros por causa dos ...
Fail2ban-geo – customize
Edit getmarkers.php
Como eu adicionei um campo (timestamp) na BD Myssql, com a data na qual este ...
Fail2ban-geo – customize
Edit maps.js
Uma informação que para mim é importante na alálise das tentativas de acesso indevid...
RESULTADO FINAL
Próximos SlideShares
Carregando em…5
×

IT security - Fail2ban, fail2sql e googlemaps (PT Language)

519 visualizações

Publicada em

IT Security - Como criar mapas (suportados no
Google maps) com a geolocalização dos atacantes
usando o fail2ban / fail2sql / fail2ban-geo

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
519
No SlideShare
0
A partir de incorporações
0
Número de incorporações
12
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

IT security - Fail2ban, fail2sql e googlemaps (PT Language)

  1. 1. By Carlos Domingues (cabdomingues) IT Security - Como criar mapas (suportados no Google maps) com a geolocalização dos atacantes usando o fail2ban / fail2sql / fail2ban-geo
  2. 2. IT Security - Como criar mapas (suportados no Google maps) com a geolocalização dos atacantes usando o fail2ban / fail2sql / fail2ban-geo Objetivo: Aumentar a segurança da rede informática Bloquear de forma automática tentativas de acesso indevido através de vários protocolos: ex. smtp, imap, ssh, ftp, etc., etc. Facilitar a análise dessas tentativas Solução: Fail2ban – http://www.fail2ban.org Fail2sql – http://fail2sql.sourceforge.net Fail2ban-geo - PHP interface - http://www.byteme.org.uk/2014/04/21/ban-hammer-fail2ban- geo-ip-on-google-maps/ Pre-requisitos: Servidor com iptables instalado Servidor Mysql disponível Apache web server (ou outro que interprete PHP e aceda a BDs Mysql) Conta no Google (para criar a API de autenticação aplicacional)
  3. 3. Fail2ban •Detectar tentativas de acesso indevido à rede (através de análise de logs de smtp, imap, ftp, ssh, etc.) Fail2sql •Registar essas tentativas numa base de dados mysql para análise posterior Fail2geo & Google maps •Usar o fail2ban-geo para representar de forma geolocalizadas todas as tentativas de acesso indevido
  4. 4. Fail2ban - install • Dependendo da distribuição de Linux, o processo de instalação poderá ser diferente • yum install fail2ban • apt-get install fail2ban • Extrair código from tar.gaz and ./configure / make / make install Etc.. Alguns guias de instalação do Fail2ban https://www.digitalocean.com/community/tutorials/how-to-install-and-use-fail2ban-on-ubuntu-14-04 https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-centos-6 https://help.ubuntu.com/community/Fail2ban
  5. 5. Fail2sql - install Fail2SQL é escrito em PHP e usa o serviço do MaxMind GeoIP PHP API para dar informação geográfica do IP. Os dados são guardados numa BD MySQL • Name • Protocol • Port • IP • Count (total banned) • Longitude • Latitude • Country Code • Geo Data (city, country) • NOTA cabdomingues : Adicionei mais uma linha chamada timestamp (datetime) para registar a data em que o IP foi banido. Ver mais informação em https://www.samculley.co.uk/log-fail2ban-bans-to-mysql-using-fail2sql/ e http://fail2sql.sourceforge.net/
  6. 6. Fail2sql - install O Fail2SQL instala-se de forma muito simples: 1º download wget http://fail2sql.sourceforge.net/fail2sql-1.0.tar.gz 2º untar tar –zxvf fail2sql-1.0.tar.gz 3º execute mv fail2sql-1.0/* /usr/share/fail2ban/fail2sql/bin/ //colocam-se os ficheiros numa pasta mais adequada /opt/fail2sql-1.0/fail2sql –u //faz o update da base dados GeoIP /opt/fail2sql-1.0/fail2sql –l //lista os Ips banidos
  7. 7. Fail2sql – config Editar o ficheiro /usr/share/fail2ban/fail2sql/bin/file2sql (neste caso está em /usr/share/fail2ban/fail2sql/bin. Pode estar noutro lado qualquer, dependendo da pasta de instalação) Alterar as configurações de acesso ao mysql, que deverão ser criadas (ver páginas seguintes) $home = "/usr/share/fail2ban/fail2sql/bin"; $link = mysql_connect('srv-nomeservidor_mysql', 'fail2ban_user', ‘change_password') or die('Could not connect: ' . mysql_error());
  8. 8. Fail2sql – install db CREATE TABLE `fail2ban` ( `id` int NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `protocol` varchar(4) NOT NULL, `port` int(11) NOT NULL, `ip` varchar(20) NOT NULL, `count` int(11) NOT NULL, `longitude` varchar(20) DEFAULT NULL, `latitude` varchar(20) DEFAULT NULL, `country` varchar(5) DEFAULT NULL, `geo` varchar(255) DEFAULT NULL, `timestamp` datetime DEFAULT NULL, //nova coluna adicionada cabdomingues PRIMARY KEY (`id`) ) ENGINE=MyISAM; Criar user específico na BD para este serviço (ex. file2ban_user) e dar as permissões adequadas.
  9. 9. Fail2sql – customize Como adicionei mais um campo (datetime) na BD, pretendo que esse campo seja preenchido com a data de registo. Alterar o script fail2sql e adicionar mais um campo nos inserts (que é a data atual – now() ) Linha 58 :- $query = "INSERT INTO `fail2ban` values ('', '".$name."', '".$protocol."', '".$port."', '".$ip."', '1', '".$geoip->longitude."', '".$geoip->latitude."', '".$geoip->country_code."', '".$geoip->city.", ".$geoip->country_name."', NOW())"; Linha 61:- $query = "INSERT INTO `fail2ban` values ('', '".$name."', '".$protocol."', '".$port."', '".$ip."', '1', '', '', '', '', NOW())";
  10. 10. Fail2ban • Pressupondo que o Fail2ban está corretamente configurado, a única alteração para este efeito (usar o fail2sql) será adicionar a linha abaixo identificada no ficheiro de configuração da ação do iptables: ex. /etc/fail2ban/action.d/iptables.conf actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> //esta linha supostamente já deve existir /usr/share/fail2ban/fail2sql/bin/fail2sql <name> <protocol> <port> <ip> //esta deve ser adicionada Esta linha deve ser customizada de acordo com a directoria de instalação do fail2sql (ver página Fail2sql - install) • Restart fail2ban service
  11. 11. NOTA: Nesta fase, os IPs banidos pelo fail2ban já devem estar a ser inseridos na base de dados mysql. Se isso não acontecer, rever as configurações de acesso à BD mysql no script fail2sql e rever as configurações do fail2ban (iptables action) /etc/fail2ban/action.d/iptables.conf
  12. 12. Google maps Para poder usar os mapas Google, temos de criar em primeiro lugar, uma chave de API: 1º go to https://console.developers.google.com/project 2º criar novo projeto 3º No menu de APIs e autenticação, escolher “Credenciais” 4º e depois criar “Chave para aplicativos do navegador” Será esta chave que deve ser usada na linha 8 do index.php (script PHP do fail2ban-geo) <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&sensor=false"></script>
  13. 13. Google maps
  14. 14. Fail2ban-geo - install Download dos ficheiros do fail2ban-geo (chamei-lhe assim, mas o autor chama-lhe banhammer). http://static.byteme.org.uk/banhammer.tar.gz Extrair todos os ficheiros para uma área do apache (dentro da zona publica - html) tar –zxvf banhammer.tar.gz mv banhammer/* /var/www/html/fail2ban-geo/ Neste caso a minha pasta de instalação vai ser : /var/www/html/fail2ban-geo/ e o endereço de acesso http://nome_do_servidor/fail2ban-geo
  15. 15. Fail2ban-geo – customize Editar index.php e adicionar a chave do Google: Depois de criar “Chave para aplicativos do navegador” no google temos de adicionar esta chave na linha 8 do index.php (script PHP do fail2ban-geo) <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&sensor=false"></script> Nota: Qualquer erro que aconteça ao gerar o mapa do Google pode estar relacionado com este ponto.
  16. 16. Fail2ban-geo – customize Edit dbinfo.php <?php //aconselho a adicionar php a seguir ao <? para evitar erros por causa dos short tags do php.ini. O autor tinha apenas <? $db_host = '127.0.0.1'; //ip do servidor de mysql (pode nao ser o mesmo do apache) $db_user = 'fail2ban_user'; $db_pwd = ‘change_password'; $database = 'fail2ban'; $table = 'fail2ban'; ?>
  17. 17. Fail2ban-geo – customize Edit getmarkers.php Como eu adicionei um campo (timestamp) na BD Myssql, com a data na qual este IP foi banido, vou configurar o meu sistema para apenas mostrar o mapa com as localizações dos ataques dos últimos 3 dias: $query = "SELECT * FROM $table WHERE timestamp >= ( CURDATE() - INTERVAL 3 DAY )"; Adicionei a esta query a condição WHERE timestamp >= ( CURDATE() - INTERVAL 3 DAY )"; para ver no mapa apenas os ultimos 3 dias. Caso contrário o mapa ficava muito preenchido e ilegível.
  18. 18. Fail2ban-geo – customize Edit maps.js Uma informação que para mim é importante na alálise das tentativas de acesso indevido é saber qual o ISP (Internet Service Provider) de onde vêm os ataques. Uma forma muito simples, mas eficaz, é usar um outro serviço (o db-ip.com): Assim sendo, no mapa produxido pelo maps.js alterei a linha, adicionando um link novo: var html = "<b>" + type+ " ATTACK" + "</b><br />"+name + "<br/><a href='https://db-ip.com/" + address + "'>Mais INFO " + "</a> ou <a href='http://whois.domaintools.com/" + address + "'> WHOIS</a> sobre </a>" + address; O efeito que se consegue é este e ao clickar nos links, temos toda a informação que precisamos ->
  19. 19. RESULTADO FINAL

×