{"id":163,"date":"2023-11-02T08:00:00","date_gmt":"2023-11-02T11:00:00","guid":{"rendered":"https:\/\/difusao.tech\/blog\/?p=163"},"modified":"2023-11-01T22:14:55","modified_gmt":"2023-11-02T01:14:55","slug":"como-bloquear-um-range-de-ip-no-linux-usando-iptables","status":"publish","type":"post","link":"https:\/\/difusao.tech\/blog\/como-bloquear-um-range-de-ip-no-linux-usando-iptables\/","title":{"rendered":"Como bloquear um range de IP no Linux usando iptables"},"content":{"rendered":"\n<p class=\"has-text-align-center\">Como bloquear um (pa\u00eds) range de IP no Linux usando iptables.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"992\" height=\"530\" src=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2023\/11\/image.png\" alt=\"\" class=\"wp-image-164\" style=\"aspect-ratio:1.8716981132075472;width:674px;height:auto\" srcset=\"https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2023\/11\/image.png 992w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2023\/11\/image-300x160.png 300w, https:\/\/difusao.tech\/blog\/wp-content\/uploads\/2023\/11\/image-768x410.png 768w\" sizes=\"auto, (max-width: 992px) 100vw, 992px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>Iptables<\/strong> \u00e9 a aplica\u00e7\u00e3o nativa de firewall do linux. Atrav\u00e9s dele, voc\u00ea pode realizar bloqueio de IPs, controle de tr\u00e1fego de entrada, bloqueios de saida de tr\u00e1fego.<\/p>\n\n\n\n<p>Nesta semana, um de nossos parceiros estava recebendo um flood (ataque) em seu servidor de e-mails (IMAP).<\/p>\n\n\n\n<p>Primeiramente ele foi alertado pela sua hospedagem que o tr\u00e1fego de saida na porta 25 estava extremamente alto.<\/p>\n\n\n\n<p>Isso estava acontecendo por que o ataque consiste em enviar uma massa extremamente grande de tentativas de conex\u00e3o, onde as mesmas falham e enviam essa informa\u00e7\u00e3o de falha na saida da porta 25.<\/p>\n\n\n\n<p>Segue o log:<\/p>\n\n\n\n<p><mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">2023-10-25 23:18:54 dovecot_login authenticator failed for (localhost) [46.<strong><em>.<\/em><\/strong>.<em>44]:30670: 535 Incorrect authentication data (set_id=zarzadca) 2023-10-25 23:18:55 SMTP connection from [46.<strong><em>.<\/em><\/strong>.<\/em>44]:5150 (TCP\/IP connection count = 4)<\/mark><\/p>\n\n\n\n<p>Ao verificar que os ips s\u00e3o de paises onde o nosso parceiro n\u00e3o faz neg\u00f3cios a primeira coisa que me veio a mete seria bloquear todo o pa\u00eds atacante.<\/p>\n\n\n\n<p>Iniciei a confec\u00e7\u00e3o do script quando me veio a seguinte quest\u00e3o a mente:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Ser\u00e1 que alguem j\u00e1 fez esse script? \ud83e\udd14<\/p>\n\n\n\n<p>Bingo, achei um script na internet que estava precisando dar uma ajustada, pois acredito que ele seja antigo, fiz os ajustes e vou deixar o link do github e o script logo abaixo caso voc\u00ea n\u00e3o queria olhar no github e nem me seguir por l\u00e1. \ud83d\ude22<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/Leonardo-Ferreira-costa\/block-iptables.sh\">https:\/\/github.com\/Leonardo-Ferreira-costa\/block-iptables.sh<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\r\n# O script tem a inten\u00e7\u00e3o de bloquear um range de ip de um determinado pa\u00eds, para saber o c\u00f3dio do p\u00e1is verificar na url informada abaixo.\r\n# See url for more info - http:\/\/www.cyberciti.biz\/faq\/?p=3402\r\n# Author: nixCraft &lt;www.cyberciti.biz> under GPL v.2.0+\r\n# Adapta\u00e7\u00e3o para pt-br: Leonardo F. Costa &lt;www.difusao.tech\/blog>\r\n# -----------------------------------------------------------------------------\r\n\r\n#Inserir neste ponto os pa\u00edses que ser\u00e3o bloqueados, verificar na url: http:\/\/www.ipdeny.com\/ipblocks\r\nISO=\"ir ru af cn\"\r\n### Vari\u00e1veis \u200b\u200bpara facilitar o uso do script que aponta para iptables, wget para baixar os arquivos da base de dados e egrep para selecionar o IP sem nenhum s\u00edmbolo que iptables n\u00e3o possa interpretar ###\r\n\r\nIPT=\/sbin\/iptables\r\nWGET=\/usr\/bin\/wget\r\nEGREP=\/bin\/egrep\r\n\r\n#Nova tabela com as regioes para banir\r\nSPAMLIST=\"countrydrop\"\r\n#Local da base de dados\r\nZONEROOT=\"\/root\/iptables\"\r\n#URL com os ips dos pa\u00edses\r\nDLROOT=\"http:\/\/www.ipdeny.com\/ipblocks\/data\/countries\"\r\n#Funcao que vai limpar as configuracoes default do iptables\r\n\r\ncleanOldRules() {\r\n    $IPT -F\r\n    $IPT -X\r\n    $IPT -t nat -F\r\n    $IPT -t nat -X\r\n    $IPT -t mangle -F\r\n    $IPT -t mangle -X\r\n    $IPT -P INPUT ACCEPT\r\n    $IPT -P OUTPUT ACCEPT\r\n    $IPT -P FORWARD ACCEPT\r\n}\r\n\r\n\r\n#Criamos o diretorio para criar a base de dados.\r\n&#91; ! -d $ZONEROOT ] &amp;&amp; \/bin\/mkdir -p $ZONEROOT\r\n\r\n#Executamos a fun\u00e7\u00e3o de limpeza do iptables\r\ncleanOldRules\r\n\r\n#Criamos a tabela do iptables com o nome da vari\u00e1vel SPAMLIST\r\n$IPT -N $SPAMLIST\r\n\r\nfor c in $ISO; do\r\n    # Base de dados das zonas \u00e0 bloquear.\r\n    tDB=$ZONEROOT\/$c.zone\r\n\r\n    # Baixamos a base de datos atualizada.\r\n    $WGET -O $tDB $DLROOT\/$c.zone\r\n\r\n    # Mensagem do pa\u00eds bloqueado que aparecer\u00e1 no log do iptables\r\n    SPAMDROPMSG=\"$c Pa\u00eds bloqueado\"\r\n\r\n    # Filtramos a base de dados para que o iptables interprete corretamente a base de dados e vamos analisar cada bloco de IP.\r\n    BADIPS=$(egrep -v \"^#|^$\" $tDB)\r\n    for ipblock in $BADIPS; do\r\n        $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix \"$SPAMDROPMSG\"\r\n        $IPT -A $SPAMLIST -s $ipblock -j DROP\r\n    done\r\ndone\r\n\r\n# Drop todo\r\n$IPT -I INPUT -j $SPAMLIST\r\n$IPT -I OUTPUT -j $SPAMLIST\r\n$IPT -I FORWARD -j $SPAMLIST\r\n\r\nexit 0<\/code><\/pre>\n\n\n\n<p>Crie um arquivo .py com o c\u00f3digo acima e execute com um <mark style=\"background-color:#abb8c3\" class=\"has-inline-color\">cat nomedoarquivo.py | sh<\/mark><\/p>\n\n\n\n<p>obs.: <\/p>\n\n\n\n<p>Fiz a revis\u00e3o do c\u00f3digo e tive que fazer poucas altera\u00e7\u00e3oes, ent\u00e3o mantive os creditos do amigo que iniciou o trabalho (nada mais justo).<\/p>\n\n\n\n<p>Uma outra observa\u00e7\u00e3o legal a se fazer foi a que passou na minha cabe\u00e7a em usar o fail2ban, por\u00e9m o ataque n\u00e3o vinha do mesmo IP, ele ficava variando dentro de um range na localidade bloqueada ent\u00e3o o uso de uma ferramenta dessas n\u00e3o seria muito eficiente. O importante \u00e9 que foi resolvido.<\/p>\n\n\n\n<p>Obrigado por ler tudo e at\u00e9 a pr\u00f3xima.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como bloquear um (pa\u00eds) range de IP no Linux usando iptables. Iptables \u00e9 a aplica\u00e7\u00e3o nativa de firewall<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,38,150],"tags":[193,107,108,195,194,87],"class_list":["post-163","post","type-post","status-publish","format-standard","hentry","category-aplicativos-gnu-linux","category-gnu-linux-bsd-unix-like-e-software-livre","category-hacker","tag-flood","tag-hack","tag-hacker","tag-ip","tag-iptables","tag-linux"],"_links":{"self":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":1,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":165,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/posts\/163\/revisions\/165"}],"wp:attachment":[{"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/media?parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/categories?post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/difusao.tech\/blog\/wp-json\/wp\/v2\/tags?post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}