Vous êtes sur la page 1sur 9

06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?

codigo=13249
Iptables - Seguraa total para sua rede
AIor: PhiIIip Vieira <phiIIiprich aI gmaiI.com>
DaIa: 17/01/2012
Itroduo
O iptchlcs, resmidamenIe, e m irewaII (]ra??? no sabia...)
8rincadeiras parIe, o ipIabIes e ma maraviIhosa IerramenIa de segrana para sa
rede, ge nada mais e do ge m 'IronIend' para o mdIo 'neIIiIIer'.
Como vamos ver mais adianIe, o ipIabIes e miIo IIexIveI, compIeIo e compIexo, porem
podemos conIar com eIe gando o enIendemos. O grande segredo do ipIabIes e enIender
sa sinIaxe, saber como, gando e onde inserir ma regra, saber como eIe se comporIa,
eIc.
NesIe arIigo iremos consIrir m scripI do ipIabIes, simpIes, sando apenas a IabeIa 'iIIer'
e comparIiIhamenIo de inIerneI com a IabeIa 'NaI'.
Para meIhor aproveiIamenIo desIe arIigo, o IeiIor deve Ier cerIo conhecimenIo sobre o
ipIabIes, sa sinIaxe e conhecimenIos sobre redes de m modo geraI.
- LeiIra recomendada:
Pgina oIiciaI do ipIabIes: www.neIIiIIer.org
Sobre o ipIabIes: hIIp://pI.wikipedia.org/wiki/NeIIiIIer
VaIe a pena Iambem Ier o manaI do ipIabIes. No IerminaI digiIe:
$ ma iptables
O gue devo saber para criar um script do
iptables?
Para comearmos a criar m scripI do ipIabIes, devemos Ier em menIe para gaI propsiIo
o mesmo vai ser IiIizado.
nIo vamos responder s seginIes pergnIas:
sIo procrando segrana?
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
sIo procrando segrana?
sIo gerendo mais segrana?
ero IaciIidade?
ero conIiana?
Me IirewaII deve bIogear Ido e Iiberar apenas o necessrio?
O ge vo Iiberar?
Com reposIas para esIas pergnIas, podemos comear a pensar sobre como eIaborar o
nosso scripI.
Vamos ver mais aIgns Ipicos ge vo nos a|dar:
Tenha sempre em menIe ge o aIage pode vir de Iodos os Iados, incIsive da sa
rede inIerna.
aa ma reIao de Ido o ge voce precisa para manIer sa rede segra e
IncionaI, por exempIo, gais as porIas ge voce deve Iiberar, para gais hosIs, para
gais apIicaes, eIc.
Politicas do iptables
O ipIabIes Iem por padro deixar Ido Iiberado, porIanIo, eIe esI IiIizando como poIiIica
padro o 'ACCPT', o se|a, Iodo e gaIger acesso esI Iiberado.
O ipIabIes IrabaIha com 3 poIIIicas:
ACCPT: Onde Iodo e gaIger acesso e Iiberado.
R]CT: Onde Iodo e gaIger acesso e bIogeado, gerando ma mensagem de
reIorno.
DROP: Onde Iodo e gaIger acesso e bIogeado, porem eIe no gera nenhma
resposIa (exceIo para IocaIhosI).
As poIIIicas padres do ipIabIes devem ser deIinidas anIes de gaIger regra, pois assim
voce vai inserir as regras de acordo com as poIIIicas padres ge Ioram inIormadas no
inIcio do scripI.
sIa parIe e deIerminanIe para voce comear a consIrir se IirewaII.
Para deIinirmos nossas poIIIicas padres, devemos IiIizar o parmeIro '-P' (poIicy).
Ve|amos os exempIos abaixo.
- DeIinir como as poIIIicas padres como DROP:
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
Da Iorma descriIa acima, nosso IirewaII esIaria com Iodas as poIIIicas como 'DROP', e voce
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
no consegiria nem reaIizar m 'ping' para: Viva o Linx - aa o IesIe. ;-)
Para 'seIar' oIra poIIIica, basIa voce Irocar o 'DROP', do exempIo acima, para 'R]CT' o
'ACCPT' de acordo com sa deciso.
Como orgaizar o script do iptables?
m a|das a pessoas em Irns e Iambem no me IrabaIho, gando pegei m "IaIhowaII"
pronIo, me deparei com miIa bagna no scripI; isIo aIrapaIha basIanIe na manIeno
deIe, porIanIo, para manIermos ma boa aparencia do nosso scripI e IaciIiIar IIras
manIenes, devemos manIer Ido organizado.
Ve|amos:
!. CoIocar m cabeaIho no scripI (esIa e ma boa regra de programao):
- O cabeaIho deve conIer descrio, daIa da IIima aIIerao, verso (se Ior o caso), e
demais inIormaes necessrias.
!!. DecIarar as variveis:
- !nserir as variveis ge sero sadas, assim ser mais IciI IocaIizar regras e IaciIiIa a sa
vida em aIgmas regras, como por exempIo, regras ge Iidam com porIas.
!!!. Carregar os mdIos necessrios:
- Dependendo do se scripI, voce necessiIar carregar aIgns mdIos.
!V. Separar as regras de acordo com as chains e IabeIas:
- Seria Iambem inIeressanIe coIocar as regras da IabeIa 'naI' anIes das regras da IabeIa
'IiIIer' (como veremos no nosso exempIo).
nIo, nossa organizao seria aIgo como:
# VAR!AV!S #
# MODULOS #
# RCRAS D NAT #
# RCRAS D !NPUT #
# RCRAS D OUTPUT #
# RCRAS D ORWARD #
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
Lxemplo de script
Vamos ao nosso exempIo de scripI, eIe e miIo simpIes, porem segro, e aos pocos voce
pode ir incremenIando o mesmo.
Lembre-se, o scripI agi e apenas m exempIo, esIde o scripI (e o ipIabIes e cIaro). Leia os
comenIrios e modiIige-o de acordo com sa necessidade. Lembrando novamenIe ge
esIe exempIo e apenas para Iins de aprendizagem.
Crie m argivo com o se ediIor de IexIo preIerido com o nome de 'IirewaII' denIro de "/
eIc/iniI.d/" (para sisIemas baseados em Debian). No me caso, esIarei IiIizando o ediIor
V|M.
# vi jetcjiit.djfirewall
Dagi para baixo, e o scripI de 'IirewaII' (mencionado acima):
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
#!/b1h/bash

# A 1hha ac1a cohhec1da coo shebahg e seJveJ paJa
chaaJ o 1h1eJpJe1adoJ do scJ1p1
# podeJ1a-se 1JocaJ o bash peo sh ou ou1Jo she de
sua pJe1eJhc1a

######################################################
##
# EXEhPL0 0E SCRTPT 0E FTREWALL PARA ARTTC0 h0 STTE
www.v1vao1hux.co.bJ
# CRTA00 P0R phJ1ch
# 0a1a da 11a a1eJao. 11/01/2012
# ####################################################
##

######################
# 0ECLARAh00 AS vARTAvETS #
######################

# Th1eJ1ace de Jede 1gada a 1h1eJhe1
TFACE_WEB="e1h0"

# Th1eJ1ace de Jede 1gada a Jede 1h1eJha
TFACE_RE0E="e1h1"

# Rede 1h1eJha
RE0E_ThTERhA="10.0.0.0/24"

# PoJ1as 1beJadas TCP
P0RTAS_TCP="20,21,53,80,443"

# PoJ1as 1beJadas b0P
P0RTAS_b0P="53"

# PoJ1as 1beJadas paJa a Jede 1h1eJha
P0RTAS_RE0E_ThTERhA="25,110"

######################################################
######
# FbhA0 START #
# Es1a 1uho 1pa as JegJas cJ1adas ah1eJ1oJeh1e, e
1hseJe as JegJas 1s1adas ha 1uho
######################################################
#####

1unc1on s1aJ1 {) {

#++++++++++++++++++++++
# LThPA AS RECRAS EXTSTEhTES #
#+++++++++++++++++++++#
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249

# L1pa as JegJas da 1abea ha1
1p1abes -1 ha1 -F

# 0EFThE AS P0LTTTCAS PA0R0ES 00 TPTABLES C0h0 0R0P #
1p1abes -P ThPbT 0R0P
1p1abes -P 0bTPbT 0R0P
1p1abes -P F0RWAR0 0R0P

# hABTLTTA 0 R0TEAhEhT0 h0 KERhEL #
echo 1 > /pJoc/sys/he1/1pv4/1p_1oJwaJd

# CRTA A T0A E v0LTA 00 ACESS0 hAS ChAThS ThPbT,
0bTPbT E F0RWAR0, ASSTh hA0 PRECTSAh0S CRTAR A T0A E
v0LTA hAS RECRAS
# ho vaos hos apJo1uhdaJ hes1e assuh1o, as vae a
peha daJ ua es1udada ho duo s1a1e ,-)
1p1abes -A ThPbT - s1a1e --s1a1e RELATE0,ESTABLTShE0
- ACCEPT
1p1abes -A 0bTPbT - s1a1e --s1a1e
RELATE0,ESTABLTShE0 - ACCEPT
1p1abes -A F0RWAR0 - s1a1e --s1a1e
RELATE0,ESTABLTShE0 - ACCEPT

##############
# RECRAS 0E hAT #
#############

# C0hPARTTLhA A ThTERhET #
1p1abes -1 ha1 -A P0STR0bTThC -s $RE0E_ThTERhA -o $
TFACE_WEB - hAS0bERA0E

# RE0TRECT0hA 0 ACESS0 R0P PARA 0bTR0 SERvT00R 0EhTR0
0A RE0E ThTERhA#
1p1abes -1 ha1 -A PRER0bTThC -p 1cp --dpoJ1 3389 -
RE0TRECT --1o 10.0.0.2.3389

###############
# RECRAS 0E ThPbT #
###############

# L1beJa o acesso SSh de quaqueJ oJ1ge
1p1abes -A ThPbT -p 1cp --dpoJ1 22 - ACCEPT

# L1beJa o squ1d a paJ11J da Jede 1h1eJha
1p1abes -A ThPbT -p 1cp --dpoJ1 3128 - ACCEPT

# Ace11a p1hg apehas da Jede 1h1eJha
1p1abes -A ThPbT -s $RE0E_ThTERhA -p 1cp --1cp-1ype
8 - ACCEPT

################
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
# L1beJa as poJ1as cohs1ah1es ha vaJ1ve $P0RTAS_TCP
{paJa 1beJaJ a1s poJ1as, bas1a 1hseJ1J as esas ha
vaJ1ve c11ada)
1p1abes -A 0bTPbT -p 1cp - u11poJ1 --dpoJ1s $
P0RTAS_TCP - ACCEPT

# L1beJa p1hg paJa quaqueJ ugaJ
1p1abes -A 0bTPbT -p 1cp --1cp-1ype 8 - ACCEPT

##################
# RECRAS 0E F0RWAR0 #
#################

# L1beJa as poJ1as cohs1ah1es e ha vaJ1ve $P0RTAS_
RE0E_ThTERhA {paJa 1beJaJ a1s poJ1as, bas1a 1hseJ1J
as esas ha vaJ1ve c11ada)
1p1abes -A F0RWAR0 -p 1cp - u11poJ1 --dpoJ1s $
P0RTAS_RE0E_ThTERhA - ACCEPT

# L1beJa R0P c11ado ha JegJa de hAT
1p1abes -A F0RWAR0 -p 1cp --dpoJ1 3389 -d 10.0.0.2 -
ACCEPT
# FThAL 0A FbhA0 START #
}

######################################################
######################
# CRTA FbhA0 ST0P
#
# Es1a 1uho 1pa 1odas as JegJas, de1xa as
po111cas padJes co ACCEPT e de1xa 1odo e quaqueJ
acesso 1beJado
######################################################
######################

1uhc11o s1op {) {

# LThPA AS RECRAS EXTSTEhTES #
1p1abes -F
1p1abes -1 ha1 -F

# 0EFThE AS P0LTTTCAS PA0R0ES 00 TPTABLES C0h0 0R0P #
1p1abes -P ThPbT ACCEPT
1p1abes -P 0bTPbT ACCEPT
1p1abes -P F0RWAR0 ACCEPT

# hABTLTTA 0 R0TEAhEhT0 h0 KERhEL #
echo 1 > /pJoc/sys/he1/1pv4/1p_1oJwaJd

# C0hPARTTLhA A ThTERhET #
1p1abes -1 ha1 -A P0STR0bTThC -s $RE0E_ThTERhA -o $
TFACE_WEB - hAS0bERA0E
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
# e as coJJespohdeh1es as esas de 1oJwaJd aqu1

# FThAL 0A FbhA0 ST0P #
}

# CJ1ahdo os paJe1Jos paJa o scJ1p1, esses
paJe1Jos seJo s1aJ1, s1op e Jes1aJ1 veaos.
# s1aJ1 - chaa a 1uho s1aJ1 {RegJas 1hseJ1das e
po111ca padJo coo 0R0P)
# s1op - chaa a 1uho s1op {Se JegJas e co a
po111ca padJo coo ACCEPT, u11 paJa Jea1zaJ
1es1es)
# Jes1aJ1 - chaa a 1uho s1op e depo1s a 1uho
s1aJ1 {CaJJega as hovas JegJas que vehha a seJ
1hseJ1das ha 1uho s1aJ1)

# 0uaqueJ paJe1Jo que ho sea s1aJ1, s1op ou
Jes1aJ1 ho seJ v1do e hada seJ a1eJado.

case $1 n

s1aJ1)
s1aJ1
,,

s1op)
s1op
,,

Jes1aJ1)
s1op
s1aJ1
,,

*)
echo "Ths1Ja u paJe1Jo paJa /e1c/1h11.d/11Jewa...
s1aJ1 ] s1op ] Jes1aJ1
ex11 0
,,

esac
# FTh 00 SCRTPT 0E FTREWALL #
Cometrios
- A Iinha:
06-03-2012 12:43:16 hIIp://www.vivaoIinx.com.br/arIigos/impressora.php?codigo=13249
ipIabIes -A OUTPUT -p Icp -m mIIiporI --dporIs $PORTAS_TCP -| ACCPT
- Pode ser sbsIiIIda por esIas:
ipIabIes -A OUTPUT -p Icp --dporI 20 -| ACCPT
ipIabIes -A OUTPUT -p Icp --dporI 21 -| ACCPT
ipIabIes -A OUTPUT -p Icp --dporI S3 -| ACCPT
ipIabIes -A OUTPUT -p Icp --dporI 80 -| ACCPT
ipIabIes -A OUTPUT -p Icp --dporI 443 -| ACCPT
O exempIo Ioi sado para ge voce conhea o mdIo Multiprt e aprenda a IrabaIhar com
variveis, ge dependendo do caso, pode IaciIiIar sa vida, mas nada impede ge voce crie
ma regra para cada porIa.
- Caso voce no IiIize o Squid para conIroIe de acesso, comenIe a Iinha:
ipIabIes -A !NPUT -p Icp --dporI 3128 -| ACCPT
- adicione nas regras no bIoco 'RCRAS D ORWARD' denIro da Ino 'sIarI':
ipIabIes -A ORWARD -p Icp --dporI S3 -| ACCPT
ipIabIes -A ORWARD -p Icp --dporI 80 -| ACCPT
ipIabIes -A ORWARD -p Icp --dporI 443 -| ACCPT
- O:
ipIabIes -A ORWARD -p Icp -m mIIiporI --dporIs $PORTAS_TCP -| ACCPT
ipIabIes -A ORWARD -p Icp -m mIIiporI --dporIs $PORTAS_UDP -| ACCPT
Cocluso
No scripI exempIiIicado anIeriormenIe, vimos como manIer m IirewaII mais segro
sando as poIIIicas padres do ipIabIes como 'DROP'. Com esIe exempIo, podemos
bIogear Iodo e gaIger acesso e Iiberar apenas o necessrio.
Sendo assim, no nosso exempIo, | esIamos com inIerneI comparIiIhada com o sem
'Sgid'.
AIe o prximo!
hIIp://www.vivaoIinx.com.br/arIigo/!pIabIes-Segranca-IoIaI-para-sa-rede
VoIIar para o siIe