Você está na página 1de 335

Curso de Linux

Avanado
Objetivos do curso
Ensinar a configurar os principais servidores de
rede no Linux.
Ensinar conceitos avanados de Linux.
Metodologia de trabalho
Trabalho em duplas.
Aprender mediante a execuo de tarefas bem
definidas.
Avaliao prtica e terica ao final do curso.
Tarefa globlal
Voc foi contratado para realizar o projeto de
rede da empresa Linux para sempre.
Alm de toda a parte relacionada ao projeto de
cabeamento estruturado (Curso Bsico de
Redes) levantou as seguintes necessidades
relacionadas aos servios que a rede deveria
prover:
acesso a Internet com autenticao;
servidor web do site Internet e intranet;
servidor de e-mail acessvel pela rede interna por
meio de POP3 e Webmail e pela Internet somente por
Webmail (todos de forma segura);
servidor de DNS;
Tarefa globlal
continuao ...
servidor de FTP (acesso externo dos arquivos);
servidor de autenticao dos usurios da rede interna
(tanto para clientes Linux quanto para Windows);
servidor de arquivos para a rede interna (tanto para
clientes Linux quanto para Windows) com anti-vrus;
servidor de backup;
servidor de terminais;
servidor de aplicaes locais: Protweb, e-groupware,
joomla (intranet), ativnet, ...;
Firewall.
DMZ
Primeira tarefa
Instalar o Debian Sarge, da seguinte forma:
particionamento:
256 MB para swap, primria;
2,1 GB para a raiz, com ext3, primria;
100 MB para /var/spool/mail, estendida, com reiserfs;
200 MB para /home, estendida, com ext3;
100 MB para /var/www, estendida, com reiserfs
200 MB para /backup, estendida, com reiserfs.
usurios:
root com senha teste;
admin com senha teste, home=/home/administador;
e-mail:
usurio que receber os e-mails direcionados para
administrao;
Primeira tarefa
Instalar o Debian Sarge, da seguinte forma:
rede:
ip: 10.100.53.20<nmero da mquina>
netmask: 255.255.252.0
broadcast: 10.100.52.255
dns: 10.100.52.1
gateway: 10.100.52.4
domnio: cursolinux.52ct.eb.mil.br
Aplicativos a serem instalados:
openoffice.org em Portugus, mozilla-firefox e mozilla-thunderbird
em portugus, kernel 2.6, kde em portugus e kdm.
source.list: inicialmente o prprio CD-ROM. Se no achar
algum pacote mude o source.list para:
deb ftp://debian.52ct.eb.mil.br/debian stable main contrib non
free
Sistemas de arquivos
O linux trabalha com o Virtual File System
(VFS) que uma camada de abstrao acima
dos sistemas de arquivos existentes.
O VFS permite que as aplicaes acessem
diferentes tipos de sistemas de arquivos de
modo uniforme. Dessa forma, um aplicativo
acessa um HD local e uma partio montada de
um dispositivo de rede da mesma forma.
O VFS especifica uma interface entre o kernel e
o sistema de arquivo concreto.
Para adicionar um novo sistema de arquivos ao
kernel simplesmente o mesmo tem que
implementar a interface do VFS.
EXT3
um sistema de arquivos jornalado,
desenvolvido e implementado por Stephen
Tweedie.
uma alternativa para usurios do sistema de
arquivos ext2 que desejam obter as vantagens
do journaling, ou seja, ext3 = ext2 + journal.
Permite a converso entre os sistemas de
arquivos ext2 e ext3 sem a necessidade de
reformatao.
Desde a v2.4 encontra-se disponvel como parte
integrante do kernel do sistema operacional
Linux.
Experincia com sistemas de arquivos para alta disponibilidade em Linux.
Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
EXT3
Permite o uso de journal para dados, meta-
dados ou ambos.
No suporta alocao dinmica de inodes.
Para maiores informaes acesse o site
http://www.redhat.com/support/wpapers/redhat/
ext3/.
Suas principais caractersticas so:
Ser jornalado;
Baseado em rvores;
Redimensionamento online;
Suporta arquivos de at 2TiB.
Experincia com sistemas de arquivos para alta disponibilidade em Linux.
Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
ReiserFS
Projetado por Hans Reiser, tem a grande vantagem
de ser o primeiro sistema de arquivos baseado em
journaling a ser includo como parte integrante do
kernel do Linux.
Utiliza uma abordagem radicalmente diversa da
alocao baseada em blocos usada no ext2 para
armazenar as informaes, usando balanced
trees.
Permite arquivos com at 2 Gb de tamanho.
Possui otimizaes para trabalhar com arquivos
pequenos, reduzindo a fragmentao.

Experincia com sistemas de arquivos para alta disponibilidade em Linux.


Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
ReiserFS
Est sendo desenvolvida a verso 4 do sistema
de arquivo.
suportado automaticamente pelo Kernel do
Linux a partir da verso 2.4.1.
Para maiores informaes acesse o site
http://www.namesys.com.
XFS
Criado em 1994 pela SGI para substituir outro
sistema de arquivos (EFS), tornou-se disponvel
para Linux em Jul/2001 pela licena GPL.
Projetado especialmente para trabalhar com
arquivos grandes (de at 9 mil petabytes) e
diretrios com vrios arquivos.
Pode trabalhar com tamanho de bloco variando
de 512 bytes at 64 Kb.
Suporta ACLs no padro POSIX.
Para maiores informaes acesse o site
http://xfs.sourceforge.net.
Experincia com sistemas de arquivos para alta disponibilidade em Linux.
Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
XFS
O XFS um sistema de arquivos com jornal de meta-dados
que vem com um robusto conjunto de funes e otimizado
para escalabilidade.
recomendado com HD SCSI de ponta.
Pelo fato de o XFS criar agressivamente caches de dados
em uso na memria RAM, programas mal desenhados (que
no tomam precaues na hora de escrever os arquivos em
disco, e existem muitos deles) podem perder uma grande
quantidade de dados se o sistema for desligado sem aviso.
O XFS (SGI) suporta o redimensionamento de parties on-
the-fly ou seja, sem perda de dados e sem nem mesmo
precisar reinicializar o sistema.

Fontehttp://www.gentoo.org/doc/pt_br/handbook/handbookppc64.xml?style=printable&full=1
JFS
Criado pela IBM para uso em servidores
corporativos high-throughput server
environments, key to running intranet and other
high-performance e-business file servers.
Permite o emprego de blocos com tamanho de
512,1024, 2048 e 4096 bytes:
Para um tamanho de bloco de 512 bytes, o tamanho
mximo de um arquivo de 512 Tb;
Para um tamanho de bloco de 4Kb, o tamanho mximo
de um arquivo de 4 petabytes.
Incorporado na v2.5.6 do kernel para o sistema
operacional Linux.
Experincia com sistemas de arquivos para alta disponibilidade em Linux.
Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
JFS
O suporte a ele pode ser adicionado em verses
anteriores do kernel com a aplicao de
patches.
Utiliza rvore B+.
Para maiores informaes acesse o site
http://oss.software.ibm.com/developerworks/ope
nsource/jfs.

Experincia com sistemas de arquivos para alta disponibilidade em Linux.


Leonardo Garcia de Mello e Prof. Dr. Taisy Silva Weber. UFRGS.
Segunda tarefa
Configurao do Servidor DNS
Configurar um servidor DNS (direto e reverso)
para o domnio cursolinux.52ct.eb.mil.br
para os seguintes computadores:
www.<domnio>: 10.100.53.20<n do computador>
ftp.<domnio>: 10.100.53.20<n do computador>
intranet.<domnio>: 10.100.53.20<n do computador>
internet.<domnio>: 10.100.53.20<n do computador>
smtp.<domnio>: 10.100.53.20<n do computador>
pop3.<domnio>: 10.100.53.20<n do computador>
egroupware.<domnio>: 10.100.53.20<n do computador>
protweb.<domnio>: 10.100.53.20<n do computador>
webmail.<domnio>: 10.100.53.20<n do computador>
O que DNS?
DNS significa Domain Name System (sistema de
nomes de domnio).
O DNS faz o mapeamento do nome de um
computador para o endereo IP do mesmo e do
endereo IP para o nome e algumas outras coisas.
Um mapeamento simplesmente uma associao
entre duas coisas, neste caso um nome de
computador, como intranet.52ct.eb.mil.br, e o
endereo IP desta mquina (ou endereos) como
10.100.52.6.
O DNS foi criado com o objetivo de tornar as coisas
mais fceis para o usurio, permitindo assim, a
identificao de computadores na Internet ou redes
locais atravs de nomes.
GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
O que DNS? (cont)
A parte responsvel por traduzir os nomes como
www.nome.com.br em um endereo IP chamada
de resolvedor de nomes.
O resolvedor de nomes pode ser um banco de dados
local (um arquivo ou programa) que converte
automaticamente os nomes em endereos IP ou
atravs de servidores DNS que fazem a busca em
um banco de dados na Internet e retornam o
endereo IP do computador desejado.
Um dos servidores DNS mais difundidos na Internet
o bind, que se encontra atualmente na verso 9.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/resolv.conf
o arquivo de configurao principal do cdigo
do resolvedor de nomes. Seu formato um
arquivo texto simples com um parmetro por
linha e o endereo de servidores DNS externos
so especificados nele. Existem trs palavras
chaves normalmente usadas que so:
domain: especifica o nome do domnio local.
search: especifica uma lista de nomes de domnio
alternativos ao procurar por um computador,
separados por espaos. A linha search pode conter no
mximo 6 domnios ou 256 caracteres.
nameserver: especifica o endereo IP de um servidor
de nomes de domnio para resoluo de nomes. Pode
ser usado vrias vezes.
GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/resolv.conf
Como exemplo, o /etc/resolv.conf se parece com
isto:
searchcursolinux.52ct.eb.mil.br
nameserver10.100.53.202
nameserver10.100.53.203
Editem o arquivo /etc/resolv.conf e alterem as
variveis domain e search para os valores acima
e o nameserver para o IP do seu computador.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/host.conf
o local onde possvel configurar alguns tens que
gerenciam o cdigo do resolvedor de nomes. O
formato deste arquivo descrito em detalhes na
pgina de manual resolv+. Em quase todas as
situaes, o exemplo seguinte funcionar:
orderhosts,bind
multion
Este arquivo de configurao diz ao resolvedor de
nomes para checar o arquivo /etc/hosts antes de
tentar verificar um servidor de nomes e retornar um
endereo IP vlido para o computador procurado e
multi on retornar todos os endereos IP resolvidos
no arquivo /etc/hosts ao invs do primeiro.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/host.conf
Os seguintes parmetros podem ser adicionados
para evitar ataques de IP spoofing:
nospoofon
spoofalerton
O parmetro nospoof on ativa a resoluo
reversa do nome da biblioteca resolv (para
checar se o endereo pertence realmente
quele nome) e o spoofalert on registra falhas
desta operao no syslog.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/hosts
Faz o relacionamento entre um nome de computador e
endereo IP local.
Recomendado para IPs constantemente acessados
(dispensa consulta do DNS) e para colocao de
endereos de virtual hosts (quando deseja referir pelo
nome ao invs de IP).
A desvantagem de fazer isto que voc mesmo
precisar manter este arquivo atualizado e se o
endereo IP de algum computador for modificado,
esta alterao dever ser feita em cada um dos
arquivos hosts das mquinas da rede.
Em um sistema bem gerenciado, os nicos endereos
de computadores que aparecero neste arquivo sero
da interface loopback e os nomes de computadores.
GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/hosts
Um exemplo de contedo deste arquivo :
127.0.0.1 localhostlocalhost.localdomain
10.100.53.203aluno3aluno3.cursolinux.52ct.eb.mil.br
Voc pode especificar mais que um nome de
computador por linha como demonstrada pela
primeira linha, a que identifica a interface
loopback.
Caso encontre problemas de lentido para resolver
nomes e at para executar os aplicativos (como o
mc, etc), verifique se existem erros neste arquivo
de configurao.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Arquivos no cliente
/etc/networks
O arquivo /etc/networks tem uma funo similar ao
arquivo /etc/hosts. Ele contm um banco de dados
simples de nomes de redes contra endereos de redes.
Seu formato se difere por dois campos por linha e seus
campos so identificados como:
Nome_da_RedeEndereo_da_Rede
Abaixo um exemplo de como se parece este arquivo:
loopnet127.0.0.0
23bc 10.100.36.0
Quando usar comandos como route, se um destino
uma rede e esta rede se encontra no arquivo /
etc/networks, ento o comando route mostrar o nome
da rede ao invs de seu endereo.

GuiaFocaLinuxAvanado(verso6.4)GleydsonMaziolidaSilva
Instalao do DNS
Primeiramente vamos configurar a fonte de
pacotes para instalao no arquivo /
etc/apt/sources.list.
debftp://10.100.52.12/debianstablemaincontribnonfree
Depois, como root, vamos atualizar a relao de
pacotes disponveis a instalao, com o comando:
#aptitudeupdate
Agora vamos instalar o servidor DNS, sua
documentao e algumas ferramentas de teste
com o comando:
#aptitudeinstallbind9bind9docdnsutils

http://www.debianfordummies.org/wiki/index.php/DFD_DNS_HOWTO
Comandopara
consultarumIP
Testando a instalao
#digwww.linux.org@127.0.0.1 Utiliza odoservidorDNSlocal

;<<>>DiG9.2.4<<>>www.linux.org@127.0.0.1
;;globaloptions:printcmd
;;Gotanswer:
;;>>HEADER<<opcode:QUERY,status:NOERROR,id:56389
;;flags:qrrdra;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:2

;;QUESTIONSECTION:
;www.linux.org.INA
IPrespondido
;;ANSWERSECTION:
www.linux.org.43200INA198.182.196.56

;;AUTHORITYSECTION:
linux.org.43200INNSns0.aitcom.net.
linux.org.43200INNSns.invlogic.com.

;;ADDITIONALSECTION:
ns.invlogic.com.172800INA207.245.34.122
ns0.aitcom.net.172800INA208.234.1.34

;;Querytime:1450msec
;;SERVER:127.0.0.1#53(127.0.0.1)
;;WHEN:WedAug3015:36:492006
;;MSGSIZErcvd:136
Configurao de um domnio
O servio de nomes (DNS) organizado
hierarquicamente em domnios, deste modo
isola-se o conjunto de nomes pertencentes a um
domnio dos nomes de outro.
O controlador do domnio pode adicionar
quaisquer nomes dentro deste domnio e no
haver perigo de coliso acidental de nomes.
Estes nomes podem ser subdomnios (nomes
que aceitam mais nomes subordinados) ou hosts
(nomes de mquinas especficas, sem
subordinados).
Configurao de um domnio
(cont.)
S relembrando ...
Vamos configurar o domnio cursolinux.52ct.eb.mil.br
os computadores que sero resolvidos por esse servidor
sero:
www.<domnio>:10.100.53.20<ndocomputador>
ftp.<domnio>:10.100.53.20<ndocomputador>
intranet.<domnio>:10.100.53.20<ndocomputador>
internet.<domnio>:10.100.53.20<ndocomputador>
smtp.<domnio>:10.100.53.20<ndocomputador>
pop3.<domnio>:10.100.53.20<ndocomputador>
egroupware.<domnio>:10.100.53.20<ndocomputador>
webmail.<domnio>:10.100.53.20<ndocomputador>
Configurao da
resoluo direta
O diretrio padro onde esto localizados os
arquivos de configurao do servidor DNS : /
etc/bind.
Primeiramente temos que adicionar ao arquivo
named.conf.local os dados bsicos do
domnio, ou seja, as seguintes linhas:
Indicaqualarquivo
zone"cursolinux.52ct.eb.mil.br"{ conter
typemaster;

asconfigura esdo
file"/etc/bind/db.cursolinux.52ct.eb.mil.br";

};
Inicialmente teste a configurao com o
comando:
#namedcheckconf
#namedcheckzonecursolinux.52ct.eb.mil.br/
etc/bind/db.cursolinux.52ct.eb.mil.br
Detalhes importantes
Nem todos os caracteres so permitidos nos
nomes das mquinas.
Estamos limitados ao caracteres do alfabeto: a-z
e ao nmeros: 0-9, alm do caracter '-' (hfen).
Devemos nos restringir queles caracteres.
Os caracteres maisculos e minsculos so
idnticos para o DNS, assim pat.uio.no igual a
Pat.UiO.No.
Configurao da
resoluo direta (cont.)
Agora vamos criar o arquivo
db.cursolinux.52ct.eb.mil.br no diretrio /
etc/bind. Pessoaresponsvel
pelodomnio.
$TTL86400
@ IN SOA alunox.cursolinux.52ct.eb.mil.br.admin.cursolinux.52ct.eb.mil.br.
( 1130118145 ;Serial
10800 ;Refresh
3600 ;Retry
604800 ;Expire Qualcomputador
86400) ;Minimum responsvelpelodomnio.

IN NSalunox.cursolinux.52ct.eb.mil.br.
IN MX10smtp.cursolinux.52ct.eb.mil.br.
alunox IN A 10.100.53.20x
smtp IN A 10.100.53.20x Qualcomputador
pop3 IN CNAME smtp responsvelpeloemail.
ftp IN CNAME alunox
www IN A 10.100.53.20x
intranet IN A 10.100.53.20x
Maisde1(um)
internet IN A 10.100.53.20x
egroupware IN A 10.100.53.20x nomeporIP.
webmail IN A 10.100.53.20x
Configurao da
resoluo direta (cont.)
Agora temos que reiniciar o servidor DNS:
#/etc/init.d/bind9restart
Para testarmos se tudo est funcionando
utilizamos o comando dig:
#digwww.cursolinux.52ct.eb.mil.br@127.0.0.1
#digftp.cursolinux.52ct.eb.mil.br@127.0.0.1
Agora basta configurarmos os computadores
cliente. Essa configurao realizada por meio
da edio do arquivo resolv.conf.

searchcursolinux.52ct.eb.mil.br
nameserver10.100.53.201
O que DNS reverso?
O DNS reverso um meio de que outras maquinas
podem ter certeza de que voc voc, por
exemplo, normal servidores de email, checarem
se o seu DNS mesmo vlido.
No DNS reverso perguntado qual o nome da
mquina que possui um determinado IP.
Isso pode ser testado com o comando host.
#hostterra.com.br
terra.com.brhasaddress200.176.3.142
#host200.176.3.142
142.3.176.200.inaddr.arpadomainnamepointerwww.terra.com.br.
Configurao da
resoluo reversa
O diretrio padro onde esto localizados os
arquivos de configurao do servidor DNS : /
etc/bind.
Primeiramente temos que adicionar ao arquivo
named.conf.local os dados bsicos do
domnio, ou seja, as seguintes linhas:
zone"53.100.10.inaddr.arpa"{
typemaster;
file"/etc/bind/db.53.100.10.inaddr.arpa";
};
Indicaqualarquivoconterasconfigura es
daresolu oreversadodomnio
Configurao da
resoluo reversa (cont.)
Agora vamos criar o arquivo db.53.100.10.in
addr.arpano diretrio/etc/bind.

;
;BINDreversedatafileforcursolinux.52ct.eb.mil.br
;
$TTL86400
@ IN SOA alunox.cursolinux.52ct.eb.mil.br.
admin.cursolinux.52ct.eb.mil.br.( 1130118145 ;Serial
10800 ;Refresh
3600 ;Retry
604800 ;Expire
86400) ;Minimum

INNScursolinux.52ct.eb.mil.br.
201 INPTRalunox.cursolinux.52ct.eb.mil.br.
201INPTRsmtp.cursolinux.52ct.eb.mil.br.
201INPTRpop3.cursolinux.52ct.eb.mil.br.
201INPTRwww.cursolinux.52ct.eb.mil.br.
201INPTRintranet.cursolinux.52ct.eb.mil.br.
Configurao da
resoluo reversa (cont.)
Agora temos que reiniciar o servidor DNS:
#/etc/init.d/bind9restart
Para testarmos se tudo est funcionando
utilizamos o comando dig:
#host10.100.53.201127.0.0.1
Configurando o BIND Chroot
O chroot (jaula) funciona da seguinte forma,
qualquer servio que estiver rodando sobre a
cadeia de chroot incapaz de enxergar
qualquer diretrio fora de sua cadeia, por
exemplo se o bind estiver rodando no diretrio /
var/lib/named - chrooted - para o bind esse
diretrio ser considerado o raiz (/) do sistema.
No Debian 3.1 o primeiro passo a realizar
editar o arquivo daemon do BIND /
etc/default/bind9, e mudar o valor da varivel
OPTIONS de OPTIONS="u bind" para
OPTIONS="ubindt/var/lib/named"
Depois de ser realizado esse passo ...
Configurando o BIND Chroot
(cont.)
Crie agora os diretrios necessrios:
#mkdirp/var/lib/named/etc
#mkdir/var/lib/named/dev
#mkdirp/var/lib/named/var/cache/bind
#mkdir/var/lib/named/var/run
Ento mova o diretrio de configuraao de /etc
para /var/lib/named/etc
#mv/etc/bind/var/lib/named/etc/bind
Crie agora link com o diretrio antigo de
configurao:
#lns/var/lib/named/etc/bind/etc/bind
Configurando o BIND Chroot
(cont.)
Crie os arquivos nulos e random, e corrige a
permisso:
#mknod/var/lib/named/dev/nullc13
#mknod/var/lib/named/dev/randomc18
#chmod666/var/lib/named/dev/null
#chmod666/var/lib/named/dev/random
Debian Sarge (3.1):
#mkdirp/var/lib/named/var/run/bind/run
#chownRbind:bind/var/lib/named/var/*
#chownRbind:bind/var/lib/named/etc/bind
Configurando o BIND Chroot
(cont.)
Voc precisa editar o arquivo /
etc/init.d/sysklogd do sysklogd, para
monitorar os logs do Bind em chroot, modifique
a linha SYSLOGD="" para SYSLOGD="a /
var/lib/named/dev/log".
E agora reinicie o servio de logs e bind:
#/etc/init.d/sysklogdrestart
#/etc/init.d/bind9start
Servidor de FTP
Vamos agora configurar nosso servidor de FTP.
Este servidor tem como objetivo disponibilizar
de forma rpida e estruturada documentos
ostensivos de interesse geral, como o Boletim
Interno da OM.
Para isso iremos instalar um servidor FTP com
uma pasta chamada bi, onde somente o usurio
chamado aux1secao, com senha=teste,
pertencente ao grupo 1secao, poder fazer os
uploads dos BI.
Configurao do usurio
Primeiramente vamos criar o grupo 1secao:
#groupadd1secao
Agora vamos criar o usurio aux1secao, com
senha=teste e grupo principal 1secao:
# adduser ingroup 1secao home /home/ftp/bi
aux1secao
Agora vamos testar para ver se o usurio foi
criado com sucesso:
Alterne para outro terminal: Alt+F2;
Se logue como usurio aux1secao.
Digite o comando groups.
Vamos agora instalar o servidor FTP...
Instalao do proftpd
Primeiramente vamos instalar 3(trs) pacotes: 2
(dois) relacionados ao servidor e outro com a
documentao do programa.
#aptgetinstallproftpdproftpdcommonproftpddoc
A nica pergunta feita durante a instalao est
relacionada a forma com que o servidor vai
funcionar: standalone ou inetd.
Se for ser um servidor muito solicitado escolha
standalone, caso contrrio inetd.
Depois de instalado teste o servidor:
$ftplocalhost
Principais comandos
Existem diversos comandos disponveis no ftp.
Os principais so:
helpou?
binouascii
putoumput
getoumget
lcd
cd
ls
pwd
exit
Principais arquivos/diretrios
O arquivo de configurao do proftpd :
/etc/protftpd.conf
O diretrio pblico do servidor :
/home/ftp
Diretrio com os arquivos de ajuda do proftpd:
/usr/share/doc/proftpddoc
/usr/share/doc/proftpd
Arquivo de configurao
/etc/proftpd.conf
#
#/etc/proftpd.confThisisabasicProFTPDconfigurationfile.
#Toreallyapplychangesreloadproftpdaftermodifications.
#

ServerName "Debian"
ServerType standalone
DeferWelcome off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks on

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLoginwelcome.msg
DisplayFirstChdir.message
ListOptions"l"

DenyFilter \*.*/
Arquivo de configurao
/etc/proftpd.conf
#UncommentthisifyouareusingNISorLDAPtoretrievepasswords:
#PersistentPasswd off

#UncommentthisifyouwoulduseTLSmodule:
#TLSEngine on

#Uncommentthisifyouwouldusequotamodule:
#Quotas on

#Uncommentthisifyouwoulduseratiomodule:
#Ratios on

#Port21isthestandardFTPport.
Port 21

#TopreventDoSattacks,setthemaximumnumberofchildprocesses
#to30.Ifyouneedtoallowmorethan30concurrentconnections
#atonce,simplyincreasethisvalue.NotethatthisONLYworks
#instandalonemode,ininetdmodeyoushoulduseaninetdserver
#thatallowsyoutolimitmaximumnumberofprocessesperservice
#(suchasxinetd)
MaxInstances 30
Arquivo de configurao
/etc/proftpd.conf
#Settheuserandgroupthattheservernormallyrunsat.
User nobody
Group nogroup

#Umask022isagoodstandardumasktopreventnewfilesanddirs
#(secondparm)frombeinggroupandworldwritable.
Umask 022022

#Normally,wewantfilestobeoverwriteable.
AllowOverwrite on

#DelayenginereducesimpactofthesocalledTimingAttackdescribedin
#http://security.lss.hr/index.php?page=details&ID=LSS20041002
#Itisonbydefault.
#DelayEngine off
#Abasicanonymousconfiguration,nouploaddirectories.

Arquivo de configurao
#<Anonymous~ftp>
#User ftp
#Group nogroup

/etc/proftpd.conf
##Wewantclientstobeabletologinwith"anonymous"aswellas"ftp"
#UserAlias anonymousftp
##Cosmeticchanges,allfilesbelongstoftpuser
#DirFakeUser onftp
#DirFakeGroup onftp
#RequireValidShell off
#
##Limitthemaximumnumberofanonymouslogins
#MaxClients 10
#
##Wewant'welcome.msg'displayedatlogin,and'.message'displayedineachnewlychdired
directory.
#DisplayLogin welcome.msg
#DisplayFirstChdir .message
#
##LimitWRITEeverywhereintheanonymouschroot
#<Directory*>
#<LimitWRITE>
#DenyAll
#</Limit>
#</Directory>
#
##Uncommentthisifyou'rebrave.
##<Directoryincoming>
###Umask022isagoodstandardumasktopreventnewfilesanddirs
###(secondparm)frombeinggroupandworldwritable.
##Umask 022022
##<LimitREADWRITE>
## DenyAll
##</Limit>
##<LimitSTOR>
## AllowAll
##</Limit>
##</Directory>
#
Configuraes necessrias ...
Primeiramente vamos pensar na segurana
tornando o acesso aos diretrios dos usurios
chrooted.
DefaultRoot ~
Agora vamos restringir a taxa de transferncia
por conexo: Taxaem
kbps
TransferRate RETR8:10 Byteslivresde
controledebanda
No queremos que os usurios faam o upload
de msicas e filmes. Dessa forma temos que
alterar a seguinte linha no arquivo
proftpd.conf.
DenyFilter(.*\.mp3)|(.*\.mpg)$
#Abasicanonymousconfiguration,nouploaddirectories.
<Anonymous~ftp> Aindatemosqueliberaroacessoa
User ftp rea
Group nogroup
p blicadoftpaosusurios
#Wewantclientstobeabletologinwith"anonymous"aswellas"ftp"
UserAlias anonymousftp an nimos.
#Cosmeticchanges,allfilesbelongstoftpuser
DirFakeUser onftp
DirFakeGroup onftp Paraissotemosquedescomentar
RequireValidShell off algumas

#Limitthemaximumnumberofanonymouslogins linhasdaconfigura odoproftpd


MaxClients 10

##Wewant'welcome.msg'displayedatlogin,and'.message'displayedineachnewlychdired
directory.
#DisplayLogin welcome.msg
#DisplayFirstChdir .message
#
##LimitWRITEeverywhereintheanonymouschroot
#<Directory*>
#<LimitWRITE>
#DenyAll
#</Limit>
#</Directory>
#
##Uncommentthisifyou'rebrave.
##<Directoryincoming>
###Umask022isagoodstandardumasktopreventnewfilesanddirs
###(secondparm)frombeinggroupandworldwritable.
##Umask 022022
##<LimitREADWRITE>
## DenyAll
##</Limit>
##<LimitSTOR>
## AllowAll
##</Limit>
##</Directory>
#
Instalar o nosso
servidor de aplicativos
Agora vamos configurar o nosso serv-tudo.
Iremos instalar, a princpio, os seguintes
servidores:
joomla: Sistema Gerenciador de Contedo para
intranet e Internet;
protweb: Sistema Gerenciador de Contedo;
egroupware: Sistema para trabalho colaborativo
(agenda colaborativa e de contatos, webmail,
gerenciador de projetos).
Esses aplicativos utilizam os seguintes
programas: apache, php e mysql.
Instalando os programas
bsicos
Primeiramente temos que atualizar a lista de
pacotes disponveis:
#aptgetupdate
Agora podemos instalar os programas (LAMP):
# aptget install apache apachedoc php4
libapachemodphp4 mysqlserver php4mysql
phpmyadmin
Principais respostas:
Habilitar SuExec -> No
Que web server gostaria de configurar
automaticamente? -> apache
Voc gostaria de reiniciar seu servidor agora? -> Sim
Testando o LAMP
A forma mais fcil de testar o LAMP
acessando o phpmyadmin:
Entre no Mozilla Firefox e acesse o site:
http://127.0.0.1/phpmyadmin/
http://localhost/phpmyadmin/
O phpmyadmin a interface web para realizar a
manuteno do mysql. Complete o formulrio
com o login=root e senha em branco.
interessante que essa interface seja acessvel
de fortma criptografada para que as senhas no
passem em claro. Para que isso acontea temos
que instalar o servidor apache seguro.
Instalando o servidor
apache seguro
interessante que atualizemos a lista de
pacotes disponveis sempre antes de instalar um
programa:
#aptgetupdate
Agora vamos instalar os pacotes relacionados ao
servidor seguro:
#aptgetinstallapachessl
cacertificatesopensslsslcert
Principais respostas:
Confiar em novos certificados de CAs? -> perguntar
Agora vem os dados do certificado do servidor ...
Dados do certificado
No utilize acentos ...
Principais perguntas e respostas:
Country Name: BR
Nome do estado ou provncia: Ceara
Nome da Localidade: Fortaleza
Nome da Organizao: 52 Centro de Telematica
Nome da Unidade Organizacional: Curso Linux
Nome do host: alunox.cursolinux.52ct.eb.mil.br
Endereo de e-mail: admin@cursolinux.52ct.eb.mil.br
Reconfigurando o
phpmyadmin
Agora temos que reconfigurar o phpmyadmin:
#dpkgreconfigurephpmyadmin
As perguntas realizadas e respectivas respostas
so:
Selecione, tambm, o apache-ssl e clique em OK.
Voc gostaria de reiniciar o servidor agora? -> Sim
Agora voc pode acessar o phpmyadmin de
forma segura. Acesse a url:
https://127.0.0.1/phpmyadmin/
https://localhost/phpmyadmin/
Primeiramente troque a senha do root para o
valor teste em Alterarasenha.
intranet e Internet
Vamos utilizar um gerenciador de contedo
para gerenciar o site da intranet e Internet da
instituio.
Um dos melhores gerenciadores de contedo
atualmente existente o Joomla.
Ele totalmente desenvolvido em php e mysql.
Teremos que ter dois servidores Joomla
funcionando simultaneamente: um para o site
Internet e outro para o site da intranet.
Para isso teremos que criar dois ambientes
distintos: dois diretrios no servidor web e duas
contas no banco de dados.
Preparando o ambiente ...
Primeiramente vamos criar os diretrios dos
sites:
#mkdir/var/www/intranet
#mkdir/var/www/www
Utilizando o phpmyadmin, vamos criar dois
bancos de dados: um com nome www e outro
com nome intranet.
Banco de dados -> Criar novo banco de dados ->
Criar
Preparando o ambiente
Agora vamos criar dois usurios no banco de
dados mysql: um com login=intranet e
senha=teste e outro com login=www e
senha=teste. Todos eles podendo acessar o
phpmyadmin de qualquer servidor, com
permisso de criar banco de dados e com
privilgios sobre os bancos de dados.
Privilgios -> Adicionar novo usurio -> Login, senha
e marcar todos os itens de dados e Estrutura ->
Executar.
Privilgios especficos do Banco de Dados ->
Adicionar privilgios nas seguintes Banco de Dados ->
Marcar todos -> Executar
Instalando o Joomla
Primeiramente vamos fazer o download da
ltima verso do Joomla (1.0.11) do site:
ftp://ftp.52ct.eb.mil.br/pub/cursolinux/Joomla
_1.0.11StableFull_Package.tar.gz
Depois de baixar o pacote copie o mesmo para
os diretrios: /var/www/www/ e /var/www/intranet.
Vamos agora colocar no ar a intranet:
#cd/var/www/intranet
#tarxvzfJoomla_1.0.11StableFull_Package.tar.gz
#cd..
#chownRwwwdata.wwwdataintranet
Instalando o Joomla (cont.)
Acesse, no browser, a seguinte url:
http://localhost/intranet/

Clique
aqui
Instalando o Joomla
Edite o arquivo globals.php, situado no
diretrio /var/www/intranet e altere o valor da
varivel RG_EMULATION para 0.
Isto trar mais segurana para o seu site.
Clique
aqui
Clique
aqui
Clique
aqui
Clique
aqui
Clique
aqui
Finalizando a instalao
Para prosseguirmos temos que remover o
diretrio:
#cd/var/www/intranet
#rmrfinstallation
Agora podemos acessar o site intranet:
http://localhost/intranet
A interface de administrador acessvel pelo
site:
http://localhost/intranet/administrator/
Protweb
O que ?
Um sistema gerenciador de documentos.
acessvel via browser.
Desenvolvido em php+mysql.
Instalao do Protweb
Primeiramente baixe o protweb do site:
ftp://ftp.52ct.eb.mil.br/pub/cursolinux/protweb
_install.tar.gz
Untarzeie o arquivo:
#tarxvzfprotweb_install.tar.gz
V para o diretrio protweb_install e depois
execute o arquivo instala_protweb
#cdprotweb_install
#./instala_protweb
Instalao do Protweb
Responda as seguintes perguntas:
Diretrio de instalao: /var/www
Usurio admin do mysql: root
Senha do root: <ENTER> ou teste
Instalao do Protweb
Edite o arquivo settings.php situado no
diretrio /var/www/protweb/config/
#vi/var/www/protweb/config/settings.php
E altere as seguintes variveis
$document_path=/var/www/protweb/documentos
$message_path=/var/www/protweb/mensagens
$modelo_path=/var/www/protweb/modelos
$web_server=http://protweb.cursolinux.52ct.eb.mil.br/
$webmaster=protweb@cursolinux.52ct.eb.mil.br
$coment_to=protweb@cursolinux.52ct.eb.mil.br
Infelizmente necessrio colocar a varivel
register_globals do php on ...
#vi/etc/php4/apache/php.ini
#apachectlrestart
Acessando o Protweb
Para acessar o protweb, acesse a url
http://localhost/protweb e digite login=admin e
senha=senha
eGroupWare
http://www.egroupware.org/

O eGroupWare um aplicativo acessvel via


browser, voltado para o trabalho colaborativo.
Ele possui as seguintes funcionalidades bsicas:
Agenda colaborativa;
Gerenciador de projetos;
Webmail;
Catlogo de endereos colaborativo.
A instalao do sistema pode ser realizada por
meio do apt. Para instal-lo execute os
comandos:
#aptgetupdate
#aptgetinstallegroupware
Preparando o ambiente ...
Primeiramente vamos criar o banco de dados
egroupware no phpmyadmin.
Depois temos que criar o usurio egroupware
com senha=teste, com todas as permisses de
Dados e Estrutura.
Dar todas as permisses para o usurio
egroupware no banco de dados egroupware.
Instalar o eGroupWare
Instalar o eGroupWare
Instalar o eGroupWare

teste
Instalar o eGroupWare
Instalar o eGroupWare
Terminando a instalao ...
Acesse a url:
http://localhost/egroupware/setup/

Cliqueaqui
Terminando a instalao ...

Cliqueaqui
Terminando a instalao ...
Terminando a instalao ...
Terminando a instalao ...

teste

Clique
aqui
Terminando a instalao ...

Clique
aqui
Terminando a instalao ...

Clique
aqui
Terminando a instalao ...

Cliqueaqui
Terminando a instalao ...

Cliqueaqui
Terminando a instalao ...
Terminando a instalao ...

Clique
aqui
Terminando a instalao ...

Clique
aqui
Terminando a instalao ...
Virtual Hosts
At agora s acessamos os sitemas instalados
digitando o IP ao invs dos nomes ...
Isso funciona mas no o desejvel.
Existe uma maneira de horpedarmos vrios
sistemas em um nico servidor web e torn-los
acessveis por seus nomes (DNS).
Por exemplo: ao invs de digitarmos
http://10.100.53.20x/intranet para acessarmos a
intranet poderamos digitar
http://intranet.cursolinux.52ct.eb.mil.br/.
Para isso servem os Virtual Hosts.
Configurando o Virtual Host
Edite o arquivo de configurao do apache:
#vi/etc/apache/httpd.conf
Procure no documento a string
NameVirtualHost
/NameVirtualHost
Acrescente a linha:
NameVirtualHost*
Agora podemos configurar nossos servidores
virtuais ...
Configurando o Virtual Host
Cada virtual host necessita de uma seo
separada:
<VirtualHost*>
ServerNameintranet.cursolinux.52ct.eb.mil.br
DocumentRoot/var/www/intranet
ServerAdminwebmaster@cursolinux.52ct.eb.mil.br
ErrorLoglogs/intraneterror.log
CustomLoglogs/intranetaccess.logcommon
</VirtualHost>
<VirtualHost*>
ServerNamewww.cursolinux.52ct.eb.mil.br
DocumentRoot/var/www/www
</VirtualHost>
<VirtualHost*>
ServerNameegroupware.cursolinux.52ct.eb.mil.br
DocumentRoot/usr/share/egroupware
</VirtualHost>
<VirtualHost*>
ServerNameprotweb.cursolinux.52ct.eb.mil.br
DocumentRoot/var/www/protweb
</VirtualHost>
<VirtualHost*>
ServerNamephpmyadmin.cursolinux.52ct.eb.mil.br
DocumentRoot/var/www/phpmyadmin
</VirtualHost>
Testando a configurao
Para testar a configurao basta acessar os
sites pela URL:
http://intranet.cursolinux.52ct.eb.mil.br
http://www.cursolinux.52ct.eb.mil.br
http://egroupware.cursolinux.52ct.eb.mil.br
http://protweb.cursolinux.52ct.eb.mil.br
Protegendo um
diretrio por senha
O apache ainda possui mecanismos para
proteger pginas do servidor com login e senha.
Suponha que tenhamos um diretrio no nosso
servidor www que queremos proteger o acesso.
Esse acesso s seria permitido a pessoas que
possussem um login e senha adequados.
Primeiramente vamos criar o diretrio onde
ficaro nossas pginas protegidas:
#mkdir/var/www/paginaprotegida
S para testarmos vamos criar um arquivo a.txt.
#touch/var/www/paginaprotegida/a.txt
Protegendo um
diretrio por senha
Primeiro temos que alterar o arquivo de
configurao do apache o httpd.conf situado no
diretrio /etc/apache.
Acrescente as seguintes linhas ao arquivo logo
aps o tag </Directory> do diretrio /
var/www/. <Directory/var/www/paginaprotegida>
Sobrescreveas OptionsFollowSymLinksIndexes
configura es AllowOverrideAuthConfig
padr esdoservidor </Directory>
Apache
paracolocarnovas Dizqueseoapacheencontraroarquivo.htaccessno
configura es diret rioasregras
contidasneledevemseraplicadasaodiret rioaaossub

http://www.devin.com.br/eitch/htaccess
Entendendo o apache ...
So permitdas as seguintes opes para os diretrios
"None", "All", ou qualquer combinao de "Indexes",
"Includes", "FollowSymLinks", "ExecCGI", or
"MultiViews".
Indexes": faz com que quando no tiver nenhum arquivo do tipo
index.html, index.htm, ou "pginas iniciais", o Apache cria uma
pgina com a lista dos arquivos existentes no diretrio;
Includes": permite colocar arquivos do tipo SSI (Server Side
Includes);
FollowSymLinks: faz com que o Apache aceite links simblicos
no sistema, seguindo os diretrios ou arquivos que os links
apontam;
ExecCGI: faz com que neste diretrio possam ser executados
arquivos CGI (Common Gateway Interface);
MultiViews: serve para, por exemplo, servir pginas de acordo
com a preferncia de lngua do usurio (index.html.pt_BR,
index.html.en, etc);
All: significa todas as opes (menos o MultiViews);
None: significa nenhuma.
http://www.devin.com.br/eitch/htaccess
Configurando o arquivo
de senhas
Primeiramente vamos criar o diretrio que
conter o arquivo com os logins e senhas que
podero acessar o diretrio e seus sub-
diretrios.
#mkdir/etc/apache/auth
Agora vamos criar os logins e senhas:
#cd/etc/apache/auth
#htpasswdcacessousuario1
#htpasswdcacessousuario2
E agora o gran finale: criar o arquivo .
htaccess!

http://www.devin.com.br/eitch/htaccess
Configurando o arquivo
de senhas
V para o diretrio que ir proteger e crie o .
htaccess:
#cd/var/www/paginaprotegida
#vi.htaccess
O contedo do arquivo deve ser:

AuthName "Acesso Restrito Usurios"


AuthType Basic
AuthUserFile /etc/apache/auth/acesso
require valid-user

Pronto: reinicie o apache e faa o teste!


#apachectlrestart

http://www.devin.com.br/eitch/htaccess
Outras formas de
restringir o acesso
Podemos restringir o acesso aos diretrios a
alguns IP's.
Para isso temos que alterar a configurao do
diretrio no httpd.conf e colocar algumas das
seguintes diretivas:
#DeixaaIntranet
acessar
Orderallow,deny
allowfrom192.168.0.
denyfromall
#Deixatodomundoacessar,menosoIP
192.168.0.25
Orderdeny,allow
denyfrom192.168.0.25
allowfromall
http://www.devin.com.br/eitch/htaccess
Agora chegou a hora
do servidor de e-mail
Citamos diversas contas de e-mail de usurios
durante a configurao dos servidores ...
Precisamos, ento, configurar nosso servidor de
e-mail!
Um dos servidores de e-mail mais utilizados o
Postfix (http://www.postfix.org).
Alm de leve cheio de funcionalidades.
Tarefa
Vamos configurar o Postfix com as seguintes
funcionalidades:
SMTP autenticado (SASL);
Criptografia (TLS);
Anti-vrus (clamav);
Anti-spam (spamassassin);
Webmail (squirrelmail).
Agora que sabemos o que queremos vamos
partir para a instalao do Postfix.
Instalando o Postfix
A instalao do Postfix rpida e fcil:
#aptgetinstallpostfixpostfixdoc
Responda as perguntas da seguinte forma:
Tipo geral de configurao: Internet Site
Onde as mensagens de root devem ser entregues: admin.
Nome de mensagens: alunox.cursolinux.52ct.eb.mil.br
Outros destinos para os quais aceitar mensagens:
alunox.cursolinux.52ct.eb.mil.br,
cursolinux.52ct.eb.mil.br, localhost
Forar atualizaes sncronas na caixa de mensagens: No.
O servidor est com as configuraes bsicas. J
podemos test-lo agora ...
Testando a instalao
kurumin@laptop:~$telnetlocalhost25
Trying192.168.0.3...
Connectedto192.168.0.3.
Escapecharacteris'^]'.
220localhost.cursolinux.52ct.eb.mil.brESMTPPostfix
(Debian/GNU)
HELOcursolinux.52ct.eb.mil.br
250localhost.cursolinux.52ct.eb.mil.br
MAILFrom:root@cursolinux.52ct.eb.mil.br
250Ok
RCPTto:admin@cursolinux.52ct.eb.mil.br
250Ok
DATA
354Enddatawith<CR><LF>.<CR><LF>
Istoumemaildeteste.
.
250Ok:queuedas7AB9C82F8
QUIT
221Bye
Connectionclosedbyforeignhost.
Lendo o e-mail enviado
Primeiramente vamos ver se o e-mail foi
enviado ...
#tail/var/log/syslog
Vamos agora ler o e-mail com o cliente de e-

mail mail:
#aptgetinstallmailx
#mail
Se tudo correu bem deve aparecer o e-mail que

enviamos.
Para que consigamos colocar para funcionar
TODOS os servios que precisamos necessrio
que criemos o diretrio Maildir acima do
diretrio home dos usurios.
#suadmin
$maildirmake~/Maildir
Preparando o terreno
Temos que configurar algumas coisas antes de
prosseguirmos:
Para configurarmos um servidor webmail,
necessitamos de configurar um servidor IMAP.
O IMAP que instalaremos funciona com Maildir e no
com mailbox.
Vamos configurar o Maildir para todos os novos
usurios do sistema:
#cd/etc/skel
#maildirmakeMaildir
Temos que criar esse diretrio para os usurios
j criados.
POP3
Para podermos baixar os e-mails temos que
instalar um servidor POP ou IMAP.
Um dos servidores mais utilizados o servidor
courier.
Para instal-lo execute o comando:
#aptgetinstallcourierpopcourierdoc
Respondas as seguintes perguntas;
Criar diretrios para administrao baseada na web:
Sim.
Podemos testar o acesso ao POP3 pelo kmail.
POP3 - seguro
Podemos instalar o servidor com suporte a
criptografia:
#aptgetinstallcourierpopssl
Foi criado um certificado de teste. Vamos criar
um certificado relacionado ao nosso servidor.
#cd/etc/courier
#rmpop3d.pem
# vi pop3d.cnf (coloque os valores
corretos)
#mkpop3dcert
Agora basta reconfigurar a conta POP do cliente
de e-mail e colocar a opo SSL.
Arquivo pop3d.cnf
Webmail
O squirrelmail necessita do servidor imap.
#aptgetinstallcourierimapcourierimap
ssl
Agora podemos instalar o webmail:
#aptgetinstallsquirrelmail
Para configurar o webmail execute, como root, o
comando:
#/usr/sbin/squirrelmailconfigure
Anti-vrus (clamav)
Para proteger a rede temos que instalar um
anti-vrus de e-mail.
Um excelente anti-vrus o clamav.
Para instal-lo execute o comando:
#aptgetinstallclamavarjunzoounrar
lhaclamavdaemonzoolzoparc
Responda as seguintes perguntas:
daemon
db.br.clamav.net
http_proxy em branco
Clamd deve ser notificado: Sim
Anti-vrus (amavis_new)
Para que o clamav funcione com o Postfix
precisamos instalar o amavis.
#aptgetinstallamavisdnew
Edite o arquivo /etc/amavis/amavisd.conf e
altere/verifique as seguintes linhas:
$MYHOME='/var/lib/amavis';#(defaultis'/var/amavis')
$mydomain='cursolinux.52ct.eb.mil.br';#(Boteaquioseudominio)
$daemon_user='amavis';#(nodefault;customary:vscanoramavis)
$daemon_group='amavis';#(nodefault;customary:vscanoramavis)

$QUARANTINEDIR='/var/lib/amavis/virusmails';

$log_level=0;
Altere/verifique as seguintes linhas.
Anti-vrus (amavis_new)
$final_virus_destiny=D_BOUNCE;#(defaultstoD_BOUNCE)
$final_banned_destiny=D_BOUNCE;#(defaultstoD_BOUNCE)
$final_bad_header_destiny=D_PASS;#(defaultstoD_PASS),D_BOUNCE
suggested

$final_spam_destiny=D_PASS;#(defaultstoD_REJECT)
$sa_spam_subject_tag='***SPAM***'

#Coloqueaqui,oemaildoadministradoroucrieumALIASparaesseemail,

quereceberaosavisodosemailslocalizadospeloAmavis.
$virus_admin="virusalert\@$mydomain";
Edite o arquivo /etc/aliases e acrescente a linha
virusalert:admin. Depois execute o comando
newaliases.
Agora verifique se a linha do clamav est
descomentada:
['ClamAntivirusclamd',
\&ask_daemon,["CONTSCAN{}\n",'/var/run/clamv/clamd.ctl'],
qr/\bOK$/,qr/\bFOUND$/,
qr/^.*?:(?!InfectedArchive)(.*)FOUND$/],
Fazendo a integrao:
Postfix+Clamav+Amavis
Edite o arquivo /etc/clamav/clamd.conf e
altere o usurio com o qual o clamav est
rodando de clamav para amavis:
Useramavis
Altere as permisses dos diretrios do clamav
para pertencer ao usurio amavis:
#cd/var/run
#chownRamavis:amavisclamav
#cd/var/log
#chownRamavis:amavisclamav
Fazendo a integrao:
Postfix+Clamav+Amavis
Reinicie o clamav e o amavis:
#/etc/init.d/clamavdaemonrestart
#/etc/init.d/amavisrestart
Lembre-se de que sempre vale a pena observar
os logs ...
#tailf/var/log/syslog
Pronto: vamos ver se o amavis est no ar ...
#telnetlocalhost10024
Trying127.0.0.1...
Connectedtoaluno0.cursolinux.52ct.eb.mil.br.
Escapecharacteris'^]'.
220[127.0.0.1]ESMTPamavisdnewserviceready
Fazendo a integrao:
Postfix+Clamav+Amavis
Edite o arquivo /etc/postfix/master.cf e
acrescente as linhas:
smtpamavisunixn2smtp
osmtp_data_done_timeout=1200
osmtp_send_xforward_command=yes
odisable_dns_lookups=yes

127.0.0.1:10025inetnnsmtpd
ocontent_filter=
olocal_recipient_maps=
orelay_recipient_maps=
osmtpd_restriction_classes=
osmtpd_client_restrictions=
osmtpd_helo_restrictions=
osmtpd_sender_restrictions=
osmtpd_recipient_restrictions=permit_mynetworks,reject
omynetworks=127.0.0.0/8,10.100.53.0/22
ostrict_rfc821_envelopes=yes
osmtpd_error_sleep_time=0
osmtpd_soft_error_limit=1001
osmtpd_hard_error_limit=1000
Fazendo a integrao:
Postfix+Clamav+Amavis
Precisamos fazer com que o Postfix repasse os
e-mails para serem avaliados pelo amavis.
#vi/etc/postfix/main.cf
Acrescente a linha abaixo ao arquivo:
content_filter=smtpamavis:[127.0.0.1]:10024
Agora vamos reiniciar o Postfix:
#/etc/init.d/postfixrestart
Agora s falta testarmos ...
Monitore em um terminal o syslog:
#tailf/var/log/syslog
Fazendo a integrao:
Postfix+Clamav+Amavis
Agora vamos testar o anti-vrus:
#telnetlocalhost25
Trying127.0.0.1...
Connectedtoaluno0.cursolinux.52ct.eb.mil.br.
Escapecharacteris'^]'.
220servidor.cursolinux.52ct.eb.mil.brESMTPPostfix(Debian/GNU)
HELOcursolinux.52ct.eb.mil.br
250servidor.cursolinux.52ct.eb.mil.br
mailfrom:virotico@virus.org
250Ok
rcptto:webmaster@cursolinux.52ct.eb.mil.br
250Ok
DATA
354Enddatawith<CR><LF>.<CR><LF>
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICARSTANDARDANTIVIRUSTESTFILE!$H+H*
.
250Ok:queuedas8CC564C10
Anti-spam (spamassassin)
Para instalar o spamassassin basta executar o
comando:
#aptgetinstallspamassassin
Edite o arquivo /etc/default/spamassassin e
altere o valor da varivel ENABLED para 1.
Agora j podemos iniciar o spamassassin:
#/etc/init.d/spamassassinstart
No arquivo /etc/spamassassin/local.cf
altere/verifique os valores das variveis abaixo:
required_score4.5
ok_languagespten
rewrite_headerSubject*****SPAM*****

Reinicie o spamassassin:
#/etc/init.d/spamassassinrestart
Anti-spam (spamassassin)
A linha abaixo tem que estar comentada no
arquivo /etc/amavis/amavisd.conf:
#@bypass_spam_checks_acl=qw(.);
Altere o dono e o grupo do diretrio do
spamassassin para o amavis:
#chownRamavis.amavis/usr/share/spamassassin
Agora reinicie o amavis:
#/etc/init.d/amavisrestart
Pronto agora o conjunto Postfix, Amavis, Clamav
e Spamassassin est funcionando..
SMTP autenticado
Temos agora que configurar a autenticao para
envio de e-mails.
Isso realizado com o SASL.
#aptgetupdate
#aptgetinstallpostfixtlssasl2bin
libgsasl7libauthensaslcyrusperl
libauthensaslperllibsasl2libsasl2
modules
Agora temos alterar a linha do smtp do arquivo
main.cf situado no diretrio /etc/postfix para:
smtpinetnnsmtpd

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7294
SMTP autenticado
Agora vamos criar o arquivo /
etc/postfix/sasl/smtpd.conf:
#vi/etc/postfix/sasl/smtpd.conf
Este arquivo deve ter o contedo:
pwcheck_method:saslauthd
mech_list:pamplainlogin

Depois vamos editar o arquivo /


etc/default/saslauthd e descomentar a linha
iniciada com START:
#vi/etc/default/saslauthd
START=yes

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7294
SMTP autenticado
Precisamos fazer com o que Postfix utilize o SASL ...
Para isso temos que editar o arquivo /
etc/postfix/main.cf e acrescentar as seguintes linhas:

#SASLSUPPORTFORCLIENTS
#ThefollowingoptionssetparametersneededbyPostfixtoenable
#CyrusSASLsupportforauthenticationofmailclients.

#
smtpd_sasl_auth_enable=yes

smtpd_sasl_security_options=noanonymous
smtpd_sasl_local_domain=$myhostname

broken_sasl_auth_clients=yes
smtpd_recipient_restrictions=

permit_sasl_authenticated,
permit_mynetworks,
check_relay_domains

Para que o Postfix utilize o SASL necessrio que o


usurio postfix pertena do grupo sasl:
#adduserpostfixsasl
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7294
Testando ...
Reinicie o Postfix ...
Para verificar se a auntenticao est OK
execute o comando:
#testsaslauthduadminptestessmtp
A resposta deve ser: 0:OK"Success."
Voc tambm pode testar com o telnet na porta 25
(transparncia ao lado).
Antes temos que gerar a string de autenticao do
usurio (copie o cdigo gerado):
#perlMMIME::Base64e'printencode_base64
("admin\0admin\0teste");'
YWRtaW4AYWRtaW4AdGVzdGU=
http://www.vivaolinux.com.br/dicas/verDica.php?codigo=7294
Testando ...
telnetlocalhost25
Trying127.0.0.1...
Connectedtoaluno0.cursolinux.52ct.eb.mil.br.
Escapecharacteris'^]'.
220servidor.cursolinux.52ct.eb.mil.brESMTPPostfix(Debian/GNU)
EHLOcursolinux.52ct.eb.mil.br
250servidor.cursolinux.52ct.eb.mil.br
250PIPELINING
250SIZE10240000
250VRFY
250ETRN
250AUTHLOGINPLAIN
250AUTH=LOGINPLAIN
2508BITMIME
mailfrom:admin@cursolinux.52ct.eb.mil.br
250Ok
rcptto:webmaster@cursolinux.52ct.eb.mil.br
250Ok
AUTHPLAINYWRtaW4AYWRtaW4AdGVzdGU=
235Authenticationsuccessful
quit
221Bye
Postfix com TLS
O TLS (Transport Layer Security) uma
tecnologia que permite que a comunicao
entre o cliente e um servidor seja criptografada
durante o envio de um e-mail.
Para utiliz-la, alm das configuraes
necessrias no Postfix, temos que gerar o
certificado do servidor.
Antes de gerarmos os certificados temos que
entender um pouco mais de criptografia ...
Criptografia de Dados

-- Apostila GNU/Linux em redes TCP/IP --

Joo ERIBERTO Mota Filho - CAP


Criptografia de dados
Garante a realizao de operaes de
armazenamento, comunicaes e transaes
eletrnicas com segurana.
A criptografia busca:
autenticidade;
confidencialidade;
integridade; e
no repdio.
Existem dois tipos bsicos de criptografia:
simtrica e assimtrica.
Criptografia simtrica
Utiliza a mesma chave para criptografar e
decriptografar os dados.
Possui as seguintes vantagens:
rapidez;
simplicidade.
Possui as seguintes desvantagens:
a chave compartilhada;
multiplicao das chaves (uma para cada relao de
confiana)
possibilidade da captura da chave no canal de
comunicao;
no permite a assinatura e a certificao digital.
Criptografia assimtrica
Utiliza um par de chaves diferentes para
criptografar e decriptografar dados.
As chaves so geradas de forma que somente
uma das chaves consegue decriptografar o que
a outra criptografou.
Possui as seguintes vantagens:
a chave privada no compartilhada;
no h multiplicao de chaves;
a chave pblica pode ser livremente divulgada;
a chave pblica pode ser capturada no canal de
comunicao;
possibilita a assinatura e a certificao digital.
Criptografia assimtrica
Possui as seguintes desvantagens:
operao mais demorada;
exige mais conhecimentos do usurio.
Os algoritmos assimtricos mais conhecidos so
o RSA e o DSA.
Hash
Transforma uma grande quantidade de dados
em um dado pequeno.
Teoricamente, no existem dois contedos
diferentes que gerem o mesmo hash.
O hash uma operao sem retorno.
Algumas aplicaes do hash:
descaracterizao das senhas dos usurios;
conferncia de integridade de dados;
conferncia de similaridade de dados;
transaes eletrnicas;
assinatura digital.
Assinatura digital
A assinatura digital consiste em:
a pessoa A gera um documento;
a pessoa A calcula o hash do documento;
o hash criptografado com a chave privada da pessoa
A;
o hash criptografado a assinatura digital do
documento;
a pessoa A envia o documento e a assinatura para
uma pessoa B;
a pessoa B calcula o hash do documento;
a pessoa B decriptografa o hash recebido e compara
com o calculado.
Certificao digital
A certificao digital ocorre quando a chave
pblica de algum garantida por uma
entidade superior na qual todos confiam.
Criptografia simtrica
com OpenSSL
Para instalar a OpenSSL execute o comando:
#aptgetinstallopenssl
Crie um arquivo chamado texto.txt com o seguinte
contedo: Este um texto criptografado.
Para criptografar um texto com OpenSSL, utilize o
comando:
#opensslencades3intexto.txtouttexto2.txt
enterdesede3cbcencryptionpassword:
Verifyingenterdesede3cbcencryptionpassword:
Para decriptografar: Digitetesteduas
vezes
#opensslencdades3intexto2.txtouttexto3.txt
enterdesede3cbcdecryptionpassword:

Digiteteste
Criptografia assimtrica com
OpenSSL
Gerao de chaves:
Gerao de chave privada, de 2048 bits, utilizando o 3DES:
#opensslgenrsades3outprv.key2048
GeneratingRSAprivatekey,2048bitlongmodulus
.............+++
.......................................+++
eis65537(0x10001)
Enterpassphraseforprv.key:
VerifyingEnterpassphraseforprv.key:

Digitetesteduas
vezes
Criptografia assimtrica com
OpenSSL
Gerao de chaves:
Criao da chave pblica baseada na privada:
#opensslrsapuboutinprv.keyoutpub.key
Enterpassphraseforprv.key:
writingRSAkey Digiteteste
Criptografar com a privada e decriptografar com a
pblica:
Criptografar com a chave privada:
#opensslrsautlsigninkeyprv.keyin
texto.txtouttexto2.txt
Decriptografar com a chave pblica:
#opensslrsautlpubininkeypub.keyin
texto2.txtouttexto3.txt
Criptografia assimtrica
com OpenSSL
Criptografar com chave pblica e
decriptografar com a chave privada:
Criptografar com a chave pblica:
#opensslrsautlencryptpubininkeypub.key
intexto.txtouttexto4.txt
Decriptografar com a chave privada:
#opensslrsautldecryptinkeyprv.keyin
texto4.txtouttexto5.txt
Enterpassphraseforprv.key: Digiteteste
Sempre que se utilizar a chave privada ser solicitada a
senha.
Certificados digitais

-- Apostila GNU/Linux em redes TCP/IP --

Joo ERIBERTO Mota Filho - CAP


Certificados digitais
Um certificado serve, basicamente, para garantir
que uma chave pblica pertence a quem diz ser o
dono da mesma.
Com isso, um sistema de criptografia, baseado no
uso de chaves pblica e privada (criptografia
assimtrica), pode ser estabelecido de forma
confivel.
Um certificado digital pode ser assinado por uma
autoridade certificadora (CA), o que lhe d um
grau de confiabilidade ou pode ser utilizado com a
assinatura padro, gerada juntamente com o
certificado, sem a interveno de uma CA. Nesse
caso, teremos um certificado auto-assinado.
Certificados digitais
Toda CA possui um certificado para si mesma
denominado certificado raiz (root certificate).
Todo certificado raiz auto assinado.
No caso de necessitarmos de uma assinatura em
um certificado gerado por ns, poderemos utilizar
os servios de uma CA reconhecida (como a
CertSign e a VeriSign) ou poderemos criar a nossa
prpria CA.
Processo de emisso
de uma CA
A emisso de certificados por CA ocorre da
seuguinte forma:
uma Autoridade Certificadora (CA) e, consequentemente,
o seu certificado raiz (auto-assinado) so criados (newca)
em uma mquina protegida, especfica para ser CA
(levando-se em considerao que teremos a nossa prpria
CA, ao invs de utilizarmos uma CA comercial, como a
VeriSign);
um certificado e sua chave privada so gerados por
algum, na sua prpria mquina, para uso em um servio
de rede ou para uso comercial (newreq);
o interessado envia somente o certificado para a CA
assinar. Nesse ponto, o arquivo gerado no item anterior
dever ser duplicado. A cpia dever ser editada, para
excluir a chave privada antes do envio.
Processo de emisso
de uma CA
A emisso de certificados por CA ocorre da
seguinte forma:
o certificado recebido pela CA assinado (sign) e
restitudo juntamente com uma cpia do certificado raiz
da CA;
o certificado assinado, em conjunto com a chave privada
do mesmo, aplicado num servio de rede ou destinado
a uso pessoal;
o certificado raiz da CA que assinou disponibilizado
para poder ser instalado no cliente, a fim de reconhecer o
certificado do servidor (que foi assinado pela CA).
Processo de emisso
de uma CA
A CA deve ser instalada em uma mquina segura e,
se possvel, destinada somente assinatura de
certificados digitais.
Os dados da CA e do certificado assinado podero
ser totalmente diferentes, pois um no necessita
ter correlao com o outro.
A CA pode ser gerada com um perodo de durao
de 10 anos, por exemplo. J o certificado assinado,
por questes de segurana, dever ter uma
durao menor (1 a 2 anos, de preferncia).
Simulao do processo
Condies de execuo:
todos os procedimentos sero utilizados visando as
operaes eletrnicas da loja Linux para sempre;
ser criada uma CA para a loja Linux para sempre;
a CA da loja assinar os certificados destinados aos
servidores de pgina e e-mail;
o site se chama www.cursolinux.52ct.eb.mil.br e o
servidor de e-mail smtp.cursolinux.52ct.eb.mil.br;
a loja localiza-se em Fortaleza, CE.
Simulao do processo
Criao da CA:
dever ser criada em um computador exclusivamente
dedicada a isso.
Arquivo de configurao:
#cd/usr/lib/ssl
#lsl
total2
lrwxrwxrwx1rootroot142006091015:07certs>/etc/ssl/certs
drwxrxrx2rootroot2162006091015:07misc
lrwxrwxrwx1rootroot202006091015:07openssl.cnf>/etc/ssl/openssl.cnf
lrwxrwxrwx1rootroot162006091015:07private>/etc/ssl/private
Simulao do processo
Edite o arquivo /etc/ssl/openssl.cnf e altere o valor
das seguintes variveis:
default_days = 3650
countryName_default = BR
stateOrProvinceName_default = CE
localityName_default = Fortaleza --> (inserir)
O.organizationName_default = Linux para sempre
organizationalUnitName_default = Diviso de Informtica
common_default = Autoridade Certificadora da Linux para
sempre --> (inserir)
emailAddress_default = webmaster@cursolinux.52ct.eb.mil.br
--> (inserir)
Nunca acentue dados do certificado!
Simulao do processo
Entre no diretrio /usr/lib/ssl/misc e execute o
comando abaixo (instale o programa tree):
#treel/usr/lib/ssl
Agora ser necessrio definir a frase-senha para a
chave privada da CA. No nosso caso ser teste.
Para gerar a CA e seu certificado raiz execute o
comando:
#./CA.plnewca
digite a senha e tecle enter
Execute o comando abaixo(foi criada a DemoCA):
#treel/usr/lib/ssl
Simulao do processo
Dentro da DemoCA existe os seguintes arquivos:
cacert.pem: certificado raiz;
cakey.pem: chave privada da CA.
O certificado dever ser disponibilizado para ser
instalado nos clientes. para isso execute os
comandos:
#cddemoCA
#cpcacert.pemlinuxparasempre.crt
coloque o arquivo linuxparasempre.crt para download no
site do banco.
Simulao do processo
Criao dos certificados para os servidores www e
de e-mail:
os certificados devero ser gerados nos servidores.
edite o arquivo /usr/lib/ssl/openssl.cnf e altere o valor
das seguintes variveis:
default_days = 730
CountryName_default = BR
StateOrProvinceName_default = RJ
localityName_default = Rio de Janeiro
O.organizationName_default = Banco Boa Sorte SA
organizationalUnitName_default = Equipe de Internet
# common_default
emailAddress_default = webmaster@boasorte.com.br
Simulao do processo
Criao dos certificados para os servidores www e
de e-mail:
entre no diretrio /usr/lib/ssl/misc e execute o comando:
#treel/usr/lib/ssl
defina a frase-senha. No nosso caso ser teste.
gere o certificado:
#./CA.plnewreq
siga com Enter at chegar em Common Name e entrar com
um dos seguintes dados:
www.cursolinux.52ct.eb.mil.br ou
smtp.cursolinux.52ct.eb.mil.br
IP dos servidores ou
*.cursolinux.52ct.eb.mil.br
depois disso ser criado o arquivo newreq.pem.
Simulao do processo
Envio do certificado para CA:
#cpnewreq.pemnewreq.www.pem
edite o arquivo newreq.www e apague a chave privada.
envie o arquivo para a CA.
Simulao do processo
Assinatura de certificados dos servidores pela CA:
na mquina da CA entre no diretrio /usr/lib/ssl/misc e copie o
arquivo newreq.pem para l.
execute o comando: # ./CA.plsign.
entre com a senha da chave privada da CA.
ser mostrado um resumo do certificado.
digite y e enter duas vezes.
ser gerado um arquivo newcert.pem.
dentro do diretrio /usr/lib/ssl/misc/demoCA/newcerts ser
gerado o arquivo 01.pem que o certificado assinado.
envie o certificado assinado para o cliente.
para que o certificado seja reconhecido o certificado raiz dever
ser instalado no browser dos clientes.
Outros ..
Uma lista dos certificados assinados ou
revogados pela CA est disponvel no arquivo /
usr/lib/ssl/misc/demoCA/index.txt. Os que
iniciarem com os esto vlidos e com os
revogados.
Para fazer um backup da CA copie o diretrio /
usr/lib/ssl/misc/demoCA para um local seguro.
Para revogar um certificado execute o comando:
#opensslcarevoke/
usr/lib/ssl/misc/demoCA/newcerts/01.pem
Para visualizar os dados de um certificado:
#opensslx509incert.pemnoouttext
Copiando os certificados
Agora temos que copiar o certificado assinado
para o diretrio do Postfix:
#cpnewcert.pem/etc/postfix/
#cpnewreq.pem/etc/postfix/
#cpdemoCA/cacert.pem/etc/postfix/
Agora temos que acrescentar as seguintes
linhas ao arquivo /etc/postfix/main:
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_key_file=/etc/postfix/newreq.pem
smtpd_tls_cert_file=/etc/postfix/newcert.pem
smtpd_tls_CAfile=/etc/postfix/cacert.pem
smtpd_tls_loglevel=3
smtpd_tls_received_header=yes
smtpd_tls_session_cache_timeout=3600s
tls_random_source=dev:/dev/urandom
Testando
Primeiramente temos que reiniciar o Postfix:
#/etc/init.d/postfixrestart
Agora podemos test-lo no seu leitor de e-mail:
Escolha a opo de envio com TLS;
Envie um e-mail;
Leia o e-mail.
Atualizando o clamav ...
Vocs devem ter notado uma mensagem
sinalizando que a verso do Clamav estava
antiga.
Para atualiz-la edite o arquivo /
etc/apt/sources.list, comente todas as
linhas e adicione a linha:
debhttp://ftp2.de.debian.org/debianvolatilesarge/volatilemain

Depois execute os comando abaixo:


#aptgetupdate
#aptgetupgrade
Backup
Este servidor est ficando cheio de informaes
importantes das quais precisamos fazer backup.
Vamos criar um script que ir compactar os
diretrios dos usurios e periodicamente copi-
los para outro servidor.
Utilizaremos os seguintes programas:
date;
tar;
scp;
cron.
Recapitulando o date
Primeiramente temos ter um meio para datar os
arquivos de backup. Faremos isso utilizando o
comando date.
A sintaxe do comando date :
#date[opes]+[formatao]
Para obter a data com a formatao YYYYMMDD
(p. ex.: 20060901), temos que executar o
comando:
#date+%Y%m%d
Agora vamos arquivar e compactar o diretrio /
home com o comando tar.
Relembrando o tar ...
#tar[opes][arquivodestino][arquivosorigem]
opes:
c, --create: cria um novo arquivo .tar;
t, --list: lista o contedo de um arquivo .tar;
f, --file [HOST:]F: usa o arquivo especificado para
gravao ou o dispositivo /dev/rmt0;
v: mostra os nomes dos arquivos enquanto so
processados;
x: extrai arquivos gerados pelo tar;
z: usa o programa gzip durante o processamento dos
arquivos.
No nosso caso:
#cd/home
#tarcvzfbackupHome.tgz*
Juntando os dois ...
Para juntarmos os dois comando temos que
fazer um script.
Este uma forma para fazermos o que estamos
desejando:
#cd/home
#databackup=`date+%Y%m%d`
#arquivo=$databackupbackupHome.tgz
#tarcvzf$arquivo/home
Agora temos que fazer a cpia do arquivo para
outra mquina. Utilizaremos o ssh para isso.
Bakup remoto
Para copiar um arquivo de um computador para
outro com o ssh utilizamos o comando scp,
como por exemplo:
#scp20060910backupHome.tgz
admin@10.100.53.202:/home/administrador
Voc ter que digitar uma senha. Isso inviabiliza
a criao de um script automtico.
Para resolver este problema voc precisa fazer
com que o computador remoto j saiba a senha
do usurio.
Para isso vamos ter que gerar uma chave no
cliente e depois copi-la para o servidor.
Backup remoto
Para possibilitarmos esse backup, devemos:
criar um par de chaves assimtricas SSH
inseguras na mquina que ir comandar o
backup;
instalar a chave pblica na outra mquina;
utilizar o comando scp para realizar o backup
remoto.

ApostilaGNU/LinuxemredesTCP/IPJooERIBERTOMotaFilhoCap
Condies iniciais
Criao das chaves:
Para criar chaves assimtricas SSH para um usurio,
logue como o usurio em questo e emita o comando:
#suadmin
$sshkeygentrsa
Responda com <ENTER> a todas as perguntas;
Ser gerado um par de chaves no diretrio .ssh com
nome id_rsa (chave privada) e id_rsa.pub (chave
pblica);
Existe no diretrio .ssh um arquivo known_hosts que
contm o fingerprint de cada host que j estabeleceu
conexo SSH com a mquina em questo.

ApostilaGNU/LinuxemredesTCP/IPJooERIBERTOMotaFilhoCap
Instalao da chave pblica
na outra mquina
Dever existir o mesmo usurio na outra
mquina. No nosso caso utilizaremos o admin.
A chave pblica dever ser levada para outra
mquina por meio de disquete, sftp, etc...
A chave pblica dever ser colocada dentro do
arquivo /home/usurio/.ssh/authorized_keys.
Execute o comando:
#scp.ssh/id_rsa.pubadmin@192.168.0.3:/admin/.ssh/authorized_keys
A partir da o usurio poder fazer o ssh/scp sem
uso da senha.

ApostilaGNU/LinuxemredesTCP/IPJooERIBERTOMotaFilhoCap
Juntando tudo
Criaremos agora um arquivo no diretrio /root
com o nome backup.sh com o seguinte
contedo:
#!/bin/bash

cd/home
databackup=`date+%Y%m%d`
arquivo=$databackupbackupHome.tgz
tarcvzf$arquivo/home
suadmincscp$arquivo
admin@10.100.53.102:/admin
Torne o arquivo executvel:
#chmoda+x/root/backup.sh
Agora basta agendarmos a tarefa de executar
esse script todo o dia as 22:00 hs, com o cron.
cron
O cron um daemon que permite o agendamento
da execuo de um comando/programa para um
determinado dia/ms/ano/hora.
muito usado em tarefas de arquivamento de logs,
checagem da integridade do sistema e execuo de
programas/comandos em horrios determinados.
As tarefas so definidas no arquivo /etc/crontab
e por arquivos individuais de usurios em /
var/spool/cron/crontabs/[usurio].
Adicionalmente a distribuio Debian utiliza os
arquivos no diretrio /etc/cron.d como uma
extenso para o /etc/crontab.
ApostilaGNU/LinuxemredesTCP/IPJooERIBERTOMotaFilhoCap
cron
Para editar um arquivo de usurio em /
var/spool/cron/crontabs ao invs de editar
o /etc/crontab use crontab e, para listar as
tarefas daquele usurio crontab l e para
apagar o arquivo de tarefas do usurio crontab
r.
Adicionalmente voc pode remover somente
uma tarefa atravs do crontabe e apagando a
linha correspondente.
No esquea de incluir uma linha em branco no
final do arquivo, caso contrrio o ltimo
comando no ser executado.
ApostilaGNU/LinuxemredesTCP/IPJooERIBERTOMotaFilhoCap
cron
O arquivo /etc/crontab tem o seguinte
formato:
Agora terminaremos
Execute o comando:
#crontabe
Inclua a linha:
022***/root/backup.sh
Depois confira se est tudo ok com o comando:
#crontabl
Servidor de arquivos
e de autenticao
Estamos chegando em uma parte fundamental
do curso: temos que configurar o servidor que
auntenticar os usurios da rede (Linux e
Windows) e tambm servir arquivos (Linux e
Windows).
Agora teremos que configuar :
Um PDC que autenticar tanto os usurios do
Windows quanto do Linux;
O servidor de arquivos dos diretrios dos usurios
(home) e das pastas das sees. Dever ser
configurado um compartilhamento com nome
documentos com acesso de somente leitura para
todos os usurios e de escrita para o admin.
Introduo

Antes de comearmos importante


entendermos alguns conceitos bsicos do
SAMBA ...
O que o SAMBA?
O SAMBA um servidor e um conjunto de
ferramentas que utilizam os protocolos NetBIOS
e SMB.
O SAMBA possibilita compartilhamento de
arquivos e impressoras entre computadores
com Windows e Linux.
O SAMBA tambm pode ser configurado para
autenticar usurios da rede.
Integrado ao LDAP possibilita uma forma
centralizada de autenticao de servios da
rede e compartilhamento de arquivos e
impressoras.

SAMBA HOWTO - Collection --


Conceitos importantes
NetBIOS: resoluo de nomes (broadcast);
WINS: centraliza a resoluo de nomes;
Workgroups: conjunto de mquinas que
trabalham com o protocolo NetBIOS. No existe
hierarquia nem autenticao centralizada;
Domnios: so workgroups s que com
hierarquia e autenticao centralizada.

SAMBA HOWTO - Collection --


Instalao
Podemos agora instalar o SAMBA.
O samba composto de um servidor e de
diversos programas.
Primeiramente vamos instalar os pacotes
bsicos. A medida que for necessrio
instalaremos os demais.
# aptget install samba sambadoc
smbclientsambacommonsmbfs
Configurao inicial
Configurao inicial
Configurao inicial
Configurao inicial
Configurao inicial
Daemons
Dois daemons so responsveis pelo
funcionamento do SAMBA:
smbd: que o daemon que trata da comunicao
smb;
nmbd: que responsvel pela resoluo de nomes
(NetBIOS).
O servidor SAMBA j deve estar rodando, por
via das dvidas execute o comando:
#pse|grepmbd
Configurao
O principal arquivo de configurao do samba
o smb.conf que fica no diretrio /etc/samba.
Esse arquivo dividido basicamente em trs
partes:
[global]: configuraes gerais do servidor samba;
[homes]: configuraes do diretrio home dos
usurios;
[nome_do_compartilhamento]: para cada
compartilhamento necessrio abrir uma seo com [].
Verifique o contedo do seu smb.conf:
#less/etc/samba/smb.conf
O arquivo com as senhas dos usurios do SAMBA
ficam no arquivo /etc/samba/smbpasswd.
Configurando os
usurios/grupos
Para comearmos a testar o SAMBA vamos,
inicialmente, estruturar nossos usurios e
grupos aos quais eles pertencem.
Primeiramente vamos definir os grupos: alunos
e administradores.
Para cadastrar os grupos execute os comandos:
#groupaddalunos
#groupaddadministradores
Definimos que teremos, inicialmente, 3(trs)
usurios: admin (administradores), aluno?-1
(alunos) e aluno?-2. Todos com diretrio home
e senha teste.
Configurando os
usurios/grupos
Para criar os usurios temos que decidir uma
entre as duas opes:
Cadastrar o usurio sem shell: ou seja, no ter
acesso ao computador por meio de ssh/telnet somente
aos servios oferecidos servidor;
Cadastrar o usurio com com shell: ter acesso ao
computador por meio de ssh/telnet.
Dentre as duas opes prefiro a primeira, pois
mais segura.
Dessa forma definimos que:
aluno?-1 e aluno?-2, sem shell;
admin (j cadastrado), com shell.
Configurando os usurios
Para adicionar os usurios execute os comandos:
#useraddadminadministradores Senhateste
#useraddingroupalunosshell/bin/falsealuno?1
#useraddingroupalunosshell/bin/falsealuno?2
No precisamos criar o admin pois ele j existe!
Agora vamos acrescentar esses usurios ao
SAMBA:
#smbpasswdaaluno?1
#smbpasswdaaluno?2 Senhateste
#smbpasswdaadmin
Fazendo os primeiros testes ...
Agora que j temos nossos usurios cadastrados
podemos realizar nossos primeiros testes.
Utilizaremos para isso o comando smbclient.
Esse comando tem duas formas:
$smbclientL<ip_do_servidor>[UloginUsuario]
$smbclient<compartilhamento>[UloginUsuario]
No nosso caso:
$smbclientLlocalhost>Digite<ENTER>
$smbclientLlocalhostUaluno?_1
$smbclient//aluno?/aluno?_2Ualuno?_2
No primeiro caso listou os compartilhamentos
disponveis no servidor e no segundo acessou o
compartilhamento. No ltimo caso digite o comando
help para ver os comandos disponveis.
Consideraes
sobre o smb.conf
Forma: opo=valor
Alteraes no smb.conf;
Espaos em branco:
comment=ServidordeArquivos
Capitalizao:
PATH=/HOME/USUARIOS
Quebra de linha:
Comment=Servidor\
Arquivos
Comentrios: depois de # e ;
Variveis
Existem diversas variveis que podem ser
utilizadas pelos arquivos do samba. Dentre elas
podemos citar:
%u: nome do usurio;
%g: grupo do usurio;
%a: arquitetura da mquina;
%m: nome NetBIOS do cliente;
%L: nome NetBIOS do servidor SAMBA.
Para testar se a configurao do servidor
SAMBA ficou correta utilize o comando
testparm.
Analisando o smb.conf
[global]

##Browsing/Identification###

#Changethistotheworkgroup/NTdomainnameyourSambaserverwillpartof
workgroup=cursolinux

#serverstringistheequivalentoftheNTDescriptionfield
serverstring=%hserver(Samba%v)

#WindowsInternetNameServingSupportSection:
#WINSSupportTellstheNMBDcomponentofSambatoenableitsWINSServer
;winssupport=no

#WINSServerTellstheNMBDcomponentsofSambatobeaWINSClient
#Note:SambacanbeeitheraWINSServer,oraWINSClient,butNOTboth
;winsserver=w.x.y.z

#ThiswillpreventnmbdtosearchforNetBIOSnamesthroughDNS.
dnsproxy=no

#Whatnamingserviceandinwhatordershouldweusetoresolvehostnames
#toIPaddresses
;nameresolveorder=lmhostshostwinsbcast
Analisando o smb.conf

####Debugging/Accounting####

#ThistellsSambatouseaseparatelogfileforeachmachine
#thatconnects
logfile=/var/log/samba/log.%m

#Putacappingonthesizeofthelogfiles(inKb).
maxlogsize=1000

#IfyouwantSambatoonlylogthroughsyslogthensetthefollowing
#parameterto'yes'.
;syslogonly=no

#WewantSambatologaminimumamountofinformationtosyslog.Everything
#shouldgoto/var/log/samba/log.{smbd,nmbd}instead.Ifyouwanttolog
#throughsyslogyoushouldsetthefollowingparametertosomethinghigher.
syslog=0

#DosomethingsensiblewhenSambacrashes:mailtheadminabacktrace
panicaction=/usr/share/samba/panicaction%d
Analisando o smb.conf
#######Authentication#######

#"security=user"isalwaysagoodidea.ThiswillrequireaUnixaccount
#inthisserverforeveryuseraccessingtheserver.See
#/usr/share/doc/sambadoc/htmldocs/ServerType.htmlinthesambadoc
#packagefordetails.
;security=user

#Youmaywishtousepasswordencryption.Seethesectionon
#'encryptpasswords'inthesmb.conf(5)manpagebeforeenabling.
encryptpasswords=true

#Ifyouareusingencryptedpasswords,Sambawillneedtoknowwhat
#passworddatabasetypeyouareusing.
passdbbackend=tdbsamguest

obeypamrestrictions=yes

;guestaccount=nobody
invalidusers=root

#ThisbooleanparametercontrolswhetherSambaattemptstosynctheUnix
#passwordwiththeSMBpasswordwhentheencryptedSMBpasswordinthe
#passdbischanged.
;unixpasswordsync=no
Nveis de segurana
Para uma pessoa acessar um compartilhamento
que no permita convidados tem que fornecer
um login e uma senha de acesso.
Existem quatro nveis de segurana:
security=share
security=user
security=server
security=domain
Analisando o smb.conf
#ForUnixpasswordsynctoworkonaDebianGNU/Linuxsystem,thefollowing
#parametersmustbeset(thankstoAugustinLuton<aluton@hybrigenics.fr>for
#sendingthecorrectchatscriptforthepasswdprograminDebianPotato).
passwdprogram=/usr/bin/passwd%u
passwdchat=*Enter\snew\sUNIX\spassword:*%n\n
*Retype\snew\sUNIX\spassword:*%n\n.

#ThisbooleancontrolswhetherPAMwillbeusedforpasswordchanges
#whenrequestedbyanSMBclientinsteadoftheprogramlistedin
#'passwdprogram'.Thedefaultis'no'.
;pampasswordchange=no
Analisando o smb.conf
##########Printing##########

#Ifyouwanttoautomaticallyloadyourprinterlistrather
#thansettingthemupindividuallythenyou'llneedthis
;loadprinters=yes

#lpr(ng)printing.Youmaywishtooverridethelocationofthe
#printcapfile
;printing=bsd
;printcapname=/etc/printcap

#CUPSprinting.Seealsothecupsaddsmb(8)manpageinthe
#cupsysclientpackage.
;printing=cups
;printcapname=cups

#Whenusing[print$],rootisimplicitlya'printeradmin',butyoucan
#alsogivethisrighttootheruserstoadddriversandsetprinter
#properties
;printeradmin=@ntadmin

########Filesharing########

#Namemanglingoptions
;preservecase=yes
;shortpreservecase=yes
Analisando o smb.conf
############Misc############

#Usingthefollowinglineenablesyoutocustomiseyourconfiguration
#onapermachinebasis.The%mgetsreplacedwiththenetbiosname
#ofthemachinethatisconnecting
;include=/home/samba/etc/smb.conf.%m

#Mostpeoplewillfindthatthisoptiongivesbetterperformance.
#Seesmb.conf(5)and/usr/share/doc/sambadoc/htmldocs/speed.html
#fordetails
#YoumaywanttoaddthefollowingonaLinuxsystem:
#SO_RCVBUF=8192SO_SNDBUF=8192
socketoptions=TCP_NODELAY

#Thefollowingparameterisusefulonlyifyouhavethelinpopuppackage
#installed.Thesambamaintainerandthelinpopupmaintainerare
#workingtoeaseinstallationandconfigurationoflinpopupandsamba.
;messagecommand=/bin/shc'/usr/bin/linpopup"%f""%m"%s;rm%s'&

#DomainMasterspecifiesSambatobetheDomainMasterBrowser.Ifthis
#machinewillbeconfiguredasaBDC(asecondarylogonserver),you
#mustsetthisto'no';otherwise,thedefaultbehaviorisrecommended.
;domainmaster=auto

#Somedefaultsforwinbind(makesureyou'renotusingtheranges
#forsomethingelse.)
;idmapuid=1000020000
;idmapgid=1000020000
;templateshell=/bin/bash
Analisando o smb.conf
[homes]
comment=HomeDirectories
browseable=no

#Bydefault,thehomedirectoriesareexportedreadonly.Changenext
#parameterto'yes'ifyouwanttobeabletowritetothem.
writable=no

#Filecreationmaskissetto0700forsecurityreasons.Ifyouwantto
#createfileswithgroup=rwpermissions,setnextparameterto0775.
createmask=0700

#Directorycreationmaskissetto0700forsecurityreasons.Ifyouwantto
#createdirs.withgroup=rwpermissions,setnextparameterto0775.
directorymask=0700

#UncommentthefollowingandcreatethenetlogondirectoryforDomainLogons
#(youneedtoconfigureSambatoactasadomaincontrollertoo.)
;[netlogon]
;comment=NetworkLogonService
;path=/home/samba/netlogon
;guestok=yes
;writable=no
;sharemodes=no
Analisando o smb.conf

#Windowsclientslookforthissharenameasasourceofdownloadable
#printerdrivers
[print$]
comment=PrinterDrivers
path=/var/lib/samba/printers
browseable=yes
readonly=yes
guestok=no
#UncommenttoallowremoteadministrationofWindowsprintdrivers.
#Replace'ntadmin'withthenameofthegroupyouradminusersare
#membersof.
;writelist=root,@ntadmin

#AsampleshareforsharingyourCDROMwithothers.
;[cdrom]
;comment=Sambaserver'sCDROM
;writable=no
;locking=no
;path=/cdrom
;public=yes
Entendendo melhor
os compartilhamentos
Os compartilhamentos so da forma:
[nome_do_compartilhamento]
path=<caminho_do_diretrio>
...opes...

As principais opes so:


readonly=[yes|no]
browseable=[yes|no]
writable=[yes|no]
Comment=<comentriosobreocompartilhamento>
createmode=[hexadecimal4dgitos]. P. ex. 0777
available=[yes|no]
public=[yes|no]
validusers=<usuriose/ougrupos>
available=[yes|no]
Exemplo smb.conf
[global]
workgroup=MIDEARTH
security=SHARE

[Plans]
path=/plans
readonly=Yes
guestok=Yes
Exemplo smb.conf
[global]
workgroup=EMPRESA1
netbiosname=SERVBAK
serverstring=ServidordearquivosSAMBA
hostsdeny=10.100.16.
hostsallow=10.100.52.
[homes]
comment=Diretriohomedousurio
browseable=no
writable=yes
[printers]
compartilhamentodeimpressoras
Exemplo smb.conf
[global]
guestaccount=teste

[compartilhamento1]
path=/diretorio1/compartilhamento1
comment=compartilhamentogeral
writable=yes
guestok=yes

[compartilhamento2]
path=/diretorio2/teste2
readonly=yes
validusers=teste1teste2@teste
Partindo para o PDC
Para configurarmos o Linux como PDC temos
que realizar pelo menos 3 (trs) aes:
Cadastramento do root no SAMBA;
#smbpasswdaroot
Cadastramento dos computadores que acessaro o
PDC.
Configurao do smb.conf.
O cadastramentos dos computadores realizado
em 2 (duas) etapas:
Adicionar o computador como usurio do sistema;
Adicionar o computador ao samba.
Vamos cadastrar os computadores aluno?,
diferentes do seu.
Cadastrando
os computadores ...
Antes de cadastrarmos os computadores vamos
criar um grupo do qual pertencero os
computadores que se autenticao no servidor
Vamos criar o grupo computadores com o
comando:
#groupaddcomputadores
Para cadastrar o computador aluno? execute os
comandos:
#useraddgcomputadoress/bin/falsed
/dev/nullaluno?$
#smbpasswdamnome_da_maquina
smb.conf para PDC
[global]
workgroup=cursolinux
netbiosname=aluno?
serverstring=ServidorPDC
adminusers=@administradores

domainlogons=yes
localmaster=yes
preferredmaster=yes
domainmaster=yes
oslevel=100

logonpath=
logonhome=
logonscript=/home/netlogon/logon.bat

security=user
nullpasswords=no
encryptpasswords=true

unixcharset=iso88591
displaycharset=cp850

hostsallow=10.100.52.10.100.53.127.

logfile=/var/log/samba/log.%m
maxlogsize=10000
loglevel=2
debuglevel=2
smb.conf para PDC
[homes]
comment=Diretriohomedousurio
browseable=no
writable=yes

[NETLOGON]
comment=Serviodelogonnarede
path=/home/netlogon
browseable=no
readonly=yes

[documentos]
browseable=yes
readonly=yes
path=/home/documentos
createmode=0700
Netlogon
Crie o diretrio /home/netlogon.
#mkdir/home/netlogon
D permisses de escrita para todos os usurios no
diretrio:
#chmod777/home/netlogon
#chgrpnobody/home/netlogon
Crie o arquivo profile.pds no diretrio de cada
usurio. Torne permanente criando-o no /etc/skel.
Crie um arquivo logon.bat (notepad) dentro do
diretrio /home/netlogon com o seguinte contedo:
netuseE:\\aluno?\documentos
Executando o Samba e
adicionando as estaes
Depois de termos configurado o smb.conf temos que
reiniciar o SAMBA:
#/etc/init.d/sambarestart
Agora podemos comear a incluir as estaes
Windows no domnio do Samba. Na estao:
Propriedades de Meu Computador -> Identificao de Rede;
Selecione Domnio e digite o nome, no caso cursolinux, de acordo
com o especificado smb.conf. Ser solicitado nome e senha de
administrador de domnio.
Aps reiniciar o computador interessante que voc defina a
senha de administrador local da mquina e exclua todas as outras
contas locais.
No Painel de Controle, Ferramentas Administrativas,
Gerenciamento do Computador, voc controla isso, inclusive pode
definir quais usurios do domnio ou grupo tero acesso de
administrador na mquina (podero instalar ou remover
programas, modificar configuraes, etc.) os demais, apenas
podero trabalhar na mquina sem fazer nada de significativo.
Bloqueando a gravao de
arquivos no Samba por
extenso
Para bloquear a gravao de arquivos .exe, .pif
e .bat, insira na seo global:
vetofiles=/*.exe/*.pif/*.bat/*.{*}/
Depois disso rode um teste:
#testparm
Se tudo deu certo, parabns! Agora s
reiniciar o Samba.
#/etc/init.d/sambarestart

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1748
Mais dicas ...
Para adicionar os usurios do /etc/passwd no
samba execute o comando:
#cat/etc/passwd|mksmbpasswd>/
etc/samba/smbpasswd
Depois de fazer isso edite o arquivo /
etc/samba/smbpasswd e retire os usurios
indesejados.
Utilize o comando smbmount para montar
compartilhamentos da rede:
#smbmount//nomeServidor/servico/
pontoDeMontagemousername=usuario,
password=senha
smbumount: desmonta compartilhamentos
Mais dicas ...
O smbstatus empregado para verificar quem
est acessando o servidor e que recursos est
utilizando:
#smbstatus
Se desejar habilitar o compartilhamento das
pastas locais do usurio instale o programa
kdenetwork-filesharing.
#aptgetinstallkdenetworkfilesharing
Se desejar utilizar uma interface web para
gerenciar o samba instale o swat.
#aptgetinstallswat
Para acessar a interface digite no browser
http://localhost:901/.
Quotas
O gerenciamento de quotas suportado
automaticamente pelo kernel aps a verso 2.6.
necessrio criar uma partio separada para
gerenciar, como por exemplo /home ou /
var/spool/mail.
Quotas - configurao
Editar o aquivo /etc/fstab e alterar a linha da
partio que pretende gerenciar as cotas:
/dev/hda*/homereiserfsdefaults,usrquota,grpquota02
Instalar pacote responsvel pelas quotas:
#aptgetinstallquotaquotatool
Criar arquivos responsvel pelas cotas:
#touch/home/quota.user
#touch/home/quota.group
Alterar a permisso dos arquivos:
#chmod600/home/quota.user
#chmod600/home/quota.user
Quotas - configurao
Atualizar o arquivo /etc/fstab
#mountaou mountoremount/particao
Habilitar as quotas para o ponto de montagem
#quotacheckacvugou#quotacheckacvugm
Adicionar usurio
#adduserusurioou#useraddmusurio
Editar cotas do usurio
#edquotauusurio
Verificar quotas de todos os usurios
#repquotaa
Quotas - configurao
Atualizar cotas (sem precisar para o servio)
#quotacheckavou#quotacheckavm
Inicializar ou finalizar quotas
#quotaon/home
#quotaoff/home
Servio responsvel pelas quotas
#/etc/init.d/quotastop
#/etc/init.d/quotastart
Alterar os dias de avisos (Grace time)
#edquotat
Quotas - configurao
Para replicar uma configurao de quota para
outro usurio basta executar:
edquotaupusurio_padronovo_usurio
Depois reinicie o servio de quotas:
#quotaonav
#quotaoffav
Autenticao de usurios
Bibliografia
http://tldp.org/HOWTO/User-Authentication-HOWTO/
(c) 2000 Peter Hernberg
Autenticao de usurios
Os dados sobre os usurios do sistema esto nos
arquivos:
/etc/passwd:leitura liberada para TODOS os
usurios;
/etc/shadow: leitura restrita ao usurio root.
Informaes sobre os grupos:
/etc/group.
/etc/gshadow.
Tradicionalmente as senhas dos usurios so
encriptadas com a funo crypt(). Atualmente
alguns sistemas utilizam o algoritmo has MD5.
Pluggable Autentication
Module (PAM)
Permite a autenticao dos usurios de forma
transparente independentemente da forma como
a informao est armazenada.
Quando um programa necessita autenticar um
usurio o PAM disponibiliza bibliotecas com
funes para realizara tal tarefa.
Os arquivos de configurao do PAM esto
localizados no diretrio /etc/pam.d e as
bibliotecas no diretrio /lib/security.
A sintaxe dos arquivos de configurao do PAM :
tipocontrolepath_do_mduloargumentos
tipo
Sinaliza para o PAM o tipo de autenticao que deve
ser usada pelo mdulo. Mdulos do mesmo tipo podem
ser empilhados obrigando ao usurio a satisfazer
mltiplos quesitos para ser autenticado.
Os tipos reconhecidos pelo PAM so:
account: determina quando o usurio pode acessar o servio,
quando a senha expira, etc.;
auth: determina quando o usurio quem ele diz ser,
normalmente pelo uso de senha (biometria);
password: prov um mecanismo para o usurios alterar sua
autenticao;
session: aes que devem ser realizadas antes ou depois do
usurio ser autenticado, como por exemplo: montagem e
desmontagem do home ou restrio/liberao de servios.
controle
Sinaliza so PAM o que deve ser feito em caso de
falha de autenticao do mdulo.
Os controles aceitos so:
requisite: falha na autenticao neste mdulo resulta em
uma imediata falha na autenticao.
required: falha na autenticao deste mdulo implica na
negao de autenticao, embora o PAM ainda chamar os
demais mdulos selecionados para o servio antes de,
finalmente, negar a autenticao do servio.
sufficient: se funcionar a autenticao deste mdulo o PAM
permitir a autenticao mesmo que a autenticao de um
mdulo required tenha falhado.
optional: a falha ou o acerto na autenticao s
significante se for o nico mdulo para este servio.
Observaes
No arquivo de configurao do login existem
diversos controles, dentre eles podemos citar:
A maioriados mdulos required so do tipo
pam_unix.so;
Um mdulo do tipo requisite o pam_securetty.so;
O nico mdulo opcional o pam_lastlog.so.
Arquivos do PAM

servidor:~#cd/etc/pam.d
servidor:/etc/pam.d#ls
chfncommonaccountcommonpasswordcrongdm
kcheckpassloginpasswdsshsudoxdmchsh
commonauthcommonsessioncvsgdmautologin
kscreensaverotherpppsuwebminxscreensaver
login
#
#ThePAMconfigurationfilefortheShadow`login'service
#
#NOTE:Ifyouuseasessionmodule(suchaskerberosorNIS+)thatretains
#persistentcredentials(likekeycaches,etc),youneedtoenablethe
#`CLOSE_SESSIONS'optionin/etc/login.defsinorderforlogintostayaround
#untilafterlogouttocallpam_close_session()andcleanup.
#

#Outputsanissuefilepriortoeachloginprompt(Replacesthe
#ISSUE_FILEoptionfromlogin.defs).Uncommentforuse
#authrequiredpam_issue.soissue=/etc/issue

#Disallowsrootloginsexceptontty'slistedin/etc/securetty
#(Replacesthe`CONSOLE'settingfromlogin.defs)
authrequisitepam_securetty.so

#Disallowsotherthanrootloginswhen/etc/nologinexists
#(Replacesthe`NOLOGINS_FILE'optionfromlogin.defs)
authrequisitepam_nologin.so

#Thismoduleparses/etc/environmentandalsoallowsyoutouseanextended
#configfile/etc/security/pam_env.conf.(Replacesthe`ENVIRON_FILE'setting
#fromlogin.defs)
authrequiredpam_env.so
login
#StandardUn*xauthentication.The"nullok"lineallowspasswordless
#accounts.
@includecommonauth

#Thisallowscertainextragroupstobegrantedtoauserbasedonthings
#liketimeofday,tty,service,anduser.
#Pleaseuncommentandedit/etc/security/group.confifyouwishtousethis.
#(Replacesthe`CONSOLE_GROUPS'optioninlogin.defs)
#authoptionalpam_group.so

#Uncommentandedit/etc/security/time.confifyouneedtosettime
#restrainstonlogins.(Replacesthe`PORTTIME_CHECKS_ENAB'optionfrom
#login.defsaswellas/etc/porttime)
#accountrequisitepam_time.so

#Uncommentandedit/etc/security/access.confifyouneedtosetaccess
#limits.(Replaces/etc/login.accessfile)
#accountrequiredpam_access.so

#StandardUn*xaccountandsession
@includecommonaccount
@includecommonsession
login
#Setsupuserlimits,pleaseuncommentandread/etc/security/limits.conf
#toenablethisfunctionality.
#(Replacestheuseof/etc/limitsinoldlogin)
sessionrequiredpam_limits.so

#Printsthelastlogininfouponsuccesfullogin
#(Replacesthe`LASTLOG_ENAB'optionfromlogin.defs)
sessionoptionalpam_lastlog.so

#Printsthemotduponsuccesfullogin
#(Replacesthe`MOTD_FILE'optioninlogin.defs)
sessionoptionalpam_motd.so

#Printsthestatusoftheuser'smailboxuponsuccesfullogin
#(Replacesthe`MAIL_CHECK_ENAB'optionfromlogin.defs).You
#canalsoenableaMAILenvironmentvariablefromhere,butit
#isbetterhandledby/etc/login.defs,sinceuserdelalsouses
#ittomakesurethatremovingauser,alsoremovestheirmail
#spoolfile.
sessionoptionalpam_mail.sostandardnoenv
@includecommonpassword
Os arquivos common ...
commonaccountcommonauth
servidor:/etc/pam.d#catcommonauth
#
#/etc/pam.d/commonauthauthenticationsettingscommontoallservices
#
#ThisfileisincludedfromotherservicespecificPAMconfigfiles,
#andshouldcontainalistoftheauthenticationmodulesthatdefine
#thecentralauthenticationschemeforuseonthesystem
#(e.g.,/etc/shadow,LDAP,Kerberos,etc.).Thedefaultistousethe
#traditionalUnixauthenticationmechanisms.
#
authrequiredpam_unix.sonullok_secure

servidor:/etc/pam.d#catcommonaccount
#
#/etc/pam.d/commonaccountauthorizationsettingscommontoallservices
#
#ThisfileisincludedfromotherservicespecificPAMconfigfiles,
#andshouldcontainalistoftheauthorizationmodulesthatdefine
#thecentralaccesspolicyforuseonthesystem.Thedefaultisto
#onlydenyservicetouserswhoseaccountsareexpiredin/etc/shadow.
#
accountrequiredpam_unix.so
Os arquivos common ...
servidor:/etc/pam.d#catcommonpassword
#
#/etc/pam.d/commonpasswordpasswordrelatedmodulescommontoallservices
#
#ThisfileisincludedfromotherservicespecificPAMconfigfiles,
#andshouldcontainalistofmodulesthatdefinetheservicestobe
#usedtochangeuserpasswords.Thedefaultispam_unix

#The"nullok"optionallowsuserstochangeanemptypassword,else
#emptypasswordsaretreatedaslockedaccounts.
#(Add`md5'afterthemodulenametoenableMD5passwords)
#The"obscure"optionreplacestheold`OBSCURE_CHECKS_ENAB'optionin
#login.defs.Alsothe"min"and"max"optionsenforcethelengthofthe
#newpassword.

passwordrequiredpam_unix.sonullokobscuremin=4max=8md5

#Alternatestrengthcheckingforpassword.Notethatthis
#requiresthelibpamcracklibpackagetobeinstalled.
#Youwillneedtocommentoutthepasswordlineaboveand
#uncommentthenexttwoinordertousethis.
#(Replacesthe`OBSCURE_CHECKS_ENAB',`CRACKLIB_DICTPATH')
#
#passwordrequiredpam_cracklib.soretry=3minlen=6difok=3
#passwordrequiredpam_unix.souse_authtoknullokmd5
Os arquivos common ...
servidor:/etc/pam.d#catcommonsession
#
#/etc/pam.d/commonsessionsessionrelatedmodulescommontoallservices
#
#ThisfileisincludedfromotherservicespecificPAMconfigfiles,
#andshouldcontainalistofmodulesthatdefinetaskstobeperformed
#atthestartandendofsessionsof*any*kind(bothinteractiveand
#noninteractive).Thedefaultispam_unix.
#
sessionrequiredpam_unix.so
login.defs
#QMAIL_DIRMaildir/
MAIL_DIR/var/mail
#MAIL_FILE.mail
FAIL_DELAY3
FAILLOG_ENAByes
LOG_UNKFAIL_ENABno
QUOTAS_ENAByes
SYSLOG_SU_ENAByes
SYSLOG_SG_ENAByes
#SULOG_FILE/var/log/sulog
NOLOGIN_STRNOLOGIN
ENV_SUPATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
ENV_PATHPATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
ERASECHAR0177
KILLCHAR025
UMASK022
#ULIMIT2097152
PASS_MAX_DAYS99999
PASS_MIN_DAYS0
PASS_WARN_AGE7
UID_MIN1000
UID_MAX60000
GID_MIN100
GID_MAX60000
login.defs
LOGIN_RETRIES5
LOGIN_TIMEOUT60
PASS_MAX_LEN8
CHFN_AUTHyes
DEFAULT_HOMEyes

#
#Enablepam_close_session()calling.Whenusingnormal(pam_unix.so)
#sessionhandlingmodules,thisisnotneeded.Howeverwithmodules
#(suchaskerberosorotherpersistentsessionmodels),loginandsu
#needtoforkandwaitfortheshelltoexitsothatsessionscanbe
#cleanedup.
#
CLOSE_SESSIONSno
Aumentando a segurana
O arquivo /etc/pam.d/other contm utilizado
pelos servios que no contm uma arquivo
especfico de configurao.
#
#/etc/pam.d/otherspecifythePAMfallbackbehaviour
#
#Notethatthisfileisusedforanyunspecifiedservice;forexample
#if/etc/pam.d/cronspecifiesnosessionmodulesbutcroncalls
#pam_open_session,thesessionmoduleoutof/etc/pam.d/otheris
#used.Ifyoureallywantnothingtohappenthenusepam_permit.soor
#pam_deny.soasappropriate.
#Wefallbacktothesystemdefaultin/etc/pam.d/common*
#
@includecommonauth
@includecommonaccount
@includecommonpassword
@includecommonsession
Aumentando a segurana
Configurao Configurao mais
paranica: razovel.

auth requiredpam_deny.so auth requiredpam_unix.so


authrequiredpam_warn.so auth requiredpam_warn.so
accountrequiredpam_deny.so account requiredpam_unix.so
accountrequiredpam_warn.so account requiredpam_warn.so
passwordrequiredpam_deny.so passwordrequiredpam_deny.so
passwordrequiredpam_warn.so passwordrequiredpam_warn.so
sessionrequiredpam_deny.so sessionrequiredpam_unix.so
sessionrequiredpam_warn.so sessionrequiredpam_warn.so
Aumentando a segurana
Desabilitar logins para usurios sem senha,
retirando a clusula nullok. Exemplos de
servios: login, rlogin e ssh.
Desabilitar servios no utilizados renomeando
os arquivos de configurao. Quando for
solicitada autenticao no servio recair no
arquivo /etc/pam.d/other.
Utilizar ferramentas de crack de senhas. As
mais conhecidas so a crack e o John the
Riper (http://www.false.com/security/john/index.html).
Utilizar senhas shadow e MD5.
Network File System
(NFS)

--- Linux NFS-HOWTO ---


O que NFS?
O Network File System (NFS) foi desenvolvido
para possibilitar a montagem de uma partio
de um computador remoto, parecendo para o
usurio que a mesma pertence ao HD Local.
Dessa forma, o NFS permite o
compartilhamento de arquivos de uma forma
rpida, por meio de uma rede de computadores.
O NFS tambm abre uma brecha de segurana,
pois usurios indesejedos podero acessar um
HD pela rede. Por isso fundamental
implementar o NFS da forma mais restritiva
possvel.
O que NFS?
Existem outros sistemas que possuem a mesma
funcionalidade. Dentre eles podemos citar:
samba: http://www.samba.org;
Andrew File System (AFS) from IBM:
http://www.transarc.com/Product/EFS/AFS/index.html;
Coda File System ( CFS): http://www.coda.cs.cmu.edu/;
Muitas das caractersticas do AFS e do CFS so
esperadas na nova verso do NFS (verso 4).
A grande vantagem do NFS que j uma
ferramenta madura, padronizada, dominada e
com suportada em vrias arquiteturas.
Instalao e Ajuda
Para executar o NFS voc precisa de dois
pacotes: nfs-common e nfs-kernel-server.
#aptgetinstallnfscommon
#aptgetinstallnfskernelserver
Ao trmino da instalao os scripts de
inicializao j estaro disponveis no diretrio /
etc/init.d e nos diretrios /etc/rc?.d apropriados.
Voc pode tirar suas dvidas no site
http://nfs.sourceforge.net ou mandar um email
para nfs@lists.sourceforne.net.
Configurao do servidor e do
cliente
A configurao do NFS tem que ser realizada no
servidor e no computador cliente.
A configurao do servidor NFS envolve a
configurao de alguns arquivos e a iniciao dos
servios NFS.
Existem 3(trs) arquivos que necessitam ser
configurados no servidor:
/etc/exports;
/etc/hosts.allow; e
/etc/hosts.
Para se aumentar a segurana do servio
necessrio alterar os scripts de inicializao.
/etc/exports
Este arquivo contm uma lista de diretrios a
serem compartilhados e o modo como sero
compartilhados.
Uma linha desse arquivo da forma:
diretriocomputador1(opes)computador2(opes)
As principais opes so:
ro;
rw;
no_root_squash;
sync.
/etc/exports
Exemplos de linhas do /etc/exports:
/usr/local 192.168.0.1(ro)192.168.0.2(ro)
/home 192.168.0.1(rw)192.168.0.2(rw)
/usr/local 192.168.0.0/255.255.255.0(ro)
/home 192.168.0.0/255.255.255.0(rw)
/usr/local *.52ct.eb.mil.br(ro)
/home *.52ct.eb.mil.br(rw)
Lembretes
Se um diretrio for exportado seu diretrio pai
e os diretrios filhos no podero ser
exportados se estiverem no mesma partio.
extremamente perigoso compartilhar com
NFS diretrios formatados com FAT Ou VFAT,
pois esses sistemas de arquivo no foram
projetados para trabalharem em sistemas multi-
usurio e os permissionamentos podem no
funcionar direito.
A exportao de alguns dispositivos ou arquivos
especiais no funcionam corretamente para
clientes que no so Linux.
/etc/hosts.allow
/etc/hosts.deny
Estes arquivos especificam os computadores
que tero ou no acesso aos
compartilhamentos.
So processados na seguinte sequncia:
primeiro verificado o /etc/hosts.allow;
depois o /etc/hosts.deny;
se nenhuma regra se encaixou ento o acesso
franqueado.
Inicializao dos servios
Para funcionar o NFS precisa do daemon
portmap iniciado.
Alm do portmap necessrio que os daemons
nfsd e rpc.mountd estejam iniciados.
Uma forma de verificar se os scripts foram
iniciados com o comando:
#rpcinfop<host>
Alteraes no /etc/exports
As alteraes realizadas no arquivo /etc/exports
depois do incio dos daemons s tero validade
aps o reincio do NFS ou depois da emisso do
comando:
#exportfsra
Configurao do computador
cliente
Os daemon portmap, rpc.statd e rpc.lockd
devem estar rodando.
Voc pode montar um diretrio remoto com o
comando mount:
#mounttnfs192.168.0.1:/home/mnt/home
Se desejar que seja montado no momento do
boot do sistema basta acrescentar uma linha
ao /etc/fstab:

192.168.0.1:/home/mnt/homenfsrw00
Network Information
Service
(NIS)

--- NIS-HOWTO ---


O que o NIS?
Sua funo fornecer informaes, que devem
ser conhecidas atravs da rede, para todas as
mquinas da rede.
Informaes provveis de serem distribudas
pelo NIS so:
logins/senhas/diretrios home de usurios
(/etc/passwd);
informao de grupo (/etc/group).
NIS era anteriormente conhecido como Sun
Yellow Pages (YP), mas o nome Yellow Pages
(tm) uma marca registrada no Reino Unido
pela British Telecom plc e no pode ser usada
sem permisso.
Como funciona?
Dentro de uma rede deve existir pelo menos uma
mquina atuando como servidor NIS.
possvel ter mltiplos servidores NIS, onde um o
NIS mestre e todos os outros so chamados
servidores NIS escravos ou uma mistura deles...
Servidores escravos apenas contm cpias dos
bancos de dados NIS e recebem cpias do servidor
NIS mestre conforme mudanas acontecem nos
bancos de dados do NIS mestre.
Caso um servidor NIS pare de funcionar ou est
lento demais ao responder a requisies, um cliente
NIS conectado aquele servidor tentar encontrar
outro que esteja funcionando, ou um mais rpido.
Como funciona?
Os bancos de dados NIS esto no formato chamado
DBM, derivado de bancos de dados ASCII.
Servidores escravos sero notificados de quaisquer
mudanas nos mapas NIS, (via o programa yppush),
e automaticamente recuperar as mudanas
necessrias para sincronizar seus bancos de dados.
Verses antigas do ypbind lanam um broadcast para
encontrar um servidor NIS rodando. Isto inseguro,
devido ao fato de que qualquer um pode instalar um
servidor NIS e responder s requisies broadcast.
Verses mais novas do ypbind possuem a capacidade
de obter o servidor a partir de um arquivo de
configurao sem a necessidade do broadcast.
O Portmapper RPC
Para executar quaisquer dos softwares mencionados
abaixo necessrio rodar o programa /
sbin/portmap.
O portmapper RPC um servidor que converte
nmeros de processos RPC em nmeros no
protocolo TCP/IP (ou UDP/IP).
Ele deve estar executando para que seja possvel
realizar chamadas RPC para servidores RPC em
determinada mquina.
Quando um servidor RPC iniciado, ele ir dizer ao
portmap qual nmero de porta ele est ouvindo, e
quais programas RPC ele est preparado para
atender.
O Portmapper RPC
Quando um cliente deseja realizar uma
chamada RPC para um determinado nmero de
processo, ele deve primeiro contatar o portmap
no servidor, para determinar o nmero da porta
a qual os pacotes RPC devem ser enviados.
Uma vez que servidores RPC podem ser
iniciados pelo inetd(8), o portmap deve estar
rodando antes do inetd ser iniciado.
Para RPC seguro, o portmapper precisa que o
servio Time esteja rodando.
Certifique-se de que ele esteja habilitado no
inetd.conf em todas as estaes/servidores.
O que necessrio para
configurar o NIS?
Determine se ir configurar como Servidor,
Escravo ou Cliente.
Para responder a esta questo, dois casos devem
ser considerados:
a mquina ir fazer parte de uma rede com servidores
NIS j funcionando;
no h nenhum servidor NIS na rede ainda.
No primeiro caso, apenas os programas clientes
so necessrios (ypbind, ypwhich, ypcat, yppoll,
ypmatch).
O que necessrio para
configurar o NIS?
O mais importante deles o ypbind. Este
programa deve estar rodando o tempo todo.
To logo ypbind esteja rodando, o sistema
tornar-se- um cliente NIS.
Na segunda alternativa, caso no existem
servidores NIS, ento ser tambm necessrio
um programa servidor NIS (normalmente
chamado ypserv).
Para instalar os pacotes necessrios ao NIS
execute o comando:
#aptgetinstallnis
Configurando o servidor NIS
Edite o arquivo /etc/default/nis.
Altere o valor da seguinte varivel:
NISSERVER=master
Edite o arquivo/etc/defaultdomaine coloque
o nome de seu domnio.
Entre no diretrio /var/yp e execute o
comando make.
Edite o arquivo /etc/yp.conf e atribua o seu ip
para a varivel ypserver.
Configurando o servidor NIS
Edite o arquivo /etc/ypserver.conf e descomente
as linhas abaixo para permitir a utilizao do
arquivo shadow:

#*:*:passwd.byname:port/mangle
#*:*:passwd.byuid:port/mangle
E comente as linhas:

*:*:shadow.byname:port
*:*:passwd.adjunct.byname:port
*:*:*:none
Configurando o servidor NIS
Edite o arquivo /etc/ypserv.securenets.
Comente a linha:
0.0.0.00.0.0.0

E acrescente as linhas referentes a sua rede:


255.255.255.0 <endereodasuarede>
255.255.255.255 <endereodehost>

Inicie o servidor NIS:


#/etc/init.d/nisstart
Configurao do cliente
Instale o NIS.
Edite o arquivo /etc/yp.conf. Dever constar a
entrada do ypserver no /etc/hosts.
Acrescente a linha abaixo no final do arquivo /
etc/passwd:
+::::::
Acrescente a linha abaixo no final do /etc/group:
+:::
Acrescente a linha abaixo no final do /etc/shadow:
+::::::::
Inicie o servio NIS.
Testando a instalao do NIS
Instale o programa SASL2
#aptgetinstallsasl2bin
Edite o arquivo /etc/default/saslauthd e
descomente a linha START = YES
Inicie o saslauthd
#/etc/init.d/saslauthdstart
Teste um usurio
#testsaslauthdu<login>p<senha>
Montagem de um
servidor slave
Instale o NIS.
Edite o arquivo /etc/yp.conf e acrescente o do
slave e do master.
Configure o arquivo /etc/ypserv.conf.
Configure o arquivo /etc/ypserver.securenets.
Edite o arquivo /etc/default/nis e altere as
variveis abaixo:
NISSERVER=slave
NISCLIENT=false
NISMASTER=<ip_do_master>
Montagem de um
servidor slave
Configure o servidor master:
no arquivo /var/yp/ypservers adicione os ip's dos
slaves;
no arquivo /var/yp/Makefile altere a varivel abaixo:
NOPUSH=false
reinicie o servidor NIS.
Outras configuraes
Fixao de parmetros nos arquivos /
etc/passwd, /etc/shadow e /etc/group:
+:::::/home/testes:/bin/bash
ou
+teste::::::/bin/bash
teste1::::::
+::::::/bin/false
DHCP

-- Mini-COMO FAZER DHCP --

Vladimir Vuksan, vuksan@veus.hr


Protocolo DHCP
DHCP significa Protocolo de Configurao
Dinmica de Mquinas.
usado para controlar parmetros de controle
de rede vitais para as mquinas (ao ser
executado em clientes) com a ajuda de um
servidor.
Para maiores informaes veja a RFC 2131.
Instalao do DHCP
Para instalar o DHCP execute o comando:
#aptgetinstalldhcp3server
Configurando o servidor
Para configurar o servidor necessrio editar o
arquivo /etc/dhcpd.conf.
Exemplo de dhcpd.conf:
defaultleasetime600;
maxleasetime7200;
optionsubnetmask255.255.255.0;
optionbroadcastaddress192.168.1.255;
optionrouters192.168.1.254;
optiondomainnameservers192.168.1.1,192.168.1.2;
optiondomainname"cursolinux.52ct.eb.mil.br";

subnet192.168.1.0netmask255.255.255.0{
range192.168.1.10192.168.1.100;
range192.168.1.150192.168.1.200;
}
Configurando o servidor
Pode-se ainda definir endereos IP especficos
baseados nos endereos Ethernet dos clientes,
como por exemplo:
hostconec{
hardwareethernet08:00:2b:4c:59:23;
fixedaddress192.168.1.222;
}
Pode-se, tambm, trabalhar com grupos:
grouplaboratrio{
hostmicro1{
hardwareethernet00:00:00:00:00:00;
fixedaddress192.168.0.9;}
hostmicro1{
hardwareethernet00:00:00:00:00:00;
fixedaddress192.168.0.9;}
}
Configurao do cliente
Para configurar o cliente basta alterar o arquivo
/etc/network/interfaces e alterar a configurao
da interface de rede:
autoeth?
ifaceeth?inetdhcp
Quando o sistema iniciar, automaticamente
solicitar um endereo por meio do DHCP.
Outro comando que pode ser utilizado para
solicitao de endereo IP por meio do DHCP
o dhclient.
IP forward

-- Apostila GNU/Linux em redes TCP/IP --

Joo ERIBERTO Mota Filho - CAP


IP forward
IP forward um tipo de roteamento.
estabelecido quando colocamos uma mquina
entre duas ou mais redes diferentes e h a livre
passagem de pacotes entre elas, quando
necessrio.
O IP forward s ir funcionar quando for feito
entre redes diferentes.
O IP forward til para diminuir o trfego na
rede como um todo.
Um computador dever possuir duas placas de
rede uma em cada rede, onde cada uma o
gateway da rede onde est localizada.
Estabelecimento do IP forward
Inserir um micro com duas placas de rede entre
as duas redes, configurando cada placa de
acordo com a rede.
Definir, em cada mquina, de cada rede, quem
o seu gateway.
Ativar o IP forward vi propriedades do kernel:
#echo1>/proc/sys/net/ipv4/ip_forward
para fazer com que essa autorizao fique
permanente acrescente a linha
net/ipv4/ip_forward=1 ao arquivo /
etc/sysctl.conf.
Filtro de pacotes
iptables

-- Apostila GNU/Linux em redes TCP/IP --

Joo ERIBERTO Mota Filho - CAP


Consideraes iniciais
As mquinas que filtram de pacotes executam :
o roteamento controlado por regras da anlise de
cabealho IP (filtro de pacotes);
o roteamento mascarado, controlado por regras de
anlise de cabealho IP (filtro de pacotes mascarado
ou firewall de mascaramento).
O iptables nativo nos kernels 2.4 e 2.6.
Ele verifica apenas o cabealho de cada pacote,
definindo o que ocorrer com tais pacotes
Basicamente, s entende endereo IP, mascara
de rede, portas e tipos de protocolos.
No analisa o contedo dos pacotes.
Funcionamento do filtro de
pacotes
Funciona mediante regras estabelecidas.
Todos os pacotes entram no kernel para serem
analisados.
As chains so as situaes possveis dentro
kernel.
Quando um pacote entra no kernel, este verifica
o destino do pacote e decide quanl chain ir
tratar do pacote (roteamento interno).
Funcionamento do filtro de
pacotes
Existem 3(trs) tabelas possveis:
filter: a tabela padro. Quando no especificamos a
tabela, a filter ser utilizada. Refere-se s atividades
normais de trfego de dados, sem a ocorrncia de
NAT. Admite as chains INPUT, OUTPUT e FORWARD.
nat: utilizada quando h NAT. Admite as chains
PREROUTING, OUTPUT e POSTROUTING.
mangle: trabalha com a marcao de pacotes e QoS.
Tabela filter
So 3(trs) as possveis chains:
INPUT: utilizada quando o destino final a prpria
mquina firewall;
OUTPUT: qualquer pacote gerado na mquina
firewall e que deva sair para a rede ser tratado por
esta chain;
FORWARD: qualquer pacote que atravessa o firewall,
oriundo de uma mquina e direcionado a outra, ser
tratado por esta chain.
Regras de firewall
Regras de firewall:
# iptables [t tabela] [opo] [chain] [dados] j
[ao]
Exemplo:
#iptablesAFORWARDd192.168.1.1jDROP
O comando iptables L mostra as regras em
vigor.
O comando iptables F apaga as regras em
vigor.
Anlise de regras com a
tabela filter
Opes:
-P POLTICA: altera a poltica da chain. A poltica
inicial de cada chain ACCEPT. Exemplos:
#iptablesPFORWARDDROP
#iptablesPINPUTACCEPT
-A: acresce uma nova regra a chain. Tem prioridade
sobre o -P. Exemplos:
#iptablesAOUTPUTd172.20.5.10jACCEPT
#iptablesAFORWARDs10.0.0.1jDROP
#iptablesAFORWARDdwww.chat.com.brjDROP
-D: apaga uma regra.
#iptablesDOUTPUTd172.20.5.10jACCEPT
#iptablesDFORWARDs10.0.0.1jDROP
#iptablesDFORWARDdwww.chat.com.brjDROP
Anlise de regras com a
tabela filter
Dados das regras:
-s (fonte): estabelece a origem do pacote.
-s 172.20.0.0/255.255.0.0
-s 172.20.0.0/16
-s 172.20.5.10
-s 0/0
-d (destino);
-p <protocolo>: especifica o protocolo a ser filtrado
(udp, tcp e icmp).
-i <interface>: especifica a interface de entrada.
-i ppp0
-i eth+
Anlise de regras com a
tabela filter
Opes:
-o <interface>: especifica a interface de sada.
!: excluso.
-s ! 10.0.0.1
-p ! tcp
--sport <porta>: porta de origem. S funciona se
houver a indicao do protocolo de transporte.
-p tcp sport 80
--dport <porta>: porta de destino. S funciona se
houver a indicao do protocolo de transporte.
Anlise de regras com a
tabela filter
Aes:
ACCEPT: aceitar. Permite a passagem.
DROP: abandonar. No permite a passagem do
pacote, descartando-o. No avisa a origem sobre o
ocorrido.
REJECT: igual ao DROP, mas avisa a origem sobre o
ocorrido (envia o pacote icmp unreachable).
LOG: cria um log referente a regra. O log ser criado
em /var/log/syslog.
Exemplos
# iptables -L
# iptables -F
# iptables -P FORWARD DROP
# iptables -A FORWARD -j DROP
# iptables -A FORWARD -j ACCEPT
# iptables -A FORWARD -s 10.0.0.0/8 -d
www.chat.com.br -j DROP
# iptables -A FORWARD -s 10.0.0.0/8 -d
www.chat.com.br -j REJECT
# iptables -A FORWARD -d www.chat.com.br -j DROP
# iptables -A FORWARD -s 10.0.0.5 -p icmp -j DROP
Exemplos
#iptablesAFORWARDieth0jACEEPT
#iptablesAFORWARDi!eth0jACCEPT
# iptables A FORWARD s 10.0.0.5 p tcp
sport80jLOG
# iptables A FORWARD p tcp dport 25 j
ACCEPT
Se houver impasse entre as regras, sempre valer a
primeira.
Ao fazermos regras na tabela filter temos que prever o
retorno:
#iptablesPFORWARDDROP
#iptablesAFORWARDs10.0.0.0/8d172.20.0.0/16jACCEPT
#iptablesAFORWARDd10.0.0.0/8s172.20.0.0/16jACCEPT
Network Address Translator
Existem vrios recursos que utilizam NAT. Os
mais conhecidos so:
o mascaramento;
o redirecionamento de portas (port forwarding ou
PAT);
o redirecionamento de host (forwarding);
o proxy transparente (transparent proxy);
o balanceamento de carga (load balance).
Mascaramento
O mascaramento uma forma de fazer NAT.
Com ele possvel fazer uma rede privada
navegar na Internet.
A rede solicita os dados para o computador que
faz o mascaramento e ela busca os dados na
Internet e os entrega aos solicitantes.
Um computador da Internet, por vontade
prpria, no consegue ultrapassar o firewall que
faz mascaramento, em direo rede.
O nico endereo IP que ir circular na Internet
ser o do firewall.
O mascaramento configurado na tabela NAT.
Redirecionamento
Redirecionamento de portas:
o redirecionamento de portas ocorre quando
desejamos alterar a porta de destino de uma
requisio;
Redirecionamento de host:
Todos os pacotes destinados a um host sero
redirecionados para outro host.
Proxy transparente
a tcnica que fora o uso de um servidor
proxy na rede.
Balanceamento de carga
O balanceamento de carga um tcnica
utilizada para distribuir carga entre servidores
sincronizados.
O balanceamento de carga o ato de distribuir
os clientes aos servidores mais desocupados.
Esse trabalho tambm pode ser feito por
servidores DNS.
Tabela NAT
O NAT dividido em :
SNAT: aplica-se quando desejamos alterar o endereo
de origem do pacote. Somente a chain
POSTROUTING faz SNAT. O mascaramento um
exemplo de SNAT;
DNAT: aplica-se quando desejamos alterar o
endereo de destino do pacote. As chaind
PREROUTING e OUTPUT fazem DNAT. O
redirecionamento de porta, o redirecionamento de
servidor, o balanceamento de carga e proxy
transparente so exemplos de DNAT.
Regras de NAT
Existem as seguintes chains:
PREROUTING: utilizada para analisar pacotes que
esto entrando no kernel para sofrerem NAT. O
PREROUTING pode fazer aes de NAT com o
endereo de destino do pacote. Isso conhecido como
DNAT (Destination NAT).
POSTROUTING: Utilizada para analisar pacotes que
esto saindo do kernel, aps sofrerem NAT.
OPOSTROUTING pode fazer aes de NAT com o
endereo de origem do pacote. Isso conhecido como
SNAT.
OUTPUT: utilizada para analisar pacotes que so
gerados na prpria mquina e que iro sofrer NAT. O
OUTPUT Pode fazer aes de NAT com o endereo de
destino do pacote. Tambm DNAT.
Regras de NAT
Opes:
-A: anexar
-D: deletar.
Dados:
-t <tabela>: estabelece a tabela a ser utilizada. A tabela
default, por omisso, filter. Para o mascaramento ou
NAT ser nat. Exemplo:
#iptablestnatA...
--to <ip:porta>: utilizado para definir IP e porta de destino,
aps um DNAT, ou de origem, aps um SNAT. Deve ser
utilizado aps uma ao (-j o). Exemplos:
jDNATto10.0.0.2,jDNATto10.10.0.2:80ou
jSNATto172.20.0.2
Regras de NAT
Dados:
--dport <porta>: assim como -d define um host de
destino, --dport define uma porta de destino. Deve ser
utilizado ante de uma ao (-j ao). Antes de dport,
deve ser especificado um protocolo de transporte (-p).
Exemplo
# d 172.20.0.1 p tcp dport 80 j DNAT to
10.0.0.2
- --sport <ip:porta>: assim como -s define um host de
origem, --sport define uma porte de origem. Deve ser
utilizado antes de uma ao (-j ao).
--to-port: define uma porta de destino aps um
REDIRECT.
Regras de NAT
Aes:
SNAT: utilizado com POSTROUTING para fazer aes de
mascaramento da origem;
DNAT: utilizado com PREROUTING e OUTPUT para
fazer aes de redirecionamento de portas e servidores,
balanceamento de carga e proxy transparente. Caso a
porta de destino no esteja especificada, valer a porta
de origem. No firewall, a porta que ser redirecionada
no pode existir ou estar ocupada por um daemon;
MASQUERADE: faz mascaramento na sada de dados. O
SNAT tambm pode fazer isso;
REDIRECT: redireciona uma requisio de uma porta
local para uma porta do firewall;
LOG: realiza o log da regra.
Exemplos de NAT
# iptables -t nat -L
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -o pp0 -j
MASQUERADE
# iptables -t nat -A POSTROUTING -d 0/0 -j
MASQUERADE
# iptables -t nat -A PREROUTING -p tcp -d 10.0.0.2
--dport 80 -j DNAT --to 172.20.0.1
# iptables -t nat -A OUTPUT -p tcp -d 10.0.0.10 -j
DNAT to 10.0.0.1
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT
--to 200.20.0.1
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --
to 172.20.0.1
Exemplos de NAT
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --
to 172.20.0.1-172.20.0.3 (load balance)
# iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p
tcp --dport 80 -j REDIRECT to-port 3128
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24
-o eth1 -j SNAT 200.20.5.0/24
Salvando e recuperando
regras
As regras de iptables devem ser salvas de algum
modo, ou se perdero quando a mquina for
desligada.
Uma forma de fazer isso com o comando
iptables-save.
#iptablessave>/etc/firewall
O carregamento poder seer feito com o comando
iptables-restore.
#iptablesrestore</etc/firewall
A outra forma de salvar as regras colocando-se
dentro de um script shell, que dever ser
carregado pelo /etc/init.d/rc/local.
Lembrete
As tabelas filter e nat atuam em paralelo.
Qualquer erro pode bloquear o trfego.
Exemplo:
# iptables t nat A POSTROUTING s
10.0.0.0/8oeth0jMASQUERADE
#iptablesAFORWARDjDROP
As regras do iptables devero ser utilizadas em
hosts isolados e servidores. Isso ir garantir um
maior grau de segurana, uma vez que haver a
filtragem pela mquina firewall e pelo prprio
host de destino.
SQUID

-- Configurando um Squid "Ninja" --


http://www.linuxman.pro.br/squid/

Eri Ramos Bastos


O que esperar de um
proxy/cache?
Podemos sumarizar os benefcios esperados em:
velocidade de acesso;
disponibilidade;
transparncia ou ostensividade;
capacidade de trabalhar com redes heterogneas;
simplicidade.
O Squid satisfaz todos esses pontos.
O que o Squid?
Squid um proxy-cache de alta performance
para clientes web, que suporta os protocolos
FTP, gopher e HTTP.
O Squid mantm meta dados e especialmente
objetos armazenados na RAM e cacheia
buscas de DNS.
Ele suporta SSL, listas de acesso complexas e
logging completo.
Por utilizar o Internet Cache Protocol, o Squid
pode ser configurado para trabalhar de forma
hierrquica ou mista para melhor
aproveitamento da banda.
O que o Squid?
Podemos dizer que o Squid consiste em um
programa principal - squid -, um sistema de
busca e resoluo de nomes - dnsserver - e
alguns programas adicionais para reescrever
requests, fazer autenticao e gerenciar
ferramentas de clientes.
Podemos executar o Squid nas principais
plataformas do mercado, como Linux, Unixes e
Windows.
Porque utilizar um
Proxy/Cache?
Podemos dizer que existem dois grandes
motivos pelo qual se deve utilizar um
PROXY/CACHE:
controle de acesso: navegao por sites no
relativos ao seu trabalho primrio ou que no
condizem com a poltica da empresa, infeco de toda
a rede da empresa com vrus e worms que so
adquiridos em sites imprprios, ameaa de
propagao de downloads de softwares piratas e
msicas, entre outros.
performance: a utilizao de PROXY/CACHE pode
gerar uma economia entre trinta e cinqenta por
cento nos horrios de pico.
Porque utilizar o SQUID?
O Squid est continuamente melhorando sua
performance, alm de adicionar novas features e
ter uma excelente estabilidade em condies
extremas.
Possui compatibilidade com vrias plataformas e
uma imensa gama de softwares para analisar logs,
gerar relatrios, melhorar o desempenho e
adicionar segurana providos pela comunidade
open source, combinados com ferramentas de
administrao simplificada e baseadas em web
agregam grande valor ao produto.
Podemos ainda citar a capacidade de clustering,
transparent proxy, cache de FTP e seu baixo custo.
Protocolos utilizados -
Rede e Aplicao
O Squid busca por comunicao TCP
(Transmission Control Protocol) e ICP (Internet
Cache Protocol) em portas especficas.
O TCP usado para comunicao entre
webservers e clientes, e o ICP para conversa
entre servidores de cache.
Para cada servidor (ou cliente), a configurao
do Squid precisa fornecer uma nica porta
sobre a qual o Squid ir enviar as requisies
(TCP ou ICP) e ouvir as respostas.
Protocolos utilizados -
Rede e Aplicao
O Squid trabalha apenas com FTP, gopher e
http.
Existe uma confuso muito comum entre
pessoas que esto comeando a trabalhar com o
Squid em achar que podero, atravs do Squid,
configurar acesso a e-mails, ICQ, IRC, etc. Isso
totalmente equivocado.
Requisitos
A maior parte das configuraes depende
apenas do Squid.
O proxy transparente tambm depende do
sistema operacional e do firewall
A instalao padro do squid, disponvel na
maior parte das distribuies, no consegue
lidar com o controle de banda, sendo necessrio
recompilar o Squid.
Instalando o Squid
O Squid pode ser instalado em uma imensa
variedades de sistemas operacionais.
Praticamente todos os Unixes com um bom
compilador C/C++ pode gerar binrios do
Squid.
Para instalar o squid basta executar o comando:
# apt-get install squid
Limpando o squid ...
#cpsquid.confsquid.conf.original
# egrep v "^#|^$" squid.conf.original >
squid.conf
Configuraes bsicas - ACLs
Toda a estrutura do Squid baseada em listas
de acessos.
Exemplo:
vamos supor que nossa rede interna seja
192.168.5.0/24. Crie a seguinte linha no squid.conf,
na seo de ACLs (TAG: acl):
aclrede_internasrc192.168.5.0/24
http_accessallowrede_interna
Transparent Proxy
Esse recurso muito til para evitar que seus
usurios "burlem" o proxy removendo as
configuraes do browser.
Eles sero obrigados a passar pelo proxy,
mesmo que as mquinas no estejam
configuradas para tal.
Extremamente recomendado, principalmente
em casos de bloqueio de sites ou limitao de
banda.
Para ser possvel o uso de proxy transparente
com o Squid, o firewall deve ser configurado
adequadamente.
Transparent Proxy
Para ser possvel o uso de proxy transparente
com o Squid, o firewall deve ser configurado
adequadamente.
#iptablestnatAPREROUTINGieth0p
tcp dport 80 j REDIRECT toport
3128
Bloqueando Sites indesejados
O conceito de ACL muito til, por nos permitir
trabalhar com nveis de acesso baseados em
diversas informaes.
No incomum que em uma instalao de
Squid, a diretoria possa acessar qualquer site, a
gerncia no possa acessar determinados sites
e os "pees" tenham acesso apenas ao site da
empresa e de parceiros. Graas ao uso de ACLs
e um pouco de imaginao e suor, podemos
fazer todas essas restries.
Todas as configuraes de usurios, grupos,
horrios e SITES so configuradas em ACLs.
Bloqueando Sites indesejados
A ordem em que as ACLs aparecem muito
importante, por isso a ACL que bloqueia os sites
deve ser a primeira a aparecer.
#aclallsrc0.0.0.0/0.0.0.0
Criando os arquivos
necessrios
Criando os arquivos necessrios:
#mkdir/etc/squid/bloqueados
#touch/etc/squid/bloqueados/block.txt
#touch/etc/squid/bloqueados/unblock.txt
O arquivo block.txt ir conter todos os sites e palavras
que voc deseja bloquear e o unblock.txt todas as
excees.
Vamos supor que voc tenha bloqueado a palavra
sexo. Ento voc no poder entrar em
www.sexo.com.br, mas tambm no poder entrar em
www.sexoesaude.com.br. Ora, mas esse segundo site
inofensivo, portanto no deveria ser bloqueado. Basta
coloc-lo no unblock.txt.
Editando o squid.conf
Insira as linhas abaixo logo antes de acl all src
0.0.0.0/0.0.0.0:
acl blockedsites url_regex i
"/etc/squid/bloqueados/block.txt"
acl unblockedsites url_regex i
"/etc/squid/bloqueados/unblock.txt"
Agora procure no seu squid.conf a linha
http_access deny all e coloque antes dela:
http_access deny blockedsites !
unblockedsites
O "!" Significa sempre negao de alguma coisa.
Autenticando usurios
um recurso bem interessante para controle
pessoal de usurios.
Isso permite que voc crie ACLs individuais e
gere LOGs de qualidade bem superior.
Existem diversos mtodos de autenticao,
sendo interessante averiguar exatamente o que
voc ir precisar.
Na maioria dos casos, o ncsa_auth resolve o
problema.
Proxy bsico, com cache e
transparente
O arquivo de configurao do squid o /
etc/squid/squid.conf.
aclEBurlregexeb.mil.br
no_cachedenyEB
cache_mem25MB
cache_swap_low70
cache_swap_high95
maximum_object_size900000KB
cache_dirufs/var/spool/squid1536064256
emulate_httpd_logon
ftp_passiveon
aclnossa_redesrc172.20.0.0/255.255.0.0
aclsexourl_regex/etc/squid/deny/sexo.txt
aclsomurl_regex/etc/squid/deny/radios.txt
aclchaturl_regexchatbatepapobatepapo
Proxy bsico, com cache e
transparente
O arquivo de configurao do squid o /
etc/squid/squid.conf.
aclexpediente1timeMTWHF09:0012:00
aclexpediente2timeMTWHF13:3018:00
http_accessdenynossa_redesexo
http_accessdenynossa_redesom
http_accessdenynossa_redechatexpediente1
http_accessdenynossa_redechatexpediente2
http_accessallownossa_rede
cache_mgradm@rede.com.br
httpd_accel_hostvirtual
httpd_accel_port80
httpd_accel_with_proxyon
httpd_accel_uses_host_headeron
Descrio dos campos
url_regex: essa ACL ir procura em na URL uma
expresso regular que especificada. Opo case-
sensitive.
no_cache: Uma lista de elementos de uma ACL,
onde, se encontrados, impedem o objeto de ser
cacheado.
cache_mem: Especifica o nmero ideal de memria
usado para objetos em trnsito, objetos "quentes" e
objetos com negativa de cache.
cache_swap_low: Aqui se especifica o limite mnimo
para substituio de um objeto. A substituio comea
quando o swap em disco est acima do limite mnimo.
Descrio dos campos
cache_swap_high: justamente o oposto da opo
anterior. Aqui se define o limite mximo.
maximum_object_size: o tamanho mximo de um
objeto em cache. Objetos maiores do que esse limite
no so salvos em disco.
cache_dir: diretrio onde sero armazenados os
objetos. possvel criar-se vrios diretrios de cache,
mas isso s ir fazer sentido se os mesmo forem em
parties (ganho de espao) ou discos (ganho de
velocidade) separados.
Descrio dos campos
emulate_httpd_log: o Squid tem a habilidade de
emular o log de servidores web. Para utilizar essa
opo, basta configurar com "on". Se voc no tem
nenhuma aplicao especfica para utilizao do log
em formato web, sugiro que mantenha no padro do
Squid, visto que ser mais simples encontrar
ferramentas de analise de logs nesse padro.
ftp_passive: se o seu firewall no permite que o
Squid use conexes passivas, desligue essa opo.
cache_mgr: usando essa tag, ns podemos
especificar o endereo de e-mail do administrador do
cache local, que ser o responsvel pela instalao
dessa mquina.
Descrio dos campos
httpd_accel_host: configura o nome do host para o
servio acelerado. Se voc tiver vrios servidores,
ser necessrio utilizar a palavra virtual ao invs de
hostname.
httpd_accel_port: porta para qual as requisies
aceleradas sero enviadas.
httpd_accel_with_proxy: se a opo
http_accel_host estiver ativada, ento o Squid ir
parar de trabalhar a funcionalidade de cache.
necessrio configurar essa opo para que ambas as
funcionalidades continuem ativas.
Descrio dos campos
httpd_accel_uses_host_header: as requisies
HTTP/1.1 incluem um cabealho relativo ao host, que
basicamente contm o nome do mesmo na URL. O
Squid pode ser um acelerador para diferentes
servidores web atravs da analise do cabealho http.
Entretanto, o Squid no checa os valores do
cabealho do host, abrindo uma possvel brecha de
segurana. Mais uma vez, recomendado utilizar essa
tag com cuidado.

Você também pode gostar