Escolar Documentos
Profissional Documentos
Cultura Documentos
VoltarparaArtigosdeLinux
ConfigurandooIptableseFazendoRegrasBsicas
20dejaneirode2004
Postadopor:ThadeuCamargo
Jestmaisdoquecomprovado:Hojeemdiaumamquinasemconexocomainternet
notemmaiorvaliadoqueumamquinadeescrever.certoqueosmicrosprecisamse
conectarparatrocarinformaes,oumesmosomenteparabaixarumdriverparaqueseu
dispositivodehardwarefuncione.Apartirdomomentoemqueamquinatemuma
conexocomainternet,estsujeitaaataquesdecrackersouscriptiekids.Seummicro
pessoalestsujeitoaataques,quedirentoumarededecomputadores.Existemvrios
sujeitosprontosparaseaproveitaremdemquinasvulnerveis.Paraevitarintempries
comoestasousurioouadministradordaredeprecisaimplantarpolticasdesegurana.
Umadestaspolticasaimplantaodeumfirewall.
Firewall,comoonomediz,umaportadefogo.Umamuralhaondesomenteoqueest
devidamenteautorizadopodeentrarousair.Maioresdetalhessobrefirewallpodemser
vistosaqui.
Umsistemabemservidodefirewall
http://www.tccamargo.com/linux/tutoriais/iptables.html
1/13
26/05/2016
Existemfirewallsparatodosossistemasoperacionaismascreioquenenhumdelesesteja
tobemservidoquantooLinux.SemdesmereceroutrosmasasoluoIptablesaomeu
verumadasmelhores,senoamelhorqueeujviparaseguranadesistemas.A
grandevantagemdoIptablesasuaestabilidade,rapidez,eficinciareconhecidae
relativafacilidadedeadministraodevidoasuaconfiguraopoderserfeitaatravsde
scripts.OutrascaractersticasdoIptables:
.:SuporteaosprotocolosTCP,UDP,ICMP
.:Podeseespecificarportasdeendereoededestino.
.:SuportamdulosexternoscomoFTPeIRC
.:SuportaumnmeroilimitadoderegrasporCHAINS(correntes).
.:Podesecriarregrasdeproteocontraataquesdiversos
.:Suportepararoteamentodepacoteseredirecionamentodeportas.
.:SuportavriostiposdeNAT,comooSNATeDNATemascaramento.
.:Podepriorizartrfegoparadeterminadostiposdepacotes.
.:EntreoutrasoIptablesjtemsuporteaIPV6,atravsdoprogramaip6tables.
OIptablesacompanhaokernel2.4.x.AntesdeleexistiaoIpchains(kernel2.2.x)e
anteriormenteaindaexistiaoIpfwadm.Narealidadenokernel2.4.xaindaexistemos
filtrosIpchainseIpfwadmpormotivosdecompatibilidademasambosnoestoativos.
Casoestejamativos(istopodeacontecercomoIpchains)necessriodesativlospara
queoIptablespossafuncionarplenamente.
Funcionamento
Atravsderegraspoderemosfazercomqueospacotespossamserounorecebidosa
redetoda,adeterminadamquina,interfaceoumesmoportadeconexo.OIptables
trabalhaatravsdeTabelas,ChainseRegras:
Tabelas:Existem3tabelaspossveisdeseremutilizadasnoIptables,sendoqueuma
delas,amangleraramenteusada,restandoafilter,queapadro,utilizadanos
trfegosdedadoscomuns,semocorrnciadeNAT.Quandonoespecificamosqual
tabelaaserutilizadaelaqueserativada.Aoutrageralmenteutilizadaanat,que
comooprprionomediz,usadaquandohocorrnciadeNAT.
Chains:Atravsdelaspodemosespecificarasituaodotratamentodospacotes,seja
qualtabelafor.
QuandoutilizamosatabelanatasChainspossveisso:
PREROUTINGQuandoospacotesentramparasofreremNAT.
POSTROUTINGQuandoospacotesestosaindoapssofreremNAT
OUTPUTPacotesquesogeradosnaprpriamquinaequesofreroNAT
JcomatabelafilterasChainsso:
INPUTPacotescujodestinofinalaprpriamquinafirewall.
OUTPUTPacotesquesaemdamquinafirewall
FORWARDPacotequeatravessaamquinafirewall,cujodestinoumaoutra
mquina.Estepacotenosaidamquinafirewallesimdeoutramquinadaredeou
fonte.Nestecasoamquinafirewallestrepassandoopacote.
http://www.tccamargo.com/linux/tutoriais/iptables.html
2/13
26/05/2016
Regras:AsregrasdefirewallgeralmentesocompostasdeumaTabela,Opo,Chain,
DadoseAo.Atravsdesteselementospodemosespecificaroquefazercomos
pacotes.
Opes:
P
Defineumaregrapadro
Acrescentaumanovaregraasexistentes.
EstetemprioridadesobreaP
Apagaseumaregra
Listaasregrasexistentes
Apagatodasasregras
Insereumaregranova
Muitotil,poismostraaajuda
Substituiumaregra
Fazumachecagemdasregrasexistentes
Zeraumaregraespecfica
Criaumanovaregracomumnome
Excluiumaregraespecficapeloseunome
Dados:
s:Especificaoorigemdopacote.Estepodesertantoumaredeouhost.Possveis
combinaespodemser:
s192.168.0.0/255.255.255.0
ou
s192.168.0.0/24
OBS:Nosegundocasoestamosespecificandoamscaraderedeconformeonmerode
bits1,porexemplo:
Mscaraderede255.0.0.0=8
Mscaraderede255.255.0.0=16
Mscaraderede255.255.255.0=24
NoexemploacimaestamosespecificandotodaumarededemscaraC,noexemplo
http://www.tccamargo.com/linux/tutoriais/iptables.html
3/13
26/05/2016
abaixoespecificamosumhost:
s192.168.30.51/255.255.255.255
ou
s192.168.30.51
tambmpodeserassim:
s192.168.30.51/32
OBS:Amscaraemnmerosdebits1parahost32.
Podemosespecificarassimtambm:
swwwtccamargo.com
Podemosespecificarqualquerorigemtambm:
s0.0.0.0/0.0.0.0
ou
s0/0
d:Especificaodestinodopacote.Asintaxeamesmados
p:Protocolousadonaregra.Podesertcp,udp,icmp:
ptcp
pudp
picmp
i:Interfacedeentrada,ouseja,placaderede,modemouinterfacedeconexoque
estarrecebendoopacoteasertratado.
ieth0
ieth1
ippp0
o:Interfacedesada.Assintaxessoasmesmasquei,sendoquenestecasoestar
enviandoopacoteasertratado.
!:Excluideterminadoargumento:
i!eth0Refereseaqualquerinterfacedeentradaexcetoaeth0
s!192.168.0.45Refereseaqualquerendereodeentradaexcetoo192.168.0.45
http://www.tccamargo.com/linux/tutoriais/iptables.html
4/13
26/05/2016
sport:Refereseaportadeorigem.Estedeveviracompanhadodasfunesptcpep
udp:
ptcpsport80Refereseaportadeorigem80sobprotocolotcp
dport:Refereseaportadedestino.Assimcomoafunosport,elatrabalhasomente
comaptcpepudp.Asintaxesimilarasport
Atravsdasfunessportedportpodemosespecificarnosumaportaespecfica
comotambmumrangedeportas:
sport33435:33525
Aes:
Asaessemprevemapsoparmetrojegeralmenteso:
ACCEPTAceitaepermiteapassagemdopacote.
DROPNopermiteapassagemdopacoteeabandonaonodandosinaisde
recebimento.
REJECTAssimcomooDROP,nopermiteapassagemdopacote,masenviaumaviso
(icmpunreachable)
LOGCriaumLogreferentearegraem/var/log/messages
Comestesfatorespodemoscriarasnossasregrascomaseguintecomposio:
#iptablesAFORWARDs192.168.0.45picmpjDROP
Sendo:A(opo)/FORWARD(Chain)/s192.168.0.45picmp(Dados)jDROP(
Ao)
Nocasodoexemploacimaaregradeterminaquetodosospacotesicmporiginriosdo
endereo192.168.0.45devemserbarrados.
Salvandoasregras
Depoisdasregrasprontaspodemossalvlascomestecomando:
#iptablessave><dumnomeparaoarquivo>
Pararecuperlasuseestecomando:
#iptablesrestore><nomedoarquivo>
http://www.tccamargo.com/linux/tutoriais/iptables.html
5/13
26/05/2016
Outraformaseriafazerumscriptcomasregras:
CorpodoScript
#!/bin/bash
#limpandotabelas
iptablesF&&
iptablesX&&
iptablestnatF&&
iptablestnatX&&
#liberandoacessointernodarede
iptablesAINPUTptcpsyns192.168.1.0/255.255.255.0jACCEPT&&
iptablesAOUTPUTptcpsyns192.168.1.0/255.255.255.0jACCEPT&&
iptablesAFORWARDptcpsyns192.168.1.0/255.255.255.0jACCEPT&&
#compartilhandoawebnaredeinterna
iptablestnatAPOSTROUTINGs192.168.1.0/255.255.255.0oeth1jMASQUERADE
&&
echo1>/proc/sys/net/ipv4/ip_forward&&
#Protecaocontraportscannersocultos
iptablesAINPUTptcptcpflagsSYN,ACK,FIN,RSTRSTmlimitlimit1/sjACCEPT
#Bloqueandotracertroute
iptablesAINPUTpudps0/0ieth1dport33435:33525jDROP
#Protecoescontraataques
iptablesAINPUTmstatestateINVALIDjDROP
#termina
echo"IptablesPronto"
Salveocomumnomesugestivo,comoporexemplostartfirewall.
Dpermissodeexecuo:
chmod+xstartfirewall
Pronto.Todavezquequiserqueelesejahabilitadosexecutlo(semprecomoroot):
#startfirewall
Paranoterqueficarchamandooscripttodavezqueinicializarosistema,podemos
fazercomqueelesejaativadonainicializao.Paraissoprecisoeditaroarquivo
/etc/rc.d/rc.localeincluirocomandonofinaldoarquivo.:)
Compartilhamentodeconexo,mascaramentoeredirecionamentodepacotes
http://www.tccamargo.com/linux/tutoriais/iptables.html
6/13
26/05/2016
Verifiquequenestaslinhasdoscriptexemplo:
iptablestnatAPOSTROUTINGs192.168.1.0/255.255.255.0oeth1jMASQUERADE
&&
echo1>/proc/sys/net/ipv4/ip_forward&&
Estoufazendocomqueosmicrosdeminharedepossamutilizarainternetatravsdo
roteamentodinmico.Alinhaquehabilitaoredirecionamentodepacotesessa:
echo1>/proc/sys/net/ipv4/ip_forward
Masvaleobservarqueseinserirmossomenteestalinhanoscript,acadavezque
reiniciarosistemasernecessriaaativaodoroteamento.Paraquenopercamoso
roteamentonecessrioeditaroarquivo/etc/sysctl.confeinserirmosoumodificarmosa
linhadomodoquefiqueassim:
net.ipv4.ip_forward=1
Voltandoanossaregradoscriptexemplo,verificamosumaaonova(MASQUERADE),
servindoparaqueasmquinasdaredeinternapossamacessarainternetusandooIP
externodoGateway.Destemodoasmquinasdaredeinternaficaroinvisveisparaa
redeexterna.Paraqueumamquinadaredeinternapossaexecutarserviosondecuja
execuonecessitaqueoIPdamquinasejavisvelpararedesexternas,ser
necessriofazerumredirecionamentodeIPsouportas.
DigamosqueumamquinadeIP192.168.0.45preciseexecutarumserviodeFTP,na
qualnecessriaavisibilidadedamquina.Podemosfazercomqueamquinafirewall,
cujoIPexternoseja200.135.100.102recebaestespacoteseretransmita:
iptablestnatAPREROUTINGs200.135.100.102ieth0jDNATto192.168.0.45
iptablestnatAPOSTROUTINGs200.135.100.102oeth0ptcpdport21jACCEPT
iptablestnatAPOSTROUTINGs192.168.0.45oeth0jSNATto200.135.100.102
iptablestnatAPOSTROUTINGs192.168.0.45oeth0ptcpdport21jACCEPT
VejaquenestasregrastemosmaisduasaesnovasSNATeDNAT:
SNATAplicadaquandoqueremosalteraroendereodeorigemdopacote.Aquins
utilizamosparafazeromascaramento.OBS:SomenteaChainPOSTROUTINGpodeser
usadanaaoSNAT.
DNATAplicadaquandodesejamosalteraroendereodedestinodopacote.Estaao
utilizadaparafazerredirecionamentodeportas,redirecionamentodeservidor,load
balanceeproxytransparente.AsChainsquepodemserutilizadasparaestaaoso
PREROUTINGeOUTPUT.
Almdestasduasaes,existetambmaREDIRECTquepodeserutilizadaparafazer
redirecionamentodeportas.Quandofazemosumredirecionamentodeportasusamoso
dadotoportapsaaoREDIRECT:
iptablestnatAPREROUTINGieth0ptcpdport80jREDIRECTtoport3128
#Estaregrafazcomquetodosospacotesdirecionadosaportatcp80sejam
http://www.tccamargo.com/linux/tutoriais/iptables.html
7/13
26/05/2016
redirecionadosparaaporta3128.
Quandoutilizamosatabelanat,precisoinseriroparmetrotparaespecificaratabela:
tnat
Percebaquequandoomitimosesteparmetrousamosatabelafilterporpadro.
Almdestasaes,vejaqueexistetambmumdadonovo:
to:EstedadoserveparadefiniroIPouportadedestinonumaaoSNATouDNAT:
iptablestnatAPREROUTINGptcpd200.135.100.102dport80jDNATto
192.168.0.45
#Estaregrafazcomqueospacotesdirecionadosaportatcp80sejamredirecionados
paraamquina192.168.0.45.Comonoespecificamosaporta,amquinadedestino
receberopacotenaporta80
AlmdoIPpodemosdefiniraportadesteendereonaao:
iptablestnatAPREROUTINGptcpd200.135.100.102dport80jDNATto
192.168.0.45:3128
#Aqui,assimcomonaregraanterior,ospacotessoredirecionadosparaamquina
192.168.0.45masnestecasoespecificamosaporta,ouseja,porta3128
Algumasopeseobservaes
Valefazerumaspequenasobservaesarespeitodaordemdasregrasemanejo.Uma
delasqueaaprimeiraregratemprioridadesobreasegundacasoambasestejamem
conflito,veja:
iptablesAFORWARDptcpsyns192.168.1.0/24jACCEPT
iptablesAFORWARDptcpsyns192.168.1.0/24jDROP
Aquetervaliaseraprimeira,ouseja:
iptablesAFORWARDptcpsyns192.168.1.0/24jACCEPT
Podemosvertodasasregrasemandamentoaodarmosocomando:
iptablesL
Comoscomandosabaixolimpamostodasastabelaseregras:
iptablesF
iptablesX
iptablestnatF
iptablestnatX
http://www.tccamargo.com/linux/tutoriais/iptables.html
8/13
26/05/2016
Paraquetudopossafuncionaracontentonecessrioprimeiramentequetodosos
mdulosnecessriosestejamcarregados:
modprobeip_conntrack
modprobeip_conntrack_ftp
modprobeip_nat_ftp
modprobeip_queue
modprobeip_tables
modprobeipt_LOG
modprobeipt_MARK
modprobeipt_MASQUERADE
modprobeipt_MIRROR
modprobeipt_REDIRECT
modprobeipt_REJECT
modprobeipt_TCPMSS
modprobeipt_TOS
modprobeipt_limit
modprobeipt_mac
modprobeipt_mark
modprobeipt_multiport
modprobeipt_owner
modprobeipt_state
modprobeipt_tcpmss
modprobeipt_tos
modprobeipt_unclean
modprobeiptable_filter
modprobeiptable_mangle
modprobeiptable_nat
importanteressaltarqueasregrasdevemseguirumaordemdefinida,ouseja,aregra
posteriordeveestardeacordocomaregraanteriorparaquetudocorrasemproblemas.:
iptablesPFORWARDjDROP
iptablesAFORMARDs192.168.0.0/24d10.0.0.0/8jACCEPT
Atravsdestaregra,determinamosquetodoorepassedepacotessejabloqueado,
depoispermitimosquepossarepassarpacotesdarede192.168.0.0paraarede10.0.0.0
masestanopoderretornarospacotes.Entoocorretoseriainserirmaisumaregra
aqui:
iptablesAFORWARDd192.168.0.0/24s10.0.0.0/8jACCEPT
Paraquearede10.0.0.0possarepassarospacotes,fazendodestejeitocomqueas
redespossamconversarsemproblemas.
Aofazerasregraslembresedeprimeirobloquear,depoisabriroacesso.:
iptablesPFORMARDjDROP
iptablesAFORWARDs192.168.0.45ptcpsport80jACCEPT
http://www.tccamargo.com/linux/tutoriais/iptables.html
9/13
26/05/2016
Consideraesfinais
Iptablesteminfinitaspossibilidadesderegras.impossvelcitartodososparmetrose
regrasquepodemserutilizados,poisdariaumaverdadeirabblia.Cabeaobom
administradorestudarcomafincoparapoderaplicarasregrasmaisconvenientesparaa
suarede.Eousuriofinaltememmosumexcelenterecursoparadeixarsuamquina
protegidadeataquesexternos.EstaagrandevantagemdoIptables,podeseaplicar
regrasconformeaconveninciadaredeeusurios.Semdvidanenhumauma
ferramentapoderosssima.
Exemplosderegrascomumenteutilizadas
Naslinhasabaixoinclualgumasregrasquesocomumenteutilizadas.Algumasdestas
podemserteisparafazeroseufirewallmaslembresedeadaptlasparasua
rede/interface/mquinaantesdeapliclas:
#Liberaoapachepraweb
iptablesAINPUTptcpdestinationport6080jACCEPT
iptablesAINPUTptcpdestinationport443jACCEPT
#Liberaoloopback
iptablesAOUTPUTptcpsyns127.0.0.1/255.0.0.0jACCEPT
#Bloqueandotodososendereosvindodeumadeterminadaredeparaaminhamquina
iptablesAINPUTs10.0.0.0/8jDROP
#Liberandooendereovindodeumaredeparaaminhamquina
iptablesAINPUTs10.0.0.1jACCEPT
#GerandoLogsdePortasproibidas
iptablesAINPUTptcpdport21jlogprefix"ServiodeFTP"
#GerandologdeBackdoors
iptablesAINPUTptcpdport5042jLOGlogprefix"Wincrash"
iptablesAINPUTptcpdport12345jLOGlogprefix"backOrifice"
iptablesAINPUTptcpdport12346jLOGlogprefix"backOrifice"
#HabilitandoportadeFTP
iptablesAINPUTptcps192.168.0.45dport21jACCEPT
#HabilitandoportadeSSH
iptablesAINPUTptcps192.168.0.45dport22jACCEPT
#HabilitandoportadeSMTP
iptablesAINPUTptcps192.168.0.45dport25jACCEPT
#HabilitandoportadeDNS
iptablesAINPUTptcps192.168.0.45dport53jACCEPT
http://www.tccamargo.com/linux/tutoriais/iptables.html
10/13
26/05/2016
#HabilitandoportadePOP3
iptablesAINPUTptcps192.168.0.45dport110jACCEPT
#HabilitandoportadeDNS(UDP)
iptablesAINPUTpudps192.168.0.45sourceport53jACCEPT
#RedirecionarPorta
iptablestnatAPREROUTINGsIP_NETiEXT_INTjDNATtoIP_DESTINO
iptablestnatAPOSTROUTINGsIP_NEToEXT_INTptcpdportPORTjACCEPT
iptablestnatAPOSTROUTINGsIP_DESTINOoEXT_INTjSNATtoIP_NET
iptablestnatAPOSTROUTINGsIP_DESTINOoEXT_INTptcpdportPORTj
ACCEPT
IP_NET=IPvlidodainternet.
EXT_INT=InterfacedaInternet.
IP_DESTINO=IPinvlidodaInternetoumelhoripdaredequevaifazer
redirecionamento.
PORT=porta
#Fazendoredirecionamentodeportas
iptablestnatAPREROUTINGiFACEptcpdport80jREDIRECTtoport3128
FACE=interfacederede
#Bloqueandotodosospacotesoriginriosdarede10.0.0.0paraohost
www.tccamargo.com
iptablesAFORWARDs10.0.0.0/8dwww.tccamargo.comjDROP
#Liberandotodosospacotesoriginriosdarede10.0.0.0paraohostwww.tccamargo.com
iptablesAFORWARDs10.0.0.0/8dwww.tccamargo.comjACCEPT
#Liberandotodosospacotestcpdestinadosaporta25
iptablesAFORWARDptcpdport25jACCEPT
#Liberandoacessointernodarede
iptablesAINPUTptcpsyns192.168.1.0/24jACCEPT
iptablesAOUTPUTptcpsyns192.168.1.0/24jACCEPT
iptablesAFORWARDptcpsyns192.168.1.0/24jACCEPT
#compartilhandoawebnaredeinterna
iptablestnatAPOSTROUTINGs192.168.1.0/255.255.255.0oeth1jMASQUERADE
echo1>/proc/sys/net/ipv4/ip_forward&&
#LiberaBittorrentsomenteparaestamaquina
iptablesAINPUTptcpdestinationport6881:6889jACCEPT
#Bloqueandotracertroute
iptablesAINPUTpudps0/0ieth1dport33435:33525jDROP
#Protecoescontraataques
iptablesAINPUTmstatestateINVALIDjDROP
#BloqueandoumamquinapeloendereoMAC
iptablesAINPUTmmacmacsourceXX:XX:XX:XX:XX:XXjDROP
#ProteocontraIPSpoofing
http://www.tccamargo.com/linux/tutoriais/iptables.html
11/13
26/05/2016
iptablesAINPUTs172.16.0.0/16iext_facejDROP
iptablesAINPUTs192.168.0.0/24iext_facejDROP
iptablesAINPUTs192.168.0.0/24iext_facejDROP
<ext_face=SoasinterfacesdainternetcomopppeethX>
#ProteocontraSynfloods
iptablesAFORWARDptcpsynmlimitlimit1/sjACCEPT
#Proteocontraportscannersocultos
iptablesAFORWARDptcptcpflagsSYN,ACK,FIN,RSTRSTmlimitlimit1/sj
ACCEPT
#Proteocontrapingdamorte
iptablesAFORWARDpicmpicmptypeechorequestmlimitlimit1/sjACCEPT
#Bloqueandopingdeumip
iptablesAINPUTpicmps192.168.1.1/24jDROP
#Bloqueandopacotesfragmentados
iptablesAINPUTiINTEXTmuncleanjlog_unclean
iptablesAINPUTfiINTEXTjlog_fragment
<INTEXT=InterfacedaINTERNET>
#AnulandoasrespostasaICMP8(echoreply)
echo1>/proc/sys/net/ipv4/icmp_echo_ignore_all
Agradecimentos
UmamatriasobreIptablesnonadafcildesefazer.Sotantasopesquea
probabilidadedeseperdernestemundodetabelas,Chainseregrasacabasetornando
real.MuitacoisadoqueescreviaquidevoafonteespetaculardeconhecimentodoSr.
JooEribertoMottaFilho,quemantmumsiteexcelenteeelucidativosobreIptables:
http://www.iptablesbr.cjb.net/.
Agradeotambmaograndeirmogoogleeaminhamquina"cobaia"quesofreu
horroresnasminhasexperinciasdeaplicaoderegrasdoIptables:)
Bem,esperoqueesteartigosejadegrandevaliaparatodos.
Umabrao.
Casotenhaalgumadvida,crticaousugestoafazer:
VoltarparaArtigosdeLinux
http://www.tccamargo.com/linux/tutoriais/iptables.html
12/13
26/05/2016
SitedesenvolvidonoMozillaComposersobsistemaoperacionalLinuxMandrake.
Todososartigosescritospodemserlivrementecopiadosedivulgadosdesdeque
semantenhamoscrditosdosautoresoriginais.Sejalivre,massejajusto.
http://www.tccamargo.com/linux/tutoriais/iptables.html
13/13