Firewall profissional com IPTablesProf. Me. Allysson Steve MotaLacerdawww.aptans.com
ApresentaçãoPrazeremconhecê-los!
Quemsoueu?BacharelemSistemas de InformaçãoUNIMONTES (2006)MestreemEngenhariaElétricaUFMG (2010)
O que eu faço?Linhas de trabalhoInfraestrutura de TIServidores Windows e GNU/LinuxConsolidação de servidoresProjetos de rede
O que eu faço?Linhas de trabalhoSegurança da InformaçãoAntivírusAntiSPAMFirewallProxyVPNBackup
O que eu faço?Linhas de trabalhoIntegração entre ambientes Windows e GNU/LinuxAutenticação centralizadaServiços de diretório
Alguns clientes
FirewallIntrodução
O firewallFunçõesproteger a máquina contra acessos indesejadosproteger a máquina contra tráfego indesejadoproteger serviços que estejam rodando na máquinabloquear a passagem de coisas indesejadasconexões vindas da Internet para sua segura rede local
O queproteger?Quais serviços proteger?Que tipo de conexões eu posso deixar passar?Que máquinas terão acesso livre?Que serviços terão prioridade no processamento?Que máquinas/redes NUNCA deverão ter acesso?Qual o volume de tráfego que o servidor manipulará?O que pode passar de uma rede para outra?
Tipos de firewallFirewalls de aplicaçãoProxies (SMTP, HTTP etc.)Firewalls baseadosemestadoTabelas de estadosFirewalls de pacotesEndereços e portas
O IPtablesVamosaoqueinteressa
HistóricoIPTables (Netfilter)surgiu no kernel do Linux 2.4substitui o ipchainsmuita flexibilidade na programação de regrasmais opções para controle de tráfegocontrole independente do tráfego da rede nova organização das etapas de roteamento de pacotes
CaracterísticasEspecificação de portas/endereço de origem/destinoSuporte a protocolos TCP/UDP/ICMPSuporte a interfaces de origem/destino de pacotesManipula serviços de proxy na redeTratamento de tráfego dividido em chainsmelhor controle do tráfegoPermite um número ilimitado de regras por chain
CaracterísticasPossui mecanismos internos para rejeitar pacotesduvidosos ou mal formadosSuporte a módulos externosexpansão das funcionalidades oferecidasSuporte completo a roteamento de pacotesSuporte a especificação de tipo de serviçopriorizar o tráfego de determinados tipos de pacotesPermite especificar exceções
CaracterísticasPermite enviar alertas personalizados ao syslogRedirecionamento de portasMasqueradingSuporte a SNAT e DNATContagem de pacotes que atravessaram uma regraLimitação de passagem de pacotesútil para criar proteções contra syn flood, ping flood, DoS...
RegrasE lávamosnós…
O quesãoregras?“Comandos passados ao iptables para queele realize uma determinada ação”(Guia FOCA)As regras são armazenadas dentro dos chainse processadas na ordem que são inseridasAs regras são armazenadas no kernelsão perdidas a cada reinicializaçãodevem ser gravadas em um arquivo
O quesão chains?“Locais onde as regras do firewall sãoarmazenadas para sua operação”(Guia FOCA)Existem dois tipos de chainsos embutidos (como os INPUT, OUTPUT e FORWARD) os criados pelo usuárioOs nomes dos chainsembutidos devem ser especificados sempre em maiúsculassão case-sensitive (inputé diferente de INPUT)
O quesãotabelas?“Locais usados para armazenar chains e regrascom determinada característica em comum”(Guia FOCA)Podem ser referenciadas com a opção -t <tabela>Existem 3 tabelas disponíveis no iptablesfilternatmangle
A tabela filterEsta é a tabela padrão, contém 3 chains padrõesINPUT: dados que chegam a máquinaOUTPUT: dados que saem da máquinaFORWARD: dados que são redirecionadosINPUT e OUTPUTsomente são atravessados por conexões de localhost
A tabelanatUsada para dados que geram outra conexãoPossui 3 chains padrões:PREROUTING: quando os pacotes precisam ser modificados logo que chegamOUTPUT: quando os pacotes gerados localmente precisam ser modificados antes de serem roteadosPOSTROUTING: quando os pacotes precisam ser modificados após o tratamento de roteamento
A tabela mangleUtilizada para alterações especiais de pacotesPossui 5 chains padrões:INPUT: quando os pacotes precisam ser modificados antes de serem enviados para o INPUT da tabela filterFORWARD: quando os pacotes precisam ser modificados antes de serem enviados para o FORWARD da tabela filterPREROUTING: quando os pacotes precisam ser modificados antes de ser enviados para o PREROUTINGda tabela nat
A tabela mangleUtilizada para alterações especiais de pacotesPossui 5 chains padrões:POSTROUTING: quando os pacotes precisam ser modificados antes de serem enviados para o POSTROUTING da tabela natOUTPUT: quando os pacotes precisam ser modificados antes de serem enviados para o OUTPUT da tabela nat
Manipulando chainsPare com a enrolação… euqueroverrodando!
Adicionando regras - Aping 127.0.0.1iptables-t filter -A INPUT \-d 127.0.0.1 -j DROPping 127.0.0.1
Listando regras - Liptables -t filter -L INPUTiptables -L INPUT –niptables-L INPUT -n --line-numbers
Apagando uma regra - Diptables -t filter -D INPUT 1iptables -t filter -D INPUT \-d 127.0.0.1 -j DROPPOR QUE NÃO USAR –D?
Inserindo uma regra - Iiptables -t filter -I INPUT 1 \-d 127.0.0.1 -j ACCEPTPOR QUE NÃO USAR –I?
Criando um novo chain - Niptables -t filter -N internetiptables-t filter -A internet \-s 200.200.200.200 -j DROPiptables-t filter -A INPUT \-j internet
Limpando as regras de um chain - Fiptables -t filter -F INPUTiptables -t filter -F
Apagando um chain do usuário - Xiptables -t filter -X internetiptables -X
Especificando a política de um chain - Piptables -L OUTPUTiptables-t filter -P OUTPUT DROPiptables -L OUTPUT
Outrasopções
Especificando um endereçoOrigem e destino-s | –src | –source-d | –dst | –destinationOpçõesIP ou par rede/máscara: 10.0.0.1 ou 10.0.0.0/8endereço fqdn: www.aptans.comiptables-A INPUT -s 10.0.0.0/24 \-j DROP
Especificando a interfaceOrigem e destino-i | –in-interface-o | –out-interface
Especificando um protocoloProtocolo-p | –protocolOpçõestcpudpicmpiptables -A INPUT -s 10.0.0.0 \-p UDP -j DROP
Especificando portasOrigem e destino--sport  | --source-port--dport  | --destination-portiptables -A OUTPUT -d 10.0.0.1 \-p tcp --dport :1023 -j DROP
Especificando uma exceçãoiptables -t filter -A INPUT –p TCP \!-s 10.0.0.1 -j DROPiptables-A INPUT -s 10.0.0.1 \!-p TCP -j DROP
Especificando um alvoOpções-j ACCEPT-j DROP-j REJECT-j LOGiptables-A INPUT -s 10.0.0.1 \-i eth0 -j REJECT
A tabelanatNetwork Address Translation
Fazendo SNATNAT de origem-j SNATiptables -t nat -A POSTROUTING \-s 192.168.1.0/24 -o eth0 \-j SNAT --to 200.200.200.40
Fazendo IP MasqueradingIPsdinâmicos-j MASQUERADEiptables-t nat -A POSTROUTING \-s 192.168.1.2/32 -o ppp0 \-j MASQUERADE
Fazendo DNATNAT de destino-j DNATiptables -t nat -A PREROUTING \-s 200.200.217.40 -i eth0 \-j DNAT --to 192.168.1.2
Redirecionamento de portasProxies e programasexternos-j REDIRECTiptables -t nat -A PREROUTING \-i eth0 -p tcp --dport 80 \-j REDIRECT --to-port 8080
Porhoje é só…OBRIGADO!Allysson Steve MotaLacerdastevelacerda@aptans.comwww.aptans.com

IPTables na prática

  • 1.
    Firewall profissional comIPTablesProf. Me. Allysson Steve MotaLacerdawww.aptans.com
  • 2.
  • 3.
    Quemsoueu?BacharelemSistemas de InformaçãoUNIMONTES(2006)MestreemEngenhariaElétricaUFMG (2010)
  • 4.
    O que eufaço?Linhas de trabalhoInfraestrutura de TIServidores Windows e GNU/LinuxConsolidação de servidoresProjetos de rede
  • 5.
    O que eufaço?Linhas de trabalhoSegurança da InformaçãoAntivírusAntiSPAMFirewallProxyVPNBackup
  • 6.
    O que eufaço?Linhas de trabalhoIntegração entre ambientes Windows e GNU/LinuxAutenticação centralizadaServiços de diretório
  • 7.
  • 8.
  • 9.
    O firewallFunçõesproteger amáquina contra acessos indesejadosproteger a máquina contra tráfego indesejadoproteger serviços que estejam rodando na máquinabloquear a passagem de coisas indesejadasconexões vindas da Internet para sua segura rede local
  • 10.
    O queproteger?Quais serviçosproteger?Que tipo de conexões eu posso deixar passar?Que máquinas terão acesso livre?Que serviços terão prioridade no processamento?Que máquinas/redes NUNCA deverão ter acesso?Qual o volume de tráfego que o servidor manipulará?O que pode passar de uma rede para outra?
  • 11.
    Tipos de firewallFirewallsde aplicaçãoProxies (SMTP, HTTP etc.)Firewalls baseadosemestadoTabelas de estadosFirewalls de pacotesEndereços e portas
  • 12.
  • 13.
    HistóricoIPTables (Netfilter)surgiu nokernel do Linux 2.4substitui o ipchainsmuita flexibilidade na programação de regrasmais opções para controle de tráfegocontrole independente do tráfego da rede nova organização das etapas de roteamento de pacotes
  • 14.
    CaracterísticasEspecificação de portas/endereçode origem/destinoSuporte a protocolos TCP/UDP/ICMPSuporte a interfaces de origem/destino de pacotesManipula serviços de proxy na redeTratamento de tráfego dividido em chainsmelhor controle do tráfegoPermite um número ilimitado de regras por chain
  • 15.
    CaracterísticasPossui mecanismos internospara rejeitar pacotesduvidosos ou mal formadosSuporte a módulos externosexpansão das funcionalidades oferecidasSuporte completo a roteamento de pacotesSuporte a especificação de tipo de serviçopriorizar o tráfego de determinados tipos de pacotesPermite especificar exceções
  • 16.
    CaracterísticasPermite enviar alertaspersonalizados ao syslogRedirecionamento de portasMasqueradingSuporte a SNAT e DNATContagem de pacotes que atravessaram uma regraLimitação de passagem de pacotesútil para criar proteções contra syn flood, ping flood, DoS...
  • 17.
  • 18.
    O quesãoregras?“Comandos passadosao iptables para queele realize uma determinada ação”(Guia FOCA)As regras são armazenadas dentro dos chainse processadas na ordem que são inseridasAs regras são armazenadas no kernelsão perdidas a cada reinicializaçãodevem ser gravadas em um arquivo
  • 19.
    O quesão chains?“Locaisonde as regras do firewall sãoarmazenadas para sua operação”(Guia FOCA)Existem dois tipos de chainsos embutidos (como os INPUT, OUTPUT e FORWARD) os criados pelo usuárioOs nomes dos chainsembutidos devem ser especificados sempre em maiúsculassão case-sensitive (inputé diferente de INPUT)
  • 20.
    O quesãotabelas?“Locais usadospara armazenar chains e regrascom determinada característica em comum”(Guia FOCA)Podem ser referenciadas com a opção -t <tabela>Existem 3 tabelas disponíveis no iptablesfilternatmangle
  • 21.
    A tabela filterEstaé a tabela padrão, contém 3 chains padrõesINPUT: dados que chegam a máquinaOUTPUT: dados que saem da máquinaFORWARD: dados que são redirecionadosINPUT e OUTPUTsomente são atravessados por conexões de localhost
  • 22.
    A tabelanatUsada paradados que geram outra conexãoPossui 3 chains padrões:PREROUTING: quando os pacotes precisam ser modificados logo que chegamOUTPUT: quando os pacotes gerados localmente precisam ser modificados antes de serem roteadosPOSTROUTING: quando os pacotes precisam ser modificados após o tratamento de roteamento
  • 23.
    A tabela mangleUtilizadapara alterações especiais de pacotesPossui 5 chains padrões:INPUT: quando os pacotes precisam ser modificados antes de serem enviados para o INPUT da tabela filterFORWARD: quando os pacotes precisam ser modificados antes de serem enviados para o FORWARD da tabela filterPREROUTING: quando os pacotes precisam ser modificados antes de ser enviados para o PREROUTINGda tabela nat
  • 24.
    A tabela mangleUtilizadapara alterações especiais de pacotesPossui 5 chains padrões:POSTROUTING: quando os pacotes precisam ser modificados antes de serem enviados para o POSTROUTING da tabela natOUTPUT: quando os pacotes precisam ser modificados antes de serem enviados para o OUTPUT da tabela nat
  • 26.
    Manipulando chainsPare coma enrolação… euqueroverrodando!
  • 27.
    Adicionando regras -Aping 127.0.0.1iptables-t filter -A INPUT \-d 127.0.0.1 -j DROPping 127.0.0.1
  • 28.
    Listando regras -Liptables -t filter -L INPUTiptables -L INPUT –niptables-L INPUT -n --line-numbers
  • 29.
    Apagando uma regra- Diptables -t filter -D INPUT 1iptables -t filter -D INPUT \-d 127.0.0.1 -j DROPPOR QUE NÃO USAR –D?
  • 30.
    Inserindo uma regra- Iiptables -t filter -I INPUT 1 \-d 127.0.0.1 -j ACCEPTPOR QUE NÃO USAR –I?
  • 31.
    Criando um novochain - Niptables -t filter -N internetiptables-t filter -A internet \-s 200.200.200.200 -j DROPiptables-t filter -A INPUT \-j internet
  • 32.
    Limpando as regrasde um chain - Fiptables -t filter -F INPUTiptables -t filter -F
  • 33.
    Apagando um chaindo usuário - Xiptables -t filter -X internetiptables -X
  • 34.
    Especificando a políticade um chain - Piptables -L OUTPUTiptables-t filter -P OUTPUT DROPiptables -L OUTPUT
  • 35.
  • 36.
    Especificando um endereçoOrigeme destino-s | –src | –source-d | –dst | –destinationOpçõesIP ou par rede/máscara: 10.0.0.1 ou 10.0.0.0/8endereço fqdn: www.aptans.comiptables-A INPUT -s 10.0.0.0/24 \-j DROP
  • 37.
    Especificando a interfaceOrigeme destino-i | –in-interface-o | –out-interface
  • 38.
    Especificando um protocoloProtocolo-p| –protocolOpçõestcpudpicmpiptables -A INPUT -s 10.0.0.0 \-p UDP -j DROP
  • 39.
    Especificando portasOrigem edestino--sport | --source-port--dport | --destination-portiptables -A OUTPUT -d 10.0.0.1 \-p tcp --dport :1023 -j DROP
  • 40.
    Especificando uma exceçãoiptables-t filter -A INPUT –p TCP \!-s 10.0.0.1 -j DROPiptables-A INPUT -s 10.0.0.1 \!-p TCP -j DROP
  • 41.
    Especificando um alvoOpções-jACCEPT-j DROP-j REJECT-j LOGiptables-A INPUT -s 10.0.0.1 \-i eth0 -j REJECT
  • 42.
  • 43.
    Fazendo SNATNAT deorigem-j SNATiptables -t nat -A POSTROUTING \-s 192.168.1.0/24 -o eth0 \-j SNAT --to 200.200.200.40
  • 44.
    Fazendo IP MasqueradingIPsdinâmicos-jMASQUERADEiptables-t nat -A POSTROUTING \-s 192.168.1.2/32 -o ppp0 \-j MASQUERADE
  • 45.
    Fazendo DNATNAT dedestino-j DNATiptables -t nat -A PREROUTING \-s 200.200.217.40 -i eth0 \-j DNAT --to 192.168.1.2
  • 46.
    Redirecionamento de portasProxiese programasexternos-j REDIRECTiptables -t nat -A PREROUTING \-i eth0 -p tcp --dport 80 \-j REDIRECT --to-port 8080
  • 47.
    Porhoje é só…OBRIGADO!AllyssonSteve MotaLacerdastevelacerda@aptans.comwww.aptans.com