404 Not Found


nginx
{"id":3635,"date":"2014-06-26T11:17:46","date_gmt":"2014-06-26T14:17:46","guid":{"rendered":"https:\/\/cleuber.com.br\/?p=3635"},"modified":"2015-11-13T08:41:03","modified_gmt":"2015-11-13T10:41:03","slug":"o-basico-sobre-firewall-com-ufw-em-linux","status":"publish","type":"post","link":"https:\/\/cleuber.com.br\/index.php\/2014\/06\/26\/o-basico-sobre-firewall-com-ufw-em-linux","title":{"rendered":"O b\u00e1sico sobre Firewall com UFW em Linux"},"content":{"rendered":"

Ol\u00e1 galera,<\/p>\n

N\u00e3o sou um especialista em firewall em Linux e conhe\u00e7o esse assunto apenas em um n\u00edvel bem b\u00e1sico e sei que existem muitos profissionais “feras” na \u00e1rea. Mas acho importante postar aqui como colocar um Firewall no ar em um servidor Linux, mesmo que de forma b\u00e1sica, para negar os acessos indesejados e proteger o servidor. Para isso, nesse artigo, iremos usar o UFW. Mas se voc\u00ea desejar um programa para gerenciar o seu Firewall com interface gr\u00e1fica, d\u00ea uma olhada neste ARTIGO<\/span><\/a><\/span><\/span> que explica como instalar e usar o Gufw. Ou este outro <\/span>ARTIGO<\/span><\/a><\/span> que explica sobre o FirewallBuilder.<\/span><\/p>\n

Este artigo pode ser usado e testado em um\u00a0GNU\/Linux como o Debian ou Ubuntu e derivados. Para que estiver iniciando sugiro praticar usando uma m\u00e1quina virtual.<\/p>\n

Bom, ent\u00e3o vamos l\u00e1.<\/p>\n

Uma das primeiras linhas de defesa em proteger o seu servidor \u00e9 um firewall funcionando.\u00a0<\/span>No passado, este era muitas vezes feito atrav\u00e9s de utilit\u00e1rios complicados e misteriosos.\u00a0<\/span>H\u00e1 um monte de funcionalidades incorporadas a esses utilit\u00e1rios, sendo o IPTABLES o mais popular hoje em dia, mas eles exige um esfor\u00e7o do usu\u00e1rio para aprender e compreender.\u00a0<\/span>As regras de firewall n\u00e3o \u00e9 algo que voc\u00ea pode\u00a0 aprender intuitivamente.<\/span><\/p>\n

Para este fim, o UFW\u00a0\u00e9 uma alternativa muito mais f\u00e1cil de usar.
\n<\/span><\/p>\n

O que \u00e9 UFW?<\/h2>\n

UFW\u00a0ou Uncomplicated Firewall (Firewall Descomplicado), \u00e9 um front-end para iptables.\u00a0Seu principal objetivo \u00e9 fazer com que o gerenciamento de seu firewall seja simples e para fornecer uma comandos de f\u00e1cil utiliza\u00e7\u00e3o.\u00a0\u00c9 bem suportado e popular na comunidade Linux, e vem\u00a0instalado por padr\u00e3o em muitas distros.\u00a0Como tal, \u00e9 uma \u00f3tima maneira de come\u00e7ar a proteger o seu Sever.<\/p>\n

Antes de come\u00e7armos<\/h2>\n

Primeiro, obviamente, voc\u00ea quer ter certeza de UFW est\u00e1 instalado.\u00a0Ele deve ser instalado por padr\u00e3o no Ubuntu, mas se por algum motivo ele n\u00e3o estiver, voc\u00ea pode instalar o pacote usando o apt-get com\u00a0os seguintes comandos:<\/p>\n

sudo apt-get install ufw<\/pre>\n
<\/div>\n

Verifique o\u00a0Status<\/h2>\n

Voc\u00ea pode verificar o status do UFW, digitando:<\/p>\n

sudo ufw status<\/pre>\n

Neste momento, ele provavelmente ir\u00e1 dizer-lhe que est\u00e1 inativo.\u00a0Sempre que o ufw estiver ativo, voc\u00ea poder\u00e1 obter uma listagem das regras atuais que \u00e9 semelhante a este:<\/p>\n

Status: active\r\n\r\nTo               Action      From\r\n--               ------      ----\r\n22               ALLOW       Anywhere\r\n\r\n<\/pre>\n

Usando IPv6 com UFW<\/h2>\n

Se o seu VPS \u00e9 configurado para IPv6, garantir que UFW est\u00e1 configurado para suportar IPv6, de modo que ir\u00e1 configurar tanto o IPv4 e IPv6 regras de firewall.Para fazer isso, abra a configura\u00e7\u00e3o do PFM com este comando:<\/p>\n

sudo vi \/etc\/default\/ufw\r\n<\/pre>\n

Em seguida, certifique-se “IPV6” esteja definido como “yes”, assim: <\/span><\/p>\n

IPV6=yes\u00a0\r\n<\/span><\/pre>\n

Salvar e sair.\u00a0Em seguida, reinicie o seu firewall com os seguintes comandos:<\/p>\n

sudo ufw disable\r\nsudo ufw enable<\/pre>\n

Agora UFW est\u00e1\u00a0configurado para IPv4 e IPv6, quando for o caso.<\/p>\n

<\/h2>\n

Configurar Defaults<\/h2>\n

Uma das coisas que vai fazer a cria\u00e7\u00e3o de qualquer firewall mais f\u00e1cil \u00e9 definir algumas regras padr\u00e3o para permitir e negar conex\u00f5es.\u00a0Os padr\u00f5es\u00a0do UFW s\u00e3o negar todas as conex\u00f5es de entrada e permitir todas as conex\u00f5es de sa\u00edda.\u00a0Isso significa que qualquer um que tente chegar ao seu servidor cloud, por exemplo, n\u00e3o ser\u00e1 capaz de se conectar, enquanto que qualquer aplica\u00e7\u00e3o dentro do servidor seria capaz de chegar ao mundo exterior.\u00a0Para definir os padr\u00f5es usados \u200b\u200bpor UFW, voc\u00ea usaria os seguintes comandos:<\/p>\n

sudo ufw default deny incoming<\/pre>\n

e<\/p>\n

sudo ufw default allow outgoing<\/pre>\n

Nota: Se voc\u00ea quiser ser um pouco mais restritivo, voc\u00ea tamb\u00e9m pode negar todos os pedidos de sa\u00edda tamb\u00e9m.\u00a0A necessidade desta \u00e9 discut\u00edvel, mas se voc\u00ea tiver um servidor em nuvem voltados para o p\u00fablico, isso\u00a0poderia ajudar a prevenir contra qualquer tipo de conex\u00f5es de shell remoto.\u00a0Ele faz o seu firewall mais complicado de gerir, porque voc\u00ea vai ter que definir regras para todas as conex\u00f5es de sa\u00edda tamb\u00e9m. N\u00e3o \u00e9 recomend\u00e1vel, mas voc\u00ea pode definir este padr\u00e3o com o seguinte comando:<\/p>\n

sudo ufw default deny outgoing\r\n\r\n<\/pre>\n

Permitir conex\u00f5es<\/h2>\n

A sintaxe \u00e9 bastante simples.\u00a0Voc\u00ea pode alterar as regras de firewall por meio de comandos no terminal.\u00a0Se nosso firewall estiver habilitado agora, isso iria\u00a0negar todas as conex\u00f5es de entrada.\u00a0Se voc\u00ea estiver conectado via SSH a um servidor na nuvem, isso seria um problema, porque voc\u00ea vai ficar\u00a0trancado do lado de fora de seu servidor.\u00a0Vamos antes permitir conex\u00f5es SSH para o nosso servidor para impedir que isso aconte\u00e7a:<\/p>\n

sudo ufw allow ssh\r\n<\/pre>\n

Como voc\u00ea pode ver, a sintaxe para adicionar servi\u00e7os \u00e9 bastante simples.\u00a0<\/span>UFW vem com alguns padr\u00f5es para usos comuns.\u00a0<\/span>Nosso comando SSH acima \u00e9 um exemplo.<\/span>\u00c9 basicamente apenas um atalho para:<\/span><\/p>\n

sudo ufw allow 22\/tcp\r\n<\/span><\/pre>\n

Este comando permite que uma conex\u00e3o na porta 22 usando o protocolo TCP.\u00a0Se o nosso servidor SSH \u00e9 executado na porta 2222, n\u00f3s poder\u00edamos permitir conex\u00f5es com o seguinte comando: <\/span><\/p>\n

sudo ufw allow 2222\/tcp<\/pre>\n

<\/h3>\n

Outras Conex\u00f5es Podemos precisar<\/h3>\n

Agora \u00e9 um bom momento para permitir que algumas outras liga\u00e7\u00f5es que possa necessitar.\u00a0Se n\u00f3s estamos prote\u00e7\u00e3o de um servidor web com acesso FTP, que pode precisar destes comandos:<\/p>\n

sudo ufw allow www<\/code>
\n<\/span>ou
\nsudo ufw allow 80\/tcp<\/code>\u00a0<\/span><\/p>\n

e<\/p>\n

sudo ufw allow ftp<\/code>
\nou
\n<\/span>sudo ufw allow 21\/tcp<\/code><\/p>\n

\r\nVoc\u00ea poder\u00e1 variar em quais portas e servi\u00e7os que voc\u00ea precisa para abrir dependendo do seu ambiente e servi\u00e7o rodando no seu servidor.Provavelmente haver\u00e1 um pouco de testes necess\u00e1rios.\u00a0Al\u00e9m disso, voc\u00ea precisar\u00e1 certificar-se de deixar sua conex\u00e3o SSH permitida.<\/span><\/pre>\n

Intervalos de portas<\/h3>\n

Voc\u00ea tamb\u00e9m pode especificar intervalos de portas com PFM.\u00a0Para permitir que as portas 1000 a 2000, use o comando:<\/p>\n

sudo ufw allow 1000:2000 \/ tcp<\/pre>\n

Se voc\u00ea quiser UDP:<\/p>\n

sudo ufw allow 1000:2000 \/ udp\r\n\r\n<\/pre>\n

Endere\u00e7os IP<\/h3>\n

Voc\u00ea tamb\u00e9m pode especificar endere\u00e7os IP.\u00a0Por exemplo, se eu queria permitir conex\u00f5es a partir de um endere\u00e7o IP espec\u00edfico (dizer o meu endere\u00e7o comercial ou residencial), eu uso o seguinte comando:<\/p>\n

sudo ufw allow from 192.168.255.255<\/pre>\n

<\/h3>\n

Permitir Sub-rede Espec\u00edfica<\/h3>\n

Voc\u00ea pode usar uma m\u00e1scara de sub-rede: <\/span><\/span><\/span><\/p>\n

<\/span>sudo ufw allow from 192.168.1.0\/24\r\n\r\n\r\n<\/pre>\n

Permitir por Porta e IP Espec\u00edficos<\/h3>\n

\u00a0<\/span>sudo ufw allow from <endere\u00e7o IP> to <protocolo> port <n\u00famero da porta><\/p>\n

Exemplo:<\/strong> permitir acesso do endere\u00e7o IP 192.168.0.4 \u00e0 porta 22 para todos os protocolos: <\/span><\/span><\/span><\/p>\n

<\/span>sudo ufw allow from 192.168.0.4 to any port 22<\/pre>\n

Permitir por Porta, Endere\u00e7o IP e Protocolo Espec\u00edfico<\/h3>\n

\u00a0<\/span>sudo ufw allow from <endere\u00e7o ip> to <protocolo> port <n\u00famero da porta> proto <nome do protocolo><\/p>\n

Exemplo:<\/strong> permitir acesso do endere\u00e7o 192.168.0.4 \u00e0 porta 22 usando TCP: <\/span><\/span><\/span><\/p>\n

<\/span>sudo ufw allow from 192.168.0.4 to any port 22 proto tcp<\/pre>\n

Habilitar PING<\/h3>\n

Por padr\u00e3o, o UFW permite requisi\u00e7\u00f5es ping<\/strong>. Voc\u00ea talvez deseje deixar requisi\u00e7\u00f5es ping (icmp) habilitadas para diagnosticar problemas de rede. <\/span><\/span><\/p>\n

Para desabilitar requisi\u00e7\u00f5es ping (icmp), voc\u00ea precisa editar \/etc\/ufw\/before.rules<\/strong> e remover as seguintes linhas: <\/span><\/span><\/p>\n

<\/span># ok icmp codes\r\n<\/span>-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT\r\n<\/span>-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT\r\n<\/span>-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT\r\n<\/span>-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT\r\n<\/span>-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT<\/pre>\n

ou mudar “ACCEPT” para “DROP” <\/span><\/span><\/p>\n

<\/span># ok icmp codes\r\n<\/span>-A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP\r\n<\/span>-A ufw-before-input -p icmp --icmp-type source-quench -j DROP\r\n<\/span>-A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP\r\n<\/span>-A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP\r\n<\/span>-A ufw-before-input -p icmp --icmp-type echo-request -j DROP<\/pre>\n
<\/pre>\n

 <\/p>\n

Negando Conex\u00f5es<\/h2>\n

Nossa configura\u00e7\u00e3o padr\u00e3o \u00e9 negar todas as conex\u00f5es de entrada.\u00a0Isso faz com que as regras de firewall sejam mais f\u00e1cil de administrar, uma vez que s\u00f3 s\u00e3o seletivamente permitidas determinadas portas e endere\u00e7os IP.\u00a0No entanto, se voc\u00ea quer abrir todas as portas do seu servidor (n\u00e3o recomendado), voc\u00ea pode permitir que todas as conex\u00f5es e, em seguida, de forma restritiva negar portas que voc\u00ea n\u00e3o quer dar acesso, substituindo “allow” com “deny” no comandos acima. Por exemplo:<\/p>\n

sudo ufw allow 80\/tcp<\/pre>\n

permitiria o acesso \u00e0 porta 80, enquanto:<\/p>\n

sudo ufw deny 80\/tcp<\/pre>\n

seria negar acesso \u00e0 porta 80<\/p>\n

*Obs do Cleuber<\/span>: Esse conceito \u00e9 o que geralmente \u00e9 chamado de lista branca e lista negra.<\/p>\n

Lista Branca (mais recomendada): Voc\u00ea NEGA TUDO, e libera as portas, servi\u00e7os, e IPs sob demanda.<\/p>\n

Lista Negra (n\u00e3o recomendada): Voc\u00ea PERMITE TUDO, e libera\u00a0as portas, servi\u00e7os, e IPs sob demanda.<\/p>\n

Obviamente \u00e9 menos seguro voc\u00ea liberar tudo, e abrir portas para que os servi\u00e7os se comuniquem, visto que ter\u00e1 que deixar um monte de portas abertas, e para bloque\u00e1-las dever\u00e1 ter mais trabalho criando muito mais regras.<\/p>\n

Excluindo regras<\/h2>\n

Existem duas op\u00e7\u00f5es para excluir regras.\u00a0O mais simples \u00e9 usar a seguinte sintaxe:<\/p>\n

sudo ufw delete allow ssh<\/pre>\n

Como voc\u00ea pode ver, usamos o comando “delete” e insira as regras que voc\u00ea quer eliminar depois disso.\u00a0Outros exemplos incluem:<\/p>\n

sudo ufw delete allow 80\/tcp<\/pre>\n

ou<\/p>\n

sudo ufw delete allow 1000:2000 \/ tcp<\/pre>\n

Isso pode ficar complicado quando voc\u00ea tem regras que s\u00e3o longas e complexas.<\/p>\n

A alternativa mais simples, de duas etapas \u00e9 digitar:<\/p>\n

sudo ufw status numbered<\/pre>\n

que ter\u00e1 lista UFW todas as normas vigentes em uma lista numerada.\u00a0Em seguida, execute o comando:<\/p>\n

sudo ufw delete [number]<\/pre>\n

onde “[n\u00famero]” \u00e9 o n\u00famero da linha do comando anterior.<\/p>\n

Ligando<\/h2>\n

Depois chegamos UFW para onde queremos, podemos lig\u00e1-lo usando este comando (lembre-se: se voc\u00ea estiver conectando via SSH, certifique-se que voc\u00ea defina o seu porta SSH, geralmente a porta 22, para ser autorizado a receber conex\u00f5es):<\/p>\n

sudo ufw enable<\/pre>\n

Voc\u00ea dever\u00e1 ver o prompt de comando novamente, se tudo correu bem.\u00a0Voc\u00ea pode verificar o status de suas regras agora, digitando:<\/p>\n

sudo ufw status<\/pre>\n

ou<\/p>\n

sudo ufw status verbose<\/pre>\n

para a exibi\u00e7\u00e3o mais completa.<\/p>\n

Para desligar o UFW, use o seguinte comando:<\/p>\n

sudo ufw disable<\/pre>\n
<\/div>\n
\n

Registrando logs<\/h2>\n

 <\/p>\n

Para habilitar o registro, use: <\/span><\/span><\/span><\/p>\n

<\/span>sudo ufw logging on<\/pre>\n

 <\/p>\n

Para desabilitar o registro, use: <\/span><\/span><\/span><\/p>\n

<\/span>sudo ufw logging off<\/pre>\n<\/div>\n
<\/div>\n
<\/div>\n

Redefinir Tudo<\/h2>\n

Se, por qualquer raz\u00e3o, voc\u00ea precisa redefinir as regras do seu servidor de nuvem para suas configura\u00e7\u00f5es padr\u00e3o, voc\u00ea pode fazer isso digitando o seguinte comando:<\/p>\n

sudo ufw reset<\/pre>\n
<\/div>\n

Conclus\u00e3o<\/h2>\n

Apesar de n\u00e3o me aprofundar muito neste t\u00f3pico de estudo, estas dicas b\u00e1sicas nos ajudar\u00e3o a ter um servidor que est\u00e1 configurado corretamente para restringir o acesso a um subconjunto de portas ou endere\u00e7os IP conforme a sua necessidade.<\/p>\n

\u00c9 isso a\u00ed galera,<\/p>\n

Abra\u00e7os,<\/p>\n","protected":false},"excerpt":{"rendered":"

Ol\u00e1 galera, N\u00e3o sou um especialista em firewall em Linux e conhe\u00e7o esse assunto apenas em um n\u00edvel bem b\u00e1sico e sei que existem muitos profissionais “feras” na \u00e1rea. Mas acho importante postar aqui como colocar um Firewall no ar em um servidor Linux, mesmo que de forma b\u00e1sica, para negar os acessos indesejados e …<\/p>\n","protected":false},"author":1,"featured_media":3687,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[51,48,4,488],"tags":[145,147,144,146],"class_list":["post-3635","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dicas-e-tutoriais","category-firewall","category-tutoriais-linux","category-seguranca","tag-firewall-2","tag-iptables","tag-seguranca","tag-ufw"],"_links":{"self":[{"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=3635"}],"version-history":[{"count":0,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3635\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/media\/3687"}],"wp:attachment":[{"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=3635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=3635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cleuber.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=3635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}