Você está na página 1de 110

Manual

Servidor
Debian
Divulgar Linux

Divulgar
Conhecimento
Alexandre Strmer Wolf
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $
Sumrio
$ %sando a Distribui&'o Debian################################################################################################# #####################(
$#$ Com)reendendo o *rocesso de +oot#################################################################################################### #(
$#, -niciali.a&'o do Sistema################################################################################################# ######################(
$#/ Ativando e desativando servi&os############################################################################################## #############0
$#/#$ -niciali.a&'o 1r2fica######################################################################################################## ###########$3
$#4 1erenciador de login 1r2fico############################################################################################################ ##$3
$#4#$ 5ntrar no Linux )elo modo texto########################################################################## ######################$$
$#6 Comandos +2sicos do Linux############################################################################################################ ###$$
$#6#$ Comandos b2sicos )ara o)era&'o com ar7uivos ou diret8rios9################################ ###################$,
$#6#, :utros comandos de a)lica&;es diversas9################################################################# ##################$,
$#6#/ Combina&;es de comandos9################################################################################################### #####$,
$#6#4 :)era&'o com terminais9####################################################################################### #####################$,
$#6#6 -nforma&;es de %su2rios9################################################################################### ########################$,
$#6#< *rocessos9################################################################################################################# ##################$,
$#6#= Matando )rocessos9########################################################################################## ##########################$,
$#6#( Comandos de An2lise do Sistema########################################################################### ###################$/
$#6#0 A)lica&;es de >ede############################################################################################################## #######$/
$#6#$3 *i)es e >edirecionamentos################################################################################## #####################$/
$#6#$$ :)eradores L8gicos############################################################################################### ###################$/
$#6#$, *ermiss;es############################################################################################################### #################$/
$#6#$/ Como se encontrar no sistema######################################################################## ##########################$4
$#6#$4 Local de um bin2rio9##################################################################################################### ############$4
$#6#$6 Criar um banco de dados com a locali.a&'o de ar7uivos####################################### ###################$4
$#6#$< Locali.ar texto em ar7uivo9################################################################################# #####################$4
$#6#$= :)era&;es com texto9############################################################################################################### #$4
$#6#$( Criando aliases ?nomes curtos@############################################################################# ####################$4
$#6#$0 %tilit2rios no console#################################################################################################### ############$4
$#6#,3 Criar um LinA Simb8lico####################################################################################### ###################$4
$#< 1erenciadores de *acotes########################################################################################### ########################$6
$#<#$ %sando a)t-get e a)titude################################################################################ ###########################$6
$#<#, Debian *acAage ?d)Ag@##################################################################################################### ##########$<
$#<#/ Alien ?Conversor de *acotes r)m )ara deb@###################################################################### ##########$<
$#= *roblemas Comuns e Solu&;es######################################################################################## ###################$<
$#=#$ Com)ilando o Bernel############################################################################################################ ######$<
$#=#$#$ Com)ila&'o C DModa DebianE############################################################################ ################$=
$#=#$#, Com)ila&'o )adr'o############################################################################################# ################$(
$#=#, -nstala&'o somente com CDFs############################################################################################### ######$0
$#=#/ >econhecimento da *laca de GHdeo e Monitor################################################### ########################$0
$#=#4 Cancelou a instala&'o )ela metade ?-nstala&'o Scratch@###################################### #######################$0
$#( Configurando as interfaces de >ede################################################################################################ ####,3
$#(#$ Criando interfaces Girtuais############################################################################# ############################,3
, *rogramas Servidores############################################################################################################### ##################,$
,#$ Servidor Web A)ache############################################################################################### ##########################,$
,#$#$ -nstalando o A)ache############################################################################################################### #####,$
,#$#, Configura&'o b2sica ################################################################################################################# ##,$
,#$#/ Girtual Iosts################################################################################################################## #############,,
,#$#4 Su)orte ao *I*####################################################################################################################### ####,,
,#$#4#$ *I* no A)ache $#/############################################################################################ #################,,
,#$#4#, *I* no A)ache ,################################################################################################ ################,/
,#$#4#/ 5xem)lo )ara testar o su)orte ao *I*#################################################################### ############,/
,#$#4#4 -nstalando o Su)orte C +anco de Dados )elo *I*##################################################### #########,4
,#, DServidor de +anco de DadosE MJSKL################################################################### ##########################,4
,#,#$ Administrador de MJSKL e *I* via Web################################################################## ################,6
,#/ Servidor LM*########################################################################################################### ###########################,6
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,
,#/#$ Criando um LM* AnNnimo################################################################################################ ##########,6
,#/#, Criando acesso )or nome de usu2rio com ou sem shell####################################### #######################,<
,#4 Acesso >emoto - Servidor Melnet################################################################################################## ######,=
,#6 Acesso >emoto - Servidor SSI ?Secure Shell@######################################################################### ##########,(
,#6#$ Configura&'o do Cliente############################################################################################ #################,(
,#6#, Configura&'o do servidor########################################################################################################## ##,(
,#< Com)artilhamento de Ar7uivos###################################################################################### ####################,0
,#<#$ OLS Oet!orA Lile SJstem################################################################################### ####################,0
,#<#, SM+ - Server Message +locA ?Samba@###################################################################################### #/3
,#<#,#$ Cadastrando os usu2rios##################################################################################################### #/$
,#<#,#, Configurando os Com)artilhamentos Manualmente################################################ ###########/,
,#<#,#/ Autentica&'o Centrali.ada ?*DC@##################################################################### ##################//
,#<#,#4 Configurando os Com)artilhamentos usando o S!at######################################################## ##/<
,#<#,#6 *ermitindo 7ue os usu2rios com)artilhem )astas########################################################### #####/0
,#<#,#< Acessando m27uinas Windo!s########################################################################### ################/0
,#<#/ Leramentas 1r2fica - LinOeighborhood########################################################### ##########################/0
,#<#4 :utro exem)lo de configura&'o do Samba ######################################################### #######################43
,#= Cu)s ?Common %nix *rinting SJstem@##################################################################### #########################4/
,#( Servidor DIC* ?DJnamic Iost Configuration *rotocol@################################################# ##################4/
,#(#$ DIC* com -* fixo ?an2lise de MAC@############################################################################## ###########44
,#0 Servidor S7uid#################################################################################################################### ################44
,#0#$ -nstalando o S7uid################################################################################################ ######################46
,#0#, Melhorando as caracterHsticas do SK%-D################################################################# ##################4<
,#0#/ +lo7ueando )or )alavras ou domHnios############################################################################ ############4(
,#0#4 +lo7ueando )or hor2rio ######################################################################################### ####################4(
,#0#6 *roxJ de Autentica&'o############################################################################################# ###################40
,#0#< Configurando um )roxJ trans)arente######################################################################################## ##40
,#$3 Servidor Com)leto de 5-mailPs###################################################################################### ###################63
,#$3#$ AQustes no mJs7l################################################################################################################# ######6$
,#$3#, Criando a estrutura de gerenciamento do )ostfix no MJSKL############################# ######################6$
,#$3#/ AQustando o Courier####################################################################################################### ###########64
,#$3#4 Configura&'o do maildro)################################################################################# #######################66
,#$3#6 Configura&'o do *ostfix################################################################################### ########################6<
,#$3#6#$ Meste manual dos servi&os########################################################################################## #######6(
,#$3#6#, Mestando o -MA* via banco de dados9############################################################### ###############60
,#$3#6#/ Mestando a configura&'o do *:*9############################################################## #######################<3
,#$3#< Cota de e-mails######################################################################################################## #################<3
,#$3#= SASL, no *ostfix9#################################################################################################### ################<3
,#$3#( Configurando o Amavis############################################################################################## ##############<$
,#$3#0 Configurando o *ostfixAdmin##################################################################################### #############<,
,#$3#$3 An2lise e desem)enho ###################################################################################################### ######</
,#$$ Servidor de 5-mails############################################################################################## ############################</
,#$$#$ 5nvio de 5mails ?SMM*@######################################################################################### #################</
,#$$#, >ecebimento de 5-mailFs *:*/ e -MA*########################################################### #######################<4
,#$$#/ -nstalando um WebMail########################################################################################### #################<4
,#$, Servidor Sim)les e Direto de 5-mail ?Rmail@################################################################### ################<6
,#$,#$ Adicionando usu2rios e administradores########################################################################## #########<<
,#$,#, -nstalando um Lront5nd )ara Lacilitar o manuseio########################################################### ########<<
,#$,#/ Criando um domHnio virtual############################################################################################## ########<=
,#$,#4 Criando usu2rios no domHnio9###################################################################################### #############<=
,#$,#6 -nstalando o %ebiMiau############################################################################################################# #<=
,#$,#< 5nviando e-mailPs via sendmail################################################################################################# <=
,#$/ Servidor DOS########################################################################################################## #########################<(
,#$/#$ Configurando um DOS )ara a -ntranet########################################################### ##########################=3
,#$4 Autentica&'o Centrali.ada com LDA*################################################################################### ###########=$
,#$4#$ Configura&'o LDA* Servidor########################################################################################### ########=$
,#$4#$#$ AQustes na *AM######################################################################################## ########################=,
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /
,#$4#$#, Configura&;es de Iost e +ase################################################################ ##########################=/
,#$4#, Configura&'o LDA* Cliente######################################################################################## #############=4
,#$4#/ Criando os gru)os e usu2rios################################################################################## ##################=4
,#$4#4 Lacilitando as coisas com )h)lda)admin################################################################### ###############=6
,#$6 Servidor O-S ?Oet!orA -nformation Service@ ################################################################## ################=6
,#$6#$ Servidor O-SSOLS################################################################################################################# ####=<
,#$< G*O com :)enG*O############################################################################################################## ###########==
,#$<#$ G*O Linux x Windo!s################################################################################################### ##########=0
,#$= Sha)er C+K ?Controle de +anda@########################################################################################## ########=0
/ -*Mables####################################################################################################################################### ###############(,
/#$ :)era&;es em uma Tnica regra ######################################################################################### #################(,
/#$#$ A)agando >egras############################################################################################################ ############(/
/#$#, 5s)ecifica&;es )ara filtragem ############################################################################## ######################(/
/#$#/ 5s)ecificando -nvers'o################################################################################################## #############(/
/#$#4 5s)ecificando )rotocolo################################################################################### ##########################(/
/#$#6 5s)ecificando uma interface######################################################################################### ##############(4
/#$#< 5s)ecificando fragmentos################################################################################################## #########(4
/#$#= 5xtens;es ao i)tables9 Oovas -m)lementa&;es########################################################### ################(4
/#, 5xtens;es MC*############################################################################################################################### #####(6
/#,#$ %ma ex)lica&'o sobre as flags MC*################################################################################### #########(6
/#,#, 5xtens;es %D*############################################################################################################## #############(6
/#,#/ 5xtens;es -CM*##################################################################################################### ####################(<
/#,#4 :utras extens;es########################################################################################################### ##############(<
/#/ Checagens de estado dos )acotes ?state match@######################################################## ##########################(=
/#4 5s)ecifica&;es de alvo ?Marget@ ############################################################################## ###########################(=
/#4#$ Chains definidas )or usu2rios################################################################################### ##################(=
/#4#, 5xtens;es ao i)tables9 Oovos alvos ?targets@####################################################### #######################((
/#4#/ Alvos es)eciais )adr'o########################################################################################################## ######((
/#6 :)era&;es em uma chain ################################################################################################ ###################(0
/#6#$ :)era&;es com chains####################################################################################### #########################(0
/#< Misturando OAM e Liltragem de *acotes################################################################## ##########################03
/#= Com)artilhamento de Conex;es###################################################################################### ##################03
/#( La.endo OAM############################################################################################################################# #########03
/#(#$ La.endo OAM $9$############################################################################################################# ###########0$
/#0 5xem)lo de um fire!all com)leto com scri)t################################################################################## ###0,
4 >oteamento########################################################################################################################################## #######06
4#$ Mabelas de roteamento######################################################################################################################## #06
4#$#$ Adicionando Mabelas de >oteamento######################################################################## ##################0<
4#$#, -nserindo uma rota na nova tabela de roteamento######################################################## ###############0=
4#$#/ -nserindo uma regra na nova tabela de roteamento##################################################### ################0=
4#$#4 5liminando >egras###################################################################################################################### 0(
4#$#6 >oteamento )or >edes ou -*Fs############################################################################################## ######0(
4#, 5s7uema de >oteamento com Lire!all e OAM################################################################################### #0(
4#/ 5xem)lo *ratico Com)leto#################################################################################################### #############0(
4#4 >oteamento )or >edes######################################################################################################## ##############$3/
4#6 >oteamento )or *ortas############################################################################################################### #######$34
4#< >oteamento com multi-u)linAs############################################################################################## ###########$36
4#<#$ >e)artir a conex'o################################################################################################### #################$36
4#<#, Load balancing############################################################################################## ###########################$36
6 1erando An2lise e 5statHsticas################################################################################################# #################$3<
6#$ Webali.er ?analise !eb@####################################################################################################### #############$3<
6#, Sarg ?analise S7uid@############################################################################################################# #############$3<
6#/ OM:*############################################################################################################################################# ###$3<
< Seguran&a####################################################################################################################### ##########################$3(
<#$ Considera&'o sobre a seguran&a l8gica################################################################################## ###########$3(
<#, Servi&os desnecess2rios################################################################################################## ##################$3(
<#/ Conselhos 1enricos############################################################################################ ############################$30
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6
Introduo
5sse tutorial uma com)ila&'o revisada de materiaisU Quntamente com ex)eriVncias e ex)erimentos do
autor# A com)ila&'o de materiais baseada nos sites da internet 7ue de alguma forma refere-se a comunidade
Debian Linux# A maior fonte de informa&'o obtida em !!!#debian#org#
: tutorial n'o tenta de forma alguma abranger outras distribui&;esU no entantoU Linux LinuxU assim
muitas coisas s'o iguais ou e7uivalentes entre as distribui&;es#
Muitos conteTdos desse tutorial foram copiados e adaptados de sites Dbem conhecidosE da internet#
Atualmente existe muito material sobre os assuntos abordadosU mas )oucos validados e realmente
ex)erimentados# 5sse material foi e escrito observando as dTvidas e dificuldades de usu2rios Debian em
um laborat8rio es)ecHfico )ara essa finalidadeU onde os usu2rios )ossuem os mais variados nHveis de
conhecimento#
Modo e 7ual7uer conteTdo ou corre&'o s'o aceitasU )ois esse um tutorial livre desenvolvido )ela
comunidade Debian e com)ilado )or Alexandre Strmer Wolf ?as!olf"terra#com#br@# : material foi escrito
utili.ando-se de ferramentas livresU mais )recisamente o editor do :)en:ffice ?!!!#o)enoffice#org@ e a
distribui&'o Debian Linux ?!!!#debian#org@# Modas as distribui&;es s'o excelentesU de)ende do
conhecimento de cada um )ara torn2-la mais ade7uada Cs suas necessidades#
Sobre o autor
Alexandre Strmer Wolf desenvolvedor de sistemas comerciais e livresU )ossui re)ugnWncia ao uso
de soft!ares )iratas )elas empresasU acredita em soft!are livre nas %niversidades e alguns 8rg'os )TblicosU
desde 7ue n'o entrem em conflitos com o desenvolvimento mercadol8gico ?irNnica e contraversiva nessa
frase@# O'o )ossui nada contra os )rodutos Windo!sU )ior de tudo 7ue )ossui inveQa do im)rio Microsoft
?adoraria )ossuir milh;es@# Atualmente utili.a Debian ?)ara tudo@ e o Windo!s 0( ?desenvolvimento
comercial em Del)hi -G ?)ossui o registroU gosto do S#:#U desde 7ue n'o )recise alterar configura&;es de
rede@@U )ossui ainda uma instala&'o do Windo!s R* em sua m27uina )ara tirar as dTvidas de clientes#
Mrabalha tambm como )rofessor %niversit2rio nas 2reas de engenharias e inform2ticaU tcnico em
an2lises 7uHmicasU gemologiaU eletrNnicaU +acharel em An2lises de SistemasU Mestre em 5ngenharia 5ltricaU
e continua estudando )ara as )r8ximas titula&;es# Desenvolvedor atuante em Del)hiU XavaU La.arusU CPsU
Cli))erU Lree *ascalU AssemblJU entre outras v2rias linguagens menos comuns#
Agradecimentos
*rimeiramente C minha es)osa MerlinU )or aturar a mim e meus aeromodelosU fora a bagun&a de
com)onentes eletrNnicos es)alhados )ela casa# A )aciVncia das turmas de laborat8rio de ex)erimenta&'o )ela
demora na entrega desse material# A comunidade Debian )rinci)almenteU e todas as outras comunidades as
7uais )ertenci e tenho grande estima ?SlacA!are e >ed Iat@#
Antes de comear
A )ergunta fatalU D7ual a melhor distribui&'oEU hoQe digo DebianU mas a res)osta correta a7uela 7ue
mais lhe agradarU )ois Linux Linux# A diferen&a entre distribui&;es deixou de ser a)enas D7uais )acotesE
fa.em )arte ou n'oU atualmente cada distribui&'o RaizU )ossui mecanismos 7ue facilitam a vida do usu2rio
final de alguma formaU seQa instala&'o de a)licativosU es7uema de diret8riosU DfrescurasEU e tudo mais# IoQeU
indiferente da distribui&'o os )acotes Q2 se encontram tradu.idos )ara muitas lHnguasU caso ainda n'o esteQaU
vocV mesmo )ode fa.er issoU ou tenha um )ouco de )aciVncia#
Algumas )essoas afirmam 7ue a Debian uma distribui&'o est2vel mas atrasadaU discordo )lenamente
dessa afirma&'oU )ois a mesma oferece mecanismos de forma a utili.ar )rogramas est2veisU ou se deseQarU
)ossHvel utili.ar o DTltimo gritoE em )rogramas# *or exem)loU nesse momento estou usando o Tltimo BernelU
a Tltima vers'o do :)en:fficeU e o mesmo )ara outros )rogramas# Oas em)resas 7uando instalo o LinuxU
)rinci)almente servidoresU somente utili.o a vers'o stableU 7ue )ode ser um )ouco desatuali.ada em rela&'o
aos Tltimos lan&amentosU mas garantida# X2 em casaU uso os Tltimos lan&amentosU )ara test2-los e estar a )ar
das novas caracterHsticas ?coisa de DmicreiroE@#
5s)ero 7ue esse tutorial )ossa aQudarU favor distribuir )ara o maior nTmero de )essoas# Divulgar Linux
divulgar conhecimentoU 7uanto mais )essoas o utili.aremU mais )essoas )oder'o contribuir )ara o seu
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <
crescimento#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =
1 Usando a Distribuio Debian
Debian uma organi.a&'o exclusivamente de volunt2rios dedicada ao desenvolvimento de soft!are
livre e a )romover os ideais da comunidade de Soft!are Livre# 5ssa organi.a&'o desenvolve soft!are
baseado no Aernel do Linux#
X2 tive a o)ortunidade de trabalhar com v2rias distribui&;esU mas sem resto de dTvidas o Debian a
distribui&'o mais organi.ada de todasU mas tem muito caminho a )ercorrerU e n8s faremos de tudo ao alcance
)ara 7ue esses obQetivos seQam atingidos#
1.1 Compreendendo o Processo de Boot
Ao ligar o com)utadorU o )rimeiro soft!are executado o +-:S ?+asic -n)ut :ut)ut SJstem@ da )laca
m'eU 7ue fa. a contagem da mem8ria >AMU uma detec&'o r2)ida dos dis)ositivos instalados e )or fim
executa o +::M carregando o sistema o)eracional a )artir de uma tecnologia de arma.enamento# 5ste
)rocedimento inicial chamado de *:SM ?*o!er-:n Self Mest@U 7ue nada mais do 7ue um auto-teste )ara
ver se a)arentemente est2 tudo correto#
Durante o +::M ?bootstra)@ o +-:S carrega o Sistema :)eracionalU lendo o )rimeiro setor do disco
rHgido o Master Boot Record chamado de MBRU tambm conhecido como trilha .ero# Oo M+> vai o
gerenciador de boot ?+oot Manager@# :s dois mais usados no Linux s'o o lilo e o grub#
Oa verdadeU no M+> mesmo vai a)enas um bootstrapU um )e7ueno soft!are 7ue instrui o +-:S a
carregar o execut2vel do lilo ou grub em um )onto es)ecHfico do ID e a)8s carregarU executar-lo#
Lembre-se 7ue o M+> )ro)riamente dito ocu)a um Tnico setor do IDU a)enas 6$, bJtes# O'o )ossHvel
arma.enar muita coisa diretamente neleU mas nada im)ede 7ue esse )e7ueno )rograma de 6$, bJtesU a)onte
)ara 7ual7uer ti)o de )rograma#
: gerenciador de boot utili.a os )rimeiros 44< bJtes do MBR# :s << bJtes restantes s'o usados )ara
arma.enar a tabela de )arti&;esU 7ue guarda informa&;es sobre onde cada )arti&'o come&a e termina#
: lilo e o grub )odem ser configurados ainda )ara carregar o Windo!s ou outros sistema
instalados# Muitas distribui&;es configuram isso automaticamente durante a instala&'o#
Kuando se o)ta )or dar o Boot )elo LinuxU o )rograma de Boot ManagerU carrega um )rograma
chamado de kernel# Oo caso do LinuxU um ar7uivo com)actado somente-leituraU geralmente o ar7uivo
/boot/vmlinuz# 5le descom)actado em uma 2rea reservada da mem8ria RAMU assim 7ue termina de
descom)actar o seu conteTdoU o mesmo come&a a ser executado#
5ste execut2vel )rinci)al do kernel nunca alterado durante o uso normal do sistemaU ele muda
a)enas 7uando vocV recom)ila o kernel manualmente ou instala uma nova vers'o#
De)ois de carregadoU a )rimeira coisa 7ue o Aernel fa. montar a )arti&'o rai.U onde o sistema est2
instaladoU inicialmente como somente leitura# Oeste est2gio ele carrega o initU o soft!are 7ue inicia o boot
normal do sistemaU lendo os scripts de iniciali.a&'o e carregando os mdulos e soft!ares es)ecificados
neles#
1.2 Inicializao do Sistema
: ar7uivo de configura&'o do init o /etc/inittab# 5le geralmente o )rimeiro ar7uivo de
configura&'o lido durante o boot# A )rinci)al tarefa dele carregar os demais scripts de iniciali.a&'oU
usados )ara carregar os demais com)onentes do sistema#
Dentro do ar7uivo /etc/inittab existe uma chamada )ara todos os ar7uivos 7ue iniciam o nome
)ela letra DS 7ue se encontram no diret8rio /etc/rcS.d# 5sta )asta contm scri)ts 7ue devem ser
executados sem)reU a cada boot e s'o res)ons2veis )or eta)as fundamentais do boot# Dentre alguns
exem)los de scripts e )rogramas 7ue s'o executados nesta eta)a s'o ?encontrados em /etc/rcS.d
)orm com uma letra S@9
keymap.sh - Carrega o laJout do teclado 7ue ser2 usado no modo textoU Q2 o KDE )ossui um
configurador )r8)rioU o kxkbU 7ue configurado dentro do )ainel de controle# : layout usado )elo
kxkb subscreve o configurado )elo keymap.sh
checkroot.sh - 5xecuta o fsckU reiserfsck ou outro )rograma ade7uado )ara verificar a
estrutura da )arti&'o rai. ?a )arti&'o onde o sistema est2 instalado@U corrigindo erros causados )or
usos incorretos do sistema# 5ste )rocesso an2logo ao scandisA do Windo!s#
Modutils Lun&'o de ler os ar7uivos /etc/modules e Setc/modules.confU ativando a )laca
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (
de somU rede e todos os outros dis)ositivos de hard!are 7ue n'o s'o ativados )elo kernel e sim )or
adendos ao mesmo ?su)orte n'o foi habilitado diretamente no Kernel@#
checkfs.sh - *arecido com o checAroot#shU ele se destina a checar as demais )arti&;es do ID#
mountall.sh Monta as )arti&;es do disco 7ue est'o es)ecificado no ar7uivo /etc/fstab.
Modas montagens de redes ou )arti&;es 7ue deseQar serem acessHvel a)8s o bootU vocV dever2
acrescentar no /etc/fstab#
networking - Ativa a redeU carregando a configura&'o de IPU DNSU gatewayU ou obtendo a
configura&'o via DHCP# A configura&'o da rede arma.enada dentro do ar7uivo
/etc/network/interfaces#
De)ois dos scri)ts )rinci)aisU s'o executados os scri)ts corres)ondentes ao runlevel )adr'o do
sistemaU 7ue configurado no /etc/inittab no nosso casoU o )adr'o 2.
: nTmero 6 indica o runlevel 7ue ser2 usadoU 7ue )ode ser um nTmero de $ a 6# Cada runlevel
corres)onde a uma )astaU com um conQunto diferente de scri)ts de iniciali.a&'o# Y uma forma de ter v2rias
)ossibilidades )ara uso do sistemaU em diferentes situa&;es# A configura&'o mais comum a seguinte9
Runlevel 1 - Single user# Y um modo de recu)era&'o onde nem o modo gr2ficoU nem o
su)orte a redeU nem nenhum outro servi&o n'o essencial carregadoU de forma a minimi.ar a
)ossibilidade de )roblemas# A idia 7ue o sistema iniciali.e )ara 7ue vocV )ossa corrigir o 7ue est2
errado# 5ssa o)era&'o an2loga ao Modo de Seguran&a do Windo!s#
Runlevel 3 - Boot em modo texto# Oeste modo todos os servi&os s'o carregadosU com
exce&'o do gerenciador de gr2fico de bootU nesse caso 7ue )odem ser KDM,GDM ou XDM#
Runlevel 5 - o modo padro do Debian. -niciali.a&'o normalU com modo gr2fico e
todos os demais servi&os#
Oo caso de runlevel 6U s'o carregados os scripts de dentro da )asta /etc/rc5.dU en7uanto 7ue
usando o runlevel /U seriam carregados os scripts dentro da )asta /etc/rc3.d# Oada im)ede 7ue vocV
modifi7ue a organi.a&'o dos ar7uivos manualmenteU de forma a fa.er o R carregar tambm no runlevel /U
ou 7ual7uer outra coisa 7ue 7uiser#
1.3 ti!ando e desati!ando ser!ios
Oa distribui&'o Debian os scri)ts 7ue iniciam os servi&os de sistema ficam todos dentro da )asta
/etc/init.d# *ara )ararU iniciar ou reiniciar 7ual7uer servi&oU use9
/etc/init.d/<NomeDoServio>
:nde o nome do servi&oU deve ser substituHdo )elo nome do script deseQado# Se vocV executar como
a)resentado acimaU sem )arWmetrosU o mesmo a)resentar2 na tela todas o)&;es )ossHveis sem executar nada#
5xem)lo9
/etc/init.d/apache2
Como res)osta ao comando incom)letoU teremos todas as o)&;es )ossHveis9
Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload
:s scripts 7ue est'o na )asta /etc/init.d servem como re)osit8rio de scri)ts )ara chamar os
execut2veis dos servidores# 5les a)enas fa.em as verifica&;es necess2rias e em seguida iniciali.am ou
encerram os execut2veis )ro)riamente ditosU 7ue em geral est'o na )asta /usr/bin# A )asta /etc/init.d
contm scripts )ara 7uase todos os servidores 7ue est'o instalados no sistema# Kuando vocV instala o
Samba )elo apt-get )or exem)loU criado o script /etc/init.d/samba )ara gerenciar o seu
funcionamento#
: 7ue determina se o Samba ser2 executado ou n'o durante o boot n'o o script na )asta
/etc/init.dU mas sim um link simblico criado dentro de uma das )astas de iniciali.a&'o# *or )adr'o
s'o executados )rimeiro o 7ue est2 dentro da )asta SetcSrcS#dU e em seguida o 7ue estiver dentro da )asta
SetcSrc6#d#
:s nTmeros antes dos nomes dos servi&os dentro da )asta /etc/rc5.d determinam a ordem com 7ue
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0
eles v'o ser executados# GocV vai 7uerer 7ue o firewall seQa sem)re ativado antes do Samba )or exem)lo#
: S de startU indica 7ue o servi&o vai ser iniciali.ado# A )artir daH o sistema vai iniciali.ando um
)or ve.U come&ando com os com nTmero mais baixos# Caso dois esteQam com o mesmo nTmeroU eles s'o
executados em ordem alfabtica# *ara 7ue um determinado servi&o )are de ser iniciali.ado automaticamente
no bootU basta a)agar o ar7uivo ?script ou link simblico@ dentro da )asta rc6#d#
1.3.1 Inicializao Grfica
Oo LinuxU o X o servidor gr2ficoU res)ons2vel )rover a infraestrutura necess2ria em o)era&;es
gr2ficasU ele 7ue controla o acesso C )laca de vHdeoU lV as teclas digitadas no teclado e os clicAPs do mouseU
tambm oferece todos os recursos necess2rios )ara os )rogramas criarem Qanelas e mostrarem conteTdo na
tela#
Se vocV chamar o R so.inhoU a )artir do modo texto ?digitando R@U vocV ver2 a)enas uma tela cin.aU
com um R 7ue re)resenta o cursor do mouse# :u seQaU o R a)enas uma baseU )ara os gerenciadores de
Qanelas#
Se vocV chama-lo com o comando xinit ou xinit -- :2 vocV Q2 abrir2 Qunto uma Qanela de
terminalU 7ue )oder2 ser usada )ara abrir )rogramas# *orm ao abrir 7ual7uer )rograma gr2fico vocV
)erceber2 7ue algo est2 estranho# A Qanela do )rograma abertaU mas fica fixa na telaU vocV n'o tem como
minimi.2-laU alternar )ara outra QanelaU e outros recursos#
-sto acontece )or 7ue estas tarefas s'o controladas )elo gerenciador de QanelasU 7ue n'o carregado
com o comando xinit# 5xistem v2rios gerenciadores de QanelasU como o KDEU GnomeU WindowMakerU entre
outrosU sendo 7ue vocV )ode escolher 7ual lhe mais agrada#
: Xfree utili.a uma ar7uitetura cliente-servidorU onde o X em sH atua como o servidor e os )rogramas
como clientesU 7ue recebem dele os clicAs do mouse e as teclas digitadas no teclado e enviam de volta as
Qanelas a serem mostradas na tela#
A grande vantagem deste sistema 7ue alm de rodar )rogramas localmente )ossHvel rodar
)rogramas instalados em outras m27uinas da rede# 5xistem v2rias formas de fa.er isto# GocV )ode )or
exem)lo abrir uma Qanela de terminal dentro do RU conectar-se C outra m27uina via SSI ?com o comando
ssh -X <IP_da_maquina>@ e come&ar a chamar os )rogramas deseQados ou mesmo obter a tela de login
da m27uina remota e a )artir daH carregar um gerenciador de Qanelas e rodar todos os )rogramas via rede#
Oeste caso vocV )recisaria configurar a outra m27uina )ara aceitar as conex;es via XDMCP e iniciali.ar o X
com o comando X -query <IP_da_maquina> no *C cliente#
1." #erenciador de lo$in #r%ico
AntigamenteU era muito comum dar boot em modo texto e deixar )ara abrir o X manualmente
rodando o comando startx a)enas 7uando necess2rioU )ois os *CPs eram lentos e o X demorava )ra abrir#
Atualmente o mais comum usar um gerenciador de loginU como o KDM ?do KDE@ ou o GDM ?do
Gnome@# A fun&'o do gerenciador de login carregar o XU mostrar uma tela de login gr2fica e carregar o KDEU
Gnome ou outro gerenciador de Qanelas escolhido# 5m geral as distribui&;es 7ue usam o KDE como interface
)adr'o usam o KDMU en7uanto as 7ue usam o Gnome )referem o GDM#
: gerenciador de login aberto como um servi&o de sistemaU da mesma forma 7ue o a)ache e outros
servidores# GocV )ode )arar o KDM e assim fechar o modo gr2fico usando o comando /etc/init.d/kdm
stop e reabri-lo a )artir do modo texto com o comando /etc/init.d/kdm start#
Como sem)reU tudo aberto atravs de um conQunto de scri)ts# : KDM )or exem)lo guarda a base das
configura&;es no ar7uivo /etc/kde3/kdm/kdmrc e coloca um conQunto de scri)ts de iniciali.a&'oU um
)ara cada interface instalada dentro da )asta /usr/share/apps/kdm/sessions/#
A configura&'o do Admrc serve )ara configurar as o)&;es da tela de loginU 7ue v'o desde o)&;es de
a)arVnciaU at a o)&'o de aceitar 7ue outras ma7uinas da rede rodem a)licativos remotamente via XDMCP# Ao
fa.er loginU executado o scri)t corres)ondente C interface escolhida# Ao usar o Fluxbox )or exem)loU
executado o scri)t Susr/share/apps/kdm/sessions/fluxbox#
At mesmo o comando startx um scriptU 7ue geralmente vai na )asta /usr/X11R6/bin/# GocV
)ode alter2-lo )ara carregar o 7ue 7uiserU mas normalmente ele carrega o gerenciador es)ecificado no
ar7uivo #xinitrcU dentro do home do usu2rio ou /etc/X11/xinit/xinitrcU 7ue )or sua ve. )ode chamar
/etc/X11/Xsession#
Atualmente est'o em uso no mundo Linux duas vers;es diferentes do XU o Xfree e o Xorg# : Xfree
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3
o )roQeto mais antigo e tradicionalU o gru)o 7ue originalmente )ortou o X )ara o Linux e foi o )rinci)al
mantenedor do )roQeto desde ent'o#
Com o )assar o tem)oU come&aram a surgir crHticasU )rinci)almente direcionadas C demora )ara incluir
corre&;es e atuali.a&;es nos drivers existentes# -sto foi se agravando com o tem)oU at 7ue uma decis'o dos
desenvolvedores em fa.er uma )e7uena mudan&a na licen&a em vigor a )artir do Xfree 4#4 foi a gota dPagua
)ara 7ue um cons8rcio formado )or membros de v2rias distribui&;es desenvolvedores descontentes com o
modo de desenvolvimento antigo se Quntassem )ara criar um fork do XfreeU o X.org#
: X.org utili.ou inicialmente a Tltima vers'o de desenvolvimento da srie 4#/ do XfreeU
dis)onibili.ada antes da mudan&a da licen&a# Desde ent'o foram incluHdos muitas atuali.a&;es e corre&;esU
como novos driverPs e v2rios recursos visuaisU como )or exem)lo su)orte C Qanelas trans)arentes# A )2gina
oficial a http://x.org#
-nicialmente as diferen&as eram )e7uenasU mas como o X.org tem o a)oio das )rinci)ais distribui&;es
e est2 sendo desenvolvido num ritmo muito mais r2)idoU a tendVncia 7ue ele substitua inteiramente o
Xfree num futuro )r8ximo#
*ara 7uem configuraU a )rinci)al diferen&a est2 nos nomes do ar7uivo de configura&'o e utilit2rios# As
o)&;es dentro do ar7uivo continuam as mesmasU incluindo os nomes dos driverPs ?radeonU nvU intelU sisU etc#@
)ossHvel inclusive usar um ar7uivo de configura&'o de uma distribui&'o com o Rfree em outra ?instalada na
mesma m27uina@ com o X.org# A7ui vai uma )e7uena tabela com algumas diferen&as# Ar7uivo de
configura&'o )rinci)al9
/etc/X11/XF86Config-4
/etc/X11/xorg.conf
%tilit2rios de configura&'o9
xf86cfg - xorgfg
xf86config - xorgconfig
Y )ossHvel tambm eliminar estas diferen&as criando um conQunto de linAs a)ontando )ara os nomes
trocados# Assim o RL(<Config vira um linA )ara o xorg.conf )or exem)loU fa.endo com 7ue usu2rios
desavisados e at utilit2rios de configura&'o consigam encontrar os ar7uivos sem muitos )roblemas#
1.4.1 Entrar no inu! "elo modo te!to
5xistem algumas maneiras de desabilitar todos os daemons R 7ue iniciam automaticamente ?RDMU
1DMU BWMU###@
execute update-rc.d ?dm stop 99 1 2 3 4 5 6 #
insira Zexit 3Z no inHcio de todos os ar7uivos /etc/init.d/?dm#
renomeie todos os ar7uivos /etc/rc2.d/S99?dm )ara /etc/rc2.d/K99?dm#
remova todos os ar7uivos /etc/rc2.d/S99?dm#
5xecute 9 /etc/X11/default-display-manager
A7uiU o nTmero em rc,#d deve corres)onder ao nHvel de execu&'o es)ecificado em /etc/inittab#
MambmU ?dm significa 7ue vocV )recisa executar o comando v2rias ve.es substituindo-o com todos entre
xdmU gdmU kdm e wdm#
Somente o )rimeiro a verdadeira maneira 7ue deve ser usada no Debian# : Tltimo f2cil mas
funciona somente no Debian e re7uer 7ue vocV configure o dis)laJ manager novamente de)ois usando d)Ag-
reconfigure# :s outros s'o mtodos genricos )ara desabilitar daemons#
1.& Comandos Bsicos do 'inu(
: Sistema :)eracional LinuxU )ossui vasta gama de comandos )ara as mais variadas fun&;es# Se n'o
bastasse issoU )elo fato de ser um soft!are livreU a todo instanteU )rogramadores vem desenvolvendo novos
a)licativosSutilit2riosU 7ue n'o deixam de ser DcomandosE# *ara n'o tornar a lista de comandos muito
extensaU foram selecionados alguns dos )rinci)ais comandos# Caso deseQe mais informa&;es sobre os
comandos a seguirU digite man <Nome do Comando># 5x9 man ls# *ara sair do manual a)erte a tecla Q
(quit).
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $$
1.#.1 $omandos bsicos "ara o"erao com ar%ui&os ou diret'rios(
ls [-al]: listagem do diretrio.
cp [-ir]: copiar arquivos.
mv [-i]: mover ou renomear arquivos.
rm [--]: deletar arquivos.
mkdir/rmdir: cria/deleta diretrios.
ln -s path link: cria links simblicos (symlinks) para arquivos ou diretrios.
cd : troca de diretrio.
pwd: mostra o diretrio atual.
1.#.2 )utros comandos de a"lica*es di&ersas(
file: determina o tipo do arquivo (/etc/magic).
cat: exibe o contedo do arquivo na tela.
head / tail: exibe linhas no inicio / fim do arquivo.
less / more: lista o contedo do arquivo.
man filename: manual online do programa.
ctrl+alt+del/reboot: reinicia o sistema.
shutdown -h now/halt: desliga o computador.
1.#.3 $ombina*es de comandos(
CTRL+C: sai (kill) do programa.
CTRL+ALT+BackSpace: sai (kill) do servidor X.
CTRL+L: limpa a tela.
CTRL+A / E: move o cursor para o incio / fim da linha.
CTRL+U / K: deleta da posio do cursor at o incio / fim da linha.
CTRL+H: deleta palavra anterior ao cursor.
CTRL+R: busca comando digitado no history do bash.
CTRL+D: logout (para isto altere ou unset a var. $IGNOREEOF).
CTRL+Z: coloca a operao atual e suspenso, usar com bg, fg, jobs.
1.#.4 )"erao com terminais(
stty -a: lista configuraes do terminal.
reset: reseta o terminal (volta ao normal).
(SHIFT)PGUP/PGDN: barra de rolagem do bash.
TAB: auto-completa os comandos digitados no terminal.
MOUSE2/3: cola o texto selecionado (gpm).
CTRL+S (Scroll Lock): desabilita o vt.
CTRL+Q (Scroll Lock): habilita o vt (tente isto caso o terminal trave).
ALT+Fx: muda de console. CTRL+ALT+Fx: muda de console em modo grfico.
1.#.# Informa*es de +surios(
w: informaes gerais sobre usurios logados e seus processos.
who: informaes dos usurios atuais (do utmp)
last: listagem do histrico de logins (/var/log/wtmp)
lastlog: retorna informaes sobre ltimos logins.
1.#., -rocessos(
CTRL+Z: suspende o processo temporariamente, usar com bg, fg, jobs.
top: os processos que consomem mais recursos do sistema.
jobs: lista as tarefas rodando em fore/background.
bg/fg: manda processo para o back/foreground.
nice/renice: altera prioridades.
ps -auxw: lista todos os processos do sistema.
pstree -p: idem.
time: calcula o tempo decorrente do incio ao trmino de um processo.
1.#.. /atando "rocessos(
kill: as opes mais comuns so (onde id o mesmo que PID):
kill -HUP id-do-processo: reinicia processo.
kill -9 id-do-processo: mata processo.
killall processo: mata processo pelo nome.
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $,
killall -HUP processo: reinicia processo pelo nome.
Ps -aux: mostra os processos.
1.#.0 $omandos de Anlise do Sistema
df -h: espao livre e ocupado nos discos)
du -sh: espao ocupado pelo diretrio e seus subdiretrios
free: status da memria e swap.
vmstat: status da memria virtual (processos, cpu).
lsdev, lspci: listagem do hardware/dispositivos pci.
pnpdump: retorna configurao das placas ISA PnP.
lsmod / rmmod: lista/remove mdulos na memria.
procinfo: cat /proc
xdpyinfo: recursos do servidor X.
showrgbq: retorna a database de cores rgb.
xlsfonts: lista as fontes reconhecidas pelo X.
xset m 5/2 1: ajusta a velocidade e acel. do mouse.
1.#.1 A"lica*es de 2ede
lsof -n -i:80 :-i4 = ipv4 e -n = sem resolver hostnames.
fuser -v 80/tcp :lista processos que escutam na porta tcp 80 em modo ps-like.
ping: analise de conexo.
netstat: analise de conexo.
1.#.13 -i"es e 2edirecionamentos.
dmesg | less ; ls -l | more
echo "Broadcast Message" | wall
Atravs de '<' e '>' possvel definir qual ser o stdin e o stdout.
dmesg > dmesg.txt ; more < dmesg.txt
ls -l /tmp >> list.txt (concatena)
ls /admin > list.txt 2>erros.txt
ls /admin > list.txt 2>&1 listagem_e_erros.txt
1.#.11 )"eradores 'gicos
&&: 'e' (retorna true se todas as expresses forem verdadeiras)
||: 'ou' (retorna true se uma das expresses forem verdadeiras)
O sinal ';' executar ambas as expresses independente do retorno. Por exemplo:
make ; make install (os comandos sero executados em sequncia)
make && make install (executa make install se no der erro no make)
1.#.12 -ermiss*es
chmod: Ao listar as informaes de um arquivo ou diretrio, o formato o seguinte:
drwxrwxrwx. Respectivamente: diretrio (d), permisso do dono (read/write/execute), do
grupo (read/write/execute) e de outros (read/write/execute). Por exemplo, para
transformar um arquivo em executvel:
chmod +x nome_do_arquivo (executvel para todos)
chmod g+x nome_do_arquivo (executvel para o grupo)
chmod 755 (executvel): -rwxr-xr-x
chown: Para alterar o usurio e o grupo de um arquivo ou diretrio (use -R para ser
recursivo, ou seja, executar para os sub-diretrios):
chown root.root /sbin/firewall.sh
chmod 4700 (suid) set user id para programas
que precisam rodar com permisso
de root: -rws------
Para calcular o valor numrico das permisses, basta considerar o valor do
executvel como 1, de escrita como 2 e de leitura como 4, que seria o equivalente decimal
aos bits:
rwx = 111 (todos bits ligados) = 2**2 + 2**1 + 2**0 = 7
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $/
Dessa forma, uma permisso de leitura e escrita (4+2) para o owner, e de leitura
apenas para os outros teria o valor 644. Para calcular a umask, que seria a mscara de
permisso aplicada na criao de um novo arquivo, basta ento subtrair 666 (ou 777 para
diretrios) resultando em umask 022.
1.#.13 $omo se encontrar no sistema
find [path...] -name [nome_do_arquivo]
find . -name slackware.png
find / -name "*.png" -print (arquivos png do dir. atual)
find /home -size +5000k -print (arquivos com mais de 5Mb)
1.#.14 ocal de um binrio(
whereis (ou which) [nome_do_arquivo]
which gcc
gcc: /usr/bin/gcc
1.#.1# $riar um banco de dados com a localizao de ar%ui&os
updatedb
Para pesquisar: locate [nome_do_arquivo]
1.#.1, ocalizar te!to em ar%ui&o(
grep [param] [texto] [arquivo]
grep -ni man /var/log/packages/grep.tgz (-i=insensitive -n=nmero da linha)
(use ' '(aspas simples) no [texto] para procurar palavra exata.)
ls -l | grep '^-..x' (lista executveis)
ls -l | grep '^d' (lista diretrios - '^' indica a primeira letra da linha)
1.#.1. )"era*es com te!to(
comm/diff: compara dois arquivos.
ispell: verficador ortogrfico (-d br: dicionrio em portugus).
sort: ordena em ordem crescente, alfabtica, etc.
uniq: remove linhas duplicadas.
cut: retorna area delimitada (-c5: quinto caracter).
wc: conta linhas, palavras e bytes.
fold: ajusta o texto para a largura especificada.
nl: numera as linhas de um arquivo.
fmt: reformata as linhas de um arquivo.
expand/unexpand: converte tabs em espaos e vice-versa.
tr: remove e substitui caracteres (-d a-d para remover as letras entre a-d, tr a-d
A-D para torn-las maisculas).
1.#.10 $riando aliases 4nomes curtos5
alias cdrom.on="mount /dev/hdd /mnt/cdrom"
alias cdrom.off="umount /dev/hdd"
alias zipdisk="mount -t vfat /dev/hdb4 /mnt/zip"
alias rm="rm -i"
alias x="startx -- -nolisten tcp"
1.#.11 +tilitrios no console
whatis/apropos: descrio do programa.
bc: calculadora (ex: echo "scale=2;1/10"|bc //scale so as casas decimais).
nano ou pico: editor de texto simples (nano-editor.org).
jed: editor de texto para programadores.
mc: o midnight commander.
1.#.23 $riar um in6 Simb'lico
Para Criar um Link simblico, ou seja uma apontador para outro arquivo/diretrio,
devemos usar:
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $4
ln [<opes>] origem [<destino>]
onde as opes mais comuns so:
-s : cria um link simblico;
-d : link para um diretrio;
1.) #erenciadores de Pacotes
A distribui&'o Debian uma das mais organi.adas 7ue existemU a Tnica desvantagem )ara os usu2rios
mais inex)erientesU o fato de lan&arem somente uma nova vers'o est2vel a cada seis meses
?a)roximadamente@# *ara uso em servidores de alto desem)enho isso 8timoU )ois tem garantia 7ue a
distribui&'o realmente est2velU no entanto )ara o usu2rio domsticoU o fato de somente )oder atuali.ar o seu
sistema a cada < meses )ode )arecer uma eternidade ?ex9 nova vers'o do KDE@# X2 o usu2rio mais avan&ado
n'o vV )roblema nissoU )ois )ode instalar as vers'o unstable ou testing ?n'o 7uer di.er 7ue n'o
funcionem bemU somente n'o )assaram )elo tem)o de an2lise da distroU eventualmente )ode acontecer 7ue o
)acote realmente est2 com )roblemas@U 7ue o sua Debian estar2 t'o atuali.ado 7uanto 7ual7uer outra
distribui&'o#
1.,.1 +sando a"t7get e a"titude
: gerenciador de )acotes )adr'o Debian o a)t ?aptitudeU apt-get todos comandos s'o
com)atHveis entre si@# : sistema de em)acotamento usa um banco de dados )r8)rio )ara saber 7uais )acotes
est'o instaladosU 7uais n'o est'o e 7uais est'o dis)onHveis )ara instala&'o# : apt-get usa esse banco de
dados )ara saber instalar os )acotes solicitados )elo usu2rio e tambm 7uais )acotes s'o necess2rios )ara 7ue
o mesmo rode )erfeitamente ?*ode-se utili.ar o SynapticU )ois o mesmo utili.a o mesmo banco de )acotes
7ue o apt e tem uma funcionalidade muito boa@#
Atuali.ar
$
banco de )acotes dis)onHveis9 apt-get update/aptitude update
-nstalar
,
)acotes ?re)osit8rio@9 apt-get install <NomeDoPacote> <Opes>
-h - aQuda
-d - baixar ar7uivos a)enasU n'o instalar
-f - conserta erros de instala&;es de )acotes
-s - n'o agirU a)enas simular o)era&'o
-J - assume sim )ara todas as )erguntas
-u - mostrar )acotes 7ue ser'o atuali.ados alm dos es)ecificados
>einstalar um )acote9 apt-get -reinstall install <NomeDoPacote>
>emover
/
)acotes instalados9 apt-get remove <NomeDoPacote>
Atuali.ando
4
os )acotes Q2 instalados9 apt-get upgrade
Atuali.ando
6
a distribui&'o instalada9 apt-get dist-upgrade
Oo caso de usar o aptitude ?ncurses@ sem )arWmetrosU o mesmo abre uma tela organi.ada em
formato textoU )odendo selecionarSde-selecionarU ver o 7ue est2 instalado e o 7ue )ode ser instalado ?de
acordo com os re)osit8rios selecionados@#
5xiste uma varia&'o do aptU 7ue o apt-cdrom# : mesmo )ode ser utili.ado )ara instalar )acotes a
)artir de um cdrom com )acotes# :utra ferramenta apt o apt-setup 7ue )ermite modificar de forma
autom2tica o ar7uivo de /etc/apt/sources.list.
Abaixo um exem)lo sim)les de ar7uivo /etc/apt/sources.list com ex)lica&'o das se&;es9
$ *ara manter essa lista atuali.adaU vocV deve usar o comando apt-get update/aptitude update# 5le )rocura )elas listas de )acotes nos
re)osit8rios indicados no seu ar7uivo /etc/apt/sources.list. 5ssa lista )ode conter a)ontamentos )ara sites htt)U ft)U drives locais#
, Caso o )acote n'o se encontre no cache local ?somente estar2 de)ois 7ue o )acote estiver instalado@U o mesmo ser2 baixado do re)osit8rio
es)ecificado no /etc/apt/sources.list# : cache local se encontra em /var/cache/apt/archives.*ode-se ainda es)ecificar o
ti)o de distribui&'o 7ue vocV deseQa instalarU acrescentando-se S a)8s o nome do )acote e o ti)o ?testingU unstableU stable@U caso n'o )assar
nenhuma informa&'oU o )adr'o stable#
/ Muitas ve.es o )acote atual de)endVncia de outros )acotesU )orm o mesmo informa isso e )ede se deseQa excluir os outros )acotes 7ue
de)endem do mesmo ?cuidado ao remover uma de)endVncia de um )acote im)ortante@# : remove n'o elimina os ar7uivos de configura&'oU )ara
remove-los use a)t-get )urge remove [OomeDo*acote\#
4 Com)ara as vers;es do banco de dados local com as vers;es dos re)osit8rios# *ara manter os re)osit8rios atuali.adosU sem)re utili.e o a)t-get
u)date#
6 5ssa caracterHstica do a)t serve )ara atuali.ar uma distribui&'o inteira de uma s8 ve.U seQa atravs da internet ou de um novo CDSDGD#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $6
deb http://www.debian.org/debian stable main contrib non-free
deb http://nonus.debian.org/debian-non-US stable non-US
GocV )ode inter)retar cada )arte da seguinte maneira9
deb - -dentifica um )acote da Debian# A )alavra deb-src identifica o c8digo fonte#
http://www.debian.org/debian - Mtodo de acesso aos ar7uivos da DebianU site e diret8rio
)rinci)al# : caminho )ode ser http://, ftp://, file:/#
stable - Local onde ser'o )rocurados ar7uivos )ara atuali.a&'o# GocV )ode tanto usar o nome de
sua distribui&'o ?Woody, Sarge@ ou sua classifica&'o ?stableU testing ou unstable# Oote 7ue
unstable recomendada somente )ara desenvolvedoresU m27uinas de testes e se vocV tem
conhecimentos )ara corrigir )roblemas# Ounca utili.e unstable em ambientes de )rodu&'o ou
servidores crHticosU use a stable#
main contrib non-us - Se&;es 7ue ser'o verificadas no site remoto#
1.,.2 8ebian -ac6age 4d"6g5
Muitas ve.es )odemos obter um )acote )adr'o Debian de forma direta ?#deb@# : dpkg ?Debian
*acAage@ o )rograma res)ons2vel )elo gerenciamento de )acotes em sistemas DebianU assim como o rpm
o gerenciador )adr'o do Red Hat# Sua o)era&'o feita em modo texto e funciona atravs de comandos#
assim caso deseQe uma ferramenta mais amig2vel )ara a sele&'o e instala&'o de )acotesU )refira o dselect
?7ue um front-end )ara o dpkg, estilo aptitude@ ou o apt.
: dpkg muito usado )or usu2rios avan&ados da Debian e desenvolvedores )ara fins de instala&'oU
manuten&'o e constru&'o de )acotes#
-nstalar )acotes9 dpkg -i <NomeDoPacote>
Listando )acotes instalados9 dpkg -l [<NomeDoPacote>]
>emovendo )acotes instalados9 dpkg -r <NomeDoPacote>
>emovendo )acotes Quntamente com os ar7uivos de configura&'o9 dpkg -P <NomeDoPacote>
Mostrar descri&'o do )acote9 dpkg -I <NomeDoPacote>
Mostrar )acotes com )roblemas de instala&'o9 dpkg -C
1.,.3 Alien 4$on&ersor de -acotes rpm "ara deb5
: alien um comando n'o nativo da DebianU mas altamente recomend2vel instalar essa
ferramenta )ara converter )acotes de outras distribui&;es ?LSB, Red Hat, Stampede, Slackware@ em
)acotes Debian# : )rocedimento interno descom)actar o )acote do seu formato atual recriar o mesmo no
formato debU 7ue reconhecido )elo dpkg#
Converter )acote9 alien <NomeDoPacote>
Aten&'o9 eventualmenteU o alien )ode se )erderU recentemente inutili.ei duas distribui&;es DebianU
usando o alien )ara converter um )acote rpmU o mesmo gerou tantos ar7uivos tem)or2rios 7ue n'o
consegui reali.ar o boot no com)utador# Y )ossHvel reverter essa situa&'o executando um boot assistido#
*ortanto caso o alien demore muito )ara converter um )acoteU )ode estar ocorrendo 7ue o mesmo tenha se
)erdido# -m)ortanteU o alien )ode demorar um )ouco )ara converter um )acote#
1.* Problemas Comuns e Solu+es
A distribui&'o Debian, C )rinci)io n'o )ossui )roblemas a)8s a instala&'oU mas de)endendo do
hard!are 7ue o usu2rio )ossuiU n'o )ossHvel auto-detectar tudoU assimU caso aconte&a esse ti)o de
)roblemaU abaixo est'o listados as )rinci)ais solu&;es adotadas# :utro detalhe 7ue )or default a instala&'o
)adr'o do Bernel n'o )ossui certos recursos ?su)orte a mais de $1b de mem8ria >AMU grava&'o em
)arti&;es OMLSU entre outras caracterHsticas@U necessitando assimU de uma com)ila&'o ou recom)ila&'o do
Aernel#
1...1 $om"ilando o 9ernel
A com)ila&'o do Bernel se torna uma rotina caso vocV uma )essoa 7ue ad7uire constantemente
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $<
novos e7ui)amentosU ou ent'o deseQa extrair ao m2ximo o desem)enho do seu Linux# Oas )r8ximas sess;es
ser'o a)resentadas duas formas de com)ilar o Bernel#
1...1.1 $om"ilao : ;/oda 8ebian<
Com)ilar o BernelU ou seQaU o nTcleo do Linux Q2 era relativamente f2cil )ara 7uem era da 2reaU )orm
a DebianU fe. com 7ue esse )rocesso se tornasse muito mais f2cil# *rimeiramente instale os gerenciadores de
com)ila&'o#
apt-get install kernel-package libncurses5-dev
+us7ue na internetU o c8digo fonte do Aernel 7ue vocV deseQar ?!!!#Aernel#org@# GocV )ode fa.er o
do!nload com o mecanismo 7ue bem deseQarU mas Q2 a)roveitando o momentoU vou a)resentar outra
ferramenta# Caso 7ueiraU )ode usar o wget <EndereoArquivo>U 7ue o mesmo reali.a o do!nload )ara
vocV e dis)onibili.a o ar7uivo no diret8rio atual#
%ma ve. reali.ado o do!nloadU co)ie o ar7uivo )ara o diret8rio /usr/src e descom)acte o ar7uivo#
*ara descom)actar o ar7uivo use tar -x e acrescente z se o final do ar7uivo for gzU ou -j se for bz2U
seguido das letras vfU ?v o)cional@ como )or exem)lo9
tar -xzvf linux-2.6.17.1.tar.gz
: comando acimaU descom)actar2 o ar7uivoU mostrando o 7ue est2 acontecendo ?o)&'o v@U a)8s
descom)actadoU vocV )ode a)agar o ar7uivo com)actado# Y altamente recomend2vel 7ue se crie um linA
simb8lico ?se&'o $#6#,3U )2gina $4@ )ara o diret8rio criado com o nome linux# *ara isso9
ln -s linux-2.6.17.1 linux
Com issoU temos dois diret8rios 7ue re)resentam o mesmo conteTdoU esse recurso im)ortanteU )ois
assim )odemos facilmente informar )ara o sistema buscar os ar7uivos de dentro do diret8rio linux ?linA@U e
7uando mudarmos de vers'o sim)lesmente modificamos o linA# Dessa forma )odemos ter mais de uma
vers'o do BernelU 7ue )ode ser usada )ara 7uest;es de com)atibilidade e )ossibilidades de voltar atr2sU caso
tenhamos )roblemas com a nova vers'o#
: )r8ximo )asso com)ilar o BernelU mas sem)re bomU )artir a com)ila&'o de uma estrutura )re-
existenteU ou seQaU um ar7uivo 7ue informa o 7ue deve ser com)ilado ou n'o# 5sse ar7uivo vem )or )adr'o
em /boot/ com o nome config-2.6.8-2-386 ?caso o)tou )ela instala&'o ,#< do Aernel@U )ara utili.ar-loU
fa&a9
cp /boot/config-2.6.8-2-386 /usr/src/linux/.config
Com o comando acimaU vocV co)iar2 o ar7uivo config-2.6.8-2-386 do diret8rio /boot )ara
dentro /usr/src/linux/ com o nome de .config#
Antes de come&ar a com)ila&'o devemos aQustar o ar7uivo de configura&'o )ara a nova vers'o do
Aernel usando algum mecanismo# -nicialmente vocV deve estar dentro do diret8rio /usr/src/linux# GocV
)ode usar o make oldconfigU onde o mesmo carrega o ar7uivo .config e mostra na tela os recursos 7ue
n'o existia no Aernel anteriorU )edindo se vocV deseQa incluir esse recurso na nova com)ila&'o ?na dTvida s8
de um enterU mas de uma lida antes@U mas n'o )ermite modificar as o)&;es 7ue s'o comuns entre os
DAerneisE# :u ent'o usar o make menuconfigU onde o mesmo a)resenta uma telaU na 7ual vocV )ode
escolher o 7ue deseQa ou n'oU o im)ortante U assim 7ue entrar no menuconfigU usar a setas do teclado )ara
baixo e escolher a o)&'o Load an Alternate Configuration FileU )ara 7ue vocV use um Aernel
baseado no ar7uivo de configura&'o 7ue Q2 existe ?.config@# *ortantoU devemos escolher um desses dois
mtodos ?existem outros como xconfigU gconfig@# %sar9
make oldconfig
ou
make menuconfig
Agora vamos a com)ila&'o )ro)riamente ditaU com base no nosso ar7uivo de com)ila&'oU esse
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $=
)rocedimentoU gerar2 um ar7uivo .debU com os ar7uivos necess2rios )ara o bootU ou seQaU um )acote
Debian ?se&'o $#< )2gina $6@9
make-kpkg -initrd kernel-image
A)8s gerar o )acote de instala&'oU s8 instalar o )acote via dpkg ?se&'o $#<#, )2gina $<@U -m)ortante
o )acote ser2 gravado no diret8rio /usr/srcU )ortanto devemos voltar um nHvel nos diret8rios usando )ara
isso o Dcd ..# A)8s s8 instalar o )acoteU como abaixo9
cd ..
dpkg -i linux-image-2.6.17.1_2.6.17.1-10.00.Custom_i386.deb
*rontoU se vocV usar o lilo ou grubU os mesmo ser'o aQustados automaticamente# Ser2 acrescentado
mais uma o)&'o de bootU sem eliminar as Q2 existentes#
1...1.2 $om"ilao "adro
Antes de mais nadaU 7uero deixar claro 7ue existem outras formas de )roceder a com)ila&'oU no
entanto esse o mtodo 7ue eu utili.o#
A )rimeira )arte do )rocedimento igual )ara ambos os mtodos de com)ila&'oU )ortanto execute os
)assos da se&'o $#=#$#$ da )2gina $=U at a ferramenta 7ue define as o)&;es do novo Aernel ?menuconfigU
oldconfigU xconfigU ###@# GocV estando no diret8rio /usr/src/linuxU execute os seguintes comandos9
make && make modules && make modules_install
Caso )refiraU )ode executar esses trVs )rocedimentos um a)8s o outroU no caso acimaU foi usado ]]U
7ue significa Dcaso n'o ocorra erros execute a )r8xima instru&'oEU essa forma agili.aU )ois a com)ila&'o
um )rocesso demorado#
A)8s ter tudo com)ilado ?sem erros@U devemos co)iar a imagem do Aernel )ara o diret8rio de bootU
nesse caso /boot# Como n'o informamos o diret8rio destino da com)ila&'oU o mesmo se encontra em
/usr/src/linux/arch/i386/boot/ sob o nome de bzImage# Y altamente interessante 7ue vocV
colo7ue um nome de acordo com a vers'o do Aernel no diret8rio /bootU assim9
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.17.1
Oo caso acimaU estou co)iando o Aernel recm com)ilado sob o nome b.-mage )ara o diret8rio Sboot
mudando o nome )ara vmlinu.-,#<#$=#$U o nome )oderia ser 7ual7uer umU mas como gosto de usar nomes
)adr'o ?7uando instalei o Debian SargeU o nome era vmlinu.-,#<#(@U colo7uei agora esse Dvmlinu.EU Q2 o
-,#<#$=#$ a vers'o do Aernel com)ilado ?vm ^ virtual memorJU linu ^ linuxU . ^ com)actado@#
Agora )recisamos criar uma imagem inicial )ara 7ue seQam carregados os m8dulos do sistema de
ar7uivos# Caso es7ue&a esse Htem e seu Aernel n'o tem su)orte ao seu file systemU teremos um )ossHvel
kernel panic# *ara criar essa imagem devemos9
mkinitrd -o /boot/initrd.img-2.6.17.1 2.6.17.1
Oo caso acimaU vocV )ode dar o nome 7ue bem deseQarU mas )ara seguir o )adr'oU colo7ue o nome de
initrd#img- vers'o do AernelU e logo em seguida a vers'o do AernelU o )rimeiro nTmero serve )ara fins visuais
?nome do ar7uivo@U Q2 o segundo grava dentro do ar7uivo a informa&'o da vers'o# :bserve ainda 7ue o
ar7uivo ser2 criado no diret8rio /boot#
: )r8ximo )asso aQustar o boot managerU nesse caso o grubU se for o liloU de uma olhada no
ar7uivo de configura&'o e siga os exem)los# Caso usar o grubU acrescente as seguintes linhas antes das Q2
existentes )arecidas com as abaixo no ar7uivo /boot/grub/menu.lst#
title Debian GNU/Linux, kernel 2.6.17
root (hd0,2)
kernel /boot/vmlinuz-2.6.17.1 root=/dev/sda3 ro
initrd /boot/initrd-2.6.17.1.img
savedefault
boot
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $(
GocV dever2 aQustar esse ar7uivo de acordo com as suas necessidadesU sugiro re)licar o bloco Q2 )ronto
e modificar de acordo com as necessidades do seu novo Aernel# :bserve o exem)lo acimaU estou usando um
ID Sata com o Linux na )arti&'o /#
1...2 Instalao somente com $8=s
A instala&'o )ara 7uem n'o tem acesso C internetU no mHnimo tortuosoU e )ossivelmente desastroso#
*ara conseguir essa manobraU )recisar2 de no mnimo os 4 cdFs iniciais# %sando somente $U vocV )oder2
somente instalar o modo texto do LinuxU com o b2sico )ara rodar o mesmo# : )roblema em instalar dessa
formaU nem mesmo os u)grades de seguran&a ser'o instaladosU )ossHvelU mas muito desgastante#
1...3 2econ>ecimento da -laca de ?@deo e /onitor
%m dos )roblemas mais comuns durante a instala&'o da distribui&'o o n'o funcionamento da
interface gr2fica# *ara aQustar esse )roblema muito comumU devemos instalar dois utilit2rios e suas
de)endVncias9
xdebconfigurator9 detecta a )laca de vHdeo e monitor e arma.ena em um ar7uivo tem)or2rio_
dexconf9 salva os dados detectados no ar7uivo de iniciali.a&'o do servidor X#
5ventualmente )odem ocorrer )roblemas com algumas )lacas de vHdeoU caso ocorraU execute o
)rocedimento acima e observe a linha VIDEO DRIVER: caso a)are&a unknown ?desconhecido@U vocV
dever2 saber 7ual a )laca de vHdeo instalada e aQustar o ar7uivo /etc/X11/XF86Config-4. *ara isso use
um editor e mude a Section DeviceU na o)&'o DriverU subtituindo unknown )ela )rodutora da )laca de
vHdeo# 5x9 nv )ara nvHdiaU sisU )ara SJs#
1...4 $ancelou a instalao "ela metade 4Instalao Scratch5
%ma instala&'o ScratchU n'o )ara 7ual7uer umU no entantoU as ve.es vocV )recisa saber realmente o
7ue )ossui na m27uinaU assim vocV )ode instalar item-a-item como se fosse do .ero# :utro )onto )ositivo
7ue vocV realmente a)render2 a utili.ar o Linux se conseguir concluir essa fa&anha# : obQetivo desse tutorial
n'o ex)licar como fa.er uma instala&'o desse nHvelU mas a idia )ode auxiliar a resolver determinados
)roblemas 7ue )ossam a vir acontecer na instala&'o normal# Antes de come&ar a instala&'o Dno osso do
)eitoEU sugiro a leitura da se&'o $#<U onde s'o tratados os gerenciadores de )acotes#
A )rimeira coisa 7ue dever2 fa.er aQustar o localeU 7ue nada mais do 7ue as configura&;es
)adr;es do local onde vivemos ?caracterHsticas do )aHs e linguagem@# *ara isso execute9
dpkg-reconfigure locales
Mar7ue tudo 7ue tiver pt-br ?pt_BR ISO-8859-1U pt_BR.UTF8@U usando a barra de es)a&osU dV
um :AU logo em seguida ele )ede 7ual o locale )rinci)alU selecione pt_BR.
%sando o apt-setupU adicione alguns re)osit8rios de ftp e httpU )ara buscar os )acotes faltantes#
Logo a)8s adicionar os novos re)osit8riosU execute um apt-get update )ara atuali.ar os )acotes dos
novos re)osit8rios#
*ara instalar o servidor XU 7ue res)ons2vel )ela execu&'o dos gerenciadores de QanelasU devemos
executar9
apt-get install x-window-system x-window-system-core
A)8s instalado o servidor XU devemos instalar um gerenciador de QanelasU como )or exem)lo o BD5U e
algumas ferramentasU )ara isso execute9
apt-get install kdebase kdm kde-i18n-ptbr
apt-get install kscreensaver kscreensaver-xsavers rss-glx
apt-get install kmix kuickshow kpdf
apt-get install ark bzip2 unzip unrar zip dosfstools
A)8s tudo instaladoU execute o comando abaixo )ara ativar o ambiente9
/etc/init.d/kdm start
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $0
Com isso Q2 temos uma configura&'o inicial funcional e executando na interface gr2ficaU caso deseQar
instalar outras ferramentasU sugiro a )rocura na internet sobre os re)osit8riosU bem comU os )acotes
necess2rios#
:utros )acotes interessantes o :)en:fficeU 7ue )ara instalar use9
apt-get install openoffice.org-l10n-pt-br openoffice.org-kde oooqs-kde
apt-get install myspell-pt-br
1., Con%i$urando as inter%aces de -ede
Moda as configura&;es dos -*Fs )adr'o da distribui&'o DebianU 7ue s'o ativadas durante o bootU
encontram-se em /etc/network/interfacesU e sem)re 7ue modificar esse ar7uivoU vocV )ode restartar
essa configura&'o9
/etc/init.d/networking restart
%m exem)lo do SetcSnet!orASinterfaces9
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.1.1.4
netmask 255.255.255.0
network 10.1.1.0
broadcast 10.1.1.255
gateway 10.1.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 10.1.1.1
dns-search rede
1.0.1 $riando interfaces ?irtuais
*ara criar uma interface virtual vocV deve utili.ar o comando ifconfig# 5sse comando )ermite
configurar todas a )ossibilidades de uma interface de rede#
%ma interface de rede virtual nada mais do 7ue uma interface de rede normal com mais de um -*#
5xem)los de uso9
ifconfig #informaes de todas interfaces
ifconfig eth0 192.168.1.2 up #ativa a eth0 com o IP
ifconfig eth1 down #desativa a eth1
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 #seta IP e mscara para eth0
ifconfig eth0:0 192.168.1.3 #interface virtual para eth0
ifconfig eth0:1 192.168.1.4 #outra interface virtual para eth0
%se sem)re ifconfig <NomeEth>:<Numero> <configuraes normais>
%ma ve. criado uma interface virtual vocV C utili.a como se tivesse v2rias interfaces de rede ligadas a
um HUB# De)endendo do ti)o de a)lica&'o essa )r2tica )ode significar uma )e7uena brecha na seguran&a
?fato de redes diferentes no mesmo meio@ caso )ermita acessos ao usu2rio C esse meio em es)ecHfico#
%m bom ar7uivo )ara se colocar )arWmetros de configura&'o mais avan&ados durante o bootU o final
do ar7uivo /etc/init.d/bootmisc.shU 7ue sem)re dis)arado durante o boot#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,3
2 Pro$ramas Ser!idores
%m )rograma servidor caracteri.ado )or receber conex;es atravs de uma interface de redeU
)odendo ser fHsica ou l8gica# :s )rogramas servidores a7ui tratados s'o baseados na to)ologia MC* %D*S-*U
ou seQaU trabalham via Internet Protocol# :s )rotocolos baseados em -*U trabalham com dois valoresU
onde o )rimeiro re)resenta o host atravs do nTmero -* e o segundo valor re)resenta um recurso do hostU
tambm conhecida com *orta# AssimU )ara trabalhar com servidores devemos informar o -* e a *orta do
servi&o 7ue deseQamos#
As )ortas mais comunsU chamadas de portas bem conecidas (!"## $%&!% '&R( %)*+"RS)U
)odem ser vistas no )r8)rio regulador de )ortas -AOA9
http://www.iana.org/assignments/port-numbers
: conhecimento dessas )ortas &ital )ara o administrador de redes )ara saber se tudo est2 ocorrendo
bemU se existem )rogramas mal intencionadosU a at mesmo verificar se determinado servi&o est2 ou n'o
rodando#
2.1 Ser!idor .eb pac/e
: servidor Apache sem dTvidas o melhor servidor de web 7ue existeU no entantoU o mesmo somente
consegue ex)ressar seu )otencial 7uando associado a a)lica&;es dinWmicas# Oo seu estado de instala&'oU o
mesmo somente )rocessa )2ginas est2ticas#
*ara 7ue o servidor )ossa )rocessar uma )2gina em PHP ou outra linguagemU entra em a&'o o m8dulo
a)ro)riado ?7ue deve ser instalado ou ativado@U 7ue fa. o )rocessamento necess2rio e devolve ao Apache a
)2gina no formato html# Alm do )rocessamento de comandosU )ara uma a)lica&'o dinWmicaU s'o
necess2rios )ossibilidades de se acessar uma base de dados# %ma das bases de dados mais utili.adas o
MySQL# A combina&'o de tudo isso forma a solu&'o 7ue )o)ularmente chamada de LAMP ?Linux Apache
MySQL PHP@#
2.1.1 Instalando o A"ac>e
Atualmente o Apache distribuHdo em , vers;esU Apache , e o Apache $#/# A vers'o , tra. muitas
vantagensU sobretudo do )onto de vista do desem)enhoU mas )or outro lado ele incom)atHvel com os
m8dulos com)ilados )ara o $#/U e )rinci)almenteU muitas o)&;es de configura&'o s'o diferentes#
Oo Debian o Apache $#/ instalado atravs do )acote Za"ac>eZU en7uanto o Apache 2 instalado
atravs do Za"ac>e2Z#
apt-get install apache2
De)ois de instalar os )acotesU inicieSreinicie o servi&o com o comando9
/etc/init.d/apache2 restart
Acessando o endere&o http://127.0.0.1U vocV ver2 uma )2gina de boas-vindasU 7ue indica 7ue o
servidor est2 funcionando# Se n'o houver nenhum fire!all no caminhoU ele Q2 estar2 acessHvel a )artir de
outros micros da rede local ou da internet# *or en7uanto temos a)enas uma vers'o b2sica do a)acheU 7ue
sim)lesmente exibe ar7uivos html colocados dentro da )asta /var/wwwU 7ue )or )adr'o fica sendo o
diret8rio rai. do seu servidor web. A )2gina http://NomeServidor/index.html na verdade o
conteTdo da )asta /var/www/apache2-default# As )2ginas 7ue vocV hos)edar2 ficar'o arma.enadas no
diret8rio /var/www/<NomeDaPasta>#
2.1.2 $onfigurao bsica
Ao utili.ar o Apache 2U o ar7uivo )assa a ser o /etc/apache2/apache2.conf# Analisando o
conteTdo do ar7uivo de configura&'oU vemos 7ue o servidor escuta a )orta (3 )or default# +asta alterar o (3
)ela )orta deseQada e salvar o ar7uivo# *ara 7ue a altera&'o entre em vigorU )reciso reiniciar o a)ache com o
comando /etc/init.d/apache2 restart#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,$
GocV )ode tambm fa.er com 7ue o servidor escute em mais de uma )orta simultaneamenteU usando o
recurso Binding. *ara issoU basta incluir o )arWmetro Listen <Porta> logo abaixo da linha Port 80,
*ara 7ue ele escute tambm outras )ortasU )or exem)loU vocV incluiria as linhas9
Port 80
Listen 1080
Listen 2480
Caso o servidor tenha mais de uma )laca de redeU vocV )ode utili.ar o )arWmetro Listen
<IP_da_placa>:<Porta># SeU )or exem)loU est'o instaladas duas )lacas de redeU uma com o endere&o
,,,#$/,#<6#$4/ e a segunda no endere&o $0,#$<(#3#$ e vocV 7uer 7ue ele escute em ambasU nas )ortas $3(3 e
,4(3U bastaria incluir9
Listen 222.132.65.143:1080
Listen 222.132.65.143:2480
Listen 192.168.0.1:1080
Listen 192.168.0.1:2480
O'o existe limita&'o )ara o uso deste recurso# GocV )ode fa.er o servidor escutar 7uantas )ortas e
)lacas de rede forem necess2rias# Ao utili.ar o Apache 2 no DebianU a configura&'o de )ortas fica
se)aradaU dentro do ar7uivo /etc/apache2/ports.conf#
2.1.3 ?irtual Aosts
: Host Virtual a )ossibilidade de hos)edar v2rios sites no mesmo servidor ?shared hosting@#
Oeste casoU os ar7uivos de cada site ficam guardados numa )asta diferente e o servidor se encarrega de
direcionar cada visitante ao site correto#
A configura&'o 7uebrada em v2rios ar7uivos individuais ?um )ara cada site@ arma.enados dentro do
diret8rio /etc/apache2/sites-available#
Dentro desse diret8rio vocV encontrar2 o ar7uivo default 7ue contm uma configura&'o )adr'o da
)2gina defaultU 7ue exibido 7uando o usu2rio n'o es)ecifica um domHnio v2lido no servidor# *ara
adicionar outros sitesU basta criar um ar7uivo )ara cada um como abaixo9
<VirtualHost *>
ServerName www.servidor.com.br
ServerAlias servidor.com.br
DocumentRoot /var/www/DiretorioComAPagina
</VirtualHost>
Caso 7ueiraU vocV )ode es)ecificar um -* no local do ` ?-*-+ased@# A diretiva ServerAlias
?o)cional@U )ermite 7ue o site seQa acessado tanto com ou sem o !!!# : DocumentRoot tambm foi
alteradoU com rela&'o aos exem)los anteriores )ara refletir a organi.a&'o )adr'o adotada no A)ache ,U onde
os ar7uivos s'o )or )adr'o arma.enados dentro da )asta /var/www/<NomeDoDiretrio>#
A )asta /etc/apache2/sites-available contm todos os sites dis)onHveis no servidor# *ara 7ue
os sites fi7uem realmente dis)onHveisU necess2rio criar um linA simb8lico ?se&'o $#6#,3@ )ara cada umU
dentro da )asta Setc/apache2/sites-enabled# S'o estes linAs 7ue determinam se o site vai realmente
ficar dis)onHvel#
2.1.4 Su"orte ao -A-
Muitas ISP ?Internet Server Provider@ insistem em utili.ar o Apache 1.3U )or Q2 estarem
acostumados com os comandos de configura&'o e )or v2rios motivos Q2 citados ?incom)atibilidades@U n'o
usam o Apache 2U 7ue muito su)erior# AssimU ser'o a)resentadas as configura&;es )ara ambas vers;es#
Mas se vocV estiver reali.ando uma nova instala&'oU sugiro 7ue use a vers'o ,#
2.1.4.1 -A- no A"ac>e 1.3
Como comentado na se&'o ,#$U a instala&'o )adr'o do Apache n'o )ossui su)orte ao PHPU )ortanto
devemos instalar esse su)orte manualmente# : su)orte a PHP instalado atravs do )acote php4 ou php3
?de)ende da vers'o@# *ara instalar use9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,,
apt-get install php4
5m seguida vocV deve locali.ar o m8dulo libphp4.so ?ou libphp3.so@ e ativ2-lo na configura&'o
do A)ache# A locali.a&'o )adr'o do m8dulo )ode variar de distribui&'o )ara distribui&'oU )or isso o melhor a
fa.er locali.2-lo usando os comandos9
updatedb
locate libphp4.so
Oo Debian o modulo instalado na )asta Susr/lib/apache/1.3 ?Apache 1.3@# *ara ativ2-lo
adicione a linha a seguir no ar7uivo /etc/apache/httpd.conf9
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
Y necess2rio incluir tambm as linhas 7ue associam as )2ginas com extens'o #)h) ou #)h)s com o
m8dulo recm instalado# *ortanto adicione tambm9
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
A)8s reali.ar as modifica&;esU salve-as e reinicie o servidor#
/etc/init.d/apache restart
2.1.4.2 -A- no A"ac>e 2
1eralmente o su)orte ao *I* Q2 vem DembutidoEU na instala&'o do A)ache,U caso n'o venhaU instale o
)acote libapache2-mod-php4 ou libapache2-mod-php59
apt-get install libapache2-mod-php4
: m8dulo libapache2-mod-php4 instalado dentro da )asta /usr/lib/apache2/modules/.Ao
invs de adicionar as linhas 7ue ativam o m8dulo e criam as associa&;es de ar7uivos no final do ar7uivo
httpd.confU s'o criados dois ar7uivos dentro da )asta /etc/apache2/mods-available/U com
res)ectivamente a ativa&'o do m8dulo e as associa&;es de ar7uivos# *ara ativar o su)orte a *I*U )reciso
co)iar ambos )ara a )asta /etc/apache2/mods-enabled/U como exem)lificado abaixo9
cd /etc/apache2/mods-available/
cp -a php4.conf php4.load ../mods-enabled/
5ste )rocedimento de co)iar ar7uivos ?ou criar linAs simb8licos@ da )asta mods-available )ara a
)asta mods-enabled a forma )adr'o de ativar m8dulos diversos no Apache 2 do Debian# *ara ativar o
su)orte a SSL )or exem)loU co)ie os ar7uivos ssl.conf e ssl.load9
cp -a ssl.conf ssl.load ../mods-enabled/
A ativa&'o dos m8dulos )ode ser automati.ada usando o comando apache-modconfU 7ue substitui a
necessidade de ficar co)iando manualmente os ar7uivos# 5le )ode ser usado tanto em conQunto com o
Apache 1.3U 7uanto com o Apache 2# -nclua no comando o )arWmetro enableU seguido do nome do
m8dulo deseQado9
apache-modconf apache enable mod_php4
2.1.4.3 E!em"lo "ara testar o su"orte ao -A-
Caso o seu A)ache estiver correto e seus modulos de *I* tambmU crie uma )2gina html com o
conteTdo abaixo9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,/
<html>
<head>
<title>Testando PHP</title>
</head>
<body>
Exemplo de utilizao de variveis: <br><br>
<?
$inteiro=10;
$real=20.0;
$caracter='V';
?>
A varivel $inteiro tem o valor <? echo $inteiro ?>.<br>
A varivel $real tem o valor <? echo $real ?>.<br>
O caracter escolhido o <? echo $caracter ?>.<br>
</body>
</html>
2.1.4.4 Instalando o Su"orte : Banco de 8ados "elo -A-
1rande )arte dos sistemas desenvolvidos em *I* utili.am um banco de dados )ara gerar as )2ginas
dinWmicasU )rinci)almente o MySQL ou PostgreSQL# *ara utili.2-losU vocV )recisa instalar esses servidoresU
bem comoU os m8dulos php4-mysql ?MySQL@ e php4-pgsql ?Postgres@U 7ue )ermitem aos scri)ts em
PHP acessarem o banco de dados# *ara issoU devemos instalar esses m8dulos )ara o MySQL e Postgres
res)ectivamente ?sem)re reiniciar o servidor a)8s modificar os m8dulos instalados@9
apt-get install php4-mysql
apt-get install php4-pgsql
2.2 0Ser!idor de Banco de Dados1 23S4'
5xiste muita discuss'o se o MySQL ou n'o um banco de dadosU ou se ele a)enas um gerenciador de
ar7uivos de dados com algumas caracterHsticas de banco de dados# Como o enfo7ue desse material n'o a
discuss'o desse mritoU diremos 7ue o MySQL um 1erenciador de +anco de Dados ?GDB@#
: MySQL um banco de dados extremamente vers2tilU usado )ara os mais diversos fins# GocV )ode
acessar o mesmo a )artir de um scri)t em PHPU atravs de um a)licativo desenvolvido em C ou CaaU ou
)raticamente 7ual7uer outra linguagem# *ara instalar o MySQLU execute o comando abaixo9
apt-get install mysql-server
GocV deve instalar tambm os )acotes mysql-client ?)ermite acessar o banco@ e o mysql-
navigator ?interface gr2fica@# Antes de iniciar o servi&oU rode o comando mysql_install_dbU )ara criar
a base de dados inicial do MySQLU usada )ara arma.enar informa&;es sobre todas as outras criadas
)osteriormente# 5 )osteriormente ativar o servidor#
mysql_install_db
/etc/init.d/mysql start
: MySQL )ossui um usu2rio )adr'o chamado rootU 7ue assim como o root do sistemaU tem acesso
com)leto a todas as bases de dados e usado )ara fa.er a configura&'o inicial do sistemaU assim como as
tarefas de manuten&'o# 5sta conta inicialmente n'o tem senhaU )or isso vocV deve definir uma logo de)ois de
iniciar o servi&oU usando o comando mysqladmin -u root password <NovaSenha>U incluindo a senha
deseQada diretamente no comando9
mysqladmin -u root password senha123
*ara testar se o MySQL est2 rodando corretamenteU )odemos chama-lo9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,4
mysql -u root -p
,#,#$ Administrador de MJSKL e *I* via Web
Muitos )rogramadores PHP 7uando hos)edam uma )2gina no servidorU solicitam uma ferramenta
chamada de PHPMyAdmin )ara facilitar as o)era&;es de aQustes e instala&'o de seus scri)ts# *ara isso instale
o )acote phpmyadmin ?htt)9SS!!!#)h)mJadmin#netS@9
apt-get install phpmyadmin
: phpMyAdmim um scri)t em PHPU 7ue trabalha em conQunto com o Apache# : scri)t de )8s-
instala&'o incluHdo no )acote do Debian fa. a configura&'o inicial )ara vocVU )erguntando se ele deve ser
configurado )ara trabalhar em conQunto com o Apache 1.3U com o Apache 2 ou com o Apache-sslU
onde a autentica&'o e transmiss'o dos dados s'o feitos de forma encri)tada#
De)ois de instaladoU acesse o endere&o http://127.0.0.1/phpmyadmin/ e vocV cair2 na tela de
administra&'o do phpMyAdminU onde vocV )ode logar-se usando 7ual7uer uma das contas registradas no
MySQL# %se o root )ara tarefas administrativas# *or 7uest;es de seguran&aU a configura&'o )adr'o )ermite
7ue ele seQa acessado a)enas localmente#
2.3 Ser!idor 56P
: servidor de FTP mais usado no Linux o ProftpdU incluHdo em 7uase todas as distribui&;es# *ara
tarefas onde necess2rio ter seguran&a nas transmiss;es dos ar7uivosU recomend2vel usar o SFTPU o
m8dulo do SSH 7ue )ermite transferir ar7uivos de forma cri)tografada#
: servidor aceita conex;es remotas usando os logins dos usu2rios cadastrados na m27uina# Lembre-
se 7ue )ara adicionar novos usu2rios vocV )ode usar o comando adduser ou instalar o kuser#
O'o difHcil instalar o Proftpd em 7ual7uer distribui&'oU basta )rocurar )elo )acote proftpd# *ara
instalar use9
apt-get install proftpd
A configura&'o manual do servidor LM* feita atravs do ar7uivo /etc/proftpd.confU sem)re 7ue
modificar as configura&;esU vocV dever2 reiniciar o servidor /etc/init.d/proftpd restart.
%ma das )rimeiras o)&;es do ar7uivoU a o)&'o PortU 7ue )ermite alterar a )orta usada )elo FTP
?)adr'o a )orta ,$@#
5m seguida vem a o)&'o MaxInstancesU 7ue limita o nTmero de conex;es simultWneas ao servidor
FTP# 5sta o)&'o trabalha em conQunto com a limita&'o de banda#
Se vocV 7uiser limitar o acesso dos usu2rios C seus diret8rios homeU adicione a linha DefaultRoot
~ no final do ar7uivo# Oo Linux o ~ um coringaU 7ue automaticamente substituHdo )ela )asta home do
usu2rio 7ue est2 logado#
*ara ativar a limita&'o de bandaU adicione a linha TransferRate RETR <Taxa>:10U onde a [Maxa\
)ode ser substituHdo )ela taxa deseQada em B+Ss#
2.3.1 $riando um CD- AnEnimo
A )rincH)io a)enas os usu2rios 7ue tiverem logins v2lidos no servidor )oder'o acessar o FTP# Caso
vocV 7ueira abrir um FTP )Tblico ?AnNnimo@U adicione estas linhas no ar7uivo de configura&'o# 5las ficam
comentadas no ar7uivo original9
<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
MaxClients 20
DisplayLogin welcome.msg
DisplayFirstChdir .message
<Directory *>
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,6
<Limit WRITE>
DenyAll
</Limit>
</Directory>
<Directory incoming>
Umask 022 022
<Limit READ WRITE>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>
A linha MaxClients determina o nTmero m2ximo de anNnimos 7ue )oder'o se logar no servidor#
5sta o)&'o se)arada da Maxclients )rinci)alU 7ue limita o nTmero de usu2rios com login v2lido# GocV
)ode )ermitir um nTmero diferente de usu2rios v2lidos dos anNnimos#
A o)&'o DisplayLogin welcome.msg indica o a mensagem de boas vindas 7ue mostrada 7uando
os usu2rios logam no FTP# *or )adr'o o ar7uivo /home/ftp/welcome.msg#
:s usu2rios anNnimos tVm acesso a)enas aos ar7uivos dentro da )asta /home/ftp# 5ste o diret8rio
rai. )ara elesU eles n'o tem como ver muito menos alterar outros ar7uivos do sistema#
A se&'o Directory incoming mais abaixo cria uma )asta de u"load ?)or )adr'o a
/home/ftp/incoming@ onde os anNnimos )oder'o dar u)load de ar7uivos# A idia 7ue vocV veQa
)eriodicamente o conteTdo da )asta e mova o 7ue for Ttil )ara a )asta /home/ftp )ara 7ue o ar7uivo fi7ue
dis)onHvel )ara do!nload#
*or )adr'o os anNnimos n'o )odem ver o conteTdo da )asta incomingU )odem a)enas dar u)load# Se
necess2rioU crie o diret8rio incoming com o )rimeiro comandoU Q2 o segundo informa 7uem )oder2 acessar9
mkdir /home/ftp/incoming
chown nobody.nogroup /home/ftp/incoming
*ara acessar o seu servidorU os clientes devem usar o login anonymous ou ftpU usando um endere&o
de e-mail 7ual7uer como senha# %ma medida comum ao ativar o u)load dos usu2rios anNnimos usar uma
)arti&'o se)arada )ara o FTPU )ara evitar 7ue algum engra&adinho fi7ue dando u)load durante a madrugada
at lotar o ID do servidor# Oeste caso vocV )recisa a)enas adicionar uma linha no ar7uivo /etc/fstabU
)ara 7ue a )arti&'o deseQada seQa montada durante o boot#
2.3.2 $riando acesso "or nome de usurio com ou sem s>ell
A forma mais sim)les de fa.er esse acessoU criar os usu2rios 7ue ter'o acesso ao FTPU colocando o
diret8rio 7ue ter'o acesso como seu diret8rio home e blo7ueando o uso do shellU )ara 7ue eles n'o )ossam
acessar o servidor remotamente atravs de outros meiosU via ssh )or exem)lo#
Gamos come&ar adicionando no ar7uivo a o)&'o 7ue )rende os usu2rios nos seus diret8rios home 7ue
DefaultRoot ~ #GocV vai )recisar adicionar tambm a se&'o )ara liberar o acesso anNnimo ao ftpU 7ue
vimos acima#
<Anonymous ~ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
MaxClients 20
DisplayLogin welcome.msg
DisplayFirstChdir .message
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,<
</Anonymous>
: diret8rio )adr'o do FTPU onde os visitantes ter'o acesso aos ar7uivos a /home/ftp# Gamos su)or
7ue deseQo ter trVs acessos ?)roQeto$U )roQeto,U )roQeto/@# *rimeiro crie os diret8rios )ara cada )roQeto9
mkdir /home/ftp/projeto1
mkdir /home/ftp/projeto2
mkdir /home/ftp/projeto3
: )r8ximo )asso adicionar os usu2rios no sistemaU tendo o cuidado de fa.er as altera&;es no
diret8rio home e no shell )adr'oU )ara 7ue eles tenham acesso via FTP e a)enas C )asta deseQada# *ara
adicionar os usu2riosU use o comando adduserU como se estivesse criando uma conta normal9
adduser projeto1
A)arecer2 v2rias informa&;es da inclus'o e )edir2 a senhaU re)ita esse )rocedimento )ara o )roQeto, e
)ara o )roQeto/# *or )adr'o ele cria a )asta Shome/projeto1U 7ue fica sendo o diret8rio home do usu2rio
criadoU )orm deseQamos 7ue o home seQa a )asta /home/ftp/projeto1 onde ele ir2 dar u)load dos
ar7uivos# *ara modificar issoU devemos alterar o ar7uivo /etc/passwdU 7ue o local onde ficam guardadas
as informa&;es dos usu2rios# Oa Tltima linhaU vocV ver29
projeto1:x:1005:1005:,,,:/home/projeto1:/bin/bash
Devemos alterar o /home/projeto1 )ara /home/ftp/projeto1 )ara trocar o home e o
/bin/bash )ara /bin/false )ara travar o usu2rio e im)edir 7ue ele use o shell no servidor# Se vocV
)referir 7ue alm do acesso via ftpU os usu2rios tenham acesso via sshU ent'o mantenha o /bin/bash#
De)ois das altera&;esU a linha ficar29
projeto1:x:1005:1005:,,,:/home/ftp/projeto1:/bin/false
Im"ortante( se vocV colocar /bin/false como no exem)lo acimaU vocV :+>-1AM:>-AM5OM5
dever2 adicionar o shell Sbin/false no ar7uivo de shellPsU )ara 7ue o mesmo o reconhe&a como v2lido# *ara
issoU edite o ar7uivo /etc/shells e acrescente /bin/false ?GocV somente )recisa reali.ar essa tarefa
uma Tnica ve.@#
Como o diret8rio /home/projeto1U n'o )ossui mais utilidadeU vocV )ode remover o diret8rio
/home/projeto1, usando rm -rf /home/projeto1/#
O'o se es7ue&a de acertar as )ermiss;es da )asta /home/ftp/projeto1 usando chown -R
projeto1 /home/ftp/projeto1/.
2." cesso -emoto 7 Ser!idor 6elnet
: acesso remoto )ermite utili.ar um e7ui)amento remoto como se fosse a ma7uina localU ou seQaU vocV
)ode usar todos os comandos conhecidos 7ue os mesmos funcionar'o igualmente como se estivesse usando a
ma7uina remota localmente#
Muitos dis)ositivos como modems ADSL ou )e7uenos servidoresU roteadoresU entre outrosU )ossuem
v2rias o)&;es de configura&'o sem )ossuir teclado ou monitor embutidos# Oestes casos toda a configura&'o
feita remotamenteU atravs de algum utilit2rio de configura&'o# : mais comum o uso de alguma interface
htt)U 7ue vocV acessa de 7ual7uer micro da rede local usando o navegadorU ou ent'o o uso do ssh?se&'o ,#6@
ou telnet#
: telnet um )rotocolo )rimitivo 7ue )ermite rodar comandos remotamente atravs de uma
interface de modo texto# 5xistem clientes telnet )ara v2rios sistemas o)eracionaisU tanto no Linux 7uanto
no Windo!sU vocV acessa uma m27uina remotamente via telnet usando o comando telnet seguido do
endere&o -* destino#
: telnet est2 caindo em desuso )or )roblemas de )rote&'oU sendo substituHdo )elo sshU 7ue )ossui
as mesmas funcionalidades )orm com muitas vantagens# *ara instalar o servidor telnet9
apt-get install telnetd
: telnet considerado um comando ultra)assadoU no entanto o mesmo ativado )elo inetdU 7ue
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,=
um script utili.ado )ara chamar v2rios servi&os de uso es)or2dicosU ou seQaU caso n'o est'o sendo
solicitadosU os mesmos n'o s'o carregados )ara a mem8ria# *ara restartar o inetd use
/etc/init.d/inetd restart#
2.& cesso -emoto 7 Ser!idor SS8 9Secure S/ell:
: ssh a ferramenta mais utili.ada )elos administradores de redes )ara gerenciar de forma remota
esta&;es de trabalho e servidoresU de forma 2gil e seguraU utili.ando tcnicas cri)togr2ficas baseadas em
chaves )Tblicas )ara se comunicar#
Oa DebianU o ssh instalado e executado automaticamenteU mas caso seQa necess2rio instalarU utili.e9
apt-get install ssh
*ara ativarSdesativar o servi&o use /etc/init.d/ssh e a fun&'o deseQada# *elo )adr'o DebianU os
ar7uivos de configura&'o do ssh se encontram em /etc/ssh#
: ssh dividido em dois m8dulos# : sshd o m8dulo servidorU um servi&o 7ue fica residente na
m27uina 7ue ser2 acessadaU en7uanto o ssh o m8dulo cliente# *ara 7ue ele seQa iniciali.ado durante o bootU
use update-rc.d -f ssh defaults#
A configura&'o do servidor encontra-se no ar7uivo /etc/ssh/sshd_configU Q2 a configura&'o do
cliente em /etc/ssh/ssh_config#
2.#.1 $onfigurao do $liente
Ao ser habilitadoU o )adr'o do servidor ssh )ermitir acesso usando 7ual7uer uma das contas de
usu2rio cadastradas no sistemaU )edindo a)enas a senha de acesso# *ara acessar um servidor digite ssh
<login>@<IpServidor>U )or exem)lo ssh admin",33#,4(#,,#44# Ao acessar micros dentro da rede localU
)odemos cham2-los )elo nomeU ssh admin@flamingo# Oeste caso vocV )recisar2 )rimeiro editar o
ar7uivo Setc/hostsU incluindo os nTmeros de -* das m27uinas e os nomes corres)ondentes# 5xem)lo9
127.0.0.1 localhost
192.168.0.2 server
192.168.0.6 flamingo
Alm de oferecer acesso via linha de comando ?modo textual@U o ssh )ermite rodar a)licativos
gr2ficos remotamente ?X11 forwarding@# Oestes casosU edite o ar7uivo /etc/ssh/ssh_config ?client
ssh@ e substitua a linha9 ForwardX11 no )or LorwardX11 yes#
:utra o)&'o adicionar o )arWmetro -X ao se conectar# : maior )roblema com o uso de a)licativos
remotos gr2ficos via ssh 7ue ele s8 funcionam bem em uma rede local )or motivo de banda# : )rotocolo
do X otimi.ado )ara uso localU isso fa. com 7ue muitos administradores desabilitem o X11 forwarding
no )r8)rio servidor#
:utro )roblema comum do ssh ocorre 7uando a conex'o fechada )elo servidor de)ois de alguns
minutos de atividade# 5m muitas situa&;es vocV 7uer manter a conex'o aberta )or longos )erHodosU sem a
necessidade de ficar interagindo )ara 7ue a conex'o n'o caia# GocV )ode evitar o )roblema fa.endo com 7ue
o )r8)rio cliente mande )acotes )eriodicamente a fim de manter a conex'o aberta# *ara ativar essa fun&'oU
adicione a linha ServerAliveInterval 120 no /etc/ssh_config. Dessa forma a cada $,3 segundos
o ssh cliente manda alguma informa&'o inerte ao servidorU mantendo assim a conex'o ativa
2.#.2 $onfigurao do ser&idor
GocV )ode configurar v2rias o)&;es relacionadas ao servidor sshU incluindo a )orta TCP a ser usada
editando o ar7uivo /etc/ssh/sshd_config#
Dentre as )rinci)ais o)&;es do ar7uivo de configura&'o )odemos citar a )orta de acesso Port 22 7ue
a )orta )adr'o usado )elo ssh. Ao mudar a )orta do servidor a7uiU vocV dever2 usar a o)&'o -p ao
conectar a )artir dos clientesU )ara indicar a )orta usada# :utra o)&'o editar o ar7uivo
/etc/ssh/ssh_config ?ssh cliente@ e alterar a )orta )adr'o usada tambm )or eles#
A o)&'o ListenAddressU 7ue )ermite limitar o ssh a uma Tnica )laca de redeU em casos de micros com
duas ou mais )lacas#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,(
Atualmente utili.amos o )rotocolo ssh 2U mas ainda existem alguns )oucos clientes 7ue utili.am a
)rimeira vers'o do )rotocolo# *or )adr'oU o servidor SSI aceita conex;es de clientes 7ue utili.am 7ual7uer
um dos dois )rotocolosU o 7ue indicado na linha Protocol 2,1.
A o)&'o PermitRootLogin yes, determina se o servidor aceitar2 7ue usu2rios se loguem como
root# Do )onto de vista da seguran&aU melhor deixar esta o)&'o como noU )ois assim o usu2rio )recisar2
)rimeiro se logar usando um login normal e de)ois virar root usando o su.
: ssh )ermite 7ue 7ual7uer usu2rio cadastrado no sistema logue-se remotamenteU mas vocV )ode
filtrar os mesmos atravs da o)&'o AllowUsersU 7ue es)ecifica uma lista de usu2rios 7ue )odem usar o
SSI# -sso evita 7ue contas com senhas fracasU usadas )or usu2rios 7ue n'o tem necessidade de acessar o
servidor remotamente colo7uem a seguran&a do sistema em risco#
Ao invs de )ermitirU vocV )ode vetar o uso com a o)&'o DenyUsers# Oeste casoU todos os usu2rios
cadastrados no sistema )odem fa.er loginU com exce&'o dos es)ecificados na linha#
A o)&'o PermitEmptyPasswords noU fa. com 7ue 7ual7uer conta sem senha fi7ue
automaticamente desativada no ssh ?manter sem)re em no )or 7uest;es de seguran&a@#
*ara exibir mensagens de advertVncia antes de login use a o)&'o Banner =
/etc/ssh/banner.txt, onde banner#txt o ar7uivo com a mensagem a ser a)resentada#
A o)&'o X11Forwarding yes informa se o servidor )ermitir2 7ue os clientes executem a)licativos
gr2ficos remotamente#
Sem)re 7ue modificar alguma das o)&;esU vocV dever2 restartar o servidor com /etc/init.d/ssh
restart#
2.) Compartil/amento de r;ui!os
Atualmente existem inTmeros )rotocolos de com)artilhamento de ar7uivos# :s )rinci)ais s'o o NFS
?Network File System@ e o SMB ?Server Message Block@# Ambos funcionam muito bemU cada um
com suas vantagens e desvantagens#
2.,.1 FCS G FetHor6 Cile SIstem
: NFS o )rotocolo )adr'o de com)artilhamento de ar7uivos do Linux# : NFS utili.a um outro
servi&o chamado de portmap )ara gerenciar as re7uisi&;es dos clientesU este servi&o )recisa estar ativo )ara
7ue o NFS funcioneU ou seQaU )ara iniciali.ar o servidor NFS vocV )recisa ativar9
/etc/init.d/nfs-kernel-server start
A configura&'o do NFS feita em um Tnico ar7uivo chamado /etc/exportsU onde vai a
configura&'o dos diret8rios com)artilhados# :riginalmente este ar7uivo se encontra va.io#
*ara exem)lificar o seu usoU vamos com)artilhar o diret8rio/home/arquivos como somente leituraU
)ara todos os micros da rede local ?classe C $0,#$<(#3#3S,4@U o diret8rio /home/trabalhos )ara todas as
mesmas m27uinas )orm com )ermiss'o de escritaU e a )asta /arquivos somente )ara a m27uina
$0,#$<(#3#/ )ara escrita ?conteTdo do ar7uivo /etc/exports@# -m)ortante9 vocV n'o )ode deixar es)a&os
entre o -* e o ti)o de acesso entre )arVnteses#
/home/arquivos 192.168.0.*(ro)
/home/trabalhos 192.168.0.*(rw)
/arquivos 192.168.0.3(rw)
:utra o)&'oU Ttil em redes locais a asyncU 7ue )ermite 7ue o NFS transfira ar7uivos de forma
assHncronaU sem )recisar es)erar )ela res)osta do cliente a cada )acote enviado# Sem a o)&'o async a taxa
de transmiss'o numa rede de $33 megabits fica em geral em torno de < a = M+SsU en7uanto 7ue ao ativ2-laU
sobre )ara at $$ M+SsU ficando limitada a)enas C velocidade da rede e dos IDs no servidor e cliente# Ao
adicionarU a linha de com)artilhamento fica /home/trabalhos 192.168.0.*(rw,async)#
GocV )ode usar ainda o )arWmetro noacessU 7ue )ermite 7ue vocV com)artilhe a)enas os ar7uivos
dentro do diret8rioU mas n'o subdiret8rios 7ue eventualmente esteQam )resentes# De)ois de incluir todos os
diret8rios 7ue deseQa com)artilharU com suas res)ectivas )ermiss;es de acessoU salve o ar7uivo e reinicie o
servi&o )ara 7ue as altera&;es tenham efeito9
/etc/init.d/nfs-kernel-server restart
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ,0
5mbora seQa f2cil editar diretamente o ar7uivo Setc/exportsU muitas distribui&;es incluem
ferramentas gr2ficas )ara gerenciar os com)artilhamentos# Caso deseQe uma ferramenta gr2ficaU vocV )ode
usar ?shares-admin na linha de comando@ ou ent'o -\Configura&'o-\*astas Com)artilhadas#
*ara montar o com)artilhamento manualmenteU use ?como root@ os comandos9
mkdir /mnt/arquivos
mount -t nfs 192.168.0.1:/arquivos /mnt/arquivos
Sem)re 7ue for montar uma unidadeU vocV deve )ossuir um diret8rio )ara re)resentar essa montagemU
assim a )rimeira linha dos comandos acimaU cria uma )asta chamada arquivos dentro do diret8rio mnt# A
linha de montagem )ro)riamente dita inclui o sistema de ar7uivos usadoU neste caso o nfs ?-t (type)
nfs@U o endere&o -* do servidorU seguido da )asta 7ue ele est2 com)artilhando eU finalmenteU a )asta local
onde os ar7uivos ficar'o acessHveis#
Ao terminar de acessar o com)artilhamentoU ou caso )recise desligar o servidorU use o comando
umount /mnt/arquivos )ara desmont2-lo# Y im)ortante desmontar o com)artilhamento antes de desligar
o servidorU caso o contr2rio o cliente continua tentando acessar o com)artilhamento sem)re 7ue vocV acessa
a )asta onde ele est2 montadoU o 7ue fa. com 7ue os gerenciadores de ar7uivos e outros )rogramas travem ao
)assar )ela )astaU aguardando a res)osta do servidor 7ue n'o est2 mais l2#
Se vocV acessa o com)artilhamento fre7entementeU )ode ganhar tem)o inserindo uma entrada
referente a ele no ar7uivo /etc/fstab# Assim vocV )ode montar o com)artilhamento usando o comando
sim)lificadoU ou configurar o sistema )ara mont2-lo automaticamente durante o boot# +asta incluir a linha
no final do ar7uivoU deixando sem)re uma linha em branco a)8s ela# A linha )ara o com)artilhamento 7ue
acabamos de montar seria ?em /etc/fstab@9
192.168.0.1:/arquivos /mnt/arquivos nfs noauto,users,exec 0 0
Oeste exem)lo o 192.168.0.1:/arquivos o -* do servidorU seguido )ela )asta com)artilhada e o
/mnt/arquivos a diret8rio local onde este com)artilhamento ficar2 acessHvel ?montado@U Q2 o nfs o
sistema de ar7uivos# : noauto fa. com 7ue o com)artilhamento n'o seQa montado automaticamente durante
o boot# GocV )ode monta-lo e desmonta-lo conforme for utili.2-lo usando os comandos mount
/mnt/arquivos e umount /mnt/arquivos# %ma ve. o coamdno no fstabU vocV )recisa es)ecificar
a)enas a )astaU )ois o sistema lV os outros )arWmetros a )artir da entrada no ar7uivo#
: )arWmetro users )ermite 7ue vocV monte e desmonte o com)artilhamento usando seu login
normalU sem )recisar usar o rootU Q2 o exec )ermite executar )rogramas dentro do com)artilhamento# Caso
vocV esteQa )reocu)ado com a seguran&aU )ode remover as duas o)&;es#
Mais um comando Ttil ao utili.ar o NFS o showmount -a ?root@ 7ue mostra uma lista com os
diret8rios NFS com)artilhados na sua m27uina 7ue foram acessados e 7uais m27uinas os acessaram desde o
Tltimo reboot# O'o muito es)ecHficoU )ois n'o mostra datas nem hor2riosU mas )elo menos )ermite
descobrir se algum n'o autori.ado est2 acessando os com)artilhamentos#
*or )adr'oU os com)artilhamentos do OLS s'o montados com a o)&'o hard, isso causa um certo
transtorno 7uando o servidor desligado ou desconectado da redeU )ois os clientes ficam tentando se
reconectar ao servidor indefinidamenteU fa.endo 7ue )rogramas travem ao tentar acessar ou salvar ar7uivos
no com)artilhamento e vocV n'o consiga desmont2-lo )or vias normais at 7ue o servidor volte# *ara
)revenir este )roblemaU vocV )ode montar os com)artilhamentos ?nos clientes@ usando a o)&'o soft#
Oeste caso o com)artilhamento escondido caso o servidor seQa desconectado e )rogramas tentando
acessa-lo )assam a exibir mensagens de ,n-o poss.el ler o arqui.o, ao invs de travarem# *ara usar esta
o)&'oU adicione a o)&'o -o soft no comando de montagem9
mount -t nfs -o soft 192.168.0.1:/home/arquivos /mnt/arquivos
Assim a linha no /etc/fstab com a o)&'o ficaria9
192.168.0.1:/home/arquivos /mnt/arquivos nfs users,exec,soft 0 0
2.,.2 S/B 7 Ser&er /essage Bloc6 4Samba5
: Samba o servidor baseado em blocos de mensagensU 7ue )ermite com)artilhar ar7uivos e acessar
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /3
com)artilhamentos em m27uinas Windo!s# 5le dividido em dois m8dulosU o servidor Samba )ro)riamente
dito e o SmbClient# : SmbClient res)ons2vel )or )ermitir 7ue m27uinas Linux usem esse )rotocolo#
%sando o SambaU o servidor Linux se com)orta exatamente da mesma forma 7ue uma m27uina Windo!s#
*ermite com)artilhamento de ar7uivos e im)ressoras e autentica&'o de usu2rios# GocV )ode configurar o
Samba inclusive )ara tornar-se um controlador de domHnio# Atualmente o Samba mais r2)ido 7ue o )r8)rio
)rotocolo smb do Windo!s na tarefa de servidor de ar7uivos#
*ara instalar corretamente o Samba no seu servidorU vocV )recisa dos seguintes )acotesU onde o
)rimeiro instala o servidor SambaU o segundo o cliente de acessoU a documenta&'o e )or Tltimo o Swat
?se&'o ,#<#,#4@9
apt-get install samba smbclient samba-doc swat
: Swat uma interface !eb 7ue auxiliar muito na eta)a de configura&'oU mas o)cionalU )ois vocV
)ode tanto editar manualmente o ar7uivo /etc/samba/smb.confU 7uanto usar um ar7uivo )rontoU gerado
em outra instala&'o# Oos clientes 7ue forem a)enas acessar com)artilhamentos de outras m27uinasU instale
a)enas o smbclient# De)ois de instalados os )acotesU use os comandos9
/etc/init.d/samba start
*or )adr'oU ao instalar o )acote criado um linA na )asta /etc/rc5.d 7ue ativa o servidor
automaticamente durante o boot# *ara desativar a iniciali.a&'o autom2ticaU use o comando9
update-rc.d -f samba remove
*ata ativ2-lo novamente de)oisU use9
update-rc.d -f samba defaults
: nome do )rocesso do Samba o nmbd e n'o samba ou smb#
2.,.2.1 $adastrando os usurios
%ma ve. instalado e rodando o servidorU devemos cadastrar os logins e senhas dos usu2rios 7ue
)ossuir'o acesso ao servidor# : Samba um pro/rama a parteU assim vocV dever2 informar 7uais usu2rios
v'o ter acesso ao seu servi&o# *or isso ele s8 )ode dar acesso )ara usu2rios 7ueU alm de estarem cadastrados
no SambaU tambm est'o cadastrados no sistema#
GocV )ode criar usu2rios usando o comando adduser ou um utilit2rio como o user-admin (gksu
users-admin ou )elo menu usar Usurios e Grupos, dis)onHvel atravs do )acote gnome-system-
tools@# Ao usar o adduserU o comando fica9
adduser <NomeDoUsurio>
:utra o)&'o criar usu2rios 7ue ter'o acesso a)enas ao Samba# 5sta abordagem mais seguraU )ois os
usu2rios n'o )oder'o acessar o servidor via ssh ou TelnetU )or exem)loU o 7ue abriria brecha )ara v2rios
ti)os de ata7ues# Oeste casoU vocV cria os usu2rios adicionando os )arWmetros 7ue orientam o adduser a n'o
criar o diret8rio home e manter a senha desativada at segunda ordem9
adduser --disabled-login -no-create-home <NomeDoUsuario>
5sse )rocedimento cria um usu2rio 7ue )ertence ao ar7uivo de acessosU mas sem diret8rio de acessoU
)ara todos os finsU existe e )ode acessar ar7uivos do sistema ?de acordo com as )ermiss;es de acesso@U masU
)or outro ladoU n'o )ode fa.er login#
-ndiferente da forma como cadastrou os usu2rios no sistemaU vocV deve cadastr2-los no SambaU usando
o comando smbpasswd -a# Modos os usu2rios cadastrados no Samba se encontram no ar7uivo
/etc/samba/smbpasswd#
smbpasswd -a <NomeDoUsuario>
Se vocV mantiver os logins e senhas sincroni.ados com os usados )elos usu2rios nos clientes
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /$
Windo!sU o acesso aos com)artilhamentos autom2tico# Caso os logins ou senhas no servidor seQam
diferentesU o usu2rio )recisar2 fa.er login ao acessar#
Ao usar clientes Windo!s 06 ou 0(U vocV deve marcar a o)&'o de login como Login do Windows e
n'o como Cliente para redes Microsoft ?7ue o default@ na configura&'o de rede do Windo!s
?*ainel de controleU o)&'o >edes@#
2.,.2.2 $onfigurando os $om"artil>amentos /anualmente
Moda a configura&'o do SambaU incluindo as configura&;es gerais do servidorU im)ressoras e todos os
com)artilhamentosU feita num Tnico ar7uivo de configura&'o chamado de /etc/samba/smb.conf#
*rogramas de configura&'oU como o Swat ?se&'o ,#<#,#4@U sim)lesmente lVem este ar7uivo e o modificamU
)or isso )ossHvel usar o Swat e a configura&'o manual#
5strutura b2sica de um ar7uivo de configura&'oU observe 7ue todas linhas 7ue come&am )or bU
significam 7ue seu conteTdo coment2rio9
# Esse um exemplo de arquivo de configurao padro para o Samba, a primeira parte do
# cdigo se refere a estrutura como um todo, ou seja, do comportamento do servidor como
# um todo. Na segunda parte de comentrios, sero apresentados os compartilhamentos
# propriamente ditos.
[global]
workgroup = REDE
netbios name = K8VSE
server string = %h server (Samba %v)
name resolve order = lmhosts, host, wins, bcast
printcap name = lpstat
encrypt passwords = Yes
wins support = yes
preferred master = yes
domain master = true
domain logons = yes
logon path = %Nprofiles%u
obey pam restrictions = Yes
passwd program = /usr/bin/passwd %u
passwd chat=*Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n.
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
os level = 100
dns proxy = No
panic action = /usr/share/samba/panic-action %d
invalid users = root
printing = cups
print command = lpr -P %p -o raw %s -r
lpq command = lpstat -o %p
lprm command = cancel %p-%j
# include = /etc/samba/dhcp.conf
# client code page = 850
# character set = ISO8859-1
preserve case = no
short preserve case = no
default case = lower
[homes]
comment = %u's Home Directory
create mask = 0775
directory mask = 0775
browseable = no
read only = no
map archive = yes
writable = yes
force create mode = 0
security mask = 0775
force security mode = 0
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /,
[printers]
comment = Todas as Impressoras disponveis
path = /var/tmp
create mask = 0700
guest ok = Yes
printable = Yes
browseable = No
[epson]
comment = Impressora Linux
security = server
path = /var/spool/lpd/lp
printer name = lp
writable = yes
public = yes
printable = yes
print command = lpr -r -h -P %p %s
# No exemplo acima [epson], informei uma impressora compartilhada, afim de exemplo
# Para criar um compartilhamento, voc deve acrescentar um nome entre colchetes, onde
# esse nome refletir as caractersticas do compartilhamento, idealmente, deve-se usar
# um nome de acordo com o tipo de compartilhamento desejado. Abaixo ser acrescentado
# um exemplo hipottico. Para colocar o exemplo em prtica, voc dever eliminar os
# comentrios aps os :.
#[public] : Nome que aparecer no ambiente de redes;
# path = /home/publico : Diretrio que est sendo compartilhado;
# available = yes : Disponibilidade do diretrio (yes=sim, no=no);
# browseable = yes : Ser visvel pela rede (idem);
# writable = yes : Compartilhamento permite a escrita (idem);
# valid users = maria, joao : (Opcional) informa quem pode acessar;
# write list = maria, joao : (Opcional) informa quem pode escrever;
# hosts allow = 192.168.0.2, 192.168.0.5 : (Opcional) Ips permitidos;
: ar7uivo 7ue contm todos os usu2rios e senhas do Samba se encontram em
/etc/samba/smbpasswd# Sem)re 7ue alterar manualmente /etc/samba/smb.confU ou mesmo alterar
algumas o)&;es )elo S!at e 7uiser verificar se as configura&;es est'o corretasU rode o testparm ?basta
cham2-lo num terminal@# 5le funciona como uma es)cie de debugU indicando erros grosseiros no ar7uivo#
De)ois de fa.er 7ual7uer altera&'oU reinicie o Samba usando o comando /etc/init.d/samba restart#
: comando smbstatus tambm muito TtilU )ois )ermite verificar 7uais esta&;es est'o conectadas
ao servidor e 7uais recursos est'o sendo acessados no momento#
2.,.2.3 Autenticao $entralizada 4-8$5
*ara solucionar o )roblema de sincroni.a&'o de senhas entre esta&;esU existe a o)&'o de usar o
servidor Samba como um controlador )rim2rio de domHnio ?*DC@U onde ele funciona como um servidor de
autentica&'o )ara os clientes Windo!s e ?o)cionalmente@ arma.ena os )erfis de cada usu2rioU )ermitindo 7ue
eles tenham acesso a seus ar7uivos e configura&;es a )artir de 7ual7uer m27uina onde fa&am logon#
Ao cadastrar um novo usu2rio no servidor SambaU ele automaticamente )ode fa.er logon em 7ual7uer
uma das esta&;es configuradas# Ao remover ou blo7uear uma conta de acessoU o usu2rio automaticamente
blo7ueado em todas as esta&;es# -sto elimina o )roblema de sincronismo entre as senhas no servidor e nas
esta&;es e centrali.a a administra&'o de usu2rios e )ermiss;es de acesso no servidorU sim)lificando bastante
seu trabalho de administra&'o#
: )rimeiro )asso modificar o ar7uivo de configura&'o do Samba# 5xistem algumas regras adicionais
)ara transformar o Samba num controlador de domHnio# A se&'o global deve conter as linhas domain
master = yes, domain logons = yes e logon script = netlogon.bat e no deve conter a
linha invalid users = root, )ois )recisaremos usar a conta de root no Samba ao configurar os
clientes#
Y )reciso adicionar tambm um com)artilhamento chamado netlogonU 7ue conter2 o scri)t de login
7ue ser2 executado )elas esta&;es# Abaixo a)resentado um exem)lo de ar7uivo de configura&'o do Samba
)ara um controlador de domnio# 5le n'o contm as configura&;es )ara com)artilhamento de
im)ressorasU 7ue vocV )ode adicionar ?Quntamente com os com)artilhamentos deseQados@ de)ois de testar a
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br //
configura&'o b2sica9
[global]
workgroup = REDE
netbios name = GERENCIADOR
server string = Controlador de Domnio
domain master = yes
preferred master = yes
local master = yes
domain logons = yes
logon script = netlogon.bat
security = user
encrypt passwords = yes
os level = 100
[netlogon]
comment = Servico de Logon
path = /var/samba/netlogon
guest ok = Yes
browseable = No
[homes]
comment = Diretorio Home
valid users = %S
guest ok = Yes
browseable = No
Ao rodar o comando testparmU )ois ele verifica a sintaxe e indica erros de configura&'o# Ao
configurar o Samba como PDCU ele deve exibir a mensagem Server role: ROLE_DOMAIN_PDC#
Cuidado )ara cadastrar o usu2rio root com a mesma senha no Samba# Caso necess2rioU use o
comando smbpasswd -a root )ara cadastrar o root# Crie a )asta /var/samba/netlogon e configure
corretamente as )ermiss;es9
mkdir -p /var/samba/netlogon
chmod 775 /var/samba/netlogon
Com o 775 estamos )ermitindo 7ue alm do rootU outros usu2rios 7ue vocV adicionar no gru)o
)ossam alterar o conteTdo da )asta# -sso )ode ser Ttil caso existam outros administradores de rede alm de
vocV# Cadastre agora os logins dos usu2riosU com as senhas 7ue eles utili.ar'o )ara fa.er logon a )artir das
m27uinas Windo!s# Oeste caso n'o )reciso se )reocu)ar em manter as senhas em sincronismo entre o
servidor e as esta&;es# Oa verdadeU as contas 7ue criamos a7ui n'o )recisam se7uer existir nas esta&;esU )ois
o login ser2 feito no servidor# *ara adicionar usu2rios novos use9
adduser <NomeDoUsurio>
smbpasswd -a <NomeDoUsuario>
Y im)ortante criar tambm o diret8rio profile.pds dentro do diret8rio home do usu2rioU onde o
cliente Windo!s arma.ena as informa&;es da se&'o cada ve. 7ue o usu2rio fa. logon no domHnio
mkdir /home/<NomeDoUsurio>/profile.pds
Alm das contas )ara cada usu2rioU )reciso cadastrar tambm uma conta ?sem senha@ )ara cada
m27uina# GocV deve usar a7ui os mesmos nomes usados na configura&'o de rede em cada cliente# Se a
m27uina se chama atenas )or exem)loU )reciso criar um login de m27uina com o mesmo nome9
useradd -d /dev/null -s /bin/false athenas$
passwd -l athenas$
smbpasswd -a -m athenas
: c de)ois do nomeU 7ue indica 7ue estamos criando um login de m%uinaU 7ue n'o tem diret8rio
home (0d 1de.1null)U n'o )ossui um shell v2lido (0s 1bin1false) e est2 travada (pass2d 0l)# 5sta conta v2lida
a)enas no SambaU onde cadastrada com a o)&'o -m ?macine@#
*or TltimoU necess2rio criar o ar7uivo /var/samba/netlogon/netlogon.batU um scri)t 7ue
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /4
lido e executado )elos clientes ao fa.er logon# Como ele um ar7uivo de loteU vocV )ode reali.ar todos os
)rocedimentos 7ue deseQarU como )or exem)lo9
net use H: /HOME
net use x: \\gerenciador\arquivos /yes
5ste scri)t fa. com 7ue a )asta home de cada usu2rio seQa automaticamente ma)eada como a unidade
H: no clienteU o 7ue )ode ser bastante Ttil )ara bacAu)s )or exem)lo# OaturalmenteU cada usu2rio tem acesso
a)enas a seu )r8)rio ome#
A segunda linha um exem)lo de como fa.er com 7ue determinados com)artilhamentos do servidor
seQam ma)eados no cliente# : net use x: \\gerenciador\arquivos /yes fa. com 7ue o
com)artilhamento de ar7uivos seQa ma)eado como o drive X: nos clientes#
Mais um detalhe im)ortante 7ue o ar7uivo do scri)t de logon deve usar 7uebras de linhas no )adr'o
MS-D:S e n'o no )adr'o %nix# GocV )ode cri2-lo usando um editor de texto do Windo!s ou usar algum
editor do Linux 7ue ofere&a esta o)&'o# Oo B!rite )or exem)loU a o)&'o est2 em9 Configurar >
Configurar Editor > Abrir/Salvar > Fim de linha > DOS/Windows#
Mais uma configura&'o Ttil ?)orm o)cional@ fa.er com 7ue o servidor arma.ene os ar7uivos e
configura&;es do usu2rio ?recurso chamado Roaming Profiles@U fornecendo-os C esta&'o no momento em
7ue o usu2rio fa. logon# -sto )ermite 7ue o usu2rio )ossa trabalhar em outras m27uinas da rede e fa. com
7ue seus ar7uivos de trabalho seQam arma.enados no servidorU diminuindo a )ossibilidade de )erda de dados#
*or outro ladoU isto fa. com 7ue seQa consumido mais es)a&o de arma.enamento do servidor e
aumenta o tr2fego da redeU Q2 7ue os ar7uivos )recisam ser transferidos )ara a esta&'o a cada logon# -sto )ode
tornar-se um )roblema caso os usu2rios da rede tenham o h2bito de salvar muitos ar7uivos grandes na 2rea
de trabalho#
Oote 7ue o servidor n'o arma.ena todos os ar7uivos do usu2rioU a)enas as configura&;es dos
a)licativosU entradas do menu iniciarU cooAiesU booAmarAs e ar7uivos tem)or2rios do -5 e o conteTdo das
)astas DesAto)U Modelos e Meus Documentos# *ara ativar o su)orte no SambaU adicione as duas linhas
abaixo no final da se&'o global do /etc/samba/smb.conf ?abaixo da linha logon script =
netlogon.bat@9
logon home = \\%L\%U\.profiles
logon path = \\%L\profiles\%U
A vari2vel 3# neste caso indica o nome do servidor e o 3) o nome do usu2rio 7ue est2 fa.endo
logon# Adicione tambm um novo com)artilhamentoU adicionando as linhas abaixo no final do ar7uivo9
[profiles]
path = /var/profiles
writeable = Yes
browseable = No
create mask = 0600
directory mask = 0700
Crie a )asta /var/profilesU com )ermiss'o de escrita )ara todos os usu2rios9
mkdir /var/profiles
chmod 1777 /var/profiles
Cada usu2rio )assa a ter uma )asta )essoal dentro da )asta ?/var/profiles/<NomeDoUsurio>@
onde as configura&;es s'o salvas# A)esar das )ermiss;es locais da )asta )ermitirem 7ue 7ual7uer usu2rio a
acesseU o Samba se encarrega de )ermitir 7ue cada usu2rio remoto tenha acesso a)enas ao seu )r8)rio
)rofile# As esta&;es Windo!s ,333 e Windo!s R* utili.am os )erfis m8veis automaticamenteU 7uando o
recurso est2 dis)onHvel no servidor Samba# GocV )ode verificar a configura&'o eU caso deseQadoU desativar o
uso do )erfil m8vel no cliente no *eu 4omputador 5 'ropriedades 5 'erfis de )su6rio 5 7lterar tipo#
Oeste )onto a configura&'o do servidor Samba est2 )ronta# Lalta a)enas configurar os clientes
Windo!s )ara efetuarem logon no domHnio# Oem todas as vers;es do Windo!s su)ortam este recurso# Como
controladores de domHnio s'o usados )rinci)almente em redes de mdio ou grande )orte em em)resasU a
Microsoft n'o inclui su)orte no Windo!s R* Iome e no R* StarterU de forma a )ressionar as em)resas a
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /6
com)rarem o R* *rofessionalU 7ue mais caro# A configura&'o muda de acordo com a vers'o do Windo!s9
Windo!s ,3339 acesse o *eu 4omputador 5 'ropriedades 5 8dentifica9-o de rede 5
'ropriedades: colo7ue a7ui o nome do com)utador ?7ue )recisa ser um dos logins de m27uinas
adicionados na configura&'o do Samba@ e o nome do DomHnioU 7ue definido na o)&'o workgroup
= do /etc/samba/smb.conf# *ara ter acesso a esta o)&'o vocV deve estar logado como
administrador# Oa tela de identifica&'o 7ue ser2 aberta a seguirU logue-se como rootU com a senha
definida no Samba# Y normal 7ue a conex'o inicial demore dois ou trVs minutos# Se tudo der certoU
vocV saudado com uma mensagem +em0.indo ao domnio ;%ome<o<ominio5# Y necess2rio
identificar-se como root ao fa.er a configura&'o inicialU )ara 7ue seQa criada a rela&'o de confian&a
entre o servidor e o cliente# A )artir daH a)arece a o)&'o o)&'o "fetuar lo/on em=
;%ome<o<ominio5 na tela de loginU )ermitindo 7ue o usu2rio fa&a logon usando 7ual7uer uma das
contas cadastradas no servidor# Continua dis)onHvel tambm a o)&'o de fa.er um login local#
Windo!s 0( ou M59 logue-se na rede ?na tela de login aberta na iniciali.a&'o@ com o mesmo usu2rio
e senha 7ue ser2 usado )ara fa.er logon no domHnio# Acesse agora o 'ainel de 4ontrole 5 Redes 5
4liente para redes *icrosoft 5 'ropriedades# Mar7ue a o)&'o "fetuar #o/on num domnio %(U
informe o nome do domHnio e mar7ue a o)&'o "fetuar lo/on e restaurar cone>?es# Ao terminarU
)reciso fornecer o CD de instala&'o e reiniciar a m27uina# Oote 7ue as m27uinas com o Windo!s
0(SM5 n'o s'o com)atHveis com todos os recursos do domHnioU elas acessam o domHnio dentro de
uma es)cie de modo de com)atibilidadeU onde )odem acessar os com)artilhamentosU mas n'o tVm
acesso ao recurso de )erfis m8veisU )or exem)lo#
Windo!s R* *rofessional9 o )rocedimento varia de acordo com a vers'o do Samba usada# Se vocV
est2 usando uma vers'o recente do SambaU da vers'o /#3 em dianteU a configura&'o bem mais
sim)lesU basta seguir os mesmos )assos da configura&'o no Windo!s ,333# Comece co)iando o
ar7uivo /usr/share/doc/samba-doc/registry/WinXP_SignOrSeal.reg ?do servidor@U 7ue
fica dis)onHvel ao instalar o )acote samba0doc# 5sta uma chave de registro 7ue )recisa ser instalada
no cliente# Acesse agora as )ro)riedades do *eu 4omputador e na aba %ome do 4omputador cli7ue
no bot'o 8< de rede# Ser2 aberto um Wi.ard 7ue coleta o nome do domHnioU nome da m27uina e
login de usu2rio# Lembre-se 7ue necess2rio efetuar o )rimeiro logon como root# Se n'o der certo da
)rimeira ve.U acesse o 'ainel de controle 5 @erramentas administrati.as 5 <ireti.a de se/uran9a
local 5 <ireti.as locais 5 &p9?es de se/uran9a e desative as seguintes o)&;es9
Membro do domHnio9 cri)tografar ou assinar digitalmente os dados de canal seguro ?sem)re@
Membro do domHnio9 desativar altera&;es de senha de conta da m27uina
Membro do domHnio9 re7uer uma chave de se&'o de alta seguran&a ?Windo!s ,333 ou
)osterior@
*ara confirmar se os clientes est'o realmente efetuando logon no servidorU use o comando
smbstatus#
2.,.2.4 $onfigurando os $om"artil>amentos usando o SHat
: Samba )ode ser configurado atravs do SwatU 7ue um utilit2rio de configura&'o via !eb#Manter o
X instalado e ativo num servidor dedicado considerado um des)erdHcio de recursosU )or isso os
desenvolvedores de utilit2rios de configura&'o evitam de)ender de bibliotecas gr2ficas# Deste modoU mesmo
distribui&;es minimalistas )odem incluH-los#
: Swat iniciali.ado atravs do Inetd# A fun&'o do inetd e xinetd )arecidaU eles monitoram
determinadas )ortas MC* e carregam servi&os sob demanda# -sto evita 7ue utilit2rios 7ue s'o acessados
es)oradicamente ?como o S!at@ )recisem ficar ativos o tem)o todoU consumindo recursos do sistema# A)esar
dissoU a configura&'o dos dois diferente9 no caso das distribui&;es 7ue usam o inetdU vocV ainda )recisa
adicionar ?ou descomentar@ a linha abaixo no ar7uivo de configura&'o do inetdU o /etc/inetd.conf9
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
*ara 7ue a altera&'o entre em vigorU reinicie o inetd com o comando9
/etc/init.d/inetd restart
*ara acessar o SwatU basta um bro!ser dis)onHvel e acessar o endere&o ttp=11localost=ABC. Oo
)rom)t de loginU forne&a a senha de root ?do sistema@ )ara acessar# Ao abrir o SwatU na )arte de cima est'o
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /<
os linAs )ara as se&;es da configura&'o#
Oa se&'o PasswordU vocV )ode cadastrar usu2riosU substituindo o uso manual do comando
smbadduser -a# Oeste casoU vocV )recisar2 )rimeiro cadastrar os usu2rios utili.ando comando adduser,
o Swat a)enas cadastra os usu2rios no Samba#
5m seguidaU acesse a se&'o GlobalsU 7ue engloba todas as configura&;es de rede e acesso# Oas
o)&;es workgroup e netbios nameU vocV deve colocar o nome do com)utador e o gru)o de trabalho a 7ue
ele )ertenceU como faria numa m27uina Windo!s#
A o)&'o netbios aliases )ermite criar apelidos )ara o servidorU de modo de 7ue ele )ossa ser
acessado )or mais de um nome# %sando um aliasU o servidor realmente a)arece duas ve.es no ambiente de
redeU como se fossem duas m27uinas#
A )r8xima o)&'o a interfacesU 7ue )ermite limitar os acessos ao servidor se vocV tiver mais de
uma )laca de rede#
Oa se&'o Security Options chegamos a uma das decis;es mais im)ortantesU decidir entre entre
utili.ar seguran&a com base no login do usu2rio ?user@ ou com base no com)artilhamento ?share@#
A o)&'o sare oferece um nHvel de seguran&a semelhante ao de uma m27uina Windo!s 0(# :s
com)artilhamentos )odem ser acessados )or todos os usu2riosU atravs da conta guest# 5m com)ensa&'oU
esta o)&'o a mais sim)les de configurar e )ode ser Ttil em )e7uenas redes onde n'o h2 necessidade de
seguran&a#
A o)&'o user a mais recomend2velU )ois )ermite es)ecificar exatamente 7uais usu2rios ter'o acesso
a cada com)artilhamentoU como num servidor OM ou Windo!s ,333# OaturalmenteU )ara 7ue isso funcioneU
necess2rio 7ue vocV tenha registrado todos os usu2rios no Linux e no Samba ?como vimos anteriormente@U e
7ue os clientes Windo!s efetuem login na rede usando estes mesmos logins e senhasU ou os forne&am na
hora de acessar os com)artilhamentos#
5scolhendo este modoU as )ermiss;es de acesso aos com)artilhamentos do samba ficam
condicionadas Cs )ermiss;es de acesso de cada usu2rio# *or exem)loU se vocV com)artilhar a )asta
/home/<NomeDoUsuario>/arquivosU )or default a)enas o usu2rio es)ecificado ter2 )ermiss'o )ara
gravar novos ar7uivos e alterar o conteTdo da )asta# *ara 7ue outros usu2rios tenham acesso C )astaU vocV
deve dar )ermiss'o a elesU criando um novo gru)o e dando )ermiss'o de escrita )ara os integrantes do gru)o
ou adicionando os demais usu2rios no gru)o do usu2rioU e configurando as )ermiss;es de acesso de forma
7ue o gru)o )ossa escrever na )asta#
Mais abaixoU temos a o)&'o Encrypt Password# 5la tambm im)ortantHssimaU e deve ser
configurada de acordo com a vers'o do Windo!s 7ue rodar nas m27uinas clientes# : Windo!s 06 original
no su)orta encri)ta&'o de senhasU )or isso s8 )oder2 se conectar ao servidor caso a o)&'o seQa configurada
com o valor ZOoZ# *ormU o Windo!s 06 :S>S,U Windo!s 0(SS5SM5U Windo!s OMU Windo!s ,333 e
Windo!s R* utili.am senhas encri)tadasU ent'oU ao utili.ar m27uinas com 7ual7uer um destes sistemas ?7ue
o mais )rov2vel@ a o)&'o deve ser configurada como DesU caso contr2rio o Samba sim)lesmente n'o
conseguir2 conversar com as m27uinas Windo!s#
A )artir do Samba / existe a o)&'o de fa.er com 7ue o )r8)rio Samba mantenha as senhas dos
usu2rios sincroni.adas em rela&'o Cs senhas dos mesmos no sistema# *ara ativar este recursoU ative a o)&'o
unix password sync no S!at# :riginalmenteU esta o)&'o fica desativada e a)arece a)enas dentro das
o)&;es avan&adas# *ara chegar at ela vocV deve clicar no bot'o Change View To: Advanced no to)o da
tela# De)ois de alterarU cli7ue no Commit Changes#
*ara 7ue tudo funcioneU necess2rio 7ue as o)&;es passwd program e passwd chat esteQam
configuradas com os valores9 /usr/bin/passwd %u e *Enter\snew\sUNIX\spassword:* %n\n
*Retype\snew\sUNIX\spassword:* %n\n . # 5stes Q2 s'o os valores )adr'o no SwatU mas n'o custa
verificar#
A o)&'o Hosts Allow deve incluir os endere&os -* de todos os com)utadores 7ue ter'o )ermiss'o
)ara acessar o servidor# A o)&'o Hosts Deny )or sua ve. )ermite es)ecificar m27uinas 7ue n'o ter'o
)ermiss'o )ara acessar o servidor# GocV )ode usar o Hosts Deny )ara estabelecer exce&;es ao dito na o)&'o
Hosts Allow#
Oa se&'o Browse OptionsU a o)&'o OS Level )ermite es)ecificar 7ual chance o servidor Linux
ter2 de ser o Master Browser do gru)o de trabalho ou domHnio# Sem)re 7ue vocV estiver configurando o
Samba )ara ser o servidor )rinci)alU deseQ2vel 7ue ele seQa o master browser#
*ara issoU configure esta o)&'o com um valor altoU $33 )or exem)loU )ara 7ue ele sem)re ganhe as
elei&;es# : default dessa o)&'o ,3U 7ue fa. com 7ue ele )erca )ara 7ual7uer m27uina Windo!s OMU
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /=
Windo!s ,333 ou Windo!s R*# *ara com)letarU deixe a o)&'o Local Master e Preferred Master
como Des#
AbaixoU deixe a o)&'o Wins Su))ort ativada ?des@# A o)&'o Wins Server deve ser deixada em brancoU
a menos 7ue exista na rede algum servidor Wins ?rodando o OM server ou o ,B server@ ao 7ual o servidor
Linux esteQa subordinado# Caso o Tnico servidor seQa a m27uina LinuxU vocV )ode configurar as m27uinas
Windo!s )ara utili.2-la como servidor WinsU )ara isto basta colocar o seu endere&o -* no cam)o Ser.idor
!ins na configura&'o de rede das esta&;es#
MerminandoU )ressione o bot'o Commit Changes no to)o da tela )ara 7ue as altera&;es seQam salvas
no ar7uivo /etc/samba/smb.conf#
%ma observa&'o im)ortante 7ue o Swat lV o ar7uivo /etc/smb/smb.conf ao ser abertoU lendo as
o)&;es configuradas e mostrando-as na interfaceU mas gera um novo ar7uivo sem)re 7ue vocV clicar no
Commit Changes# Ao ler o ar7uivoU ele )rocura )or trechos es)ecHficos de textoU ignorando tudo 7ue for
diferente# -sso fa. com 7ue ele remova 7ual7uer ti)o de coment2rio incluHdo manualmente no ar7uivo#
De)ois de cadastrar os usu2rios no sistema e no Samba e configurar a se&'o GlobalsU falta a)enas
configurar as )astas 7ue ser'o com)artilhadas com as esta&;esU atravs da se&'o Shares#
Cada usu2rio v2lido cadastrado no sistema )ossui automaticamente um diret8rio home# 5stas )astas
ficam dentro do diret8rio Shome e )odem ser usadas )ara guardar ar7uivos )essoaisU Q2 7ueU a menos 7ue seQa
estabelecido o contr2rioU um usu2rio n'o ter2 acesso C )asta )essoal do outro# Alm dos diret8rios homeU
vocV )ode com)artilhar mais )astas de uso geral#
*ara criar um com)artilhamentoU basta escrever seu nome no cam)o no to)o da tela e clicar no bot'o
Create Share#
De)ois de criado um com)artilhamentoU escolha-o na lista e cli7ue no bot'o Choose Share )ara
configur2-la# GocV ver2 uma lista de o)&;esU contendo cam)os )ara es)ecificar usu2rios v2lidos e inv2lidosU
usu2rios 7ue )odem ou n'o escrever no com)artilhamentoU nomes ou endere&os de m27uinas entre outras
o)&;es#
: cam)o path o mais im)ortanteU )ois indica Qustamente 7ual )asta do sistema ser2 com)artilhada#
: nome do com)artilhamento di. a)enas com 7ue nome ele a)arecer2 no ambiente de redeU 7ue n'o )recisa
necessariamente ser o mesmo nome da )asta#
A o)&'o comment )ermite 7ue vocV escreva um breve coment2rio sobre a )asta 7ue tambm )oder2
ser visuali.ado )elos usu2rios no ambiente de rede# 5ste coment2rio a)enas )ara orienta&'oU n'o tem efeito
algum sobre o com)artilhamento#
A o)&'o read only determina se a )asta ficar2 dis)onHvel a)enas )ara leitura ou se os usu2rios
)oder'o tambm gravar ar7uivos# GocV )ode tambm determinar 7uais m27uinas ter'o acesso ao
com)artilhamento atravs das o)&;es Hosts Allow e Hosts Deny# As configura&;es feitas a7ui
subscrevem as feitas na se&'o global#
A o)&'o browseable )ermite configurar se o com)artilhamento a)arecer2 entre os outros
com)artilhamentos do servidor no ambiente de redeU ou se ser2 um com)artilhamento ocultoU 7ue )oder2 ser
acessado a)enas )or 7uem souber 7ue ele existe# -sso tem uma fun&'o semelhante a colocar um ZcZ numa
)asta com)artilhada no Windo!s 0(# 5la fica com)artilhadaU mas n'o a)arece no ambiente de rede# A)enas
usu2rios 7ue saibam 7ue o com)artilhamento existe conseguir'o acess2-lo# 5sta o)&'o tem efeito a)enas
sobre os clientes Windo!sU )ois no Linux a maior )arte dos )rogramas clientes ?como o Smb4A@ mostram os
com)artilhamentos ocultos )or )adr'o#
LinalmenteU a o)&'o available es)ecifica se o com)artilhamento est2 ativado ou n'o# GocV )ode
desativar tem)orariamente um com)artilhamento configurando esta o)&'o como %o# La.endo issoU ele
continuar2 no sistema e vocV )oder2 torn2-lo dis)onHvel 7uando 7uiserU alterando a o)&'o )ara Des#
%m detalhe im)ortante 7ue os usu2rios s8 ter'o )ermiss'o )ara acessar )astas 7ue o login )ermite
acessar# *or exem)loU no Linux o Tnico usu2rio 7ue )ode acessar a )asta Sroot o )r8)rio rootU ou outro
autori.ado )or ele# Mesmo 7ue vocV com)artilhe a )asta root atravs do SambaU os demais usu2rios n'o
)oder'o acess2-la#
*ara editar as )ermiss;es de uma )astaU basta abrir o gerenciador de ar7uivos eU nas )ro)riedades da
)astaU acessar a guia Permisses# As )ermiss;es )odem ser dadas a)enas ao usu2rioU )ara todos os usu2rios
)ertencentes ao gru)o do usu2rio dono da )astaU ou )ara todos os usu2rios# A o)&'o 7plicar mudan9as a
todas as subpastas e seus conteEdos deve ficar marcada )ara 7ue as )ermiss;es seQam a)licadas tambm Cs
sub)astas#
Merminadas as configura&;esU o servidor Q2 ir2 a)arecer no ambiente de redeU como se fosse um
servidor Windo!s# :s com)artilhamentos )odem ser acessados de acordo com as )ermiss;es 7ue tiverem
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /(
sido configuradasU ma)eados como unidades de redeU entre outros recursos#
*ara com)artilhar uma im)ressora Q2 instalada na m27uina LinuxU o )rocedimento o mesmo# Dentro
do SwatU acesse a se&'o printersU escolha a im)ressora a ser com)artilhada ?a lista mostrar2 todas as
instaladas no sistema@U configure a o)&'o available como ZJesZ e configure as )ermiss;es de acesso como
vimos anteriormente#
2.,.2.# -ermitindo %ue os usurios com"artil>em "astas
Caso vocV 7ueira )ermitir 7ue os usu2rios tambm criem com)artilhamentosU assim como no
Windo!sU o BD5 )ossui um m8dulo 7ue resolve essas necessidadesU )ermitindo 7ue os usu2rios
com)artilhem ar7uivos dentro dos seus res)ectivos diret8rios de usu2rio#
*ara 7ue este recurso funcioneU vocV deve instalar o m8dulo de com)artilhamento de ar7uivos do
Bon7ueror# Oo DebianU ele fornecido )elo )acote kdenetwork-filesharing ?geralmente Q2 vem
instalado Quntamente com o AonAeror@9
apt-get install kdenetwork-filesharing
Como os usu2rios )odem a)enas com)artilhar seus )r8)rios ar7uivosU a )ossibilidade de danos ao
sistema )e7uena# Dentro do Centro de Controle do BD5U acesse a se&'o 8nternet F Rede05
4ompartilamento de arqui.os# Cli7ue no Modo administradorU forne&a a senha de root e mar7ue a o)&'o
Com)artilhamento sim)les#
Oo bot'o )su6rios permitidos vocV tem a o)&'o de autori.ar todos os usu2rios ?)ermitir a todos os
usu2rios com)artilhar )astas@ ou autori.ar a)enas os usu2rios de um determinado gru)o# Oeste casoU use o
Zusers-adminZ ou outro )rograma de configura&'o de usu2rios e gru)os )ara criar um novo gru)o e adicionar
os usu2rios deseQados a ele#
5ste com)artilhamento do BD5 fa. na verdade um du)lo com)artilhamento# Alm do SambaU os
com)artilhamentos ficam dis)onHveis na rede atravs do NFSU )ermitindo 7ue vocV )ossa escolher 7ual
)rotocolo )refere usar em cada caso# Lembre-se de 7ue seU vocV n'o 7uiser o com)artilhamento via NFSU
basta desativar o servi&o NFS# *ara 7ue o com)artilhamento funcioneU vocV dever2 ter o servidor e o cliente
Samba instalados no sistema e manter o servi&o SMB ativo#
2.,.2., Acessando m%uinas JindoHs
Im"ortante( : Linux somente somente sabe o 7ue um -*U caso 7ueira reali.ar um com)artilhamento
)elo nome da m27uinaU vocV dever2 acrescentar o nome de todas as m27uinasU bem como o seu -* no ar7uivo
/etc/hosts.
Y )ossHvel se acessarU a )artir de uma m27uina Linux rodando SambaU diret8rios com)artilhados
residindo em *C rodando Windo!s# *ara montar o com)artilhamentoU use o comando smbmountU mas n'o
es7ue&a de com)artilhar )rimeiramente o recurso no Windo!s e de)ois mont2-lo no Linux# 5xem)lo9
smbmount //K6II500/C /mnt/arqs -o username=Juca, password=tada
df
Sist. Arq. 1K-blocos Usad Dispon. Uso% Montado em
/dev/sda3 18263556 10380536 6955268 60% /
tmpfs 256880 0 256880 0% /dev/shm
tmpfs 10240 116 10124 2% /dev
//K6II500/C 5002368 4393856 608512 88% /mnt/arqs
A ma7uina Windo!s chama-se B<--633 e o nome com)artilhamento C# : com)artilhamento
montado em SmntSar7s# Caso vocV n'o es)ecificar o usu2rio e a senha o comando solicitar2 essas
informa&;es#
2.,.3 Ceramentas Grfica 7 inFeig>bor>ood
Como o nome sugereU o LinNeighborhood visa simular um ambiente de rede nos clientes Linux# 5le
)ode ser usado tanto )ara acessar com)artilhamentos de m27uinas Windo!s 7uanto de outros micros Linux
7ue esteQam rodando um servidor Samba# *ara instalar no seu sistema use9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br /0
apt-get install linneighborhood
*or default o linneighborhood montar2 todos os com)artilhamentos dentro da )asta mntU no seu
diret8rio de usu2rioU mas vocV )ode montar em outra )asta 7ual7uer se deseQar#
Ouma m27uina 7ue usada )or v2rios usu2riosU vocV )ode criar uma )asta 7mbiente de Rede no
diret8rio rai. e montar todos os com)artilhamentos de rede dentro dela# Assim a mesma configura&'o serve
)ara todos os usu2rios e vocV ainda cria um ambiente semelhante ao 7ue eles est'o acostumados no
Windo!s#
2.,.4 )utro e!em"lo de configurao do Samba
Abaixo a)resentado um exem)lo com)leto e comentado da configura&'o de um servidor samba#
# Exemplo de arquivo de configurao para o Samba
# smb.conf,v 1.2.4.6 2002/03/13 18:56:16
# Autor: Roberson Carlos Fox
#================ Global Settings ====================
[global]
# Executa uma ao quando o Samba trava:
panic action = /usr/share/samba/panic-action %d
# Nome do Grupo de Trabalho
workgroup = genova
# Descrio ou comentrio
server string = %h server (Samba %v)
# Descomente a linha abaixo caso queira carregar automaticamente as impressoras
; load printers = yes
# Descomente a linha abaixo caso voc queira admitir o acesso de usurios usando a
conta de convidados
; guest account = nobody
invalid users = root
# Isto diz ao Samba para usar um arquivo de log para cada mquina que a ele se
conectar
log file = /var/log/samba/log.%m
# Define o tamanho dos arquivos de Log
max log size = 1000
# uma boa idia deixar a opo security = user, isto vai obrigar o usurio a
# ter uma conta no servidor, pois sempre que algum se logar a ele ser
# requisitada a senha e o login
; security = user
# Voc pode querer usar encriptao de senha para dificultar ainda mais
# a ao de pessoas mal intencionadas deixando como True a opo abaixo:
encrypt passwords = false
passdb backend = smbpasswd guest
# Voc pode usar um arquivo customizado de
# configurao deixando descomentada a linha abaixo, a macro %m deve ser
# substituda pelo nome da mquina que esta conectada.
; include = /home/samba/etc/smb.conf.%m
# Muitas pessoas afirmam que esta opo melhora a performance do
# Servidor, voc pode querer adicionar a seguinte linha no seu Smb.Conf.
# SO_RCVBUF=8192 SO_SNDBUF=8192
socket options = TCP_NODELAY
#----------------------- Browser Control Options ---------------------
# Mude o Local Master para NO caso voc no queira o samba como um
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 43
# Master Browser na sua Rede
local master = yes
; os level = 20
# D suporte a logins de redes para o Windows 2000 e XP
; domain logons = yes
# No use esta opo caso voc tenha um Domnio Windows NT fazendo
# o trabalho de Domain Master
; domain master = auto
; preferred master = auto
#--- End of Browser Control Options ---
# seo de Suporte a Windows Internet Name Serving:
# Wins Support - Diz ao componente do Samba NMBD para ativar este Wins Server
; wins support = yes# WINS Server - Diz ao NMBD para ser
# um Cliente WINS Veja que: O Samba pode ser um WINS
# Server, ou um WINS Client, mas no os 2
; wins server = w.x.y.z
# Inclui informaes do servidor DHCP, se este no estiver instalado
# comente esta linha abaixo.
include = /etc/samba/dhcp.conf
# Isto previne o NMBD de procurar por nomes NetBios em DNS.
dns proxy = no
# Define o Chat para a alterao de senhas e define o programa de senhas
passwd program = /usr/bin/passwd %u
passwd chat = *InsirasUmasNovasSenha:* %n *RedigitesAsSenha:* %n .
# Habilita logins com caracteres maisculos e minsculos e mantm os # caracteres
dos nomes de arquivos na sua exata forma
; password level = 8
; preserve case = yes
# Os seguintes parmetros somente sero teis caso voc tenha o pacote
# linpopup instalado
; message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
obey pam restrictions = yes
#=================== Share Definitions ====================
[homes]
comment = Diretrios Pessoais
browseable = no
# Por padro os diretrios pessoais so exportados com o modo
# somente-Leitura
# Altere o prximo parmetro para YES se voc que deix-los como Leitura e
#Escrita
writable = no
# A criao de arquivos setada como 0700 por razes de segurana se voc
# deseja criar arquivos com permisses group=rw, ento marque o prximo
# parmetro como 0775
create mask = 0700
# A criao de diretrios usa como padro permisses 0700 como medida de
# segurana, caso voc queira que as permisses sejam group=rw ento
# marque o parmetro abaixo como 0775.
directory mask = 0700
# Descomente as linhas abaixo e crie o diretrio NETLOGON para Domain
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4$
#Logons
# voc ter que configurar o Samba para agir como um controlador de #domnios
tambm
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; write list = ntadmin
# Cria um compartilhamento de arquivos temporrios, este est definido no
#diretrio /tmp, pode ser lido
# e escrito, publico.
[tmp]
comment = Arquivos temporrios
path = /tmp read only = no public = yes
# Esta parte cria uma rea pblica a todos os usurios
# Esta rea fica no diretrio /home/public (Voc pode alterar o local se quiser)
# Para os arquivos que estejam nesta rea permitido
# a impresso a leitura e a impresso mesmo sendo um usurio com um ID
#longe do root. [public]
comment = Area Publica
path = /home/public
public = yes
writable = yes
printable = yes
# A linha abaixo determina qual o grupo que tem permisso para escrever nos
# Arquivos depositados neste diretrio, altere o valor 'admin' para o grupo
# Que voc quer que tenha permisso para escrever
# Nos arquivos.
; write list = @admin
# Comente as linhas abaixo caso no queira compartilhar impressoras
[printers]
comment = Todas as Impressoras
browseable = no
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700
# Um exemplo para compartilhar seu CD-Rom com os outros usurios:
# Pode ser que voc precise criar o diretrio /cdrom (Descomente as linhas
#abaixo caso queira compartilhar)
;[cdrom]
; comment = CD-Rom em Servidor Samba
; writable = no
; locking = no
; path = /cdrom
; public = yes
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
# Os prximos 2 parmetros mostram como montar automaticamente um
# CD-Rom quando este for acessado, para isto o arquivo /etc/fstab
# precisa conter uma entrada como esta
# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0
# Isto se voc possui um cdrom em /dev/scd0
# Se voc no quer usar o auto mount esteja certo que o CD esteja montado # em
/cdrom
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4,
2.* Cups 9Common Uni( Printin$ S3stem:
: Cups )ossui um recurso nativo de com)artilhamento de im)ressoras# 5le )ermite n'o a)enas
com)artilhar im)ressoras com outras m27uinas LinuxU mas tambm com m27uinas Windo!s da redeU
usando um servidor unificado# *ara instalar o Cups use9
apt-get install cupsys
Com)artilhar im)ressoras atravs do Cups mais sim)les do 7ue fa.V-lo atravs do Samba e oferece
uma vantagem adicional de )ermitir o uso do recurso de autodiscover do Cups nos clientes Linux#
: autodiscover )ermite 7ue os clientes Linux da rede reconhe&am automaticamente a im)ressora
com)artilhada e Q2 a configurem durante o bootU sem necessidade de nenhuma interven&'o manual#
Durante o boot o cliente manda um broadcast )ara a redeU solicitando )ara as m27uinas )resentes
na redeU se alguma est2 com)artilhando im)ressorasU caso exista um servidor de im)ress'o instalado em
alguma?s@ ma7uina?s@U o )rograma servidor res)onde 7ue est2 com)artilhando uma determinada im)ressora
e Q2 envia o driver usado )ela im)ressora# Como ambos est'o rodando o Cups significa 7ue o cliente usa o
mesmo conQunto de drivers de im)ress'o do servidorU isso )ermite 7ue ele sim)lesmente configure a
im)ressora usando as informa&;es recebidasU sem )recisar )erguntar nada ao usu2rio#
Caso vocV )recise adicionar a im)ressora manualmenteU execute o kaddprinterwizard ?escolha no
modo gr2fico ou digite no terminal@ e selecione a o)&'o Remote CUPS Server# Lorne&a o endere&o -* do
servidor na rede locale a )orta onde o Cups est2 escutandoU 7ue )or )adr'o a </$U ou ent'o escolha uma
im)ressora local#
Oos clientes Windo!s a configura&'o semelhante# 5les n'o su)ortam o autodiscover )or isso
)reciso adicionar a im)ressora manualmente )elo *ainel de Controle# Gamos su)or 7ue vocV deseQa
com)artilhar a im)ressora h)# Oa m27uina servidora digite http://localhost:631U 7ue automaticamente
a)arecer2 a tela de configura&'o do Cups#
Acesse a o)&'o Manage Printers e cli7ue no linA da im)ressora 7ue ser2 usada# GocV ver2 um
endere&o como http://192.168.0.10:631/printers/hp ?o -* informado -* da m27uina servidora
de im)ress'o@ na barra do navegador# 5ste o endere&o da sua im)ressoraU 7ue vamos usar na instala&'o do
Windo!s#
De)endendo da vers'o do Windo!sU 7uando for instalar a im)ressoraU )oder'o ocorrer erros di.endo
7ue n'o )ossHvel se conectar C im)ressora# DV um oA e volte C tela inicial# Mar7ue agora a o)&'o
8mpressora local e deixe marcado o <etectar a instalar automaticamente impressora 'lu/ and 'lay# 5le
dar2 outro erroU sim)lesmente confirme e diga 7ue 7uer indicar a im)ressora manualmente# GocV ver2 7ue
a)esar dos erros a im)ressora a)arecer2 dis)onHvel no final da lista# +asta selecion2-la e continuar com o
)rocesso normal de instala&'o da im)ressoraU fornecendo o CD de drivers# : Cups um servidor de
im)ress'o muito s8lidoU ele raramente d2 )roblemas#
2., Ser!idor D8CP 9D3namic 8ost Con%i$uration Protocol:
: DHCP um servi&o de rede 7ue res)ons2vel )ela atribui&'o de endere&os IPs )ara todos os
clientes da rede de forma automati.ada# -sso )ossibilita a configura&'o r2)ida de todos clientes sem 7ue seQa
necess2ria muita configura&'o local# Sem)re 7ue uma m27uina cliente )recisa de informa&;es sobre a redeU a
mesma fica enviando )acotes em broadcast at 7ue o servidor DHCP retorna uma configura&'o )ara
mesma#
*eriodicamente o servidor DHCP verifica se as esta&;es ainda est'o l2U exigindo uma renova&'o do
endere&o -* ?lease time@# Assim os endere&os IP s'o utili.ados a)enas com os e7ui)amentos 7ue estiver
onlineU evitando 7ue os endere&os dis)onHveis se esgotem#
: deamon 7ue executa o DHCP o dhcp3-server )ode ser instalado atravs do comando9
apt-get install dhcp3-server
: ar7uivo de scri)t /etc/init.d/dhcp3-server res)ons2vel )ela o)era&'o do DHCPU Q2 o
ar7uivo de configura&'o o Setc/dhcp3/dhcpd.conf# %m ar7uivo de configura&'o b2sicoU contm o
seguinte9
ddns-update-style none;
default-lease-time 600;
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4/
max-lease-time 7200;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.201;
option routers 192.168.0.10;
option domain-name-servers 200.177.250.10,200.204.0.10;
option broadcast-address 192.168.0.255;
}
*ara o exem)lo acimaU a o)&'o default-lease-time controla o tem)o de renova&'o dos endere&os
IPU nessa situa&'oU o valor <33 indica 7ue o servidor verifica a cada de. minutos ?<3 segundo R $3@ se as
esta&;es ainda est'o ativas# Se vocV tiver mais endere&os IP do 7ue m27uinas os endere&os -* das esta&;es
raramente vai )recisar mudar# MasU no caso de uma rede congestionadaU a o)&'o max-lease-time
determina o tem)o m2ximo 7ue uma esta&'o )ode usar um determinado endere&o IP#
A o)&'o range determina a faixa de endere&os IP 7ue )oder2 ser usada )elo servidor# X2 na option
routers vai o endere&o do default gateway da redeU ou seQaU o endere&o do servidor 7ue est2
com)artilhando a conex'o#
Oa o)&'o option domain-name-servers contm os servidores DNS 7ue ser'o usados )elas
esta&;es# Ao usar dois ou mais endere&os eles devem ser se)arados )or vHrgulaU sem es)a&os#
2.0.1 8A$- com I- fi!o 4anlise de /A$5
5ventualmenteU vocV )ode deseQar 7ue algumas m27uinas recebam sem)re o mesmo IPU )ara liberar
algumas )ortas e outros recursos# *ara )oder usar esta o)&'oU acrescente uma se&'o como abaixo )ara cada
m27uina 7ue deseQar )ossuir IP fixoU )ara facilitar esse trabalhoU anote o nTmero MAC de cada esta&'o#
Adicione as linhas abaixo no final do ar7uivo /etc/dhcpd.conf ?re)ita esse )rocedimento )ara cada
m27uina@9
host atendimento {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.0.12;
}
*ara descobrir o MAC das m27uinas use o comando ifconfig# Im"ortante9 n'o use mais de um
servidor DHCP na mesma faixa de redeU )ois )ode ocasionar conflitos de IP#
2.< Ser!idor S;uid
A )alavra Squid ?significa lula: um ser marinho com v2rios tent2culos 7ue )ega tudo 7ue )assa )or
)erto@#: Squid um servidor proxy-cacheU 7ue )ermite com)artilhar a conex'o entre v2rios microsU
servindo como um intermedi2rio entre eles e a -nternet# : proxy um servi&o 7ue alm de re)assar
re7uisi&;es de conex;esU ele analisa todo o tr2fego de dadosU se)arando o 7ue )ode ou n'o )ode )assar e
guardando informa&;es em cache )ara uso )osterior#
5xistem duas formas de se utili.ar proxyU uma usar o mesmo de forma concomitante com a conex'o
atual ?onde vocV )recisa es)ecificar em cada m27uina a configura&'o de proxy
6
@U ou ent'o usar proxy
trans)arente# As )rinci)ais vantagens de usar um proxy s'o9
Y )ossHvel im)or restri&;es de acesso com base no hor2rioU loginU endere&o -* da m27uina e outras
informa&;es e blo7uear )2ginas com conteTdo indeseQado_
: proxy funciona como um cache de )2ginas e ar7uivosU arma.enando informa&;es Q2 acessadas#
Kuando algum acessa uma )2gina 7ue Q2 foi carregadaU o proxy envia os dados 7ue guardou no
cacheU sem )recisar acessar a mesma )2gina re)etidamente# -sso acaba economi.ando banda na
conex'o com a -nternet e tornando o acesso mais r2)ido sem )recisar investir numa conex'o mais
r2)ida# Mesmo nas )2ginas dinWmicasU onde conteTdo muda a cada visitaU o proxy agili.a )ois
geralmente s'o mantidas figurasU bannersU anima&;es em flas )odem ser a)roveitadas do cacheU
diminuindo o tem)o total de carregamento# De)endendo da configura&'oU o )roxJ )ode a)enas
< Y necess2rio configurar o navegador e cada outro )rograma 7ue for acessar a internet em cada cliente )ara usar o )roxJ# 5sta uma tarefa tediosa
e 7ue acaba dando bastante dor de cabe&a a longo )ra.oU )ois cada ve. 7ue um micro novo for colocado na rede ser2 )reciso fa.er a configura&'o
novamente# Alm do navegadorU outros )rogramasU )odem ser configurados )ara trabalhar atravs do )roxJ9 Clientes de -CK e MSO e at
)rogramas *,*#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 44
acelerar o acesso Cs )2ginasU ou servir como um verdadeiro cache de ar7uivosU arma.enando
atuali.a&;es do Windo!s %)dateU do!nloads diversos e )acotes instalados atravs do a)t-get )or
exem)lo#
%ma terceira vantagem de usar um )roxJ 7ue ele loga todos os acessos# GocV )ode visuali.ar os
acessos )osteriormente usando o Sarg#
Ao usar um proxy trans)arenteU vocV tem basicamente uma conex'o com)artilhada via NATU com a
mesma configura&'o b2sica nos clientes# %ma regra de iptables envia as re7uisi&;es recebidas na )orta (3
do servidor )ara o proxyU 7ue se encarrega de res)onder aos clientes# Moda a navega&'o )assa a ser feita
automaticamente atravs do proxy.
2.1.1 Instalando o S%uid
A instala&'o do Squid bastante sim)les e )r2ticaU )ois o mesmo com)osto de um Tnico )acoteU
)ara instalar use9
apt-get install squid
Moda a configura&'o do Squid feita num Tnico ar7uivoU o /etc/squid/squid.conf# : ar7uivo
originalU instalado Qunto com o )acote muito com)letoU contm coment2rios e exem)los )ara 7uase todas as
o)&;es dis)onHveis#
A)esar do Setc/squid/squid.conf ser muito extensoU )ossHvel criar uma configura&'o
relativamente sim)les# :bserve o exem)lo abaixo9
http_port 3128 # executar na porta 3128
visible_hostname servidor # nome do servidor
acl all src 0.0.0.0/0.0.0.0 # regra chamada all se refere a todos IP
http_access allow all # diz que a regra all tem acesso permitido
Sem)re 7ue modificar 7ual7uer linha no ar7uivo de configura&'o do S7uidU vocV dever2 reiniciar o
servi&o ?restart@9
/etc/init.d/squid
Caso deseQar somente liberar algumas )ortasU vocV )ode criar aclFsU cada acl uma es)ecifica&'o de
uma regra# : exem)lo abaixoU mais com)letoU exem)lifica o uso de v2rias aclFs9
http_port 3128 # porta a ouvir
visible_hostname server # nome do servidor
acl all src 0.0.0.0/255.255.255.255 # regra all engloba todas redes
acl manager proto cache_object # regra manager da placa local
acl localhost src 127.0.0.1/255.255.255.255 # regra localhost para IP local
acl SSL_ports port 443 # regra SSL_ports composto de 443
acl SSL_ports port 563 # inclui tambem a porta 563
acl Safe_ports port 80 # regra Safe_ports para HTTP
acl Safe_ports port 21 # inclui ftp
acl Safe_ports port 443 563 # inclui https, snews
acl Safe_ports port 70 # inclui gopher
acl Safe_ports port 210 # inclui wais
acl Safe_ports port 1025-65535 # inclui portas acima de 1024
acl Safe_ports port 280 # inclui http-mgmt
acl Safe_ports port 488 # inclui gss-http
acl Safe_ports port 591 # inclui filemaker
acl Safe_ports port 777 # inclui multiling http
acl Safe_ports port 901 # inclui SWAT
acl purge method PURGE # cria uma acl de eliminao
acl CONNECT method CONNECT # cria uma acl de conexo
http_access allow manager localhost # permite acesso ao manager e localhost
http_access deny manager # probe os demais
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 46
http_access allow purge localhost # permite eliminar sujeiras
http_access deny purge # probe os demais
http_access deny !Safe_ports # bloqueia as portas que no so Safe
http_access deny CONNECT !SSL_ports # bloqueia conectar se no for SSL
acl redelocal src 192.168.1.0/24 # cria regra para rede 1.0
http_access allow localhost # permite acesso a localhost
http_access allow redelocal # permite acesso a redelocal
http_access deny all # probe todas as redes
De)ois de criadas as duas )olHticas de acessoU v'o duas linhas no final do ar7uivo 7ue es)ecificam 7ue
os micros 7ue se en7uadrarem nelas v'o )oder usar9
http_access allow localhost
http_access allow redelocal
A cl2usula http_access deny all di. 7ue todos 7ue )ertencerem a acl all ?todas interfaces de
rede@U estar'o )roibidas de acessarU no entanto como antes Q2 informei 7uem )odeU ela blo7uear2 todas redes
menos as Q2 liberadas#
) ordem das regras so de im"ortKncia &italL "ois o Squid inter"reta as regras na ordem em %ue
so colocadas no ar%ui&oL caso &ocM "ermite %ue o micro N acesse o proxyL ele acessarL mesmo %ue
uma regra mais abai!o diga %ue no.
*ara exem)lificar a cita&'o acimaU vamos criar um exem)lo onde )rimeiro uma rede ser2 liberadaU e
logo em seguida blo7ueadaU nesse casoU como a )ermiss'o vem antes da )roibi&'oU a )ermiss'o 7uem
vigora# :bserve o exem)lo abaixo9
acl redelocal src 192.168.1.0/24 # regra redelocal para rede classe C
http_access allow redelocal # permite acesso a redelocal
http_access deny redelocal # probe a acesso a redelocal
2.1.2 /el>orando as caracter@sticas do SO+I8
: S7uid trabalha com dois ti)os de cacheU um muito r2)ido 7ue mantm as informa&;es na memoria
>AM e outro em disco rHgido# A configura&'o da 7uantidade de mem8ria >AM dedicada ao cache feita
adicionando a o)&'o cache_memU 7ue contm a 7uantidade de mem8ria 7ue ser2 dedicada ao cache# *ara
reservar /, M+U )or exem)loU a linha ficaria cache_mem 32 MB#
*ara determinar o tamanho m2ximo dos ar7uivos 7ue ser'o guardados no cache de mem8ria >AM
vocV deve utili.ar maximum_object_size_in_memory# *ara 7ue o cache na mem8ria arma.ene ar7uivos
de at <4 B+ )or exem)loU adicione a linha maximum_object_size_in_memory 64 KB.
5m seguida vem a configura&'o do cache em discoU 7ue arma.enar2 a maior )arte dos ar7uivos# *or
defaultU o m2ximo s'o do!nloads de $< M+ e o mHnimo .eroU o 7ue fa. com 7ue mesmo imagens e
ar7uivos )e7uenos seQam arma.enados no cache#
Se vocV fa. do!nload de ar7uivos grandes e deseQa 7ue eles fi7uem arma.enados no cacheU aumente o
valor da o)&'o maximum_object_size -sto es)ecialmente Ttil )ara 7uem )recisa baixar muitos ar7uivos
atravs do a)t-get ou Windo!s u)date em muitos micros da rede# Se vocV 7uiser 7ue o cache arma.ene
ar7uivos de at 6$, M+ )or exem)loU as linhas ficariam maximum_object_size 512 MB
e )ara os menores minimum_object_size 0 KB.
Y )ossHvel definir a )ercentagem de uso do cache 7ue far2 o s7uid come&ar a descartar os ar7uivos
mais antigos# *or )adr'o isso come&a a acontecer 7uando o cache est2 a 03e 9
cache_swap_low 90 # comea a descartar
cache_swap_high 95 # descarta para atualizar
A configura&'o do tamanho do cache em disco )ro)riamente dita com)osta )or 7uatro valores# :
)rimeiroU /var/spool/squid indica a )asta onde o Squid arma.ena os ar7uivos do cache# GocV )ode
7uerer alterar )ara uma )asta em uma )arti&'o se)arada )or exem)lo#
Oo exem)lo abaixoU o valor ,34( indica a 7uantidade de es)a&o no ID ?em M+@ 7ue ser2 usada )ara
o cacheU os nTmeros $< ,6< indicam a 7uantidade de subdiret8rios 7ue ser'o criadas dentro do diret8rio#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4<
*or )adr'o temos $< diret8rios com ,6< subdiret8rios cada uma#
cache_dir ufs /var/spool/squid 2048 16 256
GocV )ode definir ainda o ar7uivo onde s'o guardados os logs de acesso do Squid# *or )adr'o o log
/var/log/squid/access.log# 5ste ar7uivo de logU tambm usado )elo sarg )ara gerar as )2ginas
com as estatHsticas de acesso#
cache_access_log /var/log/squid/access.log
*ara alterar o )adr'o de atuali.a&'o do cache# Sem)re modifi7ue as trVs em conQunto#
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
:s nTmeros indicam o tem)o ?em minutos@ 7uando o Squid ir2 verificar se um Htem do cache foi
atuali.adoU )ara cada um dos trVs )rotocolos# : )rimeiro nTmero indica 7ue o Squid verificar2 se todas as
)2ginas e ar7uivos com mais de $6 minutos foram atuali.ados# 5le s8 verifica checando o tamanho do
ar7uivoU o 7ue r2)ido# Se o ar7uivo n'o mudouU ent'o ele continua mandando o 7ue n'o est2 no cache
)ara o cliente#
: nTmero ,,(3 ?e7uivalente a dois dias@ indica o tem)o m2ximoU de)ois disso o obQeto sem)re
verificado# Alm do http e ftp o Squid su)orta o )rotocolo GopherU 7ue era muito usado nos )rim8rdios
da -nternet )ara locali.ar documentos de textoU mas )erdeu a relevWncia hoQe em dia#
Caso deseQarmos criar uma ar7uivo de configura&'o usando o 7ue foi mencionado acima9
http_port 3128
visible_hostname server
cache_mem 32 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4=
http_access deny all
2.1.3 Blo%ueando "or "ala&ras ou dom@nios
%ma forma f2cil de blo7uear sites no Squid criar uma lista de pala.rasU um ar7uivo de texto onde
vocV adiciona )alavras e domHnios 7ue ser'o blo7ueados no Squid.
+lo7uear um determinado domHnioU como )or exem)lo orkut.com n'o gera muitos )roblemasU mas
tome cuidado ao blo7uear )alavras es)ecHficasU )ois o Squid )assar2 a blo7uear 7ual7uer )2gina 7ue
contenha a )alavra em 7uest'o#
Se vocV blo7uear a )alavra sexo )or exem)loU 7ual7uer site ou artigo 7ue mencione a )alavra ser2
blo7ueado# Ao blo7uear )or )alavras vocV deve tentar ser es)ecHficoU blo7ueando a)enas Qarg;es e
ex)ress;es 7ue s'o encontradas a)enas nos sites 7ue vocV )retende blo7uear# *ara adicionar o filtro de
)alavrasU adicione as linhas9
acl proibidos dstdom_regex "/etc/squid/proibidos"
http_access deny proibidos
Oesse casoU estamos criando uma acl chamada proibidos 7ue gerada a )artir da leitura do ar7uivo
SetcSs7uidS)roibidosZU o ar7uivo de texto 7ue iremos editar# : acesso a 7ual7uer )2gina 7ue contenha
)alavras citadas no ar7uivo blo7ueada# : ar7uivo )ode conter )alavras e domHnios blo7ueadosU um )or
linha#
Orkut.com
playboy.com
lesbicas
Sem)re 7ue modificar alguma caracterHstica no ar7uivo ou ar7uivo de configura&'o do SquidU vocV
dever2 reiniciar o mesmo#
/etc/init.d/squid/restart
Caso 7ueiraU acrescente o c8digo abaixo no seu ar7uivo funcional )ara barrar certos sites9
acl proibidos dstdom_regex "/etc/squid/proibidos"
http_access deny proibidos
acl bloqueados dstdomain orkut.com www.orkut.com playboy.abril.com.br
http_access deny bloqueados
acl redelocal src 192.168.1.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all
2.1.4 Blo%ueando "or >orrio
Y )ossHvel reali.ar blo7ueios automati.ados em determinados hor2rios# *ara 7ue o proxy blo7ueie
acessos feitos entre meia-noite e <933 da manh' e no hor2rio de almo&o )or exem)lo9
acl madrugada time 00:00-06:00
http_access deny madrugada
acl almoco time 12:00-14:00
http_access deny almoco
5stas regras devem vir antes da regra http_access allow redelocal no ar7uivo de
configura&'o# :utro exem)lo9
acl almoco time 12:00-14:00
http_access allow almoco
5sta regra deve vir antes da regra http_access deny proibidos e http_access deny
proibidos# AssimU os acessos 7ue forem aceitos )ela regra do almo&oU n'o )assar'o )elas regras 7ue fa.em
o blo7ueio#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 4(
2.1.# -ro!I de Autenticao
GocV )ode adicionar uma camada extra de seguran&a exigindo autentica&'o no proxy# 5ste recurso )ode ser
usado )ara controlar 7uem tem acesso C -nternet# *ara ativar a autentica&'o vocV vai )recisar de um
)rograma chamado htpasswd# Se ele n'o estiver )resenteU instale o )acote apache-utils. 5m seguida
crie o ar7uivo 7ue ser2 usado )ara arma.enar as senhas ?caso n'o exista@9
touch /etc/squid/squid_passwd
A)8s ter criado o ar7uivo acimaU cadastre os logins usando o comando htpasswd
/etc/squid/squid_passwd <Nome>U onde [Oome\ o nome do usu2rio 7ue est2 sendo adicionado# 5x9
htpasswd /etc/squid/squid_passwd <Nome>
De)ois de terminar de cadastrar os usu2riosU adicione as linhas 7ue ativam a autentica&'o no
/etc/squid/squid.conf9
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
acl autenticados proxy_auth REQUIRED
http_access allow autenticados
Aten&'oU o /usr/lib/squid/ncsa_auth a locali.a&'o da biblioteca res)ons2vel )ela
autentica&'o# 5ventualmenteU ela )ode estar numa )asta diferenteU neste caso use o comando locate ou a
busca do KDE )ara encontrar o ar7uivo e altere a linha indicando a locali.a&'o correta#
2.1., $onfigurando um "ro!I trans"arente
%ma garantia de 7ue os usu2rios realmente v'o usar o proxy e ao mesmo tem)o uma grande
economia de trabalho e dor de cabe&a )ra vocV o recurso de proxy transparente# 5le )ermite
configurar o Squid de forma 7ue o servidor proxy fi7ue escutando todas as conex;es na )orta (3# Mesmo
7ue algum tente desabilitar o )roxJ manualmente nas configura&;es do navegadorU ele continuar2 sendo
usado#
Lembre-se 7ue )ara usar o )roxJ trans)arenteU vocV Q2 deve estar com)artilhando a conex'o no
servidorU via nat# : )roxJ trans)arente a)enas far2 com 7ue o )roxJ interce)te os acessos na )orta (3U
obrigando tudo a )assar )elas suas regras de controle de acessoU logU autentica&'o e cache#
Se vocV ainda n'o com)artilhou a conex'oU )ode fa.er isso manualmente rodando estes trVs
comandos9
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
-magine 7ue a sua rede local esteQa conectado ao servidor )ela eth3U e indica a )laca de rede 7ue est2
conectada na -nternet# GocV )ode checar a configura&'o da rede usando o comando ifconfig# 5m seguidaU
rode o comando 7ue direciona as re7uisi&;es recebidas na )orta (3 )ara o Squid#
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Oa linha acimaU )odemos ver 7ue assim 7ue chegam re7uisi&;es ?PREROUTING@ na eth3 usando o
)rotocolo tcp na )orta (3U as mesmas s'o redirecionadas )ara o )orta /$,( ?)orta de escuta do Squid@# *ara
7ue essa sua configura&'o sem)re seQa executada ao reiniciar o servidorU adicione os 7uatro comandos no
final do ar7uivo /etc/init.d/bootmisc.sh#
LinalmenteU vocV )recisa adicionar as seguintes linhas no final do ar7uivo
/etc/squid/squid.conf e restartar o servi&o9
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
:s comandos acimaU colocam o servidor como um gateway da rede )ara S7uid com vers;es menores
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 40
a ,#<# Ao ativar o proxy trans)arenteU a configura&'o dos clientes continuam igualU a Tnica diferen&a 7ue
agora todo o tr2fego da )orta (3 )assar2 obrigatoriamente )elo servidor S7uid#
*ara vers'o ,#< ou su)eriorU o conQunto de comandos acimaU devem ser descartadosU no entantoU
devemos modificar a )rimeira linha de configura&'o do SK%-DU mais )recisamente a linha 7ue informa 7ual
)orta ser2 utili.adaU acrescentando a )alavra transparent#
http_port 3128 transparent
5ssa a Tnica modifica&'o 7ue devemos fa.er no s7uid#conf )ara transformar o )roxJ em
trans)arente#
2.1= Ser!idor Completo de >7mail?s
Desenvolver um servidor de email com)letoU n'o uma tarefa trivialU )rinci)almente 7uando
deseQamos adicionar funcionalidades reais ao mesmo# Oessa se&'o ser2 a)resentado um es7uema 7ue
)ermitir2 reali.ar um servidor de alto )adr'o de funcionalidadeU )ara issoU devemos ter su)orte a domHnios
virtuaisU cota de e-mailU anti-vHrusU anti-s)amU ferramentas de relat8rios gr2ficas e em modo textoU
autentica&'o SMM* ?fundamentalU )or causa dos s)ammers@U acesso *:*/ e -MA*U tudo isso sendo
gerenciado )or uma ferramenta sim)les e f2cil de se utili.ar ?ferramenta !eb usando )h) ?se&'o ,#$#4@#
Antes de come&ar a instala&'o )ro)riamente ditaU devemos conhecer alguns termos e )rotocolos
fundamentais )ara melhor com)reens'o do 7ue estamos )rodu.indo#
/+A ?Mail %ser Agent@9 o MUA ou agente de usu2rio um )rograma 7ue )ermite aos usu2rios lerU
salvar e com)or mensagens de e-mail# 5x9 Mhunder+irdU BmailU :utlooA 5x)ress entre outros#
/DA ?Mail Mransfer Agent@9 o MTA um soft!are encarregado de direcionarU entregar e receber
mensagens entre servidores# %m agente de trans)orte deve aceitar o e-mail de um agente de usu2rio
?MUA@U com)reender os endere&os dos rece)tores e de alguma maneira entregar o e-mail )ara os hosts
corretos )ara entrega# 5sses agentes de trans)orteU falam SMTP (Sim)le Mail Mransfer *rotocol@ ou
ESMTP ?5xtended Sim)le Mail Mransfer *rotocol@U uma vers'o extendida do SMTP# 5x9 KmailU
*ostfixU 5ximU SendMail entre outros#
/2A ?Mail >etrieval Agent ?POPSIMAP client@@9 um )rograma res)ons2vel )or obter as mensagens
de um servidor de e-mail# 5le reali.a a conex'o autenticada com o servidor POP ou IMAP e entrega
as mensagens )ara serem filtradas )elo LDA# 5x9 LetchmailU 1etmailU >etchmail entre outros#
8A ?Local DeliverJ Agent@9 LDA ou agente de entrega aceita e-mail de um agente de trans)orte
remetendo aos rece)tores locais a)ro)riados# : LDA lV uma mensagem de e-mail da entrada )adr'o e
entrega a mensagem )ara uma es)ecHfica caixa de mensagemU de acordo com as instru&;es de
sele&'oU filtragem e )olHtica anti-s)am contidas em um ar7uivo de configura&'o# %m agente de
entrega )ode checar a sintaxe das regras contidas no ar7uivo de configura&'o e entregar a mensagem
em caixas )ostais alternativas ou es)ecHficas# 5x9 *rocmailU Maildro) entre outros#
*elo fato de n'o ser uma tarefa trivialU devemos instalar um conQunto de ferramentas )ara o nosso
)ro)8sito# Assim sendoU execute o comando abaixo#
apt-get install mysql-server mysql-client libmysqlclient15-dev courier-imap
courier-authlib-mysql courier-imap-ssl courier-pop courier-pop-ssl gcc libc6-dev g++
libgdbm-dev gcc-3.4 cpp make postfix postfix-mysql sasl2-bin libsasl2-modules-sql libpam-
mysql clamav-daemon clamav-freshclam amavisd-new phpmyadmin php4 apache php4-mysql
libapache-mod-php4 libgsasl7 libsasl2 libsasl2-dev libsasl2-modules libfile-mmagic-perl
libconfig-inifiles-perl libconvert-tnef-perl libconvert-uulib-perl libio-zlib-perl
libarchive-tar-perl libarchive-zip-perl libparse-syslog-perl libunix-syslog-perl libmime-
perl libmime-base32-perl libfile-mimeinfo-perl libnet-server-perl libnet-smtp-server-perl
libmd5-perl ncftp unzip ftp gnupg arj cabextract
Analisando os )acotes acimaU )odemos observar a existVncia do servidor de banco de dados mJs7l
?se&'o ,#,@ ?ser2 utili.ado )ara gerenciar os usu2riosU bem comoU emailPs enviados e recebidosU em outras
)alavrasU a estrutura como um todo ser2 arma.enada@U o servidor courierU tanto )ara -MA* 7uanto *:*U
ferramentas )ara eventuais com)ila&;esU o servidor )ostfix ?SMM*@U clamav ?anti-virus@U amavis ?anti-s)am@U
)h)mJadmin ?gerenciador mJs7l via !eb@U servidor a)ache ?se&'o ,#$@U )erlU utilit2rios de com)acta&'o e
v2rios m8dulos e bibliotecas necess2rias#
Como o gerenciamento e configura&'o de um servidor de emailPs um )rocesso relativamente
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 63
com)lexoU foram criadas ferramentas )ara auxiliar esses )rocedimentos# *ara instalar as mesmasU vocV deve
)rocurar na internet )or postfi>admin e o maildrop.
Caso deseQeU )ode tentar usar um site da sourceforgeU utili.ando os comandos abaixo ?)ode acontecer
7ue a vers'o abaixo n'o exista mais@# -dealmenteU execute os comandos abaixo estando no diret8rio
SusrSlocalSsrc ou ent'o fa&a o do!nload e )osteriormente os co)ie )ara esse diret8rio#
wget -c http://high5.net/postfixadmin/download.php?file=postfixadmin-2.1.0.tgz -O
postfixadmin.tgz
wget -c http://umn.dl.sourceforge.net/sourceforge/courier/maildrop-1.6.3.tar.bz2 -O
maildrop.tar.bz2
2.13.1 APustes no mIs%l
Su)ondo 7ue vocV esteQa instalando )ela )rimeira ve. o mJs7lU reali.e o )asso abaixoU )ois o mesmo
definir2 a senha do mJs7l ?senha de administrador@#
mysqladmin -u root password 'suasenha'
:utro fator im)ortante habilitar os logPs gerados )elo mesmoU eles servir'o )ara )osteriormente
analisarmos a utili.a&'o do servidor de email )elos usu2rios# *ara isso edite o ar7uivo 1etc1mysql1my.cnf e
descomente a seguinte linha ?retire b@9
#log = /var/log/mysql.log
Sem)re 7ue modificamos um ar7uivo de configura&'o de um )rograma servidorU devemos restart2-lo#
/etc/init.d/mysql restart
Oesse )onto falta ainda criar um usu2rio )ara gerenciar o maildropU )ara isso execute o comando
abaixo ?anote a senhaU )ois ser2 solicitada abaixo@9
adduser maildrop
-m)ortanteU ao executar o comando acimaU ser2 a)resentado na tela algo similar9
Acrescentando usurio maildrop...
Adding new group `maildrop' (1003).
Adding new user `maildrop' (1003) with group `maildrop'.
Criando diretrio pessoal /home/maildrop.
Copiando arquivos de /etc/skel
Enter new UNIX password:
Anote o nTmero 7ue a)arecer no gru)o e no usu2rio ?geralmente iguais?)adr'o Debian@@U )ois esses
valores ser'o utili.ados )elo )rocedimento a seguir#
2.13.2 $riando a estrutura de gerenciamento do "ostfi! no /ISO
Oesse )onto come&a a 2rdua tarefa de criar a estrutura de banco de dados necess2ria )ara arma.enar os
emailPs e suas necessidades es)eciais# Substitua no ar7uivo abaixo as linhas9
uid int(1003) unsigned default '1003',
gid int(1003) unsigned default '1003',
ondeU devemos trocar $33/ )ela -D do usu2rio ?%-D@ e gru)o ?1-D@ maildro) criados no
)rocedimento anteriormente#
Caso deseQeU )ode colocar todos os comandos abaixo em um ar7uivo textoU e de)ois executarU )ara isso
use9
mysql -u root -p < ARQUIVOCOMOSCOMANDOS
A senha solicitada ser2 a 7ue vocV cadastrou como senha do mJs7l# 5m seguida ser2 a)resentado todos
os comandos 7ue o usu2rio dever2 executar )ara criar a estrutura do mJs7l# Sem)re 7ue uma linha come&ar
com bU significa 7ue essa linha um coment2rioU assim sendoU n'o necess2rio digitar a mesma ?Substitua
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6$
no scri)t abaixo xxxxx )or sua senha#
#Inicio do script utilizado para criar a estrutura necessria no mysql
USE mysql
#Cria o usurio e senha do Postfix e Maildrop para poder acessar o banco de dados
#substitua o xxxxx abaixo pela senha que voc deseja para o postfix
INSERT INTO user (Host, User, Password)
VALUES('localhost','postfix',password('xxxxx'));
#substitua o xxxxx abaixo pela senha que voc deseja para o maildrop (pode ser a
mesma que j foi utilizada anteriormente)
INSERT INTO user (Host, User, Password)
VALUES('localhost','maildrop',password('xxxxx'));
INSERT INTO db (Host, Db, User, Select_priv) VALUES
('localhost','postfix','postfix','Y');
INSERT INTO db (Host, Db, User, Select_priv) VALUES
('localhost','postfix','maildrop','Y');
FLUSH PRIVILEGES;
# Cria o banco postfix
CREATE DATABASE postfix;
# Cria a estrutura da tabela alias
USE postfix;
CREATE TABLE alias (address varchar(255) NOT NULL default '', goto text NOT NULL,
domain varchar(255) NOT NULL default '', create_date datetime NOT NULL default '0000-00-
00 00:00:00', change_date datetime NOT NULL default '0000-00-00 00:00:00', active
tinyint(4) NOT NULL default '1', PRIMARY KEY (address)) TYPE=MyISAM COMMENT='Virtual
Aliases - mysql_virtual_alias_maps';
# Cria a estrutura da tabela domain
CREATE TABLE domain (domain varchar(255) NOT NULL default '', description
varchar(255) NOT NULL default '', transport varchar(255) NOT NULL default 'maildrop',
create_date datetime NOT NULL default '0000-00-00 00:00:00', change_date datetime NOT
NULL default '0000-00-00 00:00:00', active tinyint(4) NOT NULL default '1', PRIMARY KEY
(domain)) TYPE=MyISAM COMMENT='Virtual Domains - mysql_virtual_domains_maps';
CREATE TABLE mailbox (username varchar(255) NOT NULL default '',password
varchar(255) NOT NULL default '', name varchar(255) NOT NULL default '', home char(255)
default '/postfix/', maildir varchar(255) NOT NULL default '', quota varchar(255) NOT
NULL default '10000000S', domain varchar(255) NOT NULL default '', create_date datetime
NOT NULL default '0000-00-00 00:00:00', change_date datetime NOT NULL default '0000-00-00
00:00:00', active tinyint(4) NOT NULL default '1', passwd_expire enum('N','Y') default
'Y', uid int(10) unsigned default '1001', gid int(10) unsigned default '1001',PRIMARY KEY
(username)) TYPE=MyISAM COMMENT='Virtual Mailboxes - mysql_virtual_mailbox_maps';
# Cria o usurio de administrao do PostfixAdmin
USE mysql
INSERT INTO user (Host, User, Password) VALUES
('localhost','postfixadmin',password('xxxxx'));
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv,
Delete_priv)VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y', 'Y');
FLUSH PRIVILEGES;
# Cria a tabela de administrao do PostfixAdmin
USE postfix;
CREATE TABLE admin (username varchar(255) NOT NULL default '',password varchar(255)
NOT NULL default '', domain varchar(255) NOT NULL default '', create_date datetime NOT
NULL default '0000-00-00 00:00:00', change_date datetime NOT NULL default '0000-00-00
00:00:00', active tinyint(4) NOT NULL default '1', PRIMARY KEY (username)) TYPE=MyISAM
COMMENT='Virtual Admins - Store Virtual Domain Admins';
5xecutados todos os comandosU e sem erroU C )rinci)io estar2 tudo corretoU no entantoU vamos testar a
funcionalidade executando o seguinte comando9
mysql -D postfix -u postfix -p senha_do_postfix
Se a)arecer uma informa&'o similar a abaixoU o servi&o estar2 funcionando9
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6,
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7 to server version: 5.0.22-Debian_3-log
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
5xecute o comando abaixo )ara ter certe.a da estrutura criada9
mysql> show tables;
Dever2 a)arecer a seguinte estrutura9
+-------------------+
| Tables_in_postfix |
+-------------------+
| admin |
| alias |
| domain |
| mailbox |
+-------------------+
4 rows in set (0.00 sec)
5xecute o comando abaixo )ara ver a caracterHstica da estrutura da tabela alias9
mysql> desc alias;
: resultado dever2 ser9
+-------------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+-------+
| address | varchar(255) | NO | PRI | NULL | |
| goto | text | NO | | NULL | |
| domain | varchar(255) | NO | | NULL | |
| create_date | datetime | NO | | 0000-00-00 00:00:00 | |
| change_date | datetime | NO | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | NO | | 1 | |
+-------------+--------------+------+-----+---------------------+-------+
6 rows in set (0.00 sec)
A tabela alias o local onde ser'o criados os redirecionamentos de e-mail# 5xem)lo9
postmaster@dominio.com.br > usuario@dominio.com.br
postmaster@dominio2.com.br => usuario@dominio2.com.br, usuario1@dominio1.com.br
5xecute o comando abaixo )ara ver a caracterHstica da estrutura da tabela de domHnios9
mysql> desc domain;
: resultado dever2 ser9
+-------------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+-------+
| domain | varchar(255) | | PRI | | |
| description | varchar(255) | | | | |
| transport | varchar(128) | | | maildrop | |
| create_date | datetime | | | 0000-00-00 00:00:00 | |
| change_date | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+-------------+--------------+------+-----+---------------------+-------+
5xecute o comando abaixo )ara ver a caracterHstica da estrutura da tabela mailbox9
mysql> desc mailbox;
: resultado dever2 ser9
+---------------+------------------+------+-----+---------------------+-------+
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6/
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------------------+-------+
| username | varchar(255) | | PRI | | |
| password | varchar(255) | | | | |
| name | varchar(255) | | | | |
| home | varchar(255) | YES | | /postfix/ | |
| maildir | varchar(255) | | | | |
| quota | varchar(255) | | |10000000S | |
| domain | varchar(255) | | | | |
| create_date | datetime | | | 0000-00-00 00:00:00 | |
| change_date | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
| uid | int(10) unsigned | YES | | 108 | |
| gid | int(10) unsigned | YES | | 108 | |
| passwd_expire | enum('N','Y') | YES | | Y | |
+---------------+------------------+------+-----+---------------------+-------+
5ssa a )rinci)al tabelaU )ois nela ser'o cadastrados os usu2rios e suas configura&;esU como )or
exem)loU senhaU diret8rioU cota de discoU entre outras caracterHsticas#
5xecute o comando abaixo )ara ver a caracterHstica da estrutura da tabela admin9
mysql> desc admin;
: resultado dever2 ser9
+-------------+--------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------------------+-------+
| username | varchar(255) | | PRI | | |
| password | varchar(255) | | | | |
| domain | varchar(255) | | | | |
| create_date | datetime | | | 0000-00-00 00:00:00 | |
| change_date | datetime | | | 0000-00-00 00:00:00 | |
| active | tinyint(4) | | | 1 | |
+-------------+--------------+------+-----+---------------------+-------+
2.13.3 APustando o $ourier
*ara facilitar a configura&'o do courier altamente recomend2vel )egar uma estrutura )adr'oU )ara
isso iremos co)iar um o ar7uivo de exem)lo de 2arnin/ do cota9
cd /etc/courier
cp /usr/share/doc/courier-base/examples/quotawarnmsg.example quotawarnmsg
A)8s issoU devemos nos deter na autentica&'o# As estrutura de configura&'o default dos ar7uivos
imapd e popGd Q2 s'o funcionaisU no entantoU a medida 7ue for tendo mais intimidade com o servidor de
emailU altamente recomend2vel aQustar alguns itens )ara obter melhor desem)enho#
5dite o 1etc1courier1autmysqlrc# 5sse ar7uivo res)ons2vel )ela configura&'o do CourierU em outras
)alavrasU o res)ons2vel )ara fa.er a conex'o ao mJs7lU de forma a autenticar os usu2rios# AQuste esse
ar7uivo de acordo com sua necessidade ?mudar xxxx@#
MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD xxxxx
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE postfix
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD home
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 64
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_WHERE_CLAUSE active=1
A)8s tudo reali.adoU altamente im)ortante reiniciar os servi&osU )ara isso use ?)adr'o Debian@9
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-pop restart
*ara testar o funcionamento dos servidores execute um telnet nas suas )ortas9
telnet 143
telnet 110
2.13.4 $onfigurao do maildro"
GocV dever2 criar o ar7uivo 1etc1maildropmysql.confi/U os comandos de configura&'o )odem ser os
seguintesU os mesmos ser'o utili.ados )ara com)ilar e instalar o maildrop.
hostname localhost
port 3306
socket /var/lib/mysql/mysql.sock
database postfix
dbuser maildrop
dbpw suasenha
dbtable mailbox
default_gidnumber seuGI
default_uidnumber seu!I
uid_field username
uidnumber_field uid
gidnumber_field gid
maildir_field maildir
homedirectory_field home
quota_field quota
mailstatus_field active
where_clause ""
Antes de reali.ar a configura&'o devemos instalar o mesmoU na se&'o ,#$3U foi reali.ado o do!nload
do maildro)U o 7ual foi co)iado )ara o diret8rio 1usr1local1src# Oesse momento iremos descom)actarU
com)ilar o mesmo#
tar xvjf maildrop.tar.bz2
cd maildrop
./configure
--prefix=/usr
--sysconfdir=/etc/maildrop
--enable-maildrop-uid=seuUID
--enable-maildrop-gid=seuGID
--enable-syslog=1
--enable-maildropmysql
--enable-maildirquota
Gamos agora ao )rocesso de com)ila&'oU )ara isso digite9
make && make install
: *aildrop )ossui um recurso de aviso de email )ara o usu2rio caso a sua caixa )ostal ultra)asse a
)orcentagem de utili.a&'o de um valor es)ecificado# Oesse caso ser2 utili.ado o valor de 03e# Assim sendoU
vocV )oder2 )ersonali.ar a mensagem de aviso 7ue o usu2rio ir2 recebeU bastando )ara isso editar o ar7uivo9
/etc/courier/quotawarnmsg.
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 66
2.13.# $onfigurao do -ostfi!
*rimeiramente devemos verificar se o )acote instalado no sistema realmente tem su)orte ao MJSKLU
ou seQa )ossui o m8dulo de acessoU )ara isso digite no diret8rio 1etc1courier9
postconf -m
btree
cidr
environ
hash
mysql
nis
proxy
regexp
sdbm
static
tcp
unix
Caso )ossua o mJs7lU )odemos )assar )ara o )r8ximo )asso# 5ntre no diret8rio 1etc1postfi>1#
*rimeiramente criaremos o ar7uivo mysqlH.irtualHaliasHmaps.cf com o seguinte conteTdo ?substitua
xxxx )ela senha 7ue cadastrou )ara o usu2rio )ostfix@9
user = postfix
password = xxxxx
dbname = postfix
table = alias
select_field = goto
where_field = address
hosts = localhost
Agora criaremos o ar7uivo mysqlH.irtualHmailbo>Hmaps.cf com o seguinte conteTdo ?substitua xxxx
)ela senha 7ue cadastrou )ara o usu2rio )ostfix@9
user = postfix
password = xxxxx
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
hosts = localhost
Agora criaremos o ar7uivo mysqlHtransportHmaps.cf com o seguinte conteTdo ?substitua xxxx )ela
senha 7ue cadastrou )ara o usu2rio )ostfix@9
user = postfix
password = xxxxx
hosts = localhost
dbname = postfix
table = domain
select_field = transport
where_field = domain
Agora criaremos o ar7uivo mysqlH.irtualHmailbo>HlimitHmaps.cf com o seguinte conteTdo ?substitua
xxxx )ela senha 7ue cadastrou )ara o usu2rio )ostfix@9
user = postfix
password = xxxxx
dbname = postfix
table = mailbox
select_field = quota
where_field = username
hosts = localhost
Oesse momento )recisamos editar o ar7uivo master.cf: edite todos os )arWmetros da coluna croot )ara
nU )ois n'o ser2 utili.ado o postfi> em um ambiente croot. AQuste o su)orte ao Maildro)9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6<
maildrop unix - n n - - pipe
flags=DRhu user=maildrop argv=/usr/bin/maildrop -w 90 -d ${recipient}
A configura&'o acima deve ser identadaU assim deixe / es)a&os no inicio da linha# : )arWmetro Z-!
03Z informa a )orcentagem de utili.a&'o 7ue a caixa )ostal )ode chegar# A mensagem de aviso enviada
)elo *78#<R&' com o conteTdo do ar7uivo 1etc1courier1quota2arnms/#
Agora editaremos o ar7uivo main.cfU mas antes faremos uma c8)ia do ar7uivo Q2 existenteU )ois o
mesmo )ossui as o)&;es )ossHveisU como s'o muitasU criaremos um ar7uivo do .ero#
cp main.cf mainf.cf.bkp
> main.cf
5dite o ar7uivo .erado e acrescente os seguintes comandosU substituindo os valores em negrito de
acordo com a sua necessidade9
queue_directory = /var/spool/postfix/
program_directory=/usr/sbin
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
default_privs=nobody
default_transport=smtp
local_recipient_maps =
delay_warning_time = 5m
alias_maps=hash:/etc/postfix/aliases
alias_database=hash:/etc/postfix/aliases
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
manpage_directory = /usr/local/man
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
smtpd_banner=$myhostname ESMTP "#!$%"I&I%
disable_vrfy_command=yes
home_mailbox=Maildir/
myhostname=post'ix.dominio.com.br
mydomain=local.com.br
myorigin= $mydomain
mydestination= $mydomain, $transport_maps
mynetworks=1().0.0.0*+ 1,(.1-+.0.0*(.
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_base = /postfix
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_uid_maps = static:seu!I
virtual_gid_maps = static:seuGI
transport_maps = mysql:/etc/postfix/mysql_transport_maps.cf
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_maps= mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_create_maildirsize = yes
virtual_mailbox_limit = 100000000
virtual_maildir_limit_message = Sua cota de disco se foi, tente mais tarde.
virtual_overquota_bounce = yes
#smtpd_sasl_auth_enable = yes
#smtpd_sasl_security_options = noanonymous
#broken_sasl_auth_clients = yes
#smtpd_recipient_restrictions =
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6=
#permit_sasl_authenticated,
#permit_mynetworks,
#check_relay_domains
fallback_transport = /usr/bin/maildrop
maildrop_destination_recipient_limit = 1
unknown_local_recipient_reject_code = 450
Oote 7ue algumas linhas est'o comentadasU elas ser'o Tteis durante a sua configura&'o# : )arWmetro
maildropHdestinationHrecipientHlimit fa. com 7ue o *78#<R&' entregue os emailPs )ara mais de um
destinat2riaU caso contrarioU a)enas um vai receber a mensagem#
*recisamos agora aQustar os direitos do usu2rio em rela&'o ao mJs7lU )ara isso devemos nos logar
como root no MJSKL9
mysql -u root -p mysql
5 executar os seguintes comandos9
UPDATE `db` SET `Insert_priv` = 'Y',`Update_priv` = 'Y',`Delete_priv` = 'Y'
WHERE CONVERT( `Host` USING utf8 ) = 'localhost' AND CONVERT( `Db` USING utf8 ) =
'postfix' AND CONVERT( `User` USING utf8 ) = 'postfix' LIMIT 1;
flush privileges;
Gamos agora logar no banco MJSKL e inserir um usu2rio e um domHnio )ara testes_
mysql -D postfix -u postfix -psuasenha
2.13.#.1 Deste manual dos ser&ios
Oesse )onto )odemos reali.ar um teste manual ?)ara n'o di.er bra&al@ )ara ver o funcionamento dos
servi&os envolvidos# -nserindo domHnio )ara testes9
INSERT INTO domain (domain, description, transport, active) VALUES
('dominio1.com.br' , 'Dominio de Teste' , 'maildrop' ,'1');
Gerificando domHnio inserido9
SELECT domain, description, transport, active FROM domain;
Dever2 a)arecer9
+-----------------+--------------------------+-----------+--------+
| domain | description | transport | active |
+-----------------+--------------------------+-----------+--------+
| dominio1.com.br | Dominio de Teste | maildrop | 1 |
+-----------------+--------------------------+-----------+--------+
-nserindo um usu2rio )ara testes9
INSERT INTO mailbox (username, password, name, home, maildir, quota, domain)VALUES
('usuario.silva@dominio1.com.br' , encrypt('xxxxx') ,'Usuario da Silva' , '/postfix/' ,
'dominio1.com.br/usuario.silva/Maildir/' , '10000000S' ,'dominio1.com.br');
Gerificando o usu2rio criado9
SELECT username FROM mailbox;
Dever2 a)arecer9
+-------------------------------+
| username |
+-------------------------------+
| usuario.silva@dominio1.com.br |
+-------------------------------+
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 6(
Criando o I&*" do usu2rio9
mkdir -p /postfix/dominio1.com.br/usuario.silva
maildirmake /postfix/dominio1.com.br/usuario.silva/Maildir
chown maildrop:www-data /postfix/ -R
chmod 770 /postfix/ -R
Mestando a entrega de mensagens )ara o usu2rio# *ara reali.ar essa tarefaU )rimeiramento devemos
verificar se o maildrop consegue se comunicar com o MJSKLU usando o comando9
maildrop -v
: resultado deseQado dever2 ser similar a9
GDBM extensions enabled.
Maildir quota extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public License. See
COPYING for additional information.
5xecute o comando abaixo )ara )oder enviar uma mensagem de modo direto9
cat /etc/lilo.conf| maildrop -d usuario.silva@dominio1.com.br
Conferindo se a mensagem foi entregue9
cd /postfix/dominio1.com.br/usuario.silva/Maildir/new
ls
Dever2 a)arecer algo como9
1154248310.M755807P1285V0000000000000802I00006692_0.smtp.catoca.com,S=4127
2.13.#.2 Destando o I/A- &ia banco de dados(
*ara testar se o )rotocolo est2 corretamente configuradoU )odemos executar um telnet na sua )orta
)adr'oU )ara isso9
telnet localhost 143
: resultado dever2 ser algo como9
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT
THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready.
Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution
information.
digite9
login usuario.silva@dominio1.com.br minhasenha
: resultado dever2 ser algo como9
0 OK LOGIN Ok.
0 select inbox
* FLAGS (Draft Answered Flagged Deleted Seen Recent)
* OK [PERMANENTFLAGS (* Draft Answered Flagged Deleted Seen)] Limited
* 1 EXISTS
* 1 RECENT
* OK [UIDVALIDITY 1154248579] Ok
* OK [MYRIGHTS "acdilrsw"] ACL
0 OK [READ-WRITE] Ok
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 60
2.13.#.3 Destando a configurao do -)-(
*ara testar se o )rotocolo est2 corretamente configuradoU )odemos executar um telnet na sua )orta
)adr'oU )ara isso9
# telnet localhost 110
Digite9
user usuario.silva@dominio1.com.br
pass minhasenha
list
Como resultado dever2 a)arecer algo como9
+OK POP3 clients that break here, they violate STD53.
2.13., $ota de e7mails
: maildrop vai ser res)ons2vel )elo controle de cota de disco# :s valores de cotas ser'o cadastrados
no banco de dadosU sendo inde)endente )ara cada usu2rio# : maildrop ler2 as tabelas do MySQL e de
acordo com os valores da configura&'oU vai aQustar as cotas de usu2rio#
Moda ve. 7ue um usu2rio recebe um e-mailU o Maildro) calcula o es)a&o utili.ado# *ara consultar o
valor da cota do usu2rioU execute o seguinte comando no shell ?entrando no mJs7l@#
mysql -D postfix -u postfix -psuasenha -e "SELECT username,quota FROM mailbox
WHERE username='usuario.silva@dominio1.com.br';"
Como resultado teremos ?dado 7ue tenhamos cadastrado o usu2rio acima@9
+-------------------------------+-----------+
| username | quota |
+-------------------------------+-----------+
| usuario.silva@dominio1.com.br | 10000000S |
+-------------------------------+-----------+
Oesse exem)lo a cota esta em $3M+U vamos altera-la )ara $3B+U com o seguinte comando9
mysql -D postfix -u postfix -psuasenha -e "UPDATE mailbox SET quota='10000S'
WHERE username='usuario.silva@dominio1.com.br';"
2.13.. SAS2 no -ostfi!(
: SASL )ermite 7ue um usu2rio consiga enviar e-mail )elo servidor SMTP ?relaJ@ sem 7ue o seu -*
esteQa na lista de -*Ps liberados )ara relaJU no )ostfix configurado na linha Zmynet2orJs, no ar7uivo
main.cf. : re7uisito )ara enviar e-mail 7ue o usu2rio exista no sistema# -sso um 8timo recursoU )ois o
usu2rio onde estiver )ode enviar e-mail )elo seu servidorU sem 7ue vocV )recise liberar o ZRelay, )ara todo
mundo#
Crie ar7uivo /usr/lib/sasl2/smtpd.conf com o seguinte conteTdo9
pwcheck_method: saslauthd
Crie ar7uivo /etc/pam.d/smtp com o seguinte conteTdo9
auth sufficient /lib/security/pam_unix_auth.so try_first_pass
auth optional /lib/security/pam_mysql.so user=postfix
passwd=xxxxx
host=localhost
db=postfix
table=mailbox
usercolumn=username
passwdcolumn=password
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <3
crypt=1
account sufficient /lib/security/pam_unix_acct.so
account required /lib/security/pam_mysql.so user=postfix
passwd=xxxxxx
host=localhost
db=postfix
table=mailbox
usercolumn=username
passwdcolumn=password
crypt=1
*ara habilitar o SASL no Postfix, descomente as seguintes linhas no ar7uivo
/etc/postfix/main.cf9
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains
5dite o ar7uivo /etc/default/saslauthdU e descomente a linha9
# START=yes
>einicie os servi&os9
/etc/init.d/saslauthd start
/etc/init.d/postfix restart
2.13.0 $onfigurando o Ama&is
A linguagem Perl Q2 deve estar instaladaU assim n8s devemos aQustar as de)endVncias do Perl com o
Perl-CPAN# *ara isso execute ?res)onda todas as res)ostas )adr'oU e as 7ue se refere ao )aHs e outras mais
sim)lesU escolha de acordo com as necessidades@9
perl -MCPAN -e shell
Agora dentro do *erlU execute9
cpan> install File::MMagic
cpan> install Config::IniFiles
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Compress::Zlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install Unix::Syslog
cpan> install MIME::Base64
cpan> install Net::Server
cpan> install Net::SMTP
Should all FTP connections be passive (y|n) ? [no] no
cpan> install Digest::MD5
cpan> install Time::HiRes
cpan> install Mail::SpamAssassin
cpan> install Digest::SHA1
cpan> install HTML::Parser
cpan> install Net::DNS
cpan> install IP::Country
cpan> install Net::Ident
cpan> install LWP::UserAgent
cpan> install HTTP::Date
cpan> exit
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <$
Adicione no /etc/postfix/master.cf o seguinte bloco de texto9
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
5dite o ar7uivo /etc/amavis/conf.d/15-content_filter_modeU e descomente os seguintes
blocos de texto9
#@bypass_virus_checks_maps = (
# %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re);
#@bypass_spam_checks_maps = (
# %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re);
-sso habilita a checagem contra vHrus e spams# Adicione o amavis no gru)o do clamavU e vice-versaU
isso necess2rio )ara 7ue eles )ossam acessar um os ar7uivos do outroU )ara isso execute9
adduser clamav amavis
adduser amavis clamav
-nicie o servi&o do amavis e do clamav9
/etc/init.d/amavis start
/etc/init.d/clamav-daemon restart
Adicione ao final do /etc/postfix/main.cf:
content_filter = smtp-amavis:[127.0.0.1]:10024
>einicie o servi&o do )ostfix9
/etc/init.d/postfix restart
Gamos agora fa.er um testeU )ara saber se nosso servidor realmente est2 evitando vHrusU vamos utili.ar
)ara isto o ar7uivo de teste do EICAR, com o seguinte comando9
mail -s "teste" usuario.silva@dominio.com.br
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
2.13.1 $onfigurando o -ostfi!Admin
*rimeiramente devemos instalar alguns )acotes auxiliaresU dessa formaU digite9
apt-get update
apt-get install pflogsumm procmail
5dite o ar7uivo /etc/logrotate.confU e adicione o seguinte bloco de texto9
/var/log/mail.log {
missingok
daily
rotate 7
create
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <,
compress
start 0
}
-sso garante o rotacionamento do log uma ve. )or diaU com)actando os ar7uivos antigos do log# Crie o
ar7uivo SusrSlocalSsbinS)ostfixre)ort#shU 7ue ser2 utili.ado )ara a gera&'o de relat8rios e envio dos mesmos
via e-mail#
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gunzip /var/log/mail.log.0.gz
pflogsumm /var/log/mail.log.0|formail -c -I"Subject: Estatsticas de e-mail
meudominio.com.br"
-I"From: pflogsumm@meudominio.com.br" -I"To: meuemail@meudominio.com.br"
-I"Received: from www.meudominio.com.br ([192.168.0.100])" | sendmail
meuemail@meudominio.com.br
gzip /var/log/mail.log.0
exit 0
Morne esse ar7uivo um execut2vel9
chmod 755 /usr/local/sbin/postfix_report.sh
A)8s istoU adicione a seguinte linha no crontab ?use crontab -e@9
0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null
2.13.13 Anlise e desem"en>o
5xistem v2rias ferramentas )ara an2lise de logPsU uma delas o mailgraphU )ara instalar use9
apt-get install isoqlog rrdtool mailgraph
: mailgraph uma ferramenta sim)les e )r2tica 7ue usa o RRDtool )ara construir gr2ficos a )artir
dos logs do PostfixU com incrHvel ri7ue.a de detalhes# Kual7uer administrador de redes 7ue Q2 tenha usado
o MRTG sabe 7uanto )ode ser Ttil acom)anhar com)ortamentos e tendVncias de sistemas )or intermdio de
gr2ficos hist8ricos - e o mailgraph facilita o )rocesso de acom)anhamento do Postfix - n'o a)enas da
distribui&'o de mensagensU mas tambm dos errosU vHrus e s)am# Caso seQa necess2rio mudar os )arWmetros
do mailgraphU use9
dpkg-reconfigure mailgraph
*ara executar o mailgra)hU vocV dever2 )roceder como se hos)edasse uma nova home )age ?se&'o ,#$
)2gina ,$@U no entantoU ser2 hos)edado um scri)t CGI#
cp -p /usr/lib/cgi-bin/mailgraph.cgi /var/www/www.example.com/cgi-bin
:ndeU SvarS!!!S!!!#exam)le#comS o local onde ser2 hos)edado o site# *ara executarU uma ve. 7ue
o site esteQa hos)edado use9
http://www.example.com/cgi-bin/mailgraph.cgi
2.11 Ser!idor de >7mails
%m servidor de email geralmente com)osto de )elo menos duas )artesU uma res)ons2vel )elo en.io
e outra res)ons2vel )elo recebimento# :nde esses servi&os )odem ou n'o estar na mesma m27uina
2.11.1 En&io de Emails 4S/D-5
%m dos servidores de e-mailFs mais sim)les e se utili.ar o *ostfix ?existem centenas de outros@# :
)rimeiro )asso instalar o postfix9
apt-get install postfix
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br </
apt-get install postfix-ldap
apt-get install postfix-mysql
apt-get install postfix-pgsql
: )rimeiro )acote res)ons2vel es)ecificamente )elo postfixU Q2 os outros dois s'o o)cionaisU mas
)ermitem facilidades )ara autentica&'o# Caso o )ostfix n'o seQa executado automaticamente a)8s a
instala&'oU execute-o9
/etc/init.d/postfix start
-m)ortanteU durante a instala&'o o postfix far2 algumas )erguntas b2sicas sobre o funcionamento do
SMTP# A configura&'o b2sica do PostfixU Q2 funcional#
: Postfix um MTAU com bastante robuste.U desem)enho e maior facilidade na manuten&'o e
configura&'o# Alm dissoU Postfix ca)a. de emular v2rias fun&;es do SendmailU evitando assim
modifica&;es nas a)lica&;es 7ue utili.am o Sendmail# :utra caracterHstica im)ortante do Postfix a sua
constru&'o modularU facilitando a manuten&'o do c8digo e )ermitindo a im)lementa&'o de novas
funcionalidades mais facilmente#
*ara uma im)lementa&'o bem-sucedida do Postfix necess2rioU uma interface de rede instalada e
configurada e um servidor DNS instalado e configurado#
Caso )recise modificar as configura&;es do PostfixU edite o ar7uivo /etc/postfix/main.cfU
sem)re 7ue modificar o ar7uivo de configura&'oU restarte o seri&o /etc/init.d/postfix restart#
*ara testar se o mesmo est2 funcionandoU execute telnet localhost 25U )ara sair digite quit#
2.11.2 2ecebimento de E7mail=s -)-3 e I/A-
:s )rotocolos POP3 e IMAP s'o res)ons2veis )elo trans)orte de mensagens recebidas do servidor de e-
mail )ara o cliente de e-mail do usu2rio# : )rotocolo POP3 mais antigo e mais sim)lesU mais )o)ular e
)raticamente todos os )rogramas clientes de e-mail o su)ortam# : )rotocolo IMAP mais novo e )ossui mais
fun&;es 7ue o POP3U no entanto nem todos os )rogramas clientes de e-mail o su)ortam# : su)orte a estes
)rotocolos n'o feito )elo PostfixU mas sim )or outros servidores#
*ara im)lementar um servidor POP/IMAP necess2rio somente 7ue um servidor de e-mail esteQa
instalado e configurado# *ara instalar o IMAP selecione o )acote courier-ima)9
apt-get install courier-imap
A)8s a instala&'oU os servi&os s'o automaticamente dis)aradosU caso )recise modificar alguma o)&'oU
edite o ar7uivo /etc/courier/imapd#
2.11.3 Instalando um Jeb/ail
5xistem centenas de !eb-mails )rontos na internetU um dos mais usados o s7uirremailU !ebmiauU
entre outros# Gamos a)resentar a7ui o s7uirrelmail# *ara instalar use9
apt-get install squirremail
*or )adr'o o mesmo instalado na )asta SusrSshareSs7uirremail# Como vocV )ode observar o mesmo
n'o estar2 habilitado )ara se a)resentar na !eb# A maneira mais sim)les criar um linA )ara os diret8rios de
dis)onibilidade ?avaiable@ e atividade ?enable@ do A)ache ?se&'o ,#$@# GocV deve ainda adicionar no ar7uivo
de configura&'o do A)ache as seguintes linhas9
Alias /webmail/ /usr/share/squirremail
DirectoryIndex index.php
*ara 7ue o !ebmail funcione )reciso ter instalado tambm o *I*U )ois o mesmo baseado nessa
tecnologia# A)8s instaladoU execute9
squirrelmail-configure
ouU dentro da )asta SusrSshareSs7uirremail
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <4
configure
*ara verificar o funcionamento desse servi&oU acesse http://localhost/webmail# *ara 7ue todos
os usu2rios tenham uma conta de e-mailU fundamental 7ue seQa criado uma )asta Maildir dentro do
diret8rio de cada usu2rio cadastrado# *ara criar automaticamente use9
maildirmake ~/Maildir
*ara 7ue a cria&'o seQa autom2tica )ara os novos usu2rios a serem cadastradosU modifi7ue a estrutura
do sAeletonU SetcSsAel#
maildirmake /etc/skel/Maildir
2.12 Ser!idor Simples e Direto de >7mail 9@mail:
: Xmail uma suHte com)letaU de f2cil instala&'o com ferramentas )ara agili.ar a configura&'o# :
XMail um servidor de e-mail com)letoU com su)orte a SMTP e POP e )ermite uma )erfeita ade7ua&'o com
o webmail Uebimiau ?IMAP@# :utro )onto 7ue merece desta7ue no XMail 7ue as contas de usu2rios n'o
)recisam ser usu2rios do sistemaU tornando a configura&'o ainda mais flexHvel# *ara instalar digite9
apt-get install xmail
Durante a instala&'oU aceite as res)ostas )adr'oU e informe o 7ue sabe ou deseQa# Se )ossuir outro
servidor de e-mail sendo executadoU ele ser2 desinstalado durante a instala&'o e o XMail iniciali.ado#
A)8s a instala&'o s'o criados os seguintes ar7uivos de configura&'o e tabelas de dados#
aliasdomain.tab domains.tab mailusers.tab smtpgw.tab
aliases.tab extaliases.tab pop3.ipmap.tab smtp.ipmap.tab
cmd_line filters.in.tab pop3links.tab smtp.ipprop.tab
ctrlaccounts.tab filters.out.tab server.tab smtprelay.tab
ctrl.ipmap.tab filters.post-data.tab smtpauth.tab spam-address.tab
default_domain filters.pre-data.tab smtpextauth.tab spammers.tab
dnsroots finger.ipmap.tab smtpfwd.tab userdef.tab
Sem)re 7ue deseQar reiniciarSiniciar o servi&o use ?)adr'o Debian@9
/etc/init.d/xmail start
Modos os ar7uivos de configura&'o do XMail ficam em /etc/xmail/# Como o Rmail Q2 )ossui uma
instala&'o ra.oavelmente ade7uadaU devemos alterar somente o necess2rio )ara uma configura&'o b2sica
?-m)ortante onde existe a )alavra [tab\U use um caracter de tabula&'o )ara se)arar um item do outro e
[ne!line\ significa nova linha@#
ctrlaccounts.tab9 esta a tabela 7ue contm o login e senha do administrador do servidor# 5x9
"admin" <tab> "enc-passwd".
domains.tab: esta a tabela 7ue contm os domHnio virtuais# 5x9
"localhost"
"seu.servidor.com.br"
mailusers.tab9 esta a tabela 7ue contm os usu2rios do servidorU na seguinte ordem9 "host"
[tab\ "usurio" [tab\ "enc-password" [tab\ "id da conta" <tab> "diretrio da
conta" <tab\ "tipo de conta> <newline>
5x9
"xmailserver.test" "xmailuser" "1d08040c09" 1 "xmailuser" "U"
"wolfserver.rede" "postmaster" "150a1611080416110017" 2 "postmaster" "U"
server.tab9 nesta tabela ficam as configura&;es geraisU a )rincH)io n'o necess2rio alter2-la )ara
7ue o servidor funcione#
O'o se )reocu)e com o Ddiret8rio da contaEU o XMail o configura automaticamente em
/var/spool/xmailU ali2s ali tambm ficam os diret8rios dos domHnios virtuais#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <6
2.12.1 Adicionando usurios e administradores
*ara acrescentar usu2rios de e-mailU necess2rio cadastrar os mesmos no )rogramaU esse
)rocedimento reali.andoU adicionando os usu2rios na tabela mailusers#tab ?em /etc/xmail/).
Como )ode ser visto nos exem)los das tabelas acimaU existe um item chamado Denc-)ass!ordEU isso
significa encrypted passwordU ou seQaU senha cri)tografadaU assim sendoU devemos cri)tografar as senhas
antes de adicionar nas tabelas# *ara isso use o comando9
XMCrypt SenhaCriptografar
A saHda desse comando uma string cri)tografadaU 7ue ser2 utili.ada como senha#
Caso seQa necess2rio mais detalhesU os mesmos )odem ser obtidos em
http://www.xmailserver.org#
2.12.2 Instalando um CrontEnd "ara Cacilitar o manuseio
A)esar do Xmail ser sim)les de se utili.arU existe um frontend feito em php 7ue torna mais f2cil
ainda o gerenciamento de contas e configura&;es do Xmail# *ara instalar esse scri)t devemos )rocurar a
vers'o mais nova na internetU )rocure )or phpxmail# GocV )ode tentar encontrar em no site da
sourceforge#
%ma ve. 7ue tenha encontradoU devemos devemos descom)actar ele em um diret8rio de acesso do
apacheU )ois ele um Web FrontEnd utili.ando o php 7ue Q2 deve estar instalado ?se&'o ,#$#4 )2gina ,,@#
unzip phpxmail1.4.zip -d /var/www
Oo caso acimaU eu estou no mesmo diret8rio onde est2 o ar7uivo recm baixadoU e descom)actarei ele
)ara o diret8rio /var/www ?)adr'o do apache2 ?se&'o ,#$ )2gina ,$@@# Agora )recisamos dar a )ermiss'o
de escrita )ara a )asta /var/www/phpxmail# A)8s acesso com seu navegador o endere&o
http://localhost/phpxmail. Oa )2ginaU locali.e e cli7ue em Add new server# *reencha os dados
solicitados como no exem)lo abaixo9
Server hostname: localhost
Server ip address: 127.0.0.1
Server port: 6017
CTRL account: admin
CTRL password: admin
Se tudo correu bemU deve a)arecer a seguinte mensagemU caso n'o funcioneU fa&a o )rocedimento
abaixo e retorne a reali.ar o anterior9
Server localhost was added successfully
Caso n'o seQa reconhecido o )htmlU vocV dever2 acrescentar essas linhas na configura&'o do apache
(/etc/apache2/apache.conf@ Qunto ao agru)amento <IfModule mod_mime.c>#
AddType application/x-httpd-php .php .phtml
Agora )recisamos fa.er com 7ue o Xmail atenda aos comandos do PHPXmail# Devemos di.er )ara o
Xmail 7uem o seu administrador e 7ual a sua senha# 5stes dados est'o gravados em
Svar/www/phpxmail/servers.php#
localhost 127.0.0.1 6017 admin 0.010+0c0b 0
*recisamos informar ao Xmail atravs do ar7uivo /etc/xmail/ctrlaccounts.tabU editando-o
com um editor )referido# 5le dever2 ficar assim ou )elo menos com o mesmo nome de usu2rio e senha9
"admin" "0.010+0c0b"
Golte agora ao seu navegador e cli7ue em loginU em User name digite9 admin e em Password9
admin# SeU de novoU deu tudo certoU deve a)arecer a seguinte mensagem9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <<
Logged in as Server admin admin on localhost
2.12.3 $riando um dom@nio &irtual
+asta dar um cli7ue em server domains e em ne! domain# Gamos criar um domHnio de exem)loU )ara
isto digite em Domain Oame9 exem)lo#com#brU em *ostmaster )ass!ord9 admin e finalmente cli7ue em
submit# Dever2 a)arecer a seguinte mensagem9
New domain exemplo.com.br created successfully.
New user postmaster@exemplo.com.br created successfully.
2.12.4 $riando usurios no dom@nio(
Cli7ue em server domains e selecione o domHnio no 7ual deseQa criar o usu2rio e cli7ue em new
user e digite em9
User name: alexandre
User password: admin
Dever2 a)arecer a mensagem9
New user alexandre@exemplo.com.br created successfully.
2.12.# Instalando o +ebi/iau
: %ebiMiau um !ebmail bastante sim)les de se utili.arU )orm com v2rios recursos interessantes#
*ara instalar o mesmo devemos )rocurar na internet a sua Tltima vers'o ?o %ebiMiau baseado em )h)U
assimU )ossui as mesmas necessidades da instala&'o do )h)xmail@# *ara instalar )ode ser tentado no
sourceforge#
A)8s reali.ado o do!nloadU necess2rio descom)actar o ar7uivo no diret8rio onde o scri)t ser2
arma.enado#
unzip uebimiau.zip -d /var/www/uebimiau
>eali.ado esse )rocedimentoU devemos dar os devidos direitos ao UebMiau# *ara acessar o mesmoU
entre no bro!ser )referido e digite
http://localhost/uebimiau
-dealmente vocV )recisar2 configurar o ar7uivo /var/www/uebimiau/config.php modificando
)elo menos9
$temporrary_directory = "/tmp/uebimiau/" ;
$smtp_server = "seu.servidor.smtp.com.br";
$quota_limit= 8192; //para 8mb de limite
$pop3_servers[0]["domain"]="dominio.com.br";
$pop3_servers[0]["server"]="seuservidor.dominio.com.br";
$default_language=0;
Goce )recisar2 tirar o seu php do safe modeU )ara isso edite o ar7uivo
/etc/php4/apache2/php.ini ou php59
safe_mode = off ;
safe_mode_allowed_env_vars= ;
2.12., En&iando e7mailQs &ia sendmail
: sendmail um comando Quntamente instalado com o XmailU )ode ser muito TtilU sendo utili.ado
como teste# :s )rinci)ais )arWmetros usados )or ele s'o9
sendmail [-t] [-f...] [-F...] [--input-file fname] [--xinput-file fname] [--rcpt-
file fname] [--] recipient ...
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <=
-f{mail from} de quem...
-F{ext mail from} para quem...
-t extrai os alvos dos cabealhos 'To:'/'Cc:'/'Bcc:'
-i l uma sequncia de dados at encontrar 2 <enter's>.
*ara testar a funcionalidade do Xmail, )odemos enviar um e-mail da seguinte maneira9
sendmail -fxmailuser@smartdomain user1@dom1 user2@dom2 < msg.txt
2.13 Ser!idor DAS
Oa internetU os servidores DOS formam uma gigantesca base de dados distribuHdaU 7ue tem uma
fun&'o crHtica no funcionamento da rede# Oo to)o da cadeiaU temos os root serversU $4 servidores
es)alhados )elo mundo 7ue tem como fun&'o res)onder a todas as re7uisi&;es de resolu&'o de domHnio# Oa
verdade eles n'o res)ondem nadaU a)enas delegam o trabalho )ara servidores menoresU res)ons2veis
individuais dos domHnios#
%m nome de domHnio lido da direita )ara a es7uerda# Memos os domHnios )rim2rios ?top level
domainsU ou TLD's@U como #comU #netU #infoU #ccU #bi.U e em seguida os domHnios secund2rios ?country
code TLD's@U 7ue recebem o )refixo de cada )aHsU como #com#br ou #net#br# Oeste casoU o com um
subdomHnio do domHnio br#
A 8nternic cuida dos registros dos domHnios rai. ?#comU #orgU #info e outros@U en7uanto a La)es)
res)onde )elos domHnios com extens'o #br ?#com#brU #org#brU etc#@#
: registro de domHnios na 8nternic menos burocr2ticoU )ois vocV n'o )recisa ter uma em)resa
registrada# De 7ual7uer formaU registrando seu domHnio na La)es) ou na -nternicU vocV )recisar2 fornecer
dois endere&os de DNSU )ara onde ser'o enviadas as consultas referentes ao seu domHnio#
Y a7ui 7ue entra a 7uest'o da autoridade# Sem)re 7ue necess2rio resolver um domHnioU o cliente fa.
uma re7uisi&'o )ara o servidor DNS da redeU ou do )rovedorU informado na configura&'o da rede# : servidor
contata um dos root servers e )ergunta sobre o domHnio# Se for um domHnio #brU eles encaminham a
re7uisi&'o ao servidor da La)es)U 7ue a autoridade res)ons2vel# 5leU )or sua ve.U verifica em sua base de
dados 7uem o servidor res)ons2vel )elo domHnio e encaminha novamente a re7uisi&'o )ara ele#
Ao registrar um domHnioU vocV )assa a ter autoridade sobre eleU e )ode criar subdomHnios a forma
como 7uiserU como Zfulano#meunome#com#brZ ou Zvendas#minhaem)resa#comZ# GeQun.i) )h)xmail$#4#.i) -d
SvarS!!!a o caso dos servidores de hos)edagem gratuitaU como o I*1 ] cia# 7ue criam milh;es de
subdomHnios )ara as )2ginas hos)edadas#
>esolver um nome de domHnio uma o)era&'o 7ue )ode demorar alguns segundosU )or isso os
servidores DNS arma.enam um cache de domHnios Q2 resolvidosU minimi.ando o nTmero de re7uisi&;es# Y
)or isso 7ue 7uando vocV fa. alguma mudan&a na configura&'o do domHnioU demoram algumas horas )ara
7ue ela se re)li7ue#
Y )or isso 7ueU Cs ve.esU vocV n'o consegue acessar um determinado site usando o DNS do )rovedor
?7ue est2 desatuali.ado@U mas consegue usando um DNS localU ou outro servidor 7ual7uer#
Ao configurar um servidor web com o Apache ?se&'o ,#$@U )odemos hos)edar v2rios sites no mesmo
servidor usando virtual host#
A idia a7ui 7ue o visitante digita o nome de domHnio do site no navegador e o Apache se encarrega
de envi2-lo ao diret8rio correto# MasU )ara 7ue o cliente chegue at o servidorU faltam mais duas )e&as
im)ortantes#
A )rimeira o registro do domHnioU 7ue )ode ser feito na La)es)U -nternic ou outro 8rg'o res)ons2vel#
Ao registrarU vocV )recisa fornecer dois endere&os de DNS# 5m muitos casosU o segundo DNS n'o
obrigat8rioU ele a)enas uma seguran&a )ara o caso do )rimeiro sair fora do ar#
%ma o)&'o muito usada )ara o segundo DNS )edir )ara 7ue algum amigo 7ue tambm )ossua um
servidor dedicado seQa seu DNS secund2rio# 5le )recisar2 a)enas adicionar a configura&'o do seu domHnio na
configura&'o do DNSU o 7ue r2)ido e indolor#
Ao alugar um servidor dedicadoU comum 7ue vocV receba dois ou mais endere&os -*Ps v2lidos#
:riginalmenteU seu servidor vai estar configurado )ara usar a)enas um delesU mas vocV )ode ativar o
segundo#
A )artir daHU seu servidor )assa a res)onder )elos dois endere&os -*U e vocV )ode us2-lo
simultaneamente como DNS )rim2rio e secund2rio#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <(
: servidor DNS mais usado no Linux o BindU 7ue a)renderemos a configurar a7ui# O'o existe
)roblema em instal2-lo no mesmo servidor onde foi instalado o Apache e o ProftpdU embora do )onto de
vista da seguran&a o ideal seQa utili.ar servidores se)arados#
*ara instalar o BindU )rocure )elo )acote bindU e instale-o usando9
apt-get install bind
: ar7uivo de configura&'o )rinci)al o /etc/bind/named.conf# 5m vers;es antigasU o ar7uivo
)ode ser sim)lesmente /etc/named.conf# *or )adr'oU o Bind Q2 vem configurado )ara trabalhar como um
servidor DNS de cache )ara a rede local# -nicie o servi&o com o comando9
/etc/init.d/bind start
Se a sua m27uina servidora Q2 acessava a internet antesU ou seQaU Q2 )ossuHa um a)ontador )ara um DNS
externoU s8 a)ontar o DNS das suas m27uinas de sua rede )ara o seu servidorU 7ue ele automaticamente vai
come&ar a arma.enar os DNS# Caso algum cliente da rede )recise de um DNS o 7ual seu servidor n'o saibaU o
mesmo vai acionar o DNS de sua configura&'oU formando assim um cache de DNS#
*ara configurar o +ind )ara res)onder )elos seus domHniosU vocV dever2 editar o ar7uivo
/etc/bind/named.confU acrescentando no final do ar7uivo ?su)ondo DNS )rim2rio ,33#$/4#,/#0 e
secund2rio ,33#$/4#,/#$3@9
zone "server.com.br" IN {
type master;
file "/etc/bind/db.server";
};
Ao usar um servidor DNS secund2rioU inclua a linha allow-transferU es)ecificando o endere&o -*
do segundo servidorU como em9
zone "server.com.br" IN {
type master;
file "/etc/bind/db.server";
allow-transfer {200.134.23.10;};
};
Caso 7ueiraU recomendado 7ue vocV use o ar7uivo /etc/bind/named.conf.local ?7ue
)rocessado como se fosse )arte do /etc/bind/named.conf )rinci)al@# A existVncia deste ar7uivo
se)aradoU visa se)arar a configura&'o geral do servidorU da configura&'o dos domHniosU minimi.ando a
)ossibilidade de erros# MasU na verdadeU o efeito de editar 7ual7uer um dos dois ar7uivos o mesmo#
Oa configura&'o acimaU a o)&'o zone "server.com.br" na )rimeira linha indica o domHnio 7ue
estamos configurandoU como registrado na La)es)# X2 a o)&'o file "/etc/bind/db.server" es)ecifica
o ar7uivo onde vai a configura&'o deste domHnio#
: res)ons2vel )elo domHnio Zserver#com#brZ ?type master;@U sem)re 7ue receber uma re7uisi&'o
vai res)onder de acordo com o es)ecificado no ar7uivo db.serverU configurado em file
"/etc/bind/db.server"; e 7ue o servidor KBB.CGL.KG.CBU 7ue re)resenta o DNS secund2rioU )ode
assumir a res)onsabilidade sobre o domHnio em caso de )roblemas com o titularU informado )elo o)&'o
allow-transfer#
5m seguida vocV )recisa adicionar a configura&'o do domHnio no ar7uivo /etc/bind/db.server#
: conteTdo do ar7uivo deve ser9

@ IN SOA servidor.servidor.com.br. hostmaster.servidor.com.br. (
2006040632 3H 15M 1W 1D )
NS servidor.servidor.com.br.
IN MX 10 servidor.servidor.com.br.
servidor.com.br. A 200.134.23.9
www A 200.134.23.9
ftp A 200.134.23.9
smtp A 200.134.23.9
Oeste ar7uivoU a formata&'o im)ortante# GocV )ode usar es)a&os e tabs )ara organi.ar as o)&;esU
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br <0
mas existem algumas regras# As linhas IN SOA at IN MX )recisam ficar QustificadasU e vocV n'o )ode
es7uecer dos es)a&os entre as o)&;es# Caso 7ueira incluir coment2riosU use Z_Z ao invs de ZbZU como em
outros ar7uivos# Gamos ent'o a uma descri&'o detalhada de cada um dos cam)os9
@ IN SOA servidor.servidor.com.br. hostmaster.servidor.com.br. (
A @ na )rimeira linha indica a origem do domHnio eU ao mesmo tem)oU o inHcio da configura&'o# 5la
sem)re usadaU assim como num endere&o de e-mail# : IN abrevia&'o de internet e o SOA de Start of
autority# 5m seguida vem o nome do servidor ?7ue vocV checa usando o comando hostname@U seguido do
e-mail de contato do administrador#
Im"ortante( hostmaster#servidor#com#br# um email sem "U ou seQaU o email do administrador# GocV
n'o )ode usar arrobaU )ois esse sHmbolo tem a fun&'o de informar o inHcio de uma nova configura&'o#
:bserve o )onto de)ois do nome do servidor e do emailU o )onto serve )ara informar o domHnio rai.#
A )rimeira linha termina com um )arVntesesU 7ue indica o inHcio da configura&'o do domHnio# Memos
ent'o9 2006061632 8H 2H 1W 1D U onde 2006061632 o valor de sincronismoU 7ue )ermite 7ue o
servidor DNS secund2rio mantenha-se sincroni.ado com o )rinci)alU detectando altera&;es na configura&'o#
5ste nTmero com)osto da data da Tltima altera&'oU nesse caso ,33< 3< $<U ?dia de hoQe@ e um nTmero de
dois dHgitos 7ual7uer 7ue vocV escolhe# Sem)re 7ue editar a configura&'oU ou sem)re 7ue configurar um
servidor DNS a )artir de um tem)late 7ual7uerU lembre-se de atuali.ar a data e mudar os dois dHgitos#
:s 7uatro cam)os seguintes orientam o servidor DNS secund2rio# : )rimeiro cam)o indica o tem)o
7ue o servidor aguarda entre as atuali.a&;esU nesse caso ( horas# Caso ele )erceba 7ue o servidor )rinci)al
est2 fora do arU ele tenta fa.er uma transferVncia de .onaU ou seQaU tenta assumir a res)onsabilidade sob o
domHnio# Caso a transferVncia falhe e o servidor )rinci)al continue fora do arU ele aguarda o tem)o
es)ecificado no segundo cam)oU nesse caso , horas e tenta novamente#
: terceiro cam)o indica o tem)o m2ximo 7ue ele )ode res)onder )elo domHnioU antes 7ue as
informa&;es ex)iremU nesse caso $ semanaU tem)o mais do 7ue suficiente )ara vocV arrumar o servidor
)rinci)al# 5 )or TltimoU o tem)o mHnimo antes de devolver o domHnio )ara o servidor )rinci)al 7uando ele
retornarU nesse caso $ dia#
5stes valores s'o )adr'oU )or isso n'o existem muitos motivos )ara alter2-los# A transferVncia do
domHnio )ara o DNS secund2ria sem)re uma o)era&'o demoradaU )or causa do cache feito )elos diversos
servidores DNS es)alhados )elo mundo9 demora de um a dois dias at 7ue todos atuali.em suas tabelas de
endere&os# A )rinci)al )rioridade deve ser evitar 7ue o servidor )rinci)al fi7ue indis)onHvel em )rimeiro
lugar# As duas linhas 7ue vem a seguir concluem a se&'o inicial NS servidor.servidor.com.br. IN
MX 10 servidor.servidor.com.br# A )rimeiraU di. 7uem s'o as m27uinas res)ons2veis )elo domHnio#
Ao usar a)enas um servidor DNSU vocV sim)lesmente re)ete o nome do servidorU seguido )elo domHnioU como
adicionamos na )rimeira linha# Caso vocV esteQa usando dois servidoresU um abaixo do outro#
A linha IN MX necess2ria sem)re 7ue vocV )retende usar um servidor de e-mails ?muitas -S*Fs
chamam o servidor de email de servidor MR@# :s nTmeros indicam a )rioridade de cada servidor# : servidor
da )rimeira linha tem )rioridade $3U )or isso o )rim2rio# Caso tenha um segundoU )oderia colocara
)rioridade ,3 e )or isso s8 assume em casos de )roblemas com o )rim2rio# %sar um segundo servidor de e-
mailsU num domHnio se)aradoU adiciona uma camada extra de redundWncia e evita 7ue vocV )erca e-mails
caso seu servidor fi7ue tem)orariamente fora do ar#
De)ois destas linhas iniciaisU temos a )arte mais im)ortanteU onde vocV es)ecifica o -* do servidor e
)ode cadastrar subdomHnios# Oo exem)lo foi incluHdo tambm trVs subdomHniosU o wwwU ftp e smtpU ambos
relacionados ao -* do servidor# -sso )ermite 7ue os visitantes digitem 222.ser.idor.com.br ou
ftp.ser.idor.com.br no navegador# Ao trabalhar com subdomHniosU vocV )ode relacion2-los com -*Ps ou
domHnios diferentes#
*ara testar o seu servidor DNSU use9
dig servidor.com.br

-sso fa. com 7ue ele )ergunte diretamente ao seu servidorU o 7ue )ermite testar a configura&'o
imediatamente#
2.13.1 $onfigurando um 8FS "ara a Intranet
5sta mesma configura&'o )ode ser usada )ara criar um servidor DNS )articularU )ara a sua rede local#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =3
Com isso vocV )oder2 acessar todos os micros atravs de nomes de domHnioU como na internetU ao invs de
ficar decorando endere&os -*#
GocV deve come&ar instalando o Bind no servidor da rede# Configure todos os micros da rede interna
)ara utili.arem o -* deste servidor como DNS )rim2rio e adicione a configura&'o dos domHnios no Bind#
SeU )or exem)loU os endere&os dos trVs micros s'o res)ectivamente $0,#$<(#3#,U $0,#$<(#3#/ e
$0,#$<(#3#4 e o servidor o $0,#$<(#3#$U e o nome do domHnio )rinci)al redeU nesse caso adicione no final
do ar7uivo /etc/bind/named.conf:
zone "rede" IN {
type master;
file "/etc/bind/db.rede";
};
Dentro do ar7uivo /etc/bind/db.redeU devemos acrescentar9
@ IN SOA servidor.rede. hostmaster.rede. (2006040656 3H 15M 1W 1D)
NS servidor.rede.
rede. A 192.168.0.1
administracao A 192.168.0.2
vendas A 192.168.0.3
contabilidade A 192.168.0.4
Memos a7ui o redeU 7ue o )r8)rio servidorU alm do administracao.redeU .endas.rede e
contabilidade.redeU res)ondendo )elos endere&os es)ecificados# Oesse caso n'o foi incluHda a linha IN MXU
)ois como Q2 comentandoU ela somente necess2ria 7uando incluir um servidor de e-mails ?servidor MR@#
2.1" utenticao Centralizada com 'DP.
LDAP significa Lightweight Directory Access ProtocolU ou seQaU *rotocolo Leve de Acesso
a Diret8rios# : LDAP executado em cima do )rotocolo TCP/IP ou outras conex;es de transferVncia de
servi&os#
Servi&o de diret8rio um banco de dados otimi.ado )ara lerU navegar e )rocurar# :s diret8rios contm
descritores formados )or atributos e caracterHsticas e um su)orte sofisticado )ara filtros#
As atuali.a&;es dos diret8rios s'o sim)les e r2)idas# S'o feitos )ara res)ostas r2)idas de um alto
volume de o)era&;es de buscas# Y )ossHvel re)licar informa&;es largamente )ara aumentar a dis)onibilidade
dos recursos#
At algum tem)o atr2sU o mtodo mais usado )ara isso era o nis com nfsU )orm de algum tem)o
)ara c2U o LDAP est2 sendo mais utili.adoU )rinci)almente )ela sua ca)acidade de integra&'o com outros
servi&os#
2.14.1 $onfigurao 8A- Ser&idor
*ara instalar o servidor LDAP, vocV deve executar9
apt-get install ldap-utils slapd nscd libnss-ldap libpam-ldap libpam-passwdqc
A)8s a instala&'o ser2 solicitado algumas informa&;es como domHnio de a&'oU nome da organi.a&'oU
senha de administrador entre outras caracterHsticas# Leia e tente res)onderU caso n'o saibaU n'o se )reocu)eU
)ois modificaremos os ar7uivos de configura&'o manualmente#
Crie um diret8rio )ara arma.enar os certificados de cri)tografados# e Q2 fi7ue no mesmo )ara os
)r8ximos )rocedimentos#
mkdir /etc/ldap/certificados
cd /etc/ldap/certificados
1ere os certificadosU executando um-)or-um os comandos abaixo9
# Gera certificado servidor
openssl genrsa -des3 -out server.key 4096
openssl rsa -in server.key -out server.key
openssl req -new -key server.key -out server.csr
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =$
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.csr
# Gera certificado cliente
openssl genrsa -des3 -out client.key 1024
openssl rsa -in client.key -out client.key
openssl req -new -key client.key -out client.csr
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.csr
A)8s ter gerado os certificadosU devemos vincular os mesmos aos mecanismos de autentica&'o no
servidorU )ara isso edite o ar7uivo /etc/ldap/slapd.confU e adicione os seguinte comandos9
# Opcoes SSL
TLSCertificateFile /etc/ldap/certificados/ser/er.csr
TLSCertificateKeyFile /etc/ldap/certificados/ser/er.0ey
TLSVerifyClient 0
startls=yes
:bserve 7ue estamos ligando o servidor slapd com os certificados Q2 gerados# Agora edite o ar7uivo
/etc/ldap/ldap.conf )ara vHnculo dos clientes9
# SSL Options
TLS_CERT /etc/ldap/certificados/client.csr
TLS_KEY /etc/ldap/certificados/client.0ey
TLS_REQCERT allow
: ar7uivo final deve ser algo como9
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,...
BASE dc=dominio, dc=com
URI ldap://ldap.dominio.com
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
# SSL Options
TLS_CERT /etc/ldap/certificados/client.csr
TLS_KEY /etc/ldap/certificados/client.key
TLS_REQCERT allow
2.14.1.1 APustes na -A/
Agora )recisamos aQustar o sistema de login )ara estar vinculado com o nosso sistema LDAP, )ara
isso devemos aQustar o Linux-PAM ?Pluggable Authentication Modules for Linux@U )ara isso
devemos editar os ar7uivos em /etc/pam.d/. *rimeiramente vamos modificar o ar7uivo res)ons2vel )ela
forma como ser2 feita a solicita&'o de login (conferVncia de login), /etc/pam.d/common-account9
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
#account required pam_unix.so
account sufficient pam_unix.so
account sufficient pam_ldap.so
account sufficient pam_permit.so
%ma ve. informado como ser2 a conferVncia de login, )recisamos informar como ser2 feita a
conferVncia do password, )ara isso edite o ar7uivo /etc/pam.d/common-password9
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =,
#used to change user passwords. The default is pam_unix
# The "nullok" option allows users to change an empty password, else
# empty passwords are treated as locked accounts.
#
# (Add `md5' after the module name to enable MD5 passwords)
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs. Also the "min" and "max" options enforce the length of the
# new password.
#password required pam_unix.so nullok obscure min=4 max=8 md5
# Alternate strength checking for password. Note that this
# requires the libpam-cracklib package to be installed.
# You will need to comment out the password line above and
# uncomment the next two in order to use this.
# (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')
#
#password required pam_cracklib.so retry=3 minlen=6 difok=3
#password required pam_unix.so use_authtok nullok md5
password sufficient pam_passwdqc.so min=disabled,16,12,8,6 max=256
password sufficient pam_unix.so use_authtok md5
password sufficient pam_ldap.so use_first_pass use_authtok md5
password required pam_deny.so
Ser2 necess2rio configurar ainda aQustar o ar7uivo /etc/pam.d/common-auth )ara informar como
ser2 a autentica&'o9
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
#auth required pam_unix.so nullok_secure
auth sufficient pam_unix.so
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
*or Tltimo )recisamos aQustar o ar7uivo /etc/pam.d/common-sessionU 7ue res)ons2vel )ela
se&'o de login (tem)o de vida do login).
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive). The default is pam_unix.
#
session required pam_unix.so
2.14.1.2 $onfigura*es de Aost e Base
Chegando nos DfinalmentesE do servidor# A7ui se encontram algumas da7uelas configura&;es 7ue
foram solicitadas durante a instala&'o# Caso n'o tenho configurado corretamenteU altere o ar7uivo
/etc/libnss-ldap.conf:
host ldap.intranet.ttc.inf.br
base dc=intranet,dc=ttc,dc=inf,dc=br
5 )or Tltimo o ar7uivo /etc/pam_ldap.confU alterando as mesmas informa&;es do caso anterior#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =/
2.14.2 $onfigurao 8A- $liente
*ara configurar os clientesU instala-se os mesmos a)licativos do servidorU mas sem o slapd. 5xecute9
apt-get install ldap-utils nscd libnss-ldap libpam-ldap
A)8s instaladoU configure os mesmos ar7uivos da mesma maneiraU )orm sem as o)&;es de ssl no
ldap.conf#
2.14.3 $riando os gru"os e usurios
*ara cada gru)o 7ue vocV 7uer cadastrar usu2riosU vocV dever2 ter no ar7uivo ldif do gru)oU uma
entrada como a abaixo9
cn=NOME_DO_GRUPO,ou=Group,dc=dominio,dc=com
objectClass: posixGroup
objectClass: top
cn: NOME_DO_GRUPO
userPassword: {Crypt}x
gidNumber: GID_DO_GRUPO
memberUid: USUARIO_MEMBRO_DO_GRUPO
memberUid: OUTRO_USUARIO_MEMBRO_DO_GRUPO
-m)ortante9 )ode ser usado o migrationtools (apt-get install migrationtools@ )ara
gerar o ldif com todo o seu ar7uivo /etc/groupU assimU vocV tira as o)&;es indeseQadasU os ar7uivos do
migrationtools ficam em /usr/share/migrationtools.
%ma ve. 7ue aQustou os gru)os ou os criouU devemos criar os usu2riosU o 7ue n'o uma o)era&'o t'o
trivial# *rimeiramenteU devemos gerar a senha9
slappasswd
5sse comando solicitar2 uma senha e mostrar2 na tela a mesma cri)tografadaU outra forma 7ue )ode
agili.ar um )ouco executando um conQunto de rotinasU ou seQaU arma.enar a senha em uma vari2vel e
de)ois incluir no ar7uivo de senhas o nome do usu2rio e sua senhaU se)arados )or D9E# *ara isso execute os
comandos abaixoU substituindo o O:M5D:%S%A>-: )elo nome do usu2rio deseQado#
a=`slappasswd`
echo "NOME_DO_USUARIO: $a" >> senhas.ldap
Com um ar7uivo gerado com cada senha )ara cada usu2rioU vocV ir2 gerar o ldiff, )ara os usu2riosU
e colocar a senha ?sem o nome do usu2rio@ na linha userPassword do ar7uivo usuarios.ldif ?uma
entrada )ara cada usu2rio@#
uid=!S!12I%,ou=People,dc=dominio,dc=com
uid: !S!12I%
cn: #S32I31% % !S!12I%
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: 3%4# 15!I 1 S#&61 % !S!12I%
shadowLastChange: 13417
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: !I$%$!S!12I%
gidNumber: GI$%$!S!12I%
homeDirectory: *6%"#*%*!S!12I%
Acrescentando os ldifs no slapd. O'o adianta criarmos os ar7uivos )ara bonitoU ent'o vamos
vincular elesU )ara isso9
/etc/init.d/slapd stop
slapadd < grupos.ldif
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =4
slapadd < usuarios.ldif
slapindex
/etc/init.d/slapd start
2.14.4 Cacilitando as coisas com ">"lda"admin
Como foi visto anteriormenteU o )rocedimento de cadastro de usu2rios e gru)os n'o uma tarefa
trivialU )ara facilitar a vida do administrador foi criada uma ferramenta bastante TtilU o phpldapadmin.
*ara instalar use9
apt-get install phpldapadmin apache-ssl
2.1& Ser!idor AIS 9AetBorC In%ormation Ser!ice:
: NIS inicialmente era chamado de dello! *agesU )orm esse nome Q2 era )atenteado )ela +ellSoutU
ent'o o seu nome teve 7ue ser trocado )ara NISU no entanto os daemons do NIS )ossuem yp em seu nome
?ypbind: ypcat: ypser.@#
: NIS )ermite vocV ter uma base de autentica&'o centrali.adaU sem a necessidade de ficar criando os
usu2rios em todas as m27uinasU e simU em um s8 servidor# : funcionamento do NIS o baseado em
4amadas de 'rocedimentos Remotos ?RPC@#
*ara rodar o servi&o O-SU necess2rio 7ue vocV crie ma)as de informa&;esU )ara 7ue ele obtenha
informa&;es sobre os usu2riosU o sistema e a rede# *ara isso ele lV os seguintes ar7uivos e gera os res)ectivos
ma)asU sendo 7ue todos os ma)as 7ue o NIS utili.a s'o arma.enados em SvarSJ)S#9
/etc/passwd - gera o mapa passwd.byname
/etc/shadow - os dados desse arquivo so anexados ao mapa passwd.byname
/etc/group - gera o mapa group.byname
5xistem outros ar7uivos 7ue o O-S tambm usa )ara gerar ma)as9
/etc/protocols - protocols.bynumber
/etc/services - services.byname
/etc/aliases - mail.aliases
*ara instalar tanto o cliente 7uanto o servidor na distribui&'oU basta executar o seguinte comando9
apt-get install nis autofs
: )rocesso de instala&'o vai )erguntar o nome do seu domHnio O-SU este o nome 7ue descreve o
nome do seu gru)o NISU ele n'o o hostname# Caso 7ueira mudar o nome vocV )ode editar o ar7uivo
/etc/defaultdomain ?cuidado 7ue o nome case sensitive@#
:utra coisa muito im)ortante 7ue 7ue devemos cadastrar todas as m27uinas )ertencentes os nosso
domHnio NIS no /etc/hosts ou ent'o criar um DNS )ara locali.ar as m27uinas#
A)8s reali.ar a instala&'o do O-SU vocV dever2 informar o domHnioU e logo em seguida a instala&'o
informa 7ue vocV dever2 editarU 1etc1nss2itc.conf e1ou 1etc1pass2d e 1etc1/roup. Assim 7ue terminado a
instala&'o de )acotesU o servi&o iniciali.ado# *ara iniciali.arU )ararU reiniciali.arU e outros use9
/etc/init.d/nis start
*ara fa.er com 7ue o O-S funcioneU necess2rio aQustar alguns ar7uivos de configura&'oU vamos
come&ar )elo ar7uivo /etc/ypserv.conf# Oo nosso caso Q2 est2 aQustado#
: )rimeiro )asso editar o ar7uivo SetcSex)ortsU nele dever'o ser colocados o diret8rio do servidor
7ue vai ser com)artilhado com a m27uina clienteU o nTmero do -* da m27uina 7ue estar2 acessando o
servidor e )or fim as o)&;es de seguran&a# %se seu editor de textos )referido e vamos ao exem)lo9
/home/diretorio 192.168.0.2(rw)
:ndeU ShomeSdiretorio o diret8rio do servidor 7ue vai ser com)artilhado com a m27uina clienteU o -*
$0,#$<(#3#, o -* da m27uina clienteU e finalmente o ?r!@ a )ermiss'o dada C ma7uina clienteU no caso
read and !riteU )ara mais detalhes veQa a se&'o ,#<#$ )2gina ,0U 7ue trata es)ecificamente de OLS# A)8s
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =6
salvar o ar7uivoU execute o comando9
exportfs
Com esse comandoU seu ar7uivo de configura&'o /etc/exports ser2 lido e o Aernel atuali.ado com
as mudan&as reali.adas#
2.1#.1 Ser&idor FISRFCS
*ara )odermos fa.er com 7ue o O-S fa&a autentica&'o remotamenteU temos 7ue )rimeiro ter um
servi&o 7ue )ermita isso# +asicamente o 7ue vocV )recisa de editar o ar7uivo /etc/exports e colocar as
seguintes linhas9
/home/ ip_da_maquina_remota(rw,no_root_squash)
: 7ue temos a7ui o seguinte9
/home/ - 5ste o diret8rio 7ue ser2 ex)ortado_
ip_da_maquina_remotaU este o i) da m27uina 7ue ter2 acesso ao diret8rio ex)ortado# *ode-se
usar o coringa S )ara liberar )ara 7ual7uer m27uina#
(rw,no_root_squash)U s'o as o)&;es 7ue usamos a7uiU onde r2 )ermite a leitura e grava&'o )ara
os -*s es)ecificados e noHrootHsquas d2 )ermiss'o de acesso ao root remoto tambm#
: J)serv#conf normalmente Q2 vem configurado9
# Should we do DNS lookups for hosts not found in the hosts table ?
# This option is ignored in the moment.
dns: no
# How many map file handles should be cached ?
files: 30
# Should we register ypserv with SLP ?
slp: no
# xfr requests are only allowed from ports < 1024
xfr_check_port: yes
Agora vamos configurar o /etc/yp.conf9
domain nome_do_dominio hostname x.x.x.x
Oo ar7uivo /etc/defaultdomainU colo7ue na Tltima linha9
NISDOMAIN="nome_do_dominio_nis"

ondeU domain nome_do_dominio, este o nome do seu domHnio O-SU evite colocar o mesmo nome
do domHnio DOS# X2 o hostname x.x.x.x, o i) do seu servidor O-S#
Agora entre no diret8rio /var/yp/U edite o ar7uivo *aJefile e tro7ue as seguintes linhas9
MERGE_PASSWD=true
MERGE_GROUP=true
)or9
MERGE_PASSWD=false
MERGE_GROUP=false
: ar7uivo securenets9
# Always allow access for localhost
255.0.0.0 127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
x.x.x.x x.x.x.x
*ara sua seguran&aU modifi7ue este ar7uivo de acordo com suas necessidades# Oo )rimeiro x.x.x.x
vocV coloca sua m2scara de rede e no segundo vocV coloca sua rede )ara 7ue somente ela tenha acesso#
5xem)lo9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =<
255.255.255.0 192.168.1.0
Agora vocV deve com)artililhar os ar7uivos )ara 7ue o servidor O-S saiba 7uais servi&os ele )oder2
buscar na sua rede#
Oo nosso caso vamos com)artilhar os ar7uivos /etc/passwdU groupU shadow e gshadow# *ara isso
vamos colocar um sinal de mais na Tltima linha de cada um deles9
echo + >> /etc/passwd
echo + >> /etc/group
echo + >> /etc/shadow
echo + >> /etc/gshadow
Agora no servidor O-SU entre no diret8rio /var/yp/, dV o comando ypserv e de)ois make# Dever2
a)arecer uma )asta com o nome do seu domHnio# :utra coisaU o diret8rio home do cliente deve sem)re ser o
mesmo diret8rio home do servidor#
2.1) DPA com EpenDPA
VPN significa Mirtual 'ri.ate %et2orJU essa uma tcnica utili.ada )ara fa.er um DtTnelE seguro entre
duas redesU geralmente se)aradas )ela internet# :s dados s'o cri)tografados antes de entrar no tTnel e a)enas
a outra )onta conhece a chave )ara descri)tografar o mesmoU dessa formaU criando um canal de comunica&'o
relativamente seguro# : OpenVPN usa cri)tografia de chaves ao invs de usu2rio e senha )ara estabelecer um
tTnel de VPN# *ara instalar o OpenVPN utili.amos9
apt-get install openvpn
A)8s instalar o )acote devemos verificar se o m8dulo tun esteQa carregadoU se n'o estiverU use o
comando abaixo )ara )oder carreg2-lo#
modprobe tun
:s ar7uivos de configura&'o se encontram no diret8rio SetcSo)env)nU assim como o es)erado# 5ntre no
diret8rio de configura&'o e execute o comando abaixo )ara gerar uma chave cri)tografada chamada vpnkey#
openvpn --genkey --secret vpnkey
*ara configurar a VPNU vamos su)or a seguinte configura&'o de uma matri. e uma filial#
Matriz:
eth0: 200.10.10.1
eth1: 192.168.0.1
Filial:
eth0: 230.110.10.34
eth1: 192.168.1.1
*ara 7ue seQa reali.ada a conex'o de forma a)ro)riadaU devemos criar o ar7uivo de configura&'o da
filial na matri. e vice-versa# Assim sendoU no gateway da matri.U criamos um ar7uivo chamado filial#conf
?nome 7ue deseQarU filial$U filial,U ###@# :s comandos )ossuem um )e7ueno coment2rio de sua funcionalidade#
dev tun # Usa o mdulo de interface tun j carregado
remote 230.110.10.34 # IP remoto a conectar (No caso o IP da Filial)
ifconfig 10.0.0.1 10.0.0.2 # Primeiro IP local tunelado(matriz) e segundo IP tunelado filial.
secret vpnkey # Arquivo que contm a chave.
port 5003 # Portas UDP para comunicao
ping 15 # Testa a conexo da VPN
ping-restart 45
ping-timer-rem
persist-tun
persist-key
# Verbosity level.
# 0 quiet except for fatal errors.
# 1 mostly quiet, but display non-fatal network errors.
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ==
# 3 medium output, good for normal operation.
# 9 verbose, good for troubleshooting
verb 3
# Script's a serem executador quando a VPN for ativada e desativada
up /etc/openvpn/filial.up
down /etc/openvpn/filial.down
*ara o correto funcionamento do scri)tU se fa. necess2rio os ar7uivos de up e downU conforme citados
anteriormente no scri)t anterior# *or exem)loU um ar7uivo filial.up )oderia ter a seguinte estrutura ?criar em
/etc/openvpn@#
#!/bin/sh
echo
echo Criando rotas para redes tuneladas.
ip route add 192.168.1.0/24 via 10.0.0.2
touch /etc/openvpn/up.running
X2 o ar7uivo filial.do2n: 7ue )ossui a finalidade de eliminar as rotas )ara a nossa v)n com a filialU
)oderia ter a seguinte estrutura#
#!/bin/sh
echo
echo Removendo rotas para redes tuneladas.
ip route del 192.168.1.0/24 via 10.0.0.2
touch /etc/openvpn/down.running
Dando continuidadeU )recisamos criar a situa&'o inversa na filialU ou seQaU conectar a matri.# :
)rocedimento inicial o mesmo anteriorU no entantoU ao invs de criar novamente uma nova chaveU devemos
co)iar a chave criada na matri. )ara a filialU ou seQaU co)ie o ar7uivo vpnkey 7ue vocV gerou no gateway
da matri. e colo7ue
dentro da )asta /etc/openvpn no gateway da filial# 5sse )rocedimento essencialU )ois somente assim os
extremos saber'o cri)tografar e descri)tografar o conteTdo da comunica&'o# Como )ode ser )ercebido de
ante-m'oU esse ti)o de cri)tografia simtricaU no entanto aumentando um )ouco o grau de com)lexidade da
configura&'o )ossHvel usar chaves assimtricasU aumentando substancialmente a seguran&a ?openSSL@#
Crie os ar7uivos abaixoU similares ao da filialU agora com o nome de matriz.conf na filial#
dev tun # Usa o modulo de interface tun carregado anteriormente
remote 200.10.10.1 # IP remoto a conectar (No caso o IP da Matriz)
ifconfig 10.0.0.2 10.0.0.1 # Primeiro IP local tunelado(filial) e segundo IP tunelado matriz.
secret vpnkey # Arquivo que contem a chave copiado da matriz.
port 5003 # Porta UDP, mesma da matriz
ping 15 # Testa a conexo da VPN
ping-restart 45
ping-timer-rem
persist-tun
persist-key
# Verbosity level.
# 0 quiet except for fatal errors.
# 1 mostly quiet, but display non-fatal network errors.
# 3 medium output, good for normal operation.
# 9 verbose, good for troubleshooting
verb 3
# Scripts a serem rodados quando a vpn for ativada e quando for desativada
up /etc/openvpn/matriz.up
down /etc/openvpn/matriz.down
*ara o correto funcionamento do scri)tU se fa. necess2rio os ar7uivos de up e downU conforme citados
anteriormente no scri)t anterior# *or exem)loU um ar7uivo matri..up )oderia ter a seguinte estrutura ?criar em
/etc/openvpn@#
#!/bin/sh
echo
echo Criando rotas para redes tuneladas.
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =(
ip route add 192.168.0.0/24 via 10.0.0.1
touch /etc/openvpn/up.running
X2 o ar7uivo matriz.do2n: 7ue )ossui a finalidade de eliminar as rotas )ara a nossa vpn com a filialU
)oderia ter a seguinte estrutura#
#!/bin/sh
echo
echo Removendo rotas para redes tuneladas.
ip route del 192.168.0.0/24 via 10.0.0.1
touch /etc/openvpn/down.running
*ara iniciar e )ara o servi&oU tanto nas filiaisU 7uanto na matri.U utili.e /etc/init.d/openvnp
seguido de start: stop: restart#
2.1,.1 ?-F inu! ! JindoHs
*ara reali.ar a instala&'o em uma m27uina Windo!sU devemos instalar o ar7uivo o)env)n-,#3#6-gui-
$#3#/-install#exeU ou su)erior# A)8s a instala&'o devemos aQustar o ar7uivo de configura&'o de forma similar
ao 7ue foi utili.ado no Linux#
2.1* S/aper F CB4 9Controle de Banda:
: shaper um controlador de banda baseado no CBQ ?Class-Based Queueing@U ou seQaU utili.a
es7uemas baseados em filas e )rioridades )ara controlar a banda de comunica&'o# : shaper na verdade
um scri)t conversor de ar7uivos de configura&'o em regras tc qdisc baseadas em CBQ#
apt-get install shaper
%ma ve. instalado o shaperU vocV )ode criar as regras de controle de banda no diret8rio
/etc/shaper# :s ar7uivos de configura&'o devem obedecer o formato )r-definido9 cbq-
(clsid).(nome),onde9 (clsid) um nTmero hexadecimal de dois-bJtes na escala ? 333,-LLLL @U 7ue
forma uma classe -D de C+K e (nome) o nome do saper - ? )ode ser 7ual7uer texto @
Oos casos em 7ue temos )oucos ar7uivos de configura&'oU )odemos definir o ?clsid@ como a
velocidade do sha)er 5x# <4AU cb7-33<4#bacAbone-cliente_ 6$,AU cb7-36$,#bacAbone-cliente# Cada ar7uivo
de configura&'o deve conter os )arWmetros9
DEVICE=(int-nome),(banda),(peso)
RATE=(velocidade)
WEITH=(peso/10)
PRIO=(prioridade)
RULE=(ip ou rede a ser controlada)
Oo *arWmetro <"M84"U int-nome: o nome da interface a ser controlada ex9 eth3U eth$U loU )))3U
!vlan3U banda: a velocidade do dis)ositivo# ex9 ethernet $3Mbit ou $33MbitU ?)eso@ um )arWmetro de
aQuste 7ue deve ser )ro)orcional a ?banda@# Como regra teremos 7ue9 ?)eso@ ^ ?banda@ S $3# Kuando houver
mais classes n'o mesma interfaceU s8 necess2rio es)ecificar o )arWmetro ?banda@ e ?)eso@ uma Tnica ve.U
conse7entemente em outros ar7uivos vocV )oder2 ter somente o D5G-C5^?nome@#
: *arWmetro R7(": vocV informa a banda alocada )ara a classe# Oa limita&'o de velocidade do sha)erU
)odemos usar9 BbitU Mbit ou b)sU Bb)sU Mb)s como sufixos#
X2 o )arWmetro !"8NI( um )arWmetro de aQuste 7ue deve ser )ro)orcional a ?banda@# Como regra
teremos 7ue9 ?)eso@ ^ ?banda@ S $3
: )arWmetro 'R8& U informa a )rioridade do tr2fego )ara a classe# Kuanto mais elevado o nTmeroU
menor a )rioridade# A )rioridade 6 um valor Dm2gicoE#
Oo )arWmetro R)#"U ?>%L5^ffsaddrfS)refixggf9)ortgUgfdaddrfS)refixggf9)ortg@U :s )arWmetros fa.em
7ue o filtro u/, controlem o tr2fego )ara cada uma das classes# GocV )ode usar mTlti)las com)osi&;es de
regras )or ar7uivo de configura&'o# 5xem)los9
RULE=10.1.1.0/24:80
controla o tr2fego de rede 7ue )assa atravs da )orta (3 na rede $3#$#$#3
RULE=10.2.2.5
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br =0
controla o tr2fego de rede 7ue )assa atravs de 7ual7uer )orta ou do host $3#,#,#6
RULE=:25,10.2.2.128/26:5000
controla o trafego vindo de 7ual7uer origemU com destino entre a )orta 63 a )orta 6333 na rede
$3#,#,#$,(
RULE=10.5.5.5:80,
controla o tr2fego vindo da )orta (3 do host $3#6#6#6
%ma vHrgula L colocada a)8s 7ual7uer uma destas regras ir2 controlar o trafego de saHda da rede
?upstream@# Mome cuidado )ara adicionar a vHrgula na interface de rede correta#
*arWmetro +&)%<"<^JesSnoU se definido como yes o shaper ser2 mantido mesmo 7ue haQa banda
excedente#
: )arWmetro 8S&#7("<^JesSnoU se definido como yes a banda excedente n'o ser2 com)artilhada#
DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=192.128.1.0/24
5sta configura&'o di.U 7ue o tr2fego na interface etB de CB*bit atravs da rede CAK.COP.C.B ser2
)rocessado com a )rioridade Q e uma taxa de sha))ing de CKPJbit. Oote 7ue desta forma somente o tr2fego
de saHda ?upstream@ est2 sendo controlado#
-magine 7ue vocV deseQa controlar o tr2fego 7ue vem do bacAbone )ara o cliente a ,(Bbit e o trafego
7ue vai do cliente )ara o bacAbone a $,(Bbit# GocV ter2 7ue criar dois ar7uivos de configura&'oU um )ara a
eth3 e outro )ara a eth$#
Ar7uivo cb7-33,(#bacAbone-client
DEVICE=eth1,10Mbit,1Mbit
RATE=28Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.1.0/24
Ar7uivo cb7-3$,(#client-bacAbone
DEVICE=eth0,10Mbit,1Mbit
RATE=128Kbit
WEIGHT=10Kbit
PRIO=5
RULE=200.1.1.1,
*ara ter efeito as regras 7ue foram criadasU vocV dever2 executar /etc/init.d/shaperU onde o
comando lhe a)resentar2 todas as suas )ossibilidades de uso#
Digitando /etc/init.d/shaper startU os ar7uivos de configura&'o ser'o carregadosU neste
momento sua rede Q2 deve estar sofrendo a a&'o do sha)er# *ara testarU basta mudar os )arWmetros de
configura&'o e digitar /etc/init.d/shaper restartU isto for&ara a reiniciali.a&'o do sha)er e as novas
configura&;es ser'o lidas#
5ventualmente necess2rio controlar o uploadU no entanto o -* da m27uina Q2 sofreu OAMU e n'o
)ossHvel saber 7ual -* controlarU a solu&'o nesses casos a marca&'o de )acotes# *ara issoU devemos incluir
nas regras de iptables uma regra )ara marcar os )acotes oriundos da rede ou -* 7ue deseQamos controlar#
iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -j MARK -set-mark 3
Crie no SetcSsha)erS uma regra cb7--D#nomeU )or exem)loU cbq0BBBP.CAKHCOPHBHB0upload contendo9
DEVICE=eth1,100Mbit,10Mbit
RATE=256Kbit
WEIGHT=26Mbit
PRIO=5
BOUNDED=yes
MARK=3
Oesse casoU a rede fica marcado com o nTmero /U logo a)8s digo em uma regra de C+KU 7ue o tr2fego
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (3
ser2 controlado de acordo com a marca&'o# :utro exem)lo de limita&'o de uma Tnica m27uina9
Ar7uivo cb7-333,#estacao0-in
DEVICE=eth1,100Mbit,10Mbit
RATE=32Kbit
WEIGHT=3Kbit
PRIO=5
RULE=192.168.0.2/32
BOUNDED=yes
ISOLATED=yes
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ($
3 IP6ables
: IPTABLES um soft!are usado )ara analisar os )acotes 7ue )assam entre redes# A )artir desse
)rincH)io )odemos aceitarU reQeitar ou descartar esses )acotes# Atravs de mtodos de controle de acesso
baseado em registros em tabelas )resentes no B5>O5LU um L->5WALL )ode monitorar e registrar 7ual7uer
informa&'o 7ue est'o sendo transmitidas entre as redes locais e externas em tem)o real# Oo LinuxU a
filtragem de )acotes im)lementada no AernelU como modulo ou com)ilado diretamente atravs do
NETFILTER# 1eralmente o i)tables Q2 vem instalado com os )acotes )adr'o da distribui&'oU caso o i)tables
n'o esteQa instaladoU vocV )ode instalar ele com o seguinte comando9
apt-get install iptables
: iptables )ossui / chains b2sicas INPUTU OUTPUT e FORWARD as 7uais n'o )odem ser a)agadasU
)ara gerenciar essas o)era&;esU temos as seguintes o)&;es9
Criar nova chain (7&);
Apagar uma chain vazia 879);
Mudar a poltica de uma chain built-in (7:);
Listar as regras de uma chain (74);
Apagar todas as regras de uma chain (7;);
Zerar os contadores de pacotes e bytes de todas as regras de uma chain (7<);
I2 v2rias formas de mani)ular regras dentro de uma chain9
Adicionar uma nova regra na chain (71);
Inserir uma nova regra em alguma posio da chain (7I);
Substituir uma regra em alguma posio da chain (72);
Apagar uma regra em alguma posio da chain (7);
Apagar a primeira regra que associa (com alguma condio) numa chain (-D);
Apagar todas as regras de um chain ou em todas as chain (-F)
: i)tables )ode ser um m8dulo chamado iptable_filter.oU 7ue deve ser automaticamente
carregado 7uando vocV rodar iptables )ela )rimeira ve.# 5le tambm )ode ser com)ilado diretamente no
kernelU como Q2 comentado#
Antes dos comandos do iptables rodaremU n'o haver'o regras em 7uais7uer chains INPUTU
FORWARD ou OUTPUT, e todas as chains ter'o a )olHtica ACCEPT# A )olHtica )adr'o da chain FORWARD
)ode ser alterada fornecendo o )arWmetro forward=0 )ara o m8dulo iptable_filter#
3.1 Epera+es em uma Gnica re$ra
%sualmenteU vocV )rovavelmente utili.ar2 os comandos )ara adicionar ?-A@ e a)agar ?-D@# :s outros
?-- )ara inserir e -> )ara substituir@ s'o a)enas extens;es destes conceitos# Cada regra es)ecifica uma srie
de condi&;es 7ue o )acote deve atenderU e o 7ue fa.er com o mesmo se ele atendV-las um al.o target#
*or exem)loU vocV )ode deseQar descartar todos os )acotes ICMP vindos do endere&o -* $,=#3#3#$#
5nt'o neste caso nossas condi&;es s'o 7ue o )rotocolo )recisa ser ICMP e o endere&o de origem deve ser
$,=#3#3#$# Oosso alvo target DROP# : -* $,=#3#3#$ a interface loopbacJU 7ue existir2 mesmo 7ue vocV n'o
tenha nenhuma conex'o de rede real# *ode-se utili.ar o )rograma pin/ )ara gerar esse ti)o de )acote ?ele
sim)lesmente manda um ICMP ti)o ( ?re7uisi&'o de eco@ 7ue res)ondido )elos hosts com um ICMP ti)o 3
?res)osta de eco@@#
ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms
Acrescentando a regraU o resultado fica9
iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (,
ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
*ode-se ver 7ue o )rimeiro )ing bem sucedido ?a o)&'o h-c $P di. ao )ing )ara mandar um Tnico
)acote@# 5nt'o foi adicionada ?7A@ C chain INPUTU uma regra es)ecificando 7ue )acotes vindos de $,=#3#3#$
-s 127.0.0.1 com o )rotocolo ICMP 0p icmp devem ser mandados )ara DROP -j <R&'#
Logo de)oisU testamos nossa regraU usando um segundo )ing# Iaver2 uma )ausa antes 7ue o )rograma
desista de es)erar )elo )acote 7ue nunca viria#
3.1.1 A"agando 2egras
*ode-se a)agar regras de duas maneiras# *rimeiramenteU desde 7ue sabemos 7ue existe a)enas uma
regra na chain INPUTU )odemos utili.ar um nTmero )ara designar a regraU como abaixo9
iptables -D INPUT 1
*ara a)agar a regra nTmero $ na chain INPUT# A segunda formaU fa.er o mesmo 7ue farHamos )ara
adicionar a regraU trocando 7A )or 78# -sso Ttil 7uando vocV tem uma chain muito com)lexa e n'o 7uer
contar )ara descobrir o nTmero da regra# Oeste caso usaria-se9
iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
A sintaxe do 78 deve ter exatamente as mesmas o)&;es 7ue seriam )assadas )ara a o)&'o 7A ?ou 7I ou
72@# Se existem v2rias regras idVnticas na mesma chainU a)enas a )rimeira ser2 a)agada#
3.1.2 Es"ecifica*es "ara filtragem
A o)&'o 7"U serve )ara es)ecificar o )rotocoloU e 7s )ara es)ecificar o endere&o de origemU mas
existem outras o)&;es 7ue )odem ser utili.adas )ara es)ecificar outras caracterHsticas dos )acotes# : 7ue
segue uma ex)lica&'o exaustiva# 5s)ecificando endre&os -* de origem e destino
5ndere&os -* de :rigem ?7sU 77source ou 77src@ e destino ?7dU 77destination ou 77dst@ )odem ser
es)ecificados em 7uatro formas diferentes# A mais comum utili.ar o nome com)letoU como localost ou o
DNS# A segunda di.er o -*U como CKR.B.B.C#
A terceira e a 7uarta formas )ermitem a es)ecifica&'o de um gru)o de endere&os -*U como CAA.AQ.KBR.B1KL
ou CAA.AQ.KBR.B1KQQ.KQQ.KQQ.B# Ambas es)ecificam 7ual7uer endere&o -* de CAA.AQ.KBR.B at
CAA.AQ.KBR.KQQ. :s dHgitos de)ois da S di.em 7uais )artes do endere&o -* s'o significantes# S/, ou
S,66#,66#,66#,66 o )adr'o ?associando o endere&o -* inteiro@# *ara es)ecificar 7ual7uer endere&o -* )ode-
se utili.ar S3U conforme descrito abaixo9
iptables -A INPUT -s 0/0 -j DROP

-sso raramente utili.adoU uma ve. 7ue o efeito da regra acima o mesmo 7ue se n'o fosse
es)ecificada nenhuma origem#
3.1.3 Es"ecificando In&erso
Muitas flagsU incluindo 7s ?77source@ e 7d ?77destination@ )odem ter seus argumentos )recedidos de T
)ara associar-se com endere&os diferentes aos )assados C o)&'o# *or exem)loU 7s T localost associa-se com
7ual7uer )acote 7ue n'o venha de localhost#
3.1.4 Es"ecificando "rotocolo
: )rotocolo )ode ser es)ecificado com 7" ?77"rotocol@# :s )rotocolos )odem ser TCPU UDP or ICMPU
existe ainda a cl2usula ALL# Digitar em maiTsculas ou minTsculas n'o fa. diferen&aU tcp funciona t'o bem
como (4'#
Se o nome do )rotocolo )recedido de TU a fim de invertV-loU como 7"T TCPU a regra es)ecificar2 todos
os )acotes 7ue n'o s'o TCP.
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (/
3.1.# Es"ecificando uma interface
As o)&;es 7i ?77in7interface@ e -o ?77out7interface@ es)ecificam o nome de uma interface a es)ecificar#
%ma interface um dis)ositivo fHsico )elo 7ual o )acote veio 7i ou est2 saindo 7o# *ode-se usar o comando
ifconfig )ara listar as interfaces ativas#
*acotes atravessando a chain INPUT n'o )ossuem interface de saHdaU logo 7ual7uer regra utili.ando 7o
n'o ter2 sentido ou fun&'o# Da mesma formaU )acotes atravessando a chain OUTPUT n'o tVm interface de
entradaU logo 7ual7uer regra utili.ando -i n'o tem sentido# A)enas )acotes )assando )ela chain FORWARD
tVm interfaces de entrada e saHda#
O'o h2 nenhum )roblema em es)ecificar uma interface 7ue ainda n'o existeU a regra n'o associar-se-2
com 7uais7uer )acotes at 7ue a interface torne-se ativa# -sso extremamente Ttil )ara linAs discados ***
?usualmente com a interface )))3@ e similares#
Como um caso es)ecialU um nome de interface terminando com um U vai associar-se com todas as
interfaces ?existam elas ou n'o@ 7ue comecem com a7uela string# *or exem)loU )ara es)ecificar uma regra
7ue se associa com todas as interfaces ***U a o)&'o 7i )))U deve ser criada#
3.1., Es"ecificando fragmentos
is ve.es um )acote muito grande )ara ser enviado todo de uma ve.# Kuando isso ocorreU o )acote
dividido em fragmentosU e enviado como mTlti)los )acotes# Kuem o recebeU remonta os fragmentos
reconstruindo o )acote#
: )roblema com os fragmentos 7ue o fragmento incial tem os cam)os de cabe&alho com)letos ?IP a
TCPU UDP e ICMP@ )ara examinarU mas os )acotes sub-se7uentes s8 tVm um )e7ueno gru)o de cabe&alhos
?somente -*U sem os cam)os dos outros )rotocolos@# Logo examinar o interior dos fragmentos sub-se7uentes
em busca de cabe&alhos de outros )rotocolos ?como extens;es de MC*U %D* e -CM*@ im)ossHvel#
Se vocV est2 fa.endo acom)anhamento de conex;es ou NATU todos os fragmentos ser'o remontados
antes de atingirem o c8digo do filtro de )acotesU ent'o vocV n'o )recisa se )reocu)ar sobre os fragmentos#
Caso contr2rioU im)ortante entender como os fragmentos s'o tratados )elas regras de filtragem#
Kual7uer regra de filtragem 7ue re7uisitar informa&;es 7ue n'o existem n'o ser2 v2lida# -sso significa 7ue o
)rimeiro fragmento tratado como um )acote 7ual7uer# : segundo e os seguintes n'o ser'o# 5nt'o uma
regra 7" TCP 77s"ort 222 ?es)ecificando !!! como )orta de origem@ nunca se associar-se-2 com um
fragmento ?exceto o )rimeiro@# : mesmo se a)lica C regra o)osta 7" MC* 77s"ort T 222#
De 7ual7uer formaU vocV )ode es)ecificar uma regra es)ecial )ara o segundo e os fragmentos 7ue o
sucedemU utili.ando a flag 7f ?77fragment@# Mambm interessante es)ecificar uma regra 7ue n'o se a)lica ao
segundo e os outros fragmentosU )recedendo a o)&'o 7f com T#
1eralmente reconhecido como seguro deixar o segundo fragmento e os seguintes )assaremU uma ve.
7ue o )rimeiro fragmento ser2 filtradoU logo isso vai evitar 7ue o )acote todo seQa remontado na m27uina
destinat2ria# De 7ual7uer formaU h2 bugs 7ue levam C derrubada de uma m27uina atravs do envio de
fragmentos# A decis'o sua#
Oota )ara os administradores de rede9 )acotes mal formados ?)acotes MC*U %D* e -CM* muito
)e7uenos )ara 7ue o c8digo do fire!all )ossa ler as )ortas ou o c8digo e ti)o dos )acotes -CM*@ s'o
descartados 7uando ocorrem tais an2lises# 5nt'o os fragmentos MC* come&am na )osi&'o (#
Como um exem)loU a regra a seguir vai descartar 7uais7uer fragmentos destinados ao endere&o
$0,#$<(#$#$9
iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
3.1.. E!tens*es ao i"tables( Fo&as Im"lementa*es
: iptables extensHvelU assimU tanto o Aernel 7uanto o i)tables )odem ser extendidos )ara fornecer
novas funcionalidades# Algumas dessas extens;es s'o )adroni.adasU e outras s'o mais ex8ticas# 5xtens;es
)odem ser feitas )or 7ual7uer um e distribuHdas se)aradamente )ara usu2rios de nichos mais es)ecHficos#
As extens;es do Aernel geralmente est'o no subdiret8rio de m8dulos do Aernel comoU )or exem)loU
/lib/modules/2.3.15/net# 5las s'o carregadas )or demanda se seu Aernel foi com)ilado com a o)&'o
CONFIG_KMOD marcadaU n'o havendo a necessidade de inserH-las manualmente#
As extens;es do iptables s'o bibliotecas com)artilhadas as 7uais geralmente est'o em
/usr/local/lib/iptables/U mas uma distribui&'o os colocaria em /lib/iptables ou
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (4
/usr/lib/iptables#
5xtens;es vVm em dois ti)os diferentes9 novos alvos ?targets@U e novas associa&;es ?de)ois falaremos
mais sobre novos alvos targets@# Alguns )rotocolos automaticamente oferecem novos testes9 atualmente
s'o eles MC*U %D* e -CM* como mostrado abaixo#
*ara esses )rotocolos vocV )oder2 es)ecificar novos testes na linha de comando de)ois da o)&'o 7"U
7ue carregar2 a extens'o# *ara novos testes ex)lHcitosU utili.e a o)&'o 7m )ara carregar a extens'oU de)ois de
7mU todas as o)&;es da extens'o estar'o dis)onHveis#
*ara conseguir aQuda com uma extens'oU utili.e a o)&'o 7ue a carrega 47"U 7P ou 7m@ sucedida )or 7>
ou 77>el"U conforme o exem)lo9
iptables -p tcp --help
3.2 >(tens+es 6CP
As extens;es MC* s'o automaticamente carregadas se es)ecificada a o)&'o 7" tcp. 5las )rovem as
seguintes o)&;es ?nenhuma associa-se com fragmentos@#
77tc"7flags seguida )or uma o)cional TU e )or duas strings indicando flagsU )ermite 7ue seQam filtradas
flags (4' es)ecHficas# A )rimeira string de flags a m2scaraU uma lista de flags 7ue ser'o examinadas# A
segunda string di. 7uais flags devem estar ativas )ara 7ue a regra se a)li7ue# *or exem)lo9
iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
5ssa regra indica 7ue todas as flags devem ser examinadas ?ALL sinNnimo de
SYN,ACK,FIN,RST,URG,PSH@U mas a)enas SYN e ACK devem estar ativadas# Mambm h2 um argumento
NONE 7ue significa nenhuma flag#
77sIn o)cionalmente )recedido )or TU um atalho )ara 77tc"7flags SVFL2SDLA$9 SVF#
77source7"ort seguido )or j o)cionalU e uma Tnica )orta MC*U ou um conQunto ?range@ de )ortas# As
)ortas )odem ser descritas )elo nomeU conforme listado em /etc/servicesU ou )elo nEmero# ConQuntos
?ranges@ s'o dois nomes de )ortas se)arados )or (U ou ?)ara es)ecificar uma )orta maior ou igual C
es)ecificada@ uma )orta sucedida )or (U ou ?)ara es)ecificar uma )orta menor ou igual C es)ecificada@U uma
)orta )recedida )or (#
77s"ort sinNnimo de 77source7"ort#
77destination7"ort ou 77d"ort funcionam de forma idVntica a 00source0portU a Tnica diferen&a 7ue
elas indicam a )orta de destinoU e n'o a )orta de origem#
77tc"7o"tion seguida )or T o)cional e um nTmeroU associa-se com um )acote com a o)&'o MC* igual
ao do nTmero )assado# %m )acote 7ue n'o tem um cabe&alho MC* com)leto automaticamente descartado
se h2 uma tentativa de examinar suas o)&;es MC*#
3.2.1 +ma e!"licao sobre as flags D$-
is ve.es Ttil )ermitir conex;es MC* em uma Tnica dire&'oU mas n'o nas duas# *or exem)loU vocV
)ermitir2 conex;es em um servidor WWW externoU mas n'o conex;es vindas deste servidor#
%ma tentativa ingVnua seria blo7uear )acotes MC* vindos do servidor# -nfeli.menteU conex;es MC*
necessitam de )acotes bi-direcionais )ara um funcionamento )erfeito#
A solu&'o blo7uear a)enas os )acotes utili.ados )ara requisitar uma cone>-o# Mais )acotes s'o
chamados )acotes SYN ?tecnicamente eles s'o )acotes com a flag SYN marcadaU e as flags RST e ACK
desmarcadasU mas di.emos )acotes SYN como atalho@# Ao n'o )ermitir tais )acotesU n8s im)edimos conex;es
vindas do servidor#
A o)&'o 77sIn utili.ada )ara issoU s8 v2lida )ara regras 7ue es)ecificam MC* como )rotocolo# *or
exem)loU )ara es)ecificar conex;es MC* vindas do endere&o $0,#$<(#$#$9 7" (4' 7s CAK.COP.C.C 77sIn
3.2.2 E!tens*es +8-
5ssas extens;es s'o automaticamente carregadas se a o)&'o 7" udp es)ecificada# 5la )rovV as o)&;es
77source7"ortU 77s"ortU 77destination7"ort ou 77d"ort conforme detalhado )ara o MC* acima#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (6
3.2.3 E!tens*es I$/-
5ssas extens;es s'o automaticamente carregadas se a o)&'o 7" icmp es)ecificada# 5la s8 )ossui uma
o)&'o diferente das demais9
77icm"7tI"e seguida )or T o)cionalU e um nome de ti)o icmp ?)or exem)loU host-unreachable@U ou
um ti)o numrico ?exem)lo /@U ou um ti)o numrico e c8digo se)arados )or S ?exem)lo /S/@# %ma lista de
ti)os icmp )assada utili.ando-se 7" icmp 77>el"#
3.2.4 )utras e!tens*es
:utras extens;es no )acote netfilter s'o extens;es de demonstra&'oU 7ue ?caso instaladas@ )odem
ser chamadas com a o)&'o 7m#
/acU 5ste m8dulo deve ser ex)licitamente es)ecificado com 7m mac ou 77matc> mac# 5le usado
)ara associar-se com o endere&o 5thernet ?MAC@ de origem do )acoteU e logo s8 Ttil nas chains
PREROUTING e INPUT# S8 )rovV uma Tnica o)&'o mac7source seguida )or T o)cional e um endere&o
ethernet )assado em nota&'o hexadecimaU exem)lo 77mac7source BB=OB=BP=AC=44=+R#
imitU 5ste m8dulo deve ser ex)licitamente es)ecificado com 7m limit ou 77matc> limit. Y usado )ara
restringir a taxa de )acotesU e )ara su)rimir mensagens de log# Gai fa.er com 7ue a regra seQa v2lida a)enas
um nTmero de ve.es )or segundo ?)or )adr'o / ve.es )or horaU com um limite m2ximo def 6@# *ossui dois
argumentos o)cionais9
77limit seguido de um nTmeroU es)ecifica a mdia m2xima de )acotes ?ou L:1sU etc@ )ermitida )or
segundo# *ode-se es)ecificar a unidade de tem)oU usando RsecondU RminuteU R>our ou RdaIU ou abrevia&;es
dos mesmos ?assimU Q1second o mesmo 7ue Q1s@#
77limit7burst seguido de um nTmeroU indicando o m2ximo de entradas antes do limite tornar-se v2lido#
5ssa extens'o )ode ser usada com o alvo ?target@ L:1 )ara criar registros ?logs@ limitados )or taxa de
incidVncia# *ara entender o funcionamento dissoU olhe a regra abaixoU 7ue loga )acotes com os )arWmetros
)adr'o de limite9
iptables -A FORWARD -m limit -j LOG
Oa )rimeira ve. 7ue essa regra analisadaU o )acote ser2 logadoU na realidadeU uma ve. 7ue o )adr'o
m2ximo 6U os cinco )rimeiros )acotes ser'o logados# De)ois dissoU )assar-se-'o vinte minutos antes de 7ue
essa regra fa&a um novo logoU inde)endente do nTmero de )acotes 7ue entrarem# Alm dissoU a cada vinte
minutos 7ue se )assam sem 7ue um )acote associe-se com a regraU o contador diminuHdo em uma unidade#
LogoU se nenhum )acote associar-se com a regra em $33 minutosU o limite estar2 .eradoU voltando ao est2gio
inicial#
Fota9 n'o )ossHvel criar uma regra com tem)o de recarga su)erior a 60 horasU ent'o se vocV
configura uma taxa mdia de um )or diaU seu limite m2ximo deve ser menor 7ue /# 5sse m8dulo tambm
)ode ser usado )ara evitar uma srie de ata7ues do ti)o negativa de servi&o ?denial of service - DoS@
com uma taxa mais r2)idaU a fim de aumentar a sensibilidade do sistema#
Como )olHtca de )rote&'oU ou vocV n'o )ermite )ingU ou ent'o usa uma )olHtica de seguran&a ao
receber os )ingU dentro dos )rinci)ais ata7uesU citamos9
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j
ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
As regras acima s'o res)ectivamente )ara )rote&'o contra SJn-floodU *ort Scanner sus)eitoU e *ing da
morte# :bserve 7ue na )rimeira regra s8 s'o aceitos e )assados adiante as re7uisi&;es de conex'o feitas com
um intervalo de tem)o su)erior C $ )or segundo# A segunda regraU )ermite reali.ar uma tentativa de conex'o
)or no m2ximo uma )or segundo# A Tltima somente )ermite uma res)osta de )ing no m2ximo de $ )or
segundo#
oHner 5sse m8dulo tenta associar-se com v2rias caracterHsticas do criador do )acoteU )ara )acotes
gerados localmente# S8 v2lido na chain OUTPUTU e mesmo assim alguns )acotes ?como res)ostas de )ing
ICMP@ )odem nao ter donoU e nunca ser'o analisados )ela regra#
77uid7oHner userid Associa-se com o )acote se este foi criado )or um )rocesso com o userid igual ao
)assado na o)&'o#
77gid7oHner grou"id Associa-se com o )acote se este foi criado )or um )rocesso com o /roupid igual
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (<
ao )assado na o)&'o#
77"id7oHner "rocessid Associa-se com o )acote se este foi criado )or um )rocesso com o proccessid
igual ao )assado na o)&'o#
77sid7oHner sessionid Associa-se com o )acote se este foi criado )or um )rocesso com o sessionid
igual ao )assado na o)&'o#
unclean 5sse m8dulo ex)erimental deve ser ex)licitamente es)ecificado com 7m unclean ou 77matc>
unclean# 5le fa. diversas checagens de sanidade nos )acotes#
3.3 C/eca$ens de estado dos pacotes 9state matc/:
: critrio )ara filtragem de )acotes mais Ttil )rovido )ela extens'o state 7ue inter)reta a an2lise do
controle da conex'o feita )elo m8dulo ip_conntrack# 5ssa extens'o altamente recomendada#
5s)ecificando 7m state a o)&'o 77state torna-se dis)onHvelU a 7ual uma lista dos estados )ossHveis
dos )acotes se)arada )or vHrgula # :s estados s'o9
FEJ %m )acote 7ue cria uma nova conex'o#
ESDABISAE8 %m )acote 7ue )ertence a uma conex'o existente ?um )acote de res)ostaU um )acote
saindo )or uma conex'o na 7ual Q2 houveram res)ostas@#
2EADE8 %m )acote relacionadoU mas 7ue n'o fa. )arteU de uma conex'o existenteU como um erro
-CM*U ou ?com o m8dulo LM* carregado@U um )acote estabelecendo uma conex'o de dados LM*#
IF?AI8 %m )acote 7ue n'o )Nde ser identificado )or alguma ra.'o9 isso inclui falta de mem8ria e
erros -CM* 7ue n'o corres)ondem a 7ual7uer conex'o conhecida# 1eralmente tais )acotes devem ser
descartados#
3." >speci%ica+es de al!o 96ar$et:
Agora 7ue sabemos 7uais as an2lises )odem ser feitas em um )acotesU )recisamos de uma forma de
di.er o 7ue fa.er com os )acotes 7ue )assam nas condi&;es 7ue estabelecemos# -sso chamado de alvo
?target@ da regra#
I2 dois alvos bem sim)les DROP ?descartar@ e ACCEPT ?aceitar@# Se a regra se associa com o )acote e
seu alvo um desses doisU nenhuma outra regra consultada9 o destino do pacote S6 foi decidido#
I2 dois ti)os de alvos diferentes dos descritos acimaU as extens;es e as chains definidas )or usu2rios#
3.4.1 $>ains definidas "or usurios
%ma funcionalidade 7ue o i)tables herdou do i)chains a )ossibilidade do usu2rio criar novas chainsU
alm das trVs )adr'o ?INPUTU FORWARD e OUTPUT@# *or conven&'oU chains definidas )elo usu2rio s'o escritas
em minTsculasU diferenciando-as ?como criar chains definidas )elo usu2rio ser2 descrito abaixo :)era&;es
em uma chain@#
Kuando um )acote associa-se com uma regra cuQo alvo ?target@ uma chain definida )elo usu2rioU o
)acote )assa a ser analisado )elas regras dessa chain definida )elo usu2rio# Se a chain n'o decide o 7ue deve
ser feito com o )acoteU o mesmo volta a ser analisado )ela chain )adr'o 7ue continha a regra 7ue o levava
)ara a chain definida )elo usu2rio# Considere duas chains9 -O*%M ?a chain )adr'o@ e test ?uma chain definida
)elo usu2rio@#
INPUT test
---------------------------- ----------------------------
| Regra1: -p ICMP -j DROP | | Regra1: -s 192.168.1.1 |
|--------------------------| |--------------------------|
| Regra2: -p TCP -j test | | Regra2: -d 192.168.1.1 |
|--------------------------| ----------------------------
| Regra3: -p UDP -j DROP |
----------------------------
Considere um )acote MC* vindo de $0,#$<(#$#$U indo )ara $#,#/#4# 5le entra na chain INPUT e
testado )ela >egra$ - n'o se associa# X2 a >egra, se associaU e seu alvo testU logo a )r8xima regra
examinada est2 no inHcio de test# A >egra$ na chain test se associaU mas n'o es)ecifica um alvoU ent'o a
)r8xima regra examinadaU >egra,# 5la n'o se associaU e n8s chegamos no final da chain# 5nt'oU a chain
INPUT volta a ser examinadaU e como a Tltima regra desta chain 7ue foi examinada foi a >egra,U a regra a ser
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (=
examinada agora a >egra/U 7ue tambm n'o se associa com o )acote# LogoU o caminho 7ue o )acote fa. o
seguinte9
v __________________________
`INPUT' | / `test' v
------------------------|--/ -----------------------|----
| Regra1 | /| | Regra1 | |
|-----------------------|/-| |----------------------|---|
| Regra2 / | | Regra2 | |
|--------------------------| -----------------------v----
| Regra3 /--+___________________________/
------------------------|---
v
Chains definidas )or usu2rio )odem ter como alvo outras chains definidas )or usu2rio ?mas n'o fa&a
loo)sU seus )acotes ser'o descartados se entrarem em loo)@#
3.4.2 E!tens*es ao i"tables( Fo&os al&os 4targets5.
: outro ti)o de alvo uma extens'o# %ma extens'o-alvo consiste em um m8dulo do AernelU e uma
extens'o o)cional ao iptables )ara )rover o)&;es de linha de comando# I2 diversas extens;es na
distribui&'o )adr'o do netfilter9
)G 5sse m8dulo )rovV logging dos )acotes submetidos# *ossui as seguintes o)&;es adicionais
77log7le&el Seguido de um nTmero de nHvel ou nome# :s nome v2lidos ?sensHveis a
maiTsculasSminTsculas@ s'o debugU infoU noticeU HarningU errU critU alert e emergU corres)ondendo a
nTmeros de = at 3# GeQa a )2gina de manual do syslog.conf )ara uma ex)lica&'o mais detalhada desses
nHveis#
77log7"refi! Seguido de uma string de at ,0 caracteresU esta ser2 adicionada no inHcio da mensagem
de logU )ermitindo melhor identifica&'o da mesma# 5sse m8dulo Ttil a)8s de uma com)ara&'o )or limite
?limit match@U assimU vocV n'o enche seus logs#
2EWE$D 5sse m8dulo tem o mesmo efeito de DROPU a n'o ser 7ue o remetente tenha enviado uma
mensagem de erro ICMP port unreacable ?)orta inalcan&2vel@# A mensagem de erro ICMP n'o ser2 enviada
se ?veQa >LC $$,,@9
: )acote 7ue est2 sendo filtrado era uma mensagem de erro -CM* no inHcioU ou um ti)o
desconhecido de -CM*_
: )acote sendo filtrado era um fragmente sem cabe&alho_
X2 enviamos muitas mensagens de erro -CM* )ara o mesmo destinat2rio recentemente#
: 2EWE$D tambm tem o argumento o)cional 7rePect7Hit> 7ue altera o )acote de res)osta utili.adoU
veQa a )2gina de manual#
3.4.3 Al&os es"eciais "adro
I2 dois ti)os es)eciais de alvos )adr'o9 RETURN e QUEUE#
2ED+2F tem o mesmo efeito de chegar ao final da chain9 )ara uma regra numa chain )adr'oU a
)olHtica da chain executada# *ara uma chain definida )or usu2rioU a travessia continua na chain anteriorU
exatamente a)8s a regra 7ue saltou )ara a chain definida )elo usu2rio#
O+E+E um alvo es)ecialU 7ue manda o )acote )ara uma fila )ara )rocessamento em nHvel de
usu2rio# *ara isso ser TtilU dois com)onentes s'o necess2rios9
um gerenciador de filasU 7ue trata com a mecWnica de )assar os )acotes do Aernel )ara o es)a&o do
usu2rio_
uma a)lica&'o no es)a&o do usu2rio )ara receberU )ossivelmente mani)ular e decidir o 7ue fa.er com
os )acotes#
: gerenciador de filas )adr'o )ara o iptables -*v4 iptables o m8dulo ip_queueU 7ue
distribuHdo com o Aernel e atualmente ex)erimental#
: seguinte um r2)ido exem)lo de como utili.ar o iptables )ara enfileirar )acotes )ara
)rocessamento em nHvel de usu2rio9
modprobe iptable_filter
modprobe ip_queue
iptables -A OUTPUT -p icmp -j QUEUE
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br ((
Com essa regraU )acotes ICMP de saHda gerados localmente ?comoU )or exem)loU criados )elo )ing@
s'o )assados ao m8dulo ip_queueU 7ue ent'o tenta mandar os )acotes )ara uma a)lica&'o em nHvel de
usu2rio# Se n'o h2 nenhuma a)lica&'o em nHvel de usu2rio est2 es)erandoU os )acotes s'o descartados#
*ara escrever uma a)lica&'o em nHvel de usu2rioU utili.e a A*- libipqU 7ue distribuHda com o
i)tables# C8digos de exem)lo )odem ser encontradas com as ferramentas testsuite ?)or exem)lo redirect#c@
no CGS#
: estado de ip_queue )ode ser consultado atravs de9
/proc/net/ip_queue
: com)rimento m2ximo da fila ?exem)loU o nTmero de )acotes entregues ao es)a&o do usu2rio sem
7ue nenhuma res)osta fosse )assada@ )ode ser controlado )or9
/proc/sys/net/ipv4/ip_queue_maxlen
: valor )adr'o )ara o com)rimento m2ximo da fila $3,4# %ma ve. 7ue esse limite foi atingidoU
novos )acotes ser'o descartados at 7ue o tamanho da fila diminua abaixo do limite# +ons )rotocolos como o
MC* inter)retam )acotes descartados como congestionamentoU 7ue talve. voltem 7uando a fila diminua# De
7ual7uer formaU ex)erimentos )ara determinar o tamanho ideal da fila )ois Cs ve.es o tamanho )adr'o
muito )e7ueno#
3.& Epera+es em uma c/ain
%ma funcionalidade muito im)ortante do iptables a habilidade de Quntar regras em chains
?cadeias@# GocV )ode dar o nome 7ue 7uiser )ara as chainsU mas recomendada a utili.a&'o de minTsculas
)ara evitar confus'o com as chains )adr'o ou com os alvos ?targets@# Oomes de chains )odem ter at /$
letras#
3.#.1 )"era*es com c>ains
*ara criar uma nova chainU utili.e as o)&;es 7F ou 77neH7c>ain9
iptables -N test
*ara a a)agar uma ChainU utili.e as o)&;es 7N ou delete7c>ain(
iptables -X test
I2 uma srie de restri&;es ao se a)agar uma chainU ela deve estar va.ia ?veQa 5sva.iando uma chainU
logo abaixo@ e ela n'o deve ser alvo de O5OI%MA regra# Y im)ossHvel a)agar nenhuma das trVs chains
)adr'o# Se uma chain n'o for es)ecificadaU todas as chains definidas )or usu2rio ser'o a)agadasU desde 7ue
seQa )ossHvel#
5sva.iando uma chain# I2 uma forma muito sim)les de retirar todas as regras de uma chainU
utili.ando as o)&;es 7C ou flus># Se uma chain n'o for es)ecificadaU todas as chains ser'o esva.iadas
iptables -F FORWARD
Listando uma chain# *ode-se listar todas as regras de uma chain utili.ando as o)&;es 7 ou list. :
valor refcnt listado )ara cada chain definida )or usu2rio o nTmero de regras 7ue tVm tal chain como alvo
?target@# 5ste valor deve ser .ero ?e a chain deve estar va.ia@ antes 7ue essa chain )ossa ser a)agada# Se o
nome da chain omitidoU todas as chains s'o listadasU at as va.ias# I2 trVs o)&;es 7ue )odem acom)anhar
7# A o)&'o 7n ?numrico@ muito Ttil uma ve. 7ue )revine 7ue o iptables tente resolver os endere&os -*U
o 7ue ?se vocV utili.a DNS assim como a maioria das )essoas@ causaria grandes atrasos se o DNS n'o est2
configurado corretamenteU ou vocV est2 filtrando re7uisi&;es DNS# 5ssa o)&'o tambm fa. as )ortas MC* e
%D* serem im)ressas como nTmeros em ve. de nomes#
A o)&'o 7& mostra todos os detalhes das regrasU como os contadores de )acotes e bJtesU as
com)ara&;es (&SU e as interfaces# Caso tal o)&'o n'o seQa )assadaU esses valores sao omitidos#
Oote 7ue os contadores de )acotes e bJtes s'o im)ressos com os sufixos $U * ou N )ara $#333U
$#333#333 e $#333#333#333 res)ectivamente#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br (0
%tili.ando a flag 7! ?ex)andir nTmeros@ os nTmeros ser'o im)ressos inteirosU inde)endente de seu
tamanho#
iptables -L FORWARD
kerando contadores# Y Ttil .erar os contadores# -sso )ode ser feito com a o)&'o 7X ou 77zero#
iptables -Z FORWARD
Oo exem)lo acimaU alguns )acotes )assariam )elos comandos 7 e 7X# *or issoU vocV )ode utili.ar 7
e 7X em conQuntoU )ara .erar os contadores en7uanto estes s'o lidos#
3.) 2isturando A6 e 5iltra$em de Pacotes
Y muito comum a utili.a&'o de Network Address Translation ?NAT@ em conQunto com a
filtragem de )acotes# A boa notHcia 7ue eles se misturam muito bem# *rimeiramenteU vocV )roQeta e constr8i
seu filtro de )acotes ignorando totalmente 7ual7uer NAT a ser feito# As origens e destinos 7ue o filtro de
)acotes ver2 ser'o as origens e destinos reais# *or exem)loU se vocV far2 DNAT )ara mandar conex;es do
endere&o $#,#/#4 )orta (3 )ara $3#$#$#$ )orta (3(3U o filtro de )acotes ver2 )acotes indo )ara $3#$#$#$ )orta
(3(3 ?o destino real@U e n'o $#,#/#4 )orta (3#
SimilarmenteU vocV )ode ignorar o masquerading, os )acotes v'o )arecer 7ue tVm como origem o
real endere&o -* interno ?)or exem)lo $3#$#$#$@U e as res)ostas v'o )arecer 7ue tVm como destino esse
mesmo endere&o#
*ode-se utili.ar a extens'o de checagem do estado dos )acotes ?state match@ sem fa.er com 7ue o
filtro de )acotes tenha 7ual7uer trabalho extraU uma ve. 7ue NAT Q2 re7uer acom)anhamento de conex'o#
*ara melhorar o sim)les exem)lo de masquerading descrito no %7( I&!(& a fim de reQeitar 7uais7uer
novas conex;es vindo na interface )))3# La.er NAT masquerade )ela interface )))39
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Rejeitar conexes novas (NEW) e invlidas (INVALID) de pacotes com
# destino maquina local ou que devem ser repassados vindos de ppp0.
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP
# Habilitar IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
3.* Compartil/amento de Cone(+es
A maneira mais f2cil 7ue existe usar o seu Linux com gateway com)artilhando o acesso C internet
entre as suas v2rias sub-redes# : exem)lo abaixo demonstra como fa.er isso9

echo 1>/proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Oo exem)loU a )rimeira linha di. 7ue ativado o encaminhamento de -*PsU o 7ue essencial )ara
com)artilhar um linA# :s trVs )r8ximos comandos servem )ara a)agar outras regras existentes# A Tltima
regra di. 7ue )ara fa.er NAT na saHda da eth3#
3., 5azendo A6
: NAT uma tcnica usada )ara fa.er uma rede acessar outra na 7ual n'o )ossui rota )ara elaU mas ela
)ossua uma m27uina com acesso a essa outra rede# 5m outras )alavrasU tcnica usada )ara uma rede local
acessar a internetU contendo a)enas $ endere&o -* v2lido# Gamos su)or9
Rede local: 192.168.0.1 ao 192.168.0.254 - Mscara: 255.255.255.0
Endereo de Internet: 200.xxx.yyy.120 - Gateway: 200.xxx.yyy.1
Esquema do Servidor de Internet
eth0: 200.xxx.yyy.120
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 03
eth1: 192.168.0.1
Gateway: 200.xxx.yyy.1
-nicialmenteU )ara o Linux habilitar a )assagem de ar7uivos entre as interface de redeU )reciso
habilitar a o)&'o de -*-L:>WA>D# *ara issoU digite no console9
echo 1 > /proc/sys/net/ipv4/ip_forward
Com issoU essa m27uina Q2 est2 )ronta transmitir os )acotes de uma interface )ara outra# AgoraU como
a internet desconhece a existVncia da sua rede localU vocV )recisa fa.er com 7ue suas esta&;es internas
acessem a internet como se fosse a m27uina com acesso normal# *ara isso9
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -i eth1 -j MASQUERADE
5x)lica&'o )asso-a-)asso9
iptables = programa para controlar as requisies TCP/IP (Firewall)
-t nat = Informa que iremos colocar uma regra na Tabela de NAT (-t = tabela)
-A POSTROUTING = Adicionar uma regra no Ps-Roteamento (aps passar entra as
interfaces)
-s 192.168.0.0/24 = Endereo de origem (Source) das requisies
-i eth1 = Interface de Entrada (-i = entrada/IN)
-j MASQUERADE = tarefa a executar (job), que no caso o MASCARAMENTO (MASQUERADE)
*ara 7ue esse es7uema de NAT funcioneU o -* das esta&;es )recisam fa.er )arta de rede localU ou seQaU
)recisa estar entre $0,#$<(#3#, at o $0,#$<(#3#,64# : -* $0,#$<(#3#$U n'o )ode ser usadoU )ois Q2 est2 em
uso )elo servidor#
-dealmente )ara usar o NAT de maneira mais eficienteU Quntamente com regras de roteamento ?est'o
interconectados@U devemos carregar alguns m8dulos como abaixo9
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_tables
/sbin/modprobe ipt_unclean
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/usr/sbin/iptables -F
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -A INPUT -i lo -j ACCEPT
/usr/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/usr/sbin/iptables -A FORWARD -s 192.168.1.0/24 -d 0/0 -j ACCEPT
/usr/sbin/iptables -A FORWARD -s 0/0 -d 192.168.1.0/24 -mstate --state
ESTABLISHED,RELATED -j ACCEPT
/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
Oesse caso vocV dever2 substituir o -* $0,#$<(#$#3U )elo -* da sua rede interna#
3.0.1 Cazendo FAD 1(1
Com o NAT )odemos trocar o -* n'o )Tblico $0,#$<(#3#, )elo -* )Tblico ,33#,,,#6#, e vice-versa#
Modo )acote 7ue vir da internet )ara acessar o servidor ,33#,,,#6#,U )assa )ela regra PREROUTING do
Lire!all e logo em seguida feito um DNAT?destination OAM@ 7ue troca o -* destino ,33#,,,#6#, )or
$0,#$<(#3#, e em seguida o )acote encaminhado )ara o filtroU verificado nas regras de FORWARD e aH ent'o
chega ao servidor destino# Kuando sair um )acote do -* $0,#$<(#3#, com destino a internetU o mesmo )assa
novamente )elas regras de FORWARD e logo em seguida )assa )ara o POSTROUTING 7ue fa. o SNAT?source
OAM@ onde trocado o -* $0,#$<(#3#, )elo -* ,33#,,,#6#, e aH sim vai )ara a internet# : nome dado a esse
ti)o de acesso OAM $9$#
Como )uderam )erceber os )acotes tanto de entrada 7uanto de saHda n'o )assaram )elas regras de
INPUT e OUTPUTU )or7ue essas regras s8 di.em res)eito a )acotes direcionados ao Lire!all#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0$
Kual7uer )acote cuQo destino seQa o Lire!allU ent'o o mesmo )assa )elas regras de INPUT, e todo
)acote 7ue sair do Lire!all )assa )elas regras de OUTPUT do mesmo#
*ara todos os )acotes de dados 7ue )assam de uma rede )ara outra atravs do Lire!allU )assam )elas
regras de FORWARD e agora com o iptablesU )odemos es)ecificar regras 7ue controlem )acotes 7ue entrem
)or uma interface em es)ecHfico e saiam )or outra interface#
iptables -A FORWARD -p tcp --dport 80 -s 0/0 -i eth0 -o eth1 -j ACCEPT
: 7i indica interface de entrada ?in)ut@ e o 7o interface de saHda ?out)ut@# *ara fa.er o OAM acima
bastariam , regras9
iptables -A PREROUTING -t nat -d 200.222.5.2/32 -j DNAT --to 192.168.0.2
iptables -A POSTROUTING -t nat -s 192.168.0.2/32 -j SNAT --to 200.222.5.2
O'o es7uecer de criar o alias eth393 no Lire!all com o -* ,33#,,,#6#, sen'oU n'o ir2 funcionar# Alm
disso o novo filtro tra. o t'o es)erado SMAM5L%L *ACB5M# Com esse recurso o filtro consegue gerenciarU
)or exem)loU as conex;es feitas )elas esta&;es e assim n'o deixar aberturas )ara scanners atuarem como
acontecia com o t'o conhecido )rotocolo LM* e outros#
3.< >(emplo de um %ireBall completo com script
#!/bin/bash
#### Incio da funo stop ####
stop()
{
# desbilita o repasse de pacotes do kernel
echo 0 > /proc/sys/net/ipv4/ip_forward
# limpa regras existentes nas chains INPUT, OUTPUT E FORWARD
/sbin/iptables -F
# limpa as regras existentes na tabela de NAT
/sbin/iptables -F -t nat
}
#### Fim da Funo stop ####
#### Incio da Funo start ####
start ()
{
# habilitando o repasse de pacotes no kernel
echo 1 > /proc/sys/net/ipv4/ip_forward
#####################################################################
######################### ROTEAMENTO ################################
#####################################################################
# cria rota padro para o gateway no provedor (200.198.10.1)
# /sbin/route add default gw 200.198.10.1 dev eth1
#####################################################################
########################## REGRAS ###################################
#####################################################################
# Define a poltica padro para cada CHAIN (DROP)
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT DROP
# cria uma nova chain denominada filtro
/sbin/iptables -N filtro
# aceita conexes da rede interna
/sbin/iptables -A filtro -m state --state ESTABLISHED,RELATED -j ACCEPT
# rejeita novas conexes que no sejam da rede interna
/sbin/iptables -A filtro -m state --state NEW ! -i eth0 -j DROP
#####################################################################
################# DETECTA E REGISTRA PORTSCANNERS ###################
#####################################################################
# Xmas portscan
/sbin/iptables -A filtro -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 2/m
--limit-burst 2 -j LOG --log-prefix "Xmas portscanner: "
# descarta o pacote
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0,
/sbin/iptables -A filtro -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
# portscanner do tipo que ativa os bits SYN e FIN
/sbin/iptables -A filtro -p tcp --tcp-flags ALL SYN,FIN -m limit --limit 2/m
--limit-burst 2 -j LOG --log-prefix "SYN FIN portscanner: "
# descarta o pacote
/sbin/iptables -A filtro -p tcp --tcp-flags ALL SYN,FIN -j DROP
# portscanner do tipo que ativa os bits SYN e RST
/sbin/iptables -A filtro -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 2/m
--limit-burst 2 -j LOG --log-prefix "SYN RST portscanner: "
# descarta o pacote
/sbin/iptables -A filtro -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# portscanner do tipo que ativa o bit FIN
/sbin/iptables -A filtro -p tcp --tcp-flags ALL FIN -m limit --limit 2/m --limit-
burst 2 -m state --state ! ESTABLISHED -j LOG -log-prefix "FIN portscanner: "
# descarta o pacote
/sbin/iptables -A filtro -p tcp --tcp-flags ALL FIN -m state --state ! ESTABLISHED
-j DROP
# portscanner do tipo que habilita todas as flags tcp
/sbin/iptables -A filtro -p tcp --tcp-flags ALL ALL -m limit --limit 2/m --limit-
burst 2 -j LOG --log-prefix "ALL portscanner: "
# descarta o pacote
/sbin/iptables -A filtro -p tcp --tcp-flags ALL ALL -j DROP
# portscanner do tipo que no habilita nenhum flag
/sbin/iptables -A filtro -p tcp --tcp-flags ALL NONE -m limit --limit 2/m --limit-
burst 2 -j LOG --log-prefix "NONE portscanner: "
# descarta o pacote
/sbin/iptables -A filtro -p tcp --tcp-flags ALL NONE -j DROP
###################################################################
################# PROTEO CONTRA ATAQUES CONHECIDOS ##############
###################################################################
# proteo contra synflood
/sbin/iptables -A filtro -p tcp --syn -m limit --limit 1/s -j ACCEPT
# proteoo contra ping da morte
/sbin/iptables -A filtro -p icmp --icmp-type echo-request -m limit --limit 1/s -j
ACCEPT
# bloqueia outras conexes
/sbin/iptables -A filtro -j DROP
######################################################################
################# POLITICA PARA REPASSE DE PORTAS ####################
######################################################################
# libera o repasse de pacotes apenas para portas 53 udp (dns), 80 tcp (http),
# 443 tcp (https)
/sbin/iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -s 192.168.1.0/24 --dport 443 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -s 192.168.1.0/24 --dport 53 -j ACCEPT
# aplica a chain filtro na INPUT, ou seja, os pacotes que passarem pela chain
INPUT
# sero direcionados para a chain filtro
/sbin/iptables -A INPUT -j filtro
# aplica a chain filtro na FORWARD, ou seja, antes dos pacotes serem repassados
(forwarding), seroo direcionados pela chain filtro
/sbin/iptables -A FORWARD -j filtro
# # # # Regras na tabela de NAT # # # #
# mascara os pacotes que chegam na interface eth0 com destino a porta tcp 80
(http)
/sbin/iptables -A POSTROUTING -t nat -p tcp -i eth0 --dport 80 -j MASQUERADE
# mascara os pacotes que chegam na interface eth0 com destino a porta tcp 443
(https)
/sbin/iptables -A POSTROUTING -t nat -p tcp -i eth0 --dport 443 -j MASQUERADE
# mascara os pacotes que chegam na interface eth0 com destino a porta udp 53
/sbin/iptables -A POSTROUTING -t nat -p udp -i eth0 --dport 53 -j MASQUERADE
# disponibilizando acesso ao servidor web que roda na porta 80 e 443 do host
192.168.1.50
/sbin/iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to 192.168.1.50:80
/sbin/iptables -A PREROUTING -t nat -p tcp --dport 443 -j DNAT --to
192.168.1.50:443
}
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0/
#### FIM DA FUNO start ####
###################################################################
################### INICIANDO E PARANDO O SERVIDOR ################
###################################################################
if [ $# -lt 1 ]; then
echo $1 { start | stop | restart };
exit 1;
fi
if [ $1 == start ]; then
echo Iniciando o servidor firewall...;
start;
fi
if [ $1 == stop ]; then
echo Parando o servidor firewall...;
stop;
fi
if [ $1 == restart ]; then
echo Parando o servidor firewall...
stop;
echo Iniciando o servidor Firewall...
start;
fi
# # # FIM DO ARQUIVO # # #
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 04
" -oteamento
: roteamento )ode ser feito de v2rias formas#
".1 6abelas de roteamento
Oo Linux )ode-se ter mTlti)las tabelas de roteamento no Aernel# 5stas tabelas s'o identificadas )or um
nTmero variando entre $ e ,66 ou )or um nome de acordo com o ar7uivo /etc/iproute2/rt_tables#
Com novas tabelas )ode-se criar uma flexHvel estrutura )ara im)lementar uma *olHtica de >oteamento#
Abaixo temos o conteTdo do ar7uivo /etc/iproute2/rt_tables9
k8vse:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
255 local - A tabela local contm rotas )ara endere&os locaisU esses endere&os locais est'o
locali.ados no )r8)rio com)utadorU como os endere&os 7ue ele )ossuiU a rede dele mesmo e seus
broadcasts# DO'o mani)ule essa tabela ou retire-a da ordem nas regras# 5la n'o Ttil )ara o
roteamento de uma redeU s8 )ara o )r8)rio com)utadorE#
254 main - Mabela de roteamento )rinci)al# Y nela 7ue 7ue ficam as rotas 7uando adicionamos com
o comando route ou ip route# 5ssa tabela arma.ena as rotas das redes dis)onHveis localmenteU
bem como a rota )adr'o adicionada com o comando route ou ip route#
253 default - A tabela default uma tabela solit2riaU 7uase nunca usada se vocV tem um
default gateway na tabela main# OormalmenteU 7uando existe um default gateway na tabela
mainU um )acote nunca chega a tabela default#
*ara ver as rotas 7ue est'o estabelecidas na tabela mainU )odemos usar9
k8vse:~# ip route show table main
10.1.1.0/24 dev eth0 proto kernel scope link src 10.1.1.4
default via 10.1.1.1 dev eth0
:utro exemlo9
# ip route show table main
200.217.72.1 dev ppp0 proto kernel scope link src 200.164.113.232
10.12.0.0/24 dev eth0 proto kernel scope link src 10.12.0.1
127.0.0.0/8 dev lo scope link
default via 200.217.72.1 dev ppp0
*odemos ver 7ue existem diferentes rotas dentro da tabela de roteamento main# 5ssa a tabela
)rinci)al de roteamento do kernel e tem como default gateway o i) do roteador 7ue o
200.217.72.1U alm de rotas )ara a rede local como a rede 10.12.0.0/24 7ue tem como destino de saHda
a interface eth3#
7s re/ras definem em que ordem as tabelas ser-o consultadas# A )rioridade vai de 3 at /,=<= em
ordem crescenteU o menor nEmero tem maior prioridade# As regras n'o tem nomesU a)enas nTmeros de
)rioridade# X2 as tabelas tVm nTmeros e )odem ser referenciadas )or nomes no ar7uivo
/etc/iproute2/rt_tables#
*ara consultar as regras )odemos usar9
# ip rule show
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 06
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
:bserve 7ue os nTmeros das tabelas n'o tVm nada a ver com nTmero de regras# A regra ,33 nada tem a
ver com a tabela ,33# *odemos observar tambm 7ue )odemos ver a )rioridade das tabelas onde a tabela
mainU 7ue )ossui uma )rioridade maior 7ue a tabela default ?)or ser a tabela )rinci)al de roteamento@#
Kuanto menor for o nTmeroU maior a )rioridade de roteamento#
Oesse caso a tabela main )ossui o nTmero /,=<<U 7ue menor 7ue /,=<= e como conse7Vncia a
tabela main tem )rioridade maior 7ue a tabela default# : valor m2ximo de )rioridade /,=<=U 7ue )or
)adr'o Q2 se encontra em usoU bastando a)enas utili.armos )rioridades menores 7ue /,=<<#
4.1.1 Adicionando Dabelas de 2oteamento
*ara criar uma nova tabela de roteamentoU devemos inserir o ar7uivo /etc/iproute2/rt_tables
e acrescentar um nTmero e um nome# Lembre-se 7ue )or en7uanto nada vai acontecer com essa tabelaU )ois
ainda n'o foi inserido uma rota nela9
200 adsl2
Sim)lesmente issoU s8 acrescentar um nTmero e um nome ?nome o)cionalU mas facilita no hora de
verificar as rotasU um nome mais f2cil de lembrar do 7ue um nTmero@# Agora vamos ver o conteTdo dessa
tabela9
# ip route show table adsl2
: resultado dessa tabela nadaU )ois n'o definimos nada ainda# Gamos a um exem)lo )r2tico#
Su)ondo as seguintes configura&;es de rede9
eth0 Encapsulamento do Link: Ethernet Endereo de HW 00:11:D8:45:97:76
inet end.: 10.1.1.4 Bcast:10.1.1.255 Masc:255.255.255.0
endereo inet6: fe80::211:d8ff:fe45:9776/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1
RX packets:2544 errors:0 dropped:0 overruns:0 frame:0
TX packets:3400 errors:0 dropped:0 overruns:0 carrier:0
colises:0 txqueuelen:1000
RX bytes:2357404 (2.2 MiB) TX bytes:425298 (415.3 KiB)
IRQ:193 Memria:f7e00000-0
lo Encapsulamento do Link: Loopback Local
inet end.: 127.0.0.1 Masc:255.0.0.0
endereo inet6: ::1/128 Escopo:Mquina
UP LOOPBACKRUNNING MTU:16436 Mtrica:1
RX packets:302 errors:0 dropped:0 overruns:0 frame:0
TX packets:302 errors:0 dropped:0 overruns:0 carrier:0
colises:0 txqueuelen:0
RX bytes:30048 (29.3 KiB) TX bytes:30048 (29.3 KiB)
wlan0 Encapsulamento do Link: Ethernet Endereo de HW 00:0E:2E:0F:33:97
inet end.: 192.168.0.1 Bcast:192.168.0.255 Masc:255.255.255.0
endereo inet6: fe80::20e:2eff:fe0f:3397/64 Escopo:Link
UP BROADCASTRUNNING MULTICAST MTU:1500 Mtrica:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:139 errors:0 dropped:0 overruns:0 carrier:0
colises:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:15690 (15.3 KiB)
IRQ:169 Memria:f7c00000-f7c00100
Oa situa&'o acimaU estou com somente uma interface fHsica eth3 com o -* $3#$#$#4 e outra !lan3 com
-* $0,#$<(#3#$ ambas classe C# Oessa situa&'o a tabela main9
k8vse:~# ip route show table main
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.1
10.1.1.0/24 dev eth0 proto kernel scope link src 10.1.1.4
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0<
default via 10.1.1.1 dev eth0
: )r8ximo )asso ativar o roteamento no Aernel9
echo 1 > /proc/sys/net/ipv4/ip_forward
5sse comando habilita o roteamento )ela ativa&'o de encaminhamento de -*Fs ?seta em $U ou seQaU
ativa@#
: )rocedimento abaixo desliga o rp_filterU 7ue um filtro contra )acotes IP marcianos
4martian I-5# 5sses )acotes s'o a7ueles 7ue deveriam ter chegado )or uma interfaceU )orm chegam )or
outra# : rp_filter visa detectar )acotes spoofadosU o 7ue uma boa idia# *ormU no nosso casoU os
)acotes )odem ir e voltar )or mais de uma interfaceU a filtragem do rp_filter falha# *ortantoU temos 7ue
deslig2-lo e refor&armos as seguran&a das interface )rivadas com regras de fire!all criadas )or n8s# -remos
fa.er esse desligamento criando um scri)t com o seguinte conteTdo9
#!/bin/bash
# liberar marcianos
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
/usr/bin/echo 0 > $i
done
4.1.2 Inserindo uma rota na no&a tabela de roteamento
Oa se&'o 4#$#, n8s criamos uma tabela de roteamento chamada adsl2, agora n8s vamos inserir um
rota )ara essa tabelaU )ara de)ois ent'o inserir uma regra nela# *ara inserir uma rota default nessa tabelaU
devemos digitar9
ip route add default dev wlan0 via 192.168.0.1 table adsl2
GeQamos como ficou o conteTdo da tabela de roteamento9
k8vse:~# ip route show table adsl2
default via 192.168.0.1 dev wlan0
*rontoU a rota Q2 foi criada nessa tabela# Lalta a)enas inserirmos uma regra )ara essa rota 7ue
acabamos de criar na tabela de roteamento adsl,#
4.1.3 Inserindo uma regra na no&a tabela de roteamento
*rimeiramenteU vamos marcar todos os )acotes )rovenientes da LAO com destino aos servi&os http
com a seguinte regra de iptables ?Ca)Htulo /@ e logo em seguidaU ser2 inserido uma regra nessa tabela de
roteamento9
iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1
Com issoU os )acotes Q2 est'o marcadosU mas nenhum )acote vai entrar nelaU )ois n'o h2 regras )ara
isso# Devemos colocar uma regra )ara 7ue se um determinado )acote )ossuir a marcaU seQa verificada
determinada tabela de rota9
ip rule add fwmark 1 lookup adsl2
*ara 7ue uma modifica&'o de rota entre em funcionamento instantaneamenteU necess2rio digitarmos
o comando abaixo )ara as novas regras vigorarem#
ip route flush cached
Mudo )rontoU agora s8 falta fa.er o OAM )ara 7ue as m27uinas da LAO )ossam acessar a internetU
sendo 7ue os )acotes com destino a )orta (3 sair'o )ela interface !lan3 e os demais sair'o )ela interface
eth3#
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0=
4.1.4 Eliminando 2egras
Su)onhamos 7ue eu 7uero retirar a regra 7ue incluirmos na tabela adsl, fa.endo com 7ue todo o
tr2fego saia )ela eth3# :bservem a seguinte se7Vncia de comandos9
ip rule del fwmark 1 lookup adsl
ip route flush cached
*ronto# Modo o tr2fego Q2 est2 saindo nesse momento )eleth3# >e)are 7ue s8 excluindo a regra 7ue
inserimos na tabela adsl, deixa a rota default na tabela adsl,# :u seQaU )odemos inserir 7uantas rotas
7uisermosU mas de nada adianta se n'o existirem regras )ara utili.a&'o dessas rotas#
4.1.# 2oteamento "or 2edes ou I-=s
:utra forma de criar uma regraU s8 7ue agora sem analise de marca&'o de )acoteU mas sim uma
informa&'o )ertinente ao )acote ?-*@U )oderia ser feita como9
ip rule add from 10.12.0.20 lookup adsl2
ip rule add from 10.12.0.21 lookup adsl2
ip rule add from 10.12.0.22 lookup adsl2
ip route flush cached
Oesse casoU estou informando 7ue todos os )acotes cuQo -* de origem seQa $3#$,#3#,3U $3#$,#3#,$ e
$3#$,#3#,, devem sair )elo segundo linA de internet !lan3#
".2 >s;uema de -oteamento com 5ireBall e A6
".3 >(emplo Pratico Completo
#=======================================================================
# ESQUEMA DE CONFIGURAO DE ROTEAMENTO
#
# Autor___: Alexandre Sturmer Wolf
# Data____: 30/06/2006
# Funo__: Permitir que as redes 192.168.1.0 e 192.168.52.0 possam
# acessar a internet usando proxy transparente pelo SQUID
# utilizando um link PPP para acessos em geral e um link
# ADSL para acessos de programas P2P.
#
#
# 210.44.123.45 230.34.45.x
# +------+ +-----+
# | ADSL | | PPP |
# +------+ +-----+
# 10.1.1.1 | 230.34.45.1 |
# | |
# \ /
# \ /
# \ /
# \ /
# \ /
# eth1 10.1.1.3 +--------------------+ 230.34.45.9 eth0
# | ROTEADOR LINUX |
# | DEBIAN |
# +--------------------+
# / \
# / \
# / \
# eth2 192.168.1.1 eth3 192.168.52.1
#
#
#=======================================================================
#=======================================================================
# RESSETANDO AS CONFIGURACOES E REINICIANDO COM ROTEAMENTO PADRAO
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 0(
#=======================================================================
echo LIMPANDO REGRAS ANTERIORES
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
echo LEVANTANDO AS ETHS AUXILIARES PARA NAT-ONE-NAT
ifconfig eth0:0 230.34.45.55 netmask 255.255.255.0
echo INICIANDO O ROTEAMENTO BASICO
iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -F FORWARD
modprobe ipt_MASQUERADE
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_tables
modprobe iptable_filter
modprobe ipt_limit
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#=======================================================================
# FAZ NAT TRANSPARENTE PARA O SQUID --PROXY--
# DIRECIONANDO A PORTA 80 PARA 3128
# Se no for a %$# social
#=======================================================================
echo REDIRECIONANDO A PORTA 80 PARA O SQUID PARA PROXY TRANSPARENTE
iptables -t nat -A PREROUTING -i eth2 -d ! 200.201.174.0/24 -p tcp --dport 80 -j
REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth3 -d ! 200.201.174.0/24 -p tcp --dport 80 -j
REDIRECT --to-port 3128
iptables -A FORWARD -p tcp -i eth0 --dport 80 -d 200.201.174.0/24 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 --dport 443 -d 0/0 -j ACCEPT
#iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -j REDIRECT --to-port 3128
#=======================================================================
# NAT DE PORTAS PARA CLIENTES ESPECIAIS
# DIRECIONANDO PORTAS
#=======================================================================
echo REDIRECIONANDO PORTAS PARA IP DE CLIENTES
# Cliente 192.168.1.46
iptables -A INPUT -p tcp -i eth0 --destination-port 4899 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --destination-port 3390 -j ACCEPT
iptables -A PREROUTING -t nat -p tcp -d 230.34.45.9 --dport 4899 -j DNAT --to
192.168.1.46:4899
iptables -A PREROUTING -t nat -p tcp -d 230.34.45.9 --dport 3390 -j DNAT --to
192.168.1.46:3390
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br 00
iptables -A FORWARD -p tcp -i eth0 --dport 4899 -d 192.168.1.46 -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 --dport 3390 -d 192.168.1.46 -j ACCEPT
#=======================================================================
# ATIVANDO ESQUEMA DE NAT 1 : 1
#=======================================================================
echo ATIVANDO REGRAS DE NAT 1 p/ 1
iptables -t nat -A PREROUTING -d 230.34.45.55 -i eth0 -j DNAT --to-destination
192.168.52.55
iptables -t nat -A POSTROUTING -s 192.168.52.55 -o eth3 -j SNAT --to-source
230.34.45.55
#=======================================================================
# FAZ NAT DE TUDO QUE ENTRA E QUER SAIR APONTANDO PARA PPP E ADSL
# ONDE ETHO E O PPP E ETH1 E O ADSL, COM mtu ENTRE 1400 E 1536
#=======================================================================
echo HABILITANDO NAT INCONDICIONAL PARA PPP E ADSL
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j
TCPMSS --clamp-mss-to-pmtu
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -s 192.168.52.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -s 10.1.1.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -s 0/0 -d 192.168.1.0/24 -mstate --state ESTABLISHED,RELATED -j
ACCEPT
iptables -A FORWARD -s 0/0 -d 192.168.52.0/24 -mstate --state ESTABLISHED,RELATED
-j ACCEPT
iptables -A FORWARD -s 0/0 -d 10.1.1.0/24 -mstate --state ESTABLISHED,RELATED -j
ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#=======================================================================
# LIBERANDO PORTAS ACIMA DE 1024 INCONDICIONALMENTE
#=======================================================================
echo LIBERANDO PORTAS ACIMA de 1024
iptables -A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m state --
state NEW -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 1024:65535 --dport 1024:65535 -m state --
state NEW -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state
ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp --sport 1024:65535 -j ACCEPT
iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
iptables -A INPUT -p udp --dport 1024:65535 -j ACCEPT
#=======================================================================
# PERMITE QUE SE MANTENHAM OU SE CONECTEM REQUISICOES FEITAS POR
# DENTRO DA REDE TANTO DO ADSL QUANTO PPP PARA AS REDES INTERNAS
#=======================================================================
echo RECEBIMENTO DE DADOS PARA DENTRO
iptables -A FORWARD -i eth0 -o eth3 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $33
#=======================================================================
# MARCA OS PACOTES COM DESTINO A DETERMINADAS PORTAS PARA POSTERIOR
# ENCAMINHAMENTO AO ADSL PELO BLOQUEIO DE SAIDA DOS DADOS PELO PPP
#=======================================================================
echo MARCANDO PACOTES COM DESTINO AO ADSL
# E-MULE, E-DONKEY e CLONES
iptables -A PREROUTING -t mangle -p tcp --dport 4661:4676 -j MARK --set-mark 3
iptables -A PREROUTING -t mangle -p udp --dport 4661:4676 -j MARK --set-mark 3
iptables -A PREROUTING -t mangle -p tcp --dport 5221 -j MARK --set-mark 3
iptables -A PREROUTING -t mangle -p udp --dport 5221 -j MARK --set-mark 3
iptables -A PREROUTING -t mangle -p tcp --dport 5661 -j MARK --set-mark 3
iptables -A PREROUTING -t mangle -p udp --dport 5661 -j MARK --set-mark 3
#=======================================================================
# DESLIGANDO O TRATADOR rp-filter PARA NAO DESCARTAR O ENCAMINHAMENTO
#=======================================================================
echo MARCANDO PACOTES COM CONTROLE DO ADSL
for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 0 > $eee
done
#=======================================================================
# ATIVANDO AS REGRAS PARA O ENCAMINHAMENTO DE ACORDO COM A MARCACAO DOS
# PACOTES ANTERIORES, ANALISANDO PELA MARCACAO COM O NUMERO 3
#=======================================================================
echo ATIVANDO AS REGRAS PARA OS PACOTES
eth1 ip rule add fwmark 3 lookup 30 prio 30
eth1 ip route add default via 10.1.1.1 table 30
#=======================================================================
# INFORMANDO A ROTA PADRAO (CASO NAO CAIA NAS REGRAS)
#=======================================================================
echo ATIVANDO A ROTA PADRAO
ip route add default via 230.34.45.1 proto static

#=======================================================================
# ATIVANDO AS NOVAS REGRAS
#=======================================================================
echo LIMPANDO A MEMORIA COM AS ROTAS PENDENTES
ip route flush cache
#=======================================================================
# ATIVANDO MAIS REGRAS PARA PROTECAO
#=======================================================================
echo ATIVANDO REGRAS DE PROTECAO Baterias de Defesa
# Syn-flood
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
# Port Scanner
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j
ACCEPT
# Ping da Morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# Marcacao para o CBQ
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3$
#iptables -t mangle -I FORWARD -s 192.168.1.1/32 -j MARK --set-mark 1
#iptables -t mangle -A PREROUTING -d 192.168.1.1/32 -j MARK --set-mark 1
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3,
"." -oteamento por -edes
________
+-------------+ /
| ISP 1 | /
+-------------+ (RDS) +------+
| | gw 10.1.1.1 | /
+------+-------+ +-------------+ /
+----------------+ | eth1 | /
| | | | |
| Local networks +----+ Linux router | | Internet cloud
| | | | |
+----------------+ | eth2 | \
+------+-------+ +-------------+ \
| | ISP 2 | \
+-------------+ (ASTRAL) +------+
| gw 10.8.8.1 | \
+-------------+ \________
5xecute9
echo 1 RDS >> /etc/iproute2/rt_tables
echo 2 ASTRAL >> /etc/iproute2/rt_tables
: conteTdo do ar7uivo SetcSi)route,Srttable de)ois dos Comando s9
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 RDS
2 ASTRAL
Oesse momento temos tres tabelas de rotasU >DSU ASM>AL e a rota )rinci)al#
: )r8ximo )asso criar rotas )ara a tabela >DS#
ip route add default via 10.1.1.1 dev eth1 table RDS
ip rule add from 10.11.11.0/24 table RDS
ip rule add from 10.12.12.0/24 table RDS
Agora )ara a tabela ASM>AL9
ip route add default via 10.8.8.1 dev eth2 table ASTRAL
ip rule add from 10.22.22.0/24 table ASTRAL
ip rule add from 10.33.33.0/24 table ASTRAL
GeQamos as rotas9
ip route show table ASTRAL
ip route show table RDS
ip route show table main
*ara ver a rota )rinci)alU vocV )ode usar route -nU agora veQamos as tabelas de rotas9
ip rule show # todas
ip rule show | grep ASTRAL # somente ASTRAL
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3/
ip rule show | grep RDS # somente RDS
:s )acotes 7ue vem de $3#$$#$$#3S,4 e $3#$,#$,#3S,4 v'o at a tabela de roteamento >DS#
Similarmente os )acotes 7ue chegarem das redes $3#,,#,,#3S,6 e $3#//#//#3S,4 v'o )ara o gate!aJ
ASM>AL# :s )acotes 7ue n'o se en7uadram nas regras )assam )elo rota )rinci)al#
".& -oteamento por Portas
A rota dos )acotes 7ue tem como destino a )orta ,,Stc) e (3Stc) devem ir )ara o gate!aJ ASM>AL#
________
+-------------+ /
| ISP 1 | /
+-------------+ (RDS) +------+
| | gw 10.1.1.1 | /
+------+-------+ +-------------+ /
+----------------+ | eth1 | /
| | | | |
| Local networks +----+ Linux router | | Internet cloud
| | | | |
+----------------+ | eth2 | \
+------+-------+ +-------------+ \
| | ISP 2 | \
+-------------+ (ASTRAL) +------+
| gw 10.8.8.1 | \
+-------------+ \________
Dado o conteTdo da tabela /etc/iproute2/rt_table9
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 RDS
2 ASTRAL
Oesse casoU devemos marcar os )acotes 7ue )ossuem ,, e (3 como a )orta destinoU nesse caso
devemos utili.ar a tabela MAO1L5#
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 22 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dprot 80 -j MARK --set-mark 2
*ara a tabela >DS9
ip route add default via 10.1.1.1 dev eth1 table RDS
*ara tabela ASM>AL9
ip route add default via 10.8.8.1 dev eth2 table ASTRAL
: )r8ximo )asso fa.er o roteamente baseado nas marca&;es dos )acotes# *ara >DS temos9
ip rule add from all fwmark 1 table RDS
*ara ASM>AL temos9
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $34
ip rule add from all fwmark 2 table ASTRAL
".) -oteamento com multi7uplinCs
A configura&'o mais comum a seguinteU onde temos dois )rovedores conectados em uma m27uina
7ue fornece o linA )ara um rede local#
________
+------------+ /
| | |
+-------------+ Provider 1 +-------
__ | | | /
___/ \_ +------+-------+ +------------+ |
_/ \__ | if1 | /
/ \ | | |
| Local network -----+ Linux router | | Internet
\_ __/ | | |
\__ __/ | if2 | \
\___/ +------+-------+ +------------+ |
| | | \
+-------------+ Provider 2 +-------
| | |
+------------+ \________
4.,.1 2e"artir a cone!o
*ara facilitarU vamos usar nomes simb8licosU c-L$ ser2 o nome da )rimeira interface ?if$ no desenho@
e c-L, o nome da segunda interface# c-*$ o endere&o associado a c-L$ e c-*, o endere&o associado a
c-L,# Oesse caso c*$ ser2 o endere&o -* do gate!aJ do )rovedor $U e c*, o endere&o -* do gate!aJ do
)rovedor ,# LinalmenteU o c*$O5M ser2 o -* de entrada da rede c*$ e c*, o endere&o -* de entrada )ara a
rede S*,#
*rimeiramente vamos criar , tabelas de rotas chamadas de M$ e M,# 5las ser'o adicionadas em
/etc/iproute2/rt_tables#
ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
*or Tltimo a rota )adr'o9
ip route add default via $P1
*r8ximo )asso ativar as regras de roteamento#
ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
4.,.2 oad balancing
: Load +alance uma maneira bastante eficiente de se utili.ar , linAs# A)roveitando a idia do
exem)lo anterior9
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1
Oesse caso a os dois linAs )ossuem o mesmo )esoU assim ambos )ossuem a mesma funcionalidade#
*odemos ainda informar )esos diferentesU onde um linA )referencial e o outro auxiliar ?o)&'o !eight^)eso@
:bserve 7ue a Y significa 7ue o comando continua na )r8xima linha#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $36
& #erando nlise e >statHsticas
&.1 .ebalizer 9analise Beb:
: Webalizer um gerador de estatHsticas de acesso )ara o servidor !eb# : ApacheU )or si s8U loga
todos os acessos feitos ao servidorU incluindo as )2ginas acessadasU o tr2fego geradoU os navegadores e
sistemas o)eracionais usados )elos clientesU entre outras informa&;es Tteis )ara entender os h2bitos e
interesses de seus visitantes#
Com o Apache funcionandoU sim)les instalar o Webalizer:
apt-get install webalizer
Ao contr2rio do ApacheU o Webalizer n'o um servi&o 7ue fica residenteU mas sim um execut2vel
7ue )recisa ser chamado cada ve. 7ue 7uiser ver a )2gina de estatHsticas atuali.ada ?somente como root@#
webalizer
*or )adr'oU a )2gina de estatHsticas arma.enada na )asta webalizerSU dentro do seu servidor !eb#
Se o Apache estiver configurado )ara arma.enar as )2ginas dentro do diret8rio /var/wwwU ent'o as
estatHsticas v'o )ara a )asta local /var/www/webalizer ?de)ende da vers'o do Apache ?se&'o ,#$@@#
: ar7uivo de configura&'o do Webali.er o /etc/webalizer.conf# Y im)ortante 7ue vocV revise o
ar7uivo de configura&'oU indicando )elo menos a locali.a&'o correta do ar7uivo de log do A)ache e altere a
)asta onde as estatHsticas ficar'o arma.enadasU caso n'o 7ueira 7ue elas fi7uem dis)onHveis ao )Tblico# GocV
)ode arma.en2-las numa )asta isolada no servidor !ebU como )or exem)lo /var/webalizerU de forma
7ue elas fi7uem dis)onHveis a)enas localmenteU ou atravs de um scri)t# As duas o)&;es dentro do ar7uivo
s'o9
LogFile /var/log/apache/access.log
OutputDir /var/www/webalizer
&.2 Sar$ 9analise S;uid:
: Sarg um inter)retador de logs )ara o Squid ?se&'o ,#0@U assim como o Webalizer )ara o
Apache# Sem)re 7ue executado ele cria um conQunto de )2ginasU divididas )or diaU com uma lista de todas as
m27uinas 7ue foram acessadas e a )artir de cada m27uina da rede veio cada acesso#
Caso vocV tenha configurado o Squid )ara exigir autentica&'oU ele organi.a os acessos com base nos
logins dos usu2riosU caso contr2rio ele mostra os endere&os IP das m27uinas#
*or )adr'o ele gera um conQunto de )2ginas html dentro da )asta /var/www/squid-reports/ 7ue
vocV )ode visuali.ar atravs de 7ual7uer navegador# :s acessos s'o organi.ados )or usu2rio ?caso esteQa
usando autentica&'o@ ou )or -*U mostrando as )2ginas acessadas )or cada umU 7uantidade de dados
transmitidosU tem)o gasto em cada acessoU tentativas de acesso blo7ueadas )elos filtros de conteTdo e outras
informa&;es# *ara visuali.ar esse relat8rioU sim)lesmente chame o seu 2eb0bro2ser e digite o seguinte
endere&o var/www/squid-reports/.*ara instalar o Sarg9
apt-get install sarg
: Sarg n'o um daemon 7ue fica residente ?digitar sarg@U vocV )recisa a)enas chama-lo 7uando
7uiser atuali.ar os relat8rioU se vocV 7uiser automati.ar esta tarefaU )ode usar o cron )ara 7ue ele seQa
executado automaticamente todos os dias ou uma ve. )or hora )or exem)lo#
GocV )ode alterar a )asta onde s'o salvos os relat8riosU limitar o acesso Cs estatHsticas e alterar v2rias
o)&;es visuais no ar7uivo de configura&'o do SargU 7ue o /etc/squid/sarg.conf#
&.3 A6EP
: Oto) )ermite o analise do fluxo de dados )ela rede# *ara instalar basta digitar no console9
apt-get install ntop
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3<
Ser2 feito o do!nload e de)ois )edir2 )ara confirmar algumas coisas b2sicasU )rontoU ele
)rovavelmente abriu uma )orta /333 )ara acesso localU bastando agora digitar no bro!ser a seguinte %>L9
http://localhost:3000#
5ventualmenteU necess2rio dar direitos de escrita )ara o usu2rio nobodJ no diret8rio
/var/lib/ntop, )ara descobrir 7uais ar7uivos dever'o ter acessoU digite nto) no seu )rom)tU 7ue ser2
informado ar7uivo )or ar7uivo#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3=
) Se$urana
*elo fato do Linux ser um sistema com ca)acidades de administra&'o remotaU aliado Cs Dreceitas de
boloE encontradas na internet e a configura&'o )adr'o da maioria dos servidores ser funcionaisU deixam
muitas brechas )ara usu2rios inescru)ulosos invadir sua m27uina ou utili.2-la sem seu consentimento#
Se isso Q2 n'o bastasseU existe ainda artigos tcnicos 7ue ensinam como atacar servidores com a
finalidade de ensinar a seguran&a# : estranho disso 7ue as )essoas somente se im)ortam com o ata7ue e
n'o a defesa# O'o existe um servidor $33e seguroU mas )odemos utili.ar v2rias ferramentas )ara tornar ele
mais seguro e n'o t'o limitado#
A seguran&a n'o uma mas sim trVs vertentesU l8gicaU o)eracional e fHsica# O'o adianta ter as melhores
e mais avan&adas tcnicas de seguran&a l8gica contra ata7uesU se um funcion2rio )ode ter acesso ao servidor#
Segundo estatHsticas as maiores falhas de seguran&a s'o causadas )elo )r8)rio )essoal da em)resa
?o)eracional@# -magineU 7ue sua em)resa )ossua uma rede onde todas )essoas s'o realmente confi2veisU mas
no cabeamento da rede de alguma formaU )essoas inescru)ulosas )ossuem acessoU assim temos )roblemas de
ordem fHsica# *ortantoU antes de criar centenas de checA-listsU leve em considera&'o as trVs bases da
seguran&a#
Oo ca)Htulo 6U s'o a)resentadas algumas ferramentas de an2lise de conex'oU vocV )ode utili.ar-las
)ara verificar a condi&'o de seguran&a de suas redeU no entanto muito cuidadoU assim como essas ferramentas
)odem ser usadas )or vocV )ara encontrar brechasU caso vocV as deixe habilitadas )ara a internet ou )ara
outros usu2riosU as mesmas )odem ser a maior brecha de todasU )ortantoU muita aten&'o#
).1 Considerao sobre a se$urana lI$ica
A seguran&a come&a )ela instala&'o do seu sistema# Se vocV tem uma m27uina sem configura&;es
es)eciais de seguran&a e 7uer torn2-la seguraU uma o)&'o interessante reinstal2-la com)letamente# Mas
antes de instalar use somente mHdias de re)osit8rios confi2veis# Kuando instalar um servidor use somente a
vers'o stableU do re)osit8rio oficial da Debian# Ao instalar o sistema considere9
S8 ex)onha o sistema C -nternet a)8s com)letar todos os )rocedimentos de seguran&a# I2 muitos
relatos de m27uinas invadidas durante o )rocesso de configura&'o inicia#
Se a sua distribui&'o )ermitirU o)te )or uma instala&'o )ersonali.adaU e escolha a)enas os )acotes
7ue vocV sabe 7ue ir2 usar#
Monte seu es7uema de )arti&;es ade7uadamente# Se vocV for rodar algum servi&o 7ue gere
arma.enamento de dados em disco ?uma )roxJ !ebU um servidor de mailU um servidor de ne!s@U
alm de configurar o consumo de mem8ria e discoU de )referVncia C criar uma )arti&'o se)aradaU
evitando assim 7ue os ar7uivos dos seus )rocessos servidores )ossam lotar o es)a&o de
arma.enamento da m27uinaU tirando-a de o)era&'o#
A)8s instalar todos os )acotesU instale todas as atualiza*es de segurana dis)onHveis no !eb site
do seu fornecedor#
).2 Ser!ios desnecessrios
%ma instala&'o )adroni.ada de sistema o)eracional costuma habilitar uma srie de servi&os dos 7uais
vocV n'o )recisaU e 7ue )odem vir a servir como )onto de acesso )ara um invasor#
Analise todos scri)ts 7ue fa.em )arte da iniciali.a&'o e verifi7ue se realmente s'o necess2riosU se vocV
n'o sabe )ara 7ue serveU )rocure na internet# Lembre-se 7ue existem scri)ts res)ons2veis )or ativar diversos
servi&osU como )or exem)loU o /etc/inetd.conf# O'o necess2rio a)agar a linhas do ar7uivo de
configura&'oU basta colocar um b antes do comandoU 7ue isso significa coment2rio# Lerramentas como o
AsJsv ?caso n'o esteQa instaladoU use apt-get install ksysv@ ou o D/Jsu ser.ices0adminE )odem
aQudar a verificar 7uais )rogramas s'o dis)aradosU usando um ferramenta gr2fica#
De modo geralU os init scri)ts definem 7uais servi&os ser'o iniciali.ados no momento do boot# Alguns
servi&os s'o a)arentemente in8cuos do )onto de vista de uma )ossHvel invas'o ?soundU randomU a)md@U
en7uanto outros claramente oferecem algum raio de a&'o )ara o )otencial invasor ?)ortma)U xnt)dU netfsU
rstatdU rusersdU r!alldU r!hodU boot)aramdU s7uidU J))ass!dU J)servU dhc)dU snm)dU namedU routedU l)dU
gatedU htt)dU xfsU linuxconf e muitos outros@#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $3(
).3 Consel/os #enJricos
*rocure na internet dicas de como melhorar a seguran&a do seu servidorU mas )rocure em locais
confi2veis# Dentre algumas dicas9
Iabilite logs )ara )oder analisar o funcionamento do servidor#
%tili.e uma estratgia de bacAu) confi2vel#
-nstale ferramentas de an2lise e rota&'o de logs#
-nstale ferramentas de garantia de integridade#
Certifi7ue-se de estar usando shado! )ass!ords ?n'o usar senhas cri)tografadas visHveis no
/etc/passwd, atualmente este recurso Q2 )adr'o@#
Se vocV estiver com o servidor de ft) habilitadoU configure-o ade7uadamenteU n'o )ermita o acesso
de usu2rio rootU restrinQa a 2rvore de diret8riosU reveQa os direitos de acesso anNnimosU considere a
)ossibilidade das senhas de acesso estarem sendo monitoradas em sua rede local#
Desabilite o telnetL use o sshU de )referVncia se logue como usu2rio comum e a)8s conectadoU use o
comando su )ara se tornar root#
Iabilite os tc) !ra))ers ?tc)d@ e configure ade7uadamente os ar7uivos de restri&'o e )ermiss'o de
acesso ?/etc/hosts.deny e /etc/hosts.allow@
Iabilite filtros de )acotes usando um fire!all de sua )referVnciaU n'o )ermita 7ue outras m27uinas
iniciem conex;es com a suaU exceto )ara as )ortas 7ue vocV ex)licitamente definiu#
+lo7ueie o acesso Cs )ortas dos seus servi&os locais ?xfsU RU servidor !eb utili.ado )ara testesU entre
outras@# A documenta&'o de 7ual7uer filtro de )acotes ex)lica claramente como fa.er isto#
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $30
-e%erKncia Biblio$r%icas
Y im)ortante salientar 7ue os conteTdos a7ui )resentesU s'o uma com)ila&'o ada)tada de v2rios
autoresU 7ue )rovavelmente utili.aram materiais de outros autores e assim conse7entemente# *ara n'o ser
inQustoU )refiro informar os )rinci)ais sites9
www.debian.org
http://www.guiadohardware.net // muitos materiais da autoria de Carlos E. Morimoto
http://www.linuxit.com.br
http://www.netfilter.org/
http://focalinux.cipsga.org.br/
http://us1.samba.org/samba/
http://www.squid-cache.org/
http://www.openit.com.br/
http://www.google.com/linux?q=&restrict=linux
www.google.com.br
5ntre muitos outrosU )rinci)almente em fa7Fs e sites de discuss'o#
IoQe a internet um grande livro aberto com muito lixoU vocV deve filtrar muito bem as informa&;es
antes de colocar em )r2tica# O'o acredite em tudo 7ue lerU valide as informa&;esU muitos dos sites acimaU s'o
confi2veisU mas suQeitos a errosU inclusive esse tutorialU )ortantoU sem)re ex)erimente antes de a)licarU e
divulgue o seu conhecimento#
:brigadoU Alexandre Strmer Wolf ?as!olf"terra#com#br@
Servidor Debian Alexandre Strmer Wolf - as!olf"terra#com#br $$3

Você também pode gostar