{"id":47270,"date":"2026-06-27T22:43:40","date_gmt":"2026-06-27T13:43:40","guid":{"rendered":"https:\/\/raybeam.jp\/docs\/initial-server-setup\/how-to-auto-update-ufw-rules-with-cloudflare-ips\/"},"modified":"2026-06-27T22:44:20","modified_gmt":"2026-06-27T13:44:20","slug":"how-to-auto-update-ufw-rules-with-cloudflare-ips","status":"publish","type":"docs","link":"https:\/\/raybeam.jp\/pt\/docs\/initial-server-setup\/how-to-auto-update-ufw-rules-with-cloudflare-ips\/","title":{"rendered":"Como atualizar automaticamente as regras do UFW com os endere\u00e7os IP do Cloudflare"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Quando voc\u00ea se sentar atr\u00e1s do Cloudflare, deve <strong>apenas<\/strong> Permitir o tr\u00e1fego proveniente dos intervalos de IPs do Cloudflare nas portas 80 e 443. O Cloudflare atualiza periodicamente esses intervalos, portanto, as regras do UFW precisam ser atualizadas automaticamente. O script de <strong><a href=\"https:\/\/github.com\/Paul-Reed\/cloudflare-ufw\">cloudflare-ufw<\/a><\/strong>, de Paul Reed, faz exatamente isso.<\/p>\n\n\n\n<h2 id=\"1-download-and-make-the-script-executable\" class=\"wp-block-heading\">1. Baixe o script e torne-o execut\u00e1vel<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo wget -O \/usr\/local\/bin\/cloudflare-ufw.sh \\\n  https:\/\/raw.githubusercontent.com\/Paul-Reed\/cloudflare-ufw\/refs\/heads\/master\/cloudflare-ufw.sh\nsudo chmod +x \/usr\/local\/bin\/cloudflare-ufw.sh\n<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"2-inspect-current-ufw-rules-before-changes\" class=\"wp-block-heading\">2. Analisar as regras atuais da UFW (antes das altera\u00e7\u00f5es)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo ufw status verbose\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea provavelmente ver\u00e1 algo como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>text<code>Para A\u00e7\u00e3o De\n-- ------ ----\n22\/tcp PERMITIR Qualquer lugar\n80\/tcp PERMITIR Qualquer lugar\n443 PERMITIR Qualquer lugar\n...\n<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"3-remove-the-overlypermissive-80443-rules\" class=\"wp-block-heading\">3. Remova as regras 80\/443 excessivamente permissivas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Atualmente, essas regras permitem <em>qualquer<\/em> IPs para acessar suas portas da web. Vamos substitu\u00ed-las por regras exclusivas para o Cloudflare.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo ufw delete allow 80\/tcp\nsudo ufw delete allow 443\/tcp\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se a UFW solicitar uma confirma\u00e7\u00e3o, digite <code>y<\/code> e pressione Enter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifique o status novamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo ufw status verbose\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea n\u00e3o deve mais ver <code>80\/tcp<\/code> ou <code>443<\/code> com <code>PERMITIR<\/code> de <code>Em qualquer lugar<\/code>.<\/p>\n\n\n\n<h2 id=\"4-run-the-cloudflareufw-script\" class=\"wp-block-heading\">4. Execute o script Cloudflare\u2011UFW<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo \/usr\/local\/bin\/cloudflare-ufw.sh\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O que o script faz:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Recupera os intervalos IPv4 e IPv6 mais recentes do Cloudflare a partir de <code>https:\/\/www.cloudflare.com\/ips-v4<\/code> e <code>...\/ips-v6<\/code>.<\/li>\n\n\n\n<li>Exclui todas as regras existentes do UFW para as portas 80 e 443 que permitem <code>Em qualquer lugar<\/code>.<\/li>\n\n\n\n<li>Adiciona novo <code>PERMITIR<\/code> regras <strong>apenas<\/strong> para cada intervalo de IPs Cloudflare nas portas 80 (HTTP) e 443 (HTTPS).<\/li>\n\n\n\n<li>Opcionalmente, reinicia o UFW para que as novas regras entrem em vigor imediatamente.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Quando terminar, verifique:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo ufw status verbose\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora voc\u00ea deve ver v\u00e1rias linhas como:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>text<code>Para A\u00e7\u00e3o De\n-- ------ ----\n80\/tcp ALLOW 173.245.48.0\/20\n80\/tcp ALLOW 103.21.244.0\/22\n...\n443 PERMITIR 173.245.48.0\/20\n443 PERMITIR 103.21.244.0\/22\n...\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Todos os outros endere\u00e7os IP s\u00e3o implicitamente bloqueados nas portas 80\/443.<\/p>\n\n\n\n<h2 id=\"5-automate-daily-updates-with-cron\" class=\"wp-block-heading\">5. Automatize as atualiza\u00e7\u00f5es di\u00e1rias com o cron<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A Cloudflare pode alterar seus intervalos de IP a qualquer momento. Para manter seu firewall atualizado, programe a execu\u00e7\u00e3o do script diariamente (por exemplo, \u00e0s 03h).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edite o crontab do usu\u00e1rio root:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo crontab -e\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se solicitado, escolha o seu editor preferido (por exemplo, <code>nano<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicione a seguinte linha no final:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>text<code>0 3 * * * \/usr\/local\/bin\/cloudflare-ufw.sh &gt;&gt; \/var\/log\/cloudflare-ufw.log 2&gt;&amp;1\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Isto faz o seguinte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Executa o script todos os dias \u00e0s 03h, hor\u00e1rio do servidor.<\/li>\n\n\n\n<li>Anexa a sa\u00edda e os erros a <code>\/var\/log\/cloudflare-ufw.log<\/code> para fins de auditoria.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Salve e saia do editor.<\/p>\n\n\n\n<h2 id=\"6-verify-the-cron-job\" class=\"wp-block-heading\">6. Verifique a tarefa cron<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Exiba o crontab do usu\u00e1rio root para confirmar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo crontab -l\n<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea deve ver a nova linha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Opcionalmente, execute imediatamente e verifique o log:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo \/usr\/local\/bin\/cloudflare-ufw.sh\nsudo tail -n 20 \/var\/log\/cloudflare-ufw.log\n<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"7-ongoing-maintenance\" class=\"wp-block-heading\">7. Manuten\u00e7\u00e3o cont\u00ednua<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para atualizar manualmente as regras a qualquer momento: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo \/usr\/local\/bin\/cloudflare-ufw.sh<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para verificar o log: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo less \/var\/log\/cloudflare-ufw.log<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se, por acaso, voc\u00ea precisar voltar para a configura\u00e7\u00e3o \u201cpermitir em qualquer lugar\u201d (n\u00e3o recomendado em ambiente de produ\u00e7\u00e3o): <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>bash<code>sudo ufw delete allow from any to any port 80 proto tcp sudo ufw delete allow from any to any port 443 proto tcp sudo ufw allow 80\/tcp sudo ufw allow 443\/tcp<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Com essa configura\u00e7\u00e3o, seu firewall UFW aceitar\u00e1 sempre e exclusivamente tr\u00e1fego HTTP\/HTTPS proveniente dos intervalos de IP atuais do Cloudflare, reduzindo drasticamente a superf\u00edcie de ataque e garantindo que seus sites permane\u00e7am acess\u00edveis atrav\u00e9s do Cloudflare.<\/p>","protected":false},"featured_media":0,"parent":47233,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-47270","docs","type-docs","status-publish","hentry","pmpro-has-access"],"_links":{"self":[{"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs\/47270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/comments?post=47270"}],"version-history":[{"count":1,"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs\/47270\/revisions"}],"predecessor-version":[{"id":47271,"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs\/47270\/revisions\/47271"}],"up":[{"embeddable":true,"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs\/47233"}],"wp:attachment":[{"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/media?parent=47270"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/raybeam.jp\/pt\/wp-json\/wp\/v2\/docs_category?post=47270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}