Apostila Servidores - Gerds

Transcrição

Apostila Servidores - Gerds
Universidade Tuiuti do Paraná –
UTP
Faculdade de Ciências Exatas e de Tecnologia
Cursos de Computação
Grupo de Estudos de Redes de Computadores e Sistemas Distribuídos
Professores:
Marcelo Soares Farias
Roberto Néia Amaral
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Curitiba, 2008
Roberto Amaral – Marcelo Soares Farias
Página 2
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
INTRODUÇÃO
Inicialmente, os computadores eram máquinas caríssimas que centralizavam em um único ponto o
processamento das aplicações de vários usuários, e muitas vezes de toda uma organização. Com a redução
de custos do hardware e introdução dos microcomputadores no cenário da informática, a estrutura centralizada
cedeu lugar a uma estrutura totalmente distribuída. Nessa estrutura diversos equipamentos dos mais variados
portes processam informações de formas isoladas, o que acarreta uma serie de problemas. Dentre os
problemas apresentados, destaca-se a duplicação desnecessária de recursos de hardware (impressoras,
discos, etc.) e de software (programas, arquivos de dados etc.).
Nesse cenário surgiram as redes de computadores, onde um sistema de comunicação foi introduzido
para interligar os equipamentos de processamentos de dados (estações de trabalhos), antes operando
isoladamente com o objetivo de permitir o compartilhamento de recursos.
Evolução dos Sistemas de Computação
Na década de 1950, computadores eram máquinas grandes e complexas, operadas por pessoas
altamente especializadas. Usuários enfileiravam-se para submeter suas leitoras de cartões ou fitas magnéticas
que eram processados em lote. Não havia nenhuma forma de interação direta entre usuários e máquina.
Avanços na década de 1960 possibilitaram o desenvolvimento dos primeiros terminais interativos,
permitindo aos usuários acesso ao computador central através de linhas de comunicação. Usuários passavam
a ter então um mecanismo que possibilitava a interação direta com o computador, ao mesmo tempo em que
avanços nas técnicas de processamento davam origem a sistemas de tempo compartilhado (time-sharing),
permitindo que várias tarefas dos diferentes usuários ocupassem simultaneamente o computador central,
através de uma espécie de revezamento no tempo de ocupação do processador.
Mudanças na caracterização dos sistemas de computação ocorreram durante a década de 1970:
de um sistema único centralizado e de grande porte, partia-se em direção à distribuição do poder
computacional. O desenvolvimento de minis e microcomputadores de bom desempenho, permitiu a instalação
de considerável poder computacional concentração deste poder em uma determinada área.
Embora o custo de hardware de processamento estivesse caindo, o preço dos equipamentos
eletromecânicos continuava alto, tornando a interconexão entre os vários sistemas para o uso compartilhado
de dispositivos periféricos importante.
A capacidade de troca de informações também foi uma razão importante para a interconexão.
Usuários individuais de sistemas de computação não trabalham isolados e necessitam de alguns dos
benefícios oferecidos pôr um sistema centralizado. Ambientes de trabalho cooperativos se tornaram uma
realidade tanto nas empresas como nas universidades, exigindo a interconexão dos equipamentos.
Para solucionar problemas de desempenho, os pesquisadores criaram novas arquiteturas que
propunham a distribuição e o paralelismo como forma de melhorar desempenho, confiabilidade e modularidade
dos sistemas computacionais, alem de um sistema centralizado de repositório de informasses, ou melhor,
servidores.
Roberto Amaral – Marcelo Soares Farias
Página 3
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Evolução das Arquiteturas
A maioria dos computadores projetados até a década de 1980 teve sua concepção baseada nos
modelos original de Von Neumann. A interação perfeita entre o modo como os programas são desenvolvidos e
a maneira como são interpretados foi uma das razões para o grande sucesso de tal modelo.
A revolução nos sistemas de computadores começou com os avanços de tecnologia de integração
de circuitos, que reduziram em muito os custos das partes de tais sistemas, onde várias arquiteturas foram
então propostas.
Dentre as alternativas apresentadas, podemos citar os Sistemas de UCP única com múltiplas
Unidades Funcionais, as Máquinas Pipeline e os Processadores de matriz (Array Processors).
A idéia de seqüência múltiplas e independentes de instruções em um sistema composto por vários
elementos de processamento compartilhando um espaço comum de memória aparece em uma outra
arquitetura (Sistemas de Multiprocessadores) com as seguintes características:
• Dois ou mais processadores de capacidade aproximadamente iguais.
• Todos os processadores dividem o acesso a uma memória comum.
• Todos os processadores compartilham os canais de I/O unidades de controle e dispositivos periféricos.
• O sistema total é controlado pôr um único sistema operacional.
Por último surgiram os Sistemas de Processamento Distribuídos por Eckhouse 78 como uma
”coleção de elementos de processamentos interconectados tanto logicamente quanto fisicamente para
execução cooperativa de programas de aplicação com controle dos recursos descentralizado”, o qual é
o objetivo deste curso.
Em Sistemas Distribuídos, o estado do sistema é fragmentado em partes que residem em
diferentes processadores e memórias, com comunicação entre essas partes sujeita a retardos variáveis e
desconhecidos. Em sistemas distribuídos é impossível forçar a simultaneidade de eventos. A mínima
interferência em uma execução de tarefas paralelas vai permitir a obtenção de sistemas de grande
desempenho. A não existência de qualquer elemento sem o qual o sistema para totalmente lhe confere alta
confiabilidade. A possibilidade de utilização em larga escala de um pequeno número de elementos básicos de
hardware e software é responsável pelo elevado grau de modularidade do sistema.
Embora difícil de caracterizar, a arquitetura de múltiplos processadores tem melhor aplicação em
sistemas que exigem grande disponibilidade, grandes requisitos de vazão, tempos de resposta garantidos e
baixos, alto grau de modularidade, e também onde as tarefas podem ser executadas de modo concorrente.
Um Sistema Distribuído vai ser formado por um conjunto de módulos processadores interligados
por um sistema de comunicação. Vemos então que a interconexão de sistemas veio atender a duas
necessidades distintas:
• Construção de sistemas com maior desempenho e maior confiabilidade
• Compartilhamento de recursos.
Roberto Amaral – Marcelo Soares Farias
Página 4
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Alguns autores consideram como Sistema Distribuído apenas àqueles construídos para atender a
primeira necessidade, classificando como Redes de Computadores os sistemas construídos com a finalidade
de permitir o compartilhamento de recursos. Outros preferem classificar todos esses sistemas como Sistemas
Distribuídos e subclassificá-los em Máquinas de Arquitetura Distribuída e Redes de Computadores.
Uma Máquina de Arquitetura Distribuída é composta por um número ilimitado, mas finito de
módulos autônomos de processamento interconectados para formar um único sistema, no qual o controle
executivo global é implementado através da cooperação de elementos descentralizados.
Uma Rede de Computadores também é formada por um número ilimitado, mas finito de módulos
autônomos de processamento interconectados, no entanto a independência dos vários módulos de
processamento é preservada na sua tarefa de compartilhamento de recursos e troca de informações.
MAS ENTÃO O QUE VEM A SER UMA REDE DE COMPUTADORES?
É UM MEIO FÍSICO E LÓGICO DE COMUNICAÇÃO DE DADOS,
COMPARTILHADO, O QUAL POSSUI OBJETIVO DE UNIR INFORMAÇÕES ENTRE
TODOS OS PARCIPANTES DESTE INFODUTO CONTROLADO DE DADOS.
“Quando você precisar de ir além do computador em cima de
sua mesa, esta na hora de instalar uma rede local”.
Roberto Amaral – Marcelo Soares Farias
Página 5
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Classificação das Redes de Computadores
As redes de computadores podem ser classificadas quanto sua abrangência geográfica. Para cada tipo
de rede deve existir um tipo de meio de transmissão assim como um tipo de protocolo que fará essa
comunicação. Na junção de todas estas idéias, podemos considerar que cada tipo de rede, possuirá sua
característica particular assim como seus possíveis protocolos de comunicação.
TIPOS DE REDES
Cada tipo de rede tem suas características principais ligadas a sua abrangência, ou seja, a sua
capacidade de atendimento em Km.
•
LAN (Local Area Network) : As redes locais tem uma abrangência limitada por um prédio, uma sala,
um campus ou uma fábrica num limite de alguns quilômetros ( 2 a 3 Km).
•
MAN (Metropolitan Area Network) : As redes metropolitanas podem atender uma grande área como
uma região metropolitana, por exemplo atendida por uma anel de fibras óticas interligando diversos
municípios como se fosse uma infra-estrutura única, com alcance de 30 Km.
•
WAN (Wide Area Network) : As redes WAN também conhecidas como redes de longa distância
podem ser redes nacionais atendendo todo o território como também redes internacionais interligadas
via satélite ou cabos submarinos.
Podemos considerar a tabela abaixo
Roberto Amaral – Marcelo Soares Farias
Página 6
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Topologia
“Topologia para redes de computadores está relacionada como os equipamentos que compõe
uma rede são distribuídos em um determinado espaço. Porem esta distribuição não está relacionada somente
a questões físicas, mas sim sobre questões lógicas também.”
A Topologia define a estrutura da rede. Há dois pontos na definição de topologia: a topologia física, que é o
layout real do meio físico de transmissão, e a topologia lógica, que define como os meios são acessados. As
topologias físicas geralmente usadas são barramento, anel, estrela, estrela estendida, hierárquica e malha.
•
Barramento: usa um único segmento de transmissão, ao qual todos os hosts se conectam diretamente.
•
Anel: conecta um host ao próximo e o último host ao primeiro. Isso cria um anel físico do cabo.
•
Estrela: conecta todos ao ponto central, sendo normalmente um hub ou switch..
•
Estrela estendida: une as estrelas individuais vinculando os hubs/switches.
•
Hierárquica: forma similar a uma estrela estendida, mas em vez de unir os hubs/switches, o sistema é
vinculado a um computador que controla o tráfego na topologia.
•
Malha: Nesta, cada host tem suas próprias conexões com todos os outros hosts. Isso reflete o projeto
da Internet, que possui vários caminhos para qualquer lugar.
A topologia lógica de uma rede é a forma como os hosts se comunicam através dos meios. Os dois tipos
mais comuns de topologias lógicas são broadcast e passagem de token.
•
Broadcast: simplesmente significa que cada host envia seus dados a todos os outros hosts no meio
da rede. As estações não seguem nenhuma ordem para usar a rede, a primeira a solicitar é a atendida.
•
Passagem de token: controla o acesso à rede, passando um token eletrônico seqüencialmente
para cada host. Quando um host recebe o token, significa que esse host pode enviar dados na rede. Se
o host não tiver dados a serem enviados, ele vai passar o token para o próximo host.
Roberto Amaral – Marcelo Soares Farias
Página 7
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Roberto Amaral – Marcelo Soares Farias
Página 8
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Dispositivos de Redes
Os dispositivos que se conectam diretamente a um segmento de rede são chamados de hosts. Esses
hosts incluem computadores, clientes e servidores, impressoras, scanners e muitos outros dispositivos do
usuário. Esses dispositivos fornecem aos usuários conexão à rede, com a qual os usuários compartilham,
criam e obtêm as informações.
Placas de Redes
Em termos de aparência, uma placa de rede é uma placa de circuito impresso que se encaixa no slot
de expansão de um barramento em uma placa mãe do computador ou em um dispositivo periférico. É também
chamada de placa de rede. Em computadores laptop/notebook as placas de rede são normalmente do
tamanho de uma placa PCMCIA.
As placas de rede são consideradas dispositivos da camada 2 do modelo OSI, porque cada placa de
rede em todo o mundo transporta um código exclusivo, chamado de um endereço Media Access Control
(MAC). Esse endereço é usado para controlar as comunicações de dados do host na rede.
Sempre que existir um dispositivo de rede acoplado ao meio de rede, há algum tipo de dispositivo de
placa de rede, mesmo que geralmente não seja exibido.
Roberto Amaral – Marcelo Soares Farias
Página 9
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
CABEAMENTOS DE REDE
Para que computadores funcionem em conjunto em uma rede, são necessários meios de transmissão
ou cabos. Os meios de transmissão são utilizados em redes de computadores para ligar as estações entre si,
sendo que estes meios diferem com relação à banda passante, potencial para conexão ponto a ponto ou
multiponto, limitação geográfica, imunidade a ruído, custo, disponibilidade de componentes e confiabilidade.
Qualquer meio físico capaz de transportar informações eletromagnéticas é passível de ser usado em
redes de computadores. Os mais comuns utilizados são: o par trançado, o cabo coaxial e a fibra ótica. Sob
circunstâncias especiais, radiodifusão, infravermelho, enlaces de satélite e microondas também são escolhas
possíveis. As taxas de transmissão desses meios são medidas em bits por segundo, ou bps.
Cabo coaxial
É composto de um centro condutivo, envolto por uma camada isolante, e novamente envolto por uma camada
condutora. É bastante resistente a interferências. Este possui uma imunidade a ruído ótima, e uma fuga
eletromagnética mais baixa. Os ruídos geralmente presentes em áreas urbanas e industriais são de baixa
freqüência, tornando as transmissões em banda básica mais susceptíveis a eles. Quanto ao custo, o coaxial é
mais caro do que o par trançado, assim como é mais elevado o custo das interfaces para ligação ao cabo.
Para ligar esse tipo de cabo na placa de rede de um computador, é necessário um conector BNC e um T.
Vantagens de sua utilização
•
Baixos custos de manutenção;
•
Topologia simples de implementar;
•
Resistência à ruídos e interferências;
Desvantagens de sua utilização
•
Distâncias limitadas;
•
Baixo nível de segurança;
•
Difícil de fazer grandes mudanças na topologia da rede.
Roberto Amaral – Marcelo Soares Farias
Página 10
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Cabo par trançado
Este é composto por dois pares de fios (ou 4 pares ) envoltos por uma camada isolante de forma a
reduzir o ruído e manter constante as prioridades elétricas do meio através de todo o seu comprimento. A
perda de energia é um parâmetro importante quando se discute não só a taxa máxima de transmissão, mas
também a distância máxima permitida, qualquer que seja o meio de transmissão. A perda de energia aumenta
com a distância, até chegar um ponto onde o receptor não consegue mais reconhecer o sinal. A energia pode
ser perdida por radiação ou por calor. Sua desvantagem é a sensibilidade às interferência e ruído. Com o
aumento das taxas de transmissão, cabos de par trançado de melhor qualidade foram gradativamente sendo
produzidos. Uma aplicação típica para o par trançado é a ligação ponto a ponto entre terminais e computadores
e entre estações da rede e o meio de transmissão. Esse é o mais utilizado atualmente e, o custo total da rede é
maior pelo fato de necessitar de equipamentos extras (como hub, por exemplo). O conector utilizado é o RJ-45.
Conectorização
Pino 1 Branco do Verde
Pino 2 Verde
Pino 3 Branco do Laranja
Pino 4 Azul
Pino 5 Branco do Azul
Pino 6 Laranja
Pino 7 Branco do Marrom
Pino 8 Marrom
PINO
SINAL
1
Transmissão -
2
Transmissão +
3
Recepção -
4
5
6
Recepção +
7
8
Roberto Amaral – Marcelo Soares Farias
Página 11
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Fibra óptica
A transmissão em fibra ótica é realizada pelo envio de um sinal de luz. O cabo ótico consiste em um
filamento de sílica ou plástico, por onde é feita a transmissão da luz. Ao redor do filamento existem substâncias
de menor índice de refração, que fazem com que os raios sejam refletidos internamente, minimizando assim as
perdas de transmissão. Existem três tipos de fibras óticas: as multímodo degrau, as multímodo com índice
gradual e as monomodo. Fibras ópticas não estão sujeitas a interferência e transmitem a uma taxa bastante
elevada: 100.000 Mbps, podendo chegar a 200.000 Mbps.
Características
A fibra óptica é praticamente imune às influências do meio ambiente por onde está passando.
Imunidade total a interferência eletromagnética e interferência por radio-frequência. Não gera campos
magnéticos e eletromagnéticos. Insensível a relâmpagos e descargas atmosféricas. Segura mesmo em
contacto com condutores de alta voltagem, pois é totalmente dielétrica. Muito segura contra grampeamento
(roubo de informações). Suporta grandes distâncias entre repetidores.
Sua aplicação se dá em
telecomunicações, é usada para Redes de Telecomunicações e Transmissão de sinais de processamento de
dados.
Redes de Telecomunicações:
- Circuitos de telefonia interurbanos.
- Conexões de redes locais (LANs e WANs).
- Redes para controle de distribuição de energia elétrica
- Redes de transmissão de dados.
- Redes de distribuição de sinais de radiodifusão e televisão
- Redes de estúdios, cabos de câmeras de televisão.
- Redes industriais, em monitoração e controle de processos.
- Transmissão de sinais de processamento de dados de computador para computador.
- Interligação de circuitos dentro de equipamentos.
- Aplicações de controle em geral ( fábricas, maquinários)
- Em veículos motorizados, aeronaves, trens e navios
Vantagens de sua utilização
Desvantagens de sua utilização
Roberto Amaral – Marcelo Soares Farias
Página 12
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Equipamentos de Redes
Existem diversos fabricantes de equipamentos de redes de computadores, porem basicamente os
equipamentos estão classificados em 3 tipos:
1. Os que simplesmente repassam as informações (sinais elétricos)
2. Os que tratam a informação através dos endereços físicos dos equipamentos
3. Os que realizam a operação de encaminhar a informação através de redes lógicas
No grupo 1, que são replicadores de sinais elétricos, trabalhando no nível físico, estão os Hubs e Repetidores
No grupo 2, os equipamentos que realizam a comutação no primeiro nível lógico de uma rede, são os Switch.
No grupo 3 , os equipamentos que realizam o roteamento entre redes diferentes, os Roteadores.
HUB
A finalidade de um hub é gerar os sinais da rede novamente e os retemporizar. Isso é feito no nível de
bit para um grande número de hosts usando um processo conhecido como concentração. Essa definição é
muito similar a dos repetidores, por essa razão um hub é também conhecido como repetidor multiportas. A
diferença é o número de cabos que se conectam ao dispositivo. Os motivos para se usar os hubs é criar um
ponto de conexão central para os meios de cabeamento e aumentar a confiabilidade da rede. Aumenta-se a
confiabilidade da rede permitindo qualquer cabo único a falhar sem afetar toda a rede. Isso difere da topologia
de barramento onde, se houver uma falha no cabo, toda a rede será afetada. Os hubs são considerados
dispositivos da camada 1 porque apenas geram novamente o sinal e o transmite para suas portas.
Existem diferentes classificações dos hubs na rede. A primeira classificação é dizer se os hubs são
ativos ou passivos. Hubs ativos obtêm energia de uma fonte de alimentação para gerar novamente os sinais da
rede. Alguns são denominados dispositivos passivos porque simplesmente repartem o sinal entre vários
usuários, como usando um fio "Y". Os hubs passivos não geram novamente os bits. Outra classificação é se os
hubs são inteligentes ou burros. Os hubs inteligentes têm portas do console, o que significa que podem ser
programados para gerenciar o tráfego da rede. Os hubs burros simplesmente aceitam um sinal da rede de
entrada e o repete em todas as portas sem realizar qualquer gerenciamento.
Roberto Amaral – Marcelo Soares Farias
Página 13
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
SWITCH
Um switch é um dispositivo da camada 2. A diferença entre o hub e o switch é que os switches tomam
as decisões com base nos endereços MAC e os hubs não tomam nenhuma decisão. Devido às decisões que
os switches tomam, eles tornam uma LAN muito mais eficiente. Fazem isso "comutando" os dados apenas pela
porta à qual o host apropriado está conectado. Os switches, à primeira vista, se parecem com os hubs. Os
hubs e os switches têm muitas portas de conexão, uma vez que parte de suas funções é a concentração da
conectividade. A diferença entre um hub e um switch é o que acontece dentro do dispositivo.
A finalidade de um switch é concentrar a conectividade, ao mesmo tempo tornando a transmissão de
dados mais eficiente. Ele comuta os pacotes das portas de entrada para as portas de saída, enquanto fornece
a cada porta a largura de banda completa.
Roteadores
O roteador encontra-se na camada de rede OSI, conhecida como camada 3. Toma decisões com base
em grupos de endereços de rede ao invés de endereços MAC individuais. Os roteadores podem também
conectar diferentes tecnologias da camada 2, como Ethernet, Token-ring e FDDI. No entanto, devido à sua
habilidade de rotear pacotes baseados nas informações da camada 3, os roteadores se tornaram o backbone
da Internet, executando o protocolo IP. A finalidade de um roteador é examinar os pacotes de entrada (dados
da camada 3), escolher o melhor caminho para eles através da rede e depois comutar os pacotes para a porta
de saída apropriada. São dispositivos de controle de tráfego mais importantes nas grandes redes. Permitem
que qualquer tipo de computador se comunique com qualquer outro computador em qualquer parte do mundo.
Roberto Amaral – Marcelo Soares Farias
Página 14
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Sistema de Endereçamento
Devemos considerar que existem dois tipos de endereçamento dentro de uma rede, ou melhor, uma
máquina pode assumir 2 tipos de endereços. Os endereços físicos, que são atribuídos pelos fabricantes de
placas de redes e os endereços lógicos (IP) atribuídos pelo administrador de redes.
Protocolo IP
O protocolo IP foi projetado tendo como principal objetivo a ligação inter-redes. Por isto ele é
considerado como elemento integrador da Internet, através dele é possível a conexão de diversas sub-redes. A
Internet é composta de diversos backbones construídos através linhas de altas velocidades de diversos tipos
de tecnologia. A cada um destes backbones estão conectadas várias redes locais de muitas outras instituições
cada uma com suas características de sub-rede. Em muitas empresas é comum utilizar o IP, e outros
protocolos de sua família, para interligar computadores de tecnologia diferentes.
Endereçamento IP
Identificadores Universais
Diz-se que um sistema provê um serviço de comunicação universal quando é possível a quaisquer dos
elementos deste sistema se comunicar arbitrariamente. Para tornar um sistema de comunicação universal,
devemos estabelecer um método globalmente aceito para identificação dos componentes a ele conectados.
Nas redes TCP/IP, a entidade que atua como identificador universal é o endereço IP, um número de 32 dígitos
binários. A idéia básica de seus mentores era a de tornar o roteamento simples e eficiente.
As três Classes Primárias de Endereço
A Internet é uma gigantesca rede de computadores como qualquer outra rede física. A grande
diferença, entretanto, está no fato de que a Internet é uma estrutura virtual, concebida por seus desenhistas e
implementada inteiramente em software. Assim, os projetistas tiveram liberdade de arbitrar o tamanho e
formato dos pacotes, endereços, técnicas de roteamento, etc. Na questão do endereçamento, cada host é
atribuído um número inteiro que será seu endereço - no caso o endereço IP
Cada endereço IP possui 32 bits, que se divide em duas partes: uma primeira que identifica a rede a
qual esse computador está logicamente conectado e uma segunda parte que identifica o computador
propriamente dito. Observe que todas as máquinas conectadas a uma mesma rede irão compartilhar essa
primeira parte, que se convencionou chamar net id (identificador da rede). Analogamente, à segunda porção do
endereço IP é o host id (identificação da máquina).
Em termos práticos, cada endereço IP deverá estar contido em uma das cinco categorias. A classe de
um endereço pode ser identificada através do exame dos quatro bits de mais alta ordem, sendo que as três
classes básicas (A, B e C) podem ser distinguidas apenas pelos dois primeiros. A classe A, usada para um
pequeno número de redes que contêm mais de 65.535 hosts, reserva 7 bits para o net id e 24 bits para o host
id. Os endereços da classe B se destinam a redes de tamanho intermediário (entre 256 e 65535 máquinas) e
reservam 14 bits para o net id e 16 bits para o host id. Finalmente, a classe C, apropriada para pequenas
Roberto Amaral – Marcelo Soares Farias
Página 15
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
redes, aloca 21 bits para o net id e apenas 8 bits para o host id. Observe que os endereços IP são estruturados
de forma a permitir uma rápida extração da identificação da rede (net id) e da máquina a ela conectada (host
id). Os gateways dependem da extração eficiente do net id para realizar o roteamento dos pacotes IP.
Endereço de uma rede e Endereço de Difusão (Broadcast)
Por convenção, um host id 0 nunca é atribuído a uma máquina. Ao invés disso, esse endereço com os
bits do host id todos zerados irá se referir à rede propriamente dita. O endereçamento IP permite que se faça
referência a todos os hosts de uma determinada rede através do chamado endereço de difusão. Um endereço
de broadcast é aquele em que os bits do host id são todos 1. Nem todas as redes suportam a difusão, algumas
irão precisar de implementação de software e outras não permitirão esta facilidade.
Difusão local
O endereço de difusão permite que um sistema remoto mande um pacote para todos os nós de uma
determinada rede. Do ponto de vista do endereçamento, a desvantagem deste esquema é que ele requer o
conhecimento do endereço de rede. Outra forma de endereço de difusão é chamada endereço de difusão
limitada ou endereço de difusão local. Este endereço consiste de 32 bits iguais a 1. Esse mecanismo possibilita
a referência a todas as máquinas de uma rede local sem que os endereços IP reais sejam conhecidos.
Endereços de referência à própria rede e ao próprio host.
Campos de endereço preenchidos somente com 1's indicam "todos". Um endereço com 32 bits 1,
indica todas as máquinas desta rede e um endereço com todos os bits do host id iguais a 1 indica todas as
máquinas de uma determinada rede (especificada no net id). Analogamente, campos preenchidos com 0's são
geralmente interpretados como significando "este". Assim, um endereço com 32 bits 0, indica o próprio host
(este host) e um endereço com todos os bits do net id iguais a zero, se refere à rede local (esta rede).
Endereço de Multicast
Muitas tecnologias de rede contêm mecanismos que permitem o envio simultâneo de pacotes a
múltiplos destinatários. Em redes de barramento (como a Ethernet) isso pode ser alcançado com o envio de um
único pacote (capturado por todos os hosts). Em outras topologias, com conexões ponto-a-ponto, esse pacote
deverá ser replicado para alcançar todos os hosts.
Roberto Amaral – Marcelo Soares Farias
Página 16
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Algumas redes suportam um segundo tipo de comunicação ponto multi-ponto, conhecido com
multicast. Ao contrário do broadcast, a técnica de multicast permite que cada host "escolha" se deseja ou não
participar daquele "canal". Quando um grupo de máquinas decide se comunicar, elas selecionam um endereço
de multicast que será, então, o seu canal de comunicação.
Na Internet, quando um determinado grupo de máquinas deseja criar um grupo de multicast, elas
devem todas "sintonizar", isto é, configurar suas interfaces para receber pacotes enviados para um mesmo
endereço. Esse endereço deverá pertencer à Classe D. Assim, cada endereço entre 224.0.0.0 e
239.255.255.255 (mais de 268 milhões de alternativas!) pode ser usado como multicast.
A idéia é que hosts podem, a qualquer momento, conectar-se ou desconectar-se de um grupo de
multicast. A técnica de multicasting traz como vantagem sobre a difusão, uma melhor seletividade. Isto é, os
dados somente serão enviados aos hosts necessários.
Notação Decimal
Números de 32 bits não são facilmente manipuláveis por seres humanos, e mesmo aplicação não
tratam diretamente com este tipo de representação. Uma forma mais fácil de representar endereços IP é a de
particioná-lo em quatro octetos convertidos para a notação decimal e separados por pontos.
Desta forma, o binário
11000000 11000110 00001011 10000001
passa a ser tratado como
192.198.11.129
Pode-se também atribuir nomes alfabéticos a hosts, facilitando ainda mais sua memorização. Esta
tradução é apoiada por um protocolo específico que atua sobre uma imensa base de dados distribuída
conhecida como Domain Name System (DNS).
Por questões de simplificação pode-se representar um endereço IP de 32 bits agrupando-os em grupos
de
8
bits
e
representando
estes
grupos
em
valores
decimais.
Por
exemplo
o
endereço
11001000100010011000001100000010 representado em forma de ponto decimal seria 200.137.131.2.
Classe A
1.0.0.0 até 127.255.255.255
Classe B
128.0.0.0 até 191.255.255.255
Classe C
192.0.0.0 até 223.255.255.255
Classe D
224.0.0.0 até 239.255.255.255
Classe E
240.0.0.0 até 247.255.255.255
Classes de Endereços representados sobe forma decimal
Roberto Amaral – Marcelo Soares Farias
Página 17
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Endereço de Loopback
O endereço 127.0.0.0 é reservado à aplicação de loopback. Isto é, qualquer pacote enviado a este
endereço não deve trafegar na rede, mas retornar ao próprio remetente (isto equivale a dizer que o pacote
retornará da própria interface de rede do host). O endereço de loopback ou localhost se presta a testes e
comunicação entre processos que rodam numa mesma máquina.
Resumo Especiais
Endereçamento de Sub-Rede
Uma técnica que permite que se partilhe um mesmo endereço de rede entre diversas redes é o
endereçamento de sub-rede. Vamos imaginar uma instituição a qual foi atribuído um endereço classe C mas
que possui diversas redes interconectadas em suas instalações. Como partilhar este endereço entre estas
diversas redes? A adição de sub-redes implica uma nova subdivisão do endereço IP. O sufixo designador do
host (host id) é dividido em duas partes: a primeira designará uma sub-rede, e a segunda um host.
O problema básico que surge quando realizamos esta nova divisão é que o esquema convencional de
roteamento, que procura extrair a porção que designa a rede, deixa de funcionar. Para suplantar esta
dificuldade, introduz-se no sistema de roteamento uma nova entidade: a máscara de sub-rede. A máscara de
sub-rede é um número de 32 bits que permite a extração de sua "porção de rede". Isto é, ele possui bits 1 nas
posições correspondentes a esta "porção de rede". Para uma rede classe C sem sub-redes a máscara seria:
11111111 11111111 11111111 00000000
que em notação decimal corresponde a:
255.255.255.0
Roberto Amaral – Marcelo Soares Farias
Página 18
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Nomenclatura das interfaces no Linux
Um sistema Linux pode ter várias interfaces, cada uma com um endereço de Protocolo de Internet (IP)
diferente. As interfaces podem ser de diferentes tipos, incluindo:
• Loopback: lo
• Ethernet: eth0, eth1, . . .
• Wi-Fi: wlan0, wlan1, . . .
• Token Ring: tr0, tr1, . . .
• PPP: ppp0, ppp1, . . .
Definindo configurações
As ferramentas de configuração de rede de baixo nível tradicionais nos sistemas GNU/Linux são os
programas ifconfig e route que vêm no pacote net-tools. Essas ferramentas oficialmente foram superadas pelo
ip que vem no pacote iproute. O programa ip funciona no Linux 2.2 e superiores e é mais capaz que as
ferramentas antigas. Entretanto, as ferramentas antigas ainda funcionam e são mais familiares a muitos
usuários.
# ifconfig argumentos ( Usado para exibir e configurar uma interface de rede)
# route ( Usado para exibir e configurar a tabela de roteamento)
Exemplo:
Mudando o endereço IP da interface eth0 de 192.168.0.3 para 192.168.0.111 e tornando eth0 como rota para a
rede 10.0.0.0 via 192.168.0.1.
Executando ifconfig e route sem argumentos de interface, vamos exibir o estado atual de todas as interfaces de
rede e roteamento.
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.0.255
Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23363 errors:0 dropped:0 overruns:0 frame:0
TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB)
Interrupt:9
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:230172 errors:0 dropped:0 overruns:0 frame:0
TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0
Roberto Amaral – Marcelo Soares Farias
Página 19
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
collisions:0 txqueuelen:0
RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
Desativando a interface eth0:
# ifconfig eth0 inet down
Conferindo:
# ifconfig
# route
Ativando a interface com o novo endereço IP e novo roteamento.
# ifconfig eth0 inet up 192.168.0.111 netmask 255.255.0.0 broadcast 192.168.255.255
# route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
Para vermos o resultado:
# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0
inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
...
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
#ip
Usado para exibir e configurar uma interface de rede.
Uso:
ip argumentos
Os equivalentes para o ip dos comandos ifconfig e route anteriores são:
Roberto Amaral – Marcelo Soares Farias
Página 20
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
• ip link show
• ip route list
• ip link set eth0 down
• ip addr del dev eth0 local 192.168.0.3
• ip addr add dev eth0 local 192.168.0.111/16 broadcast 192.168.255.255
• ip link set eth0 up
• ip route add dev eth0 to 10.0.0.0/8 src 192.168.0.111 via 192.168.0.1
O programa ip mostra sua sintaxe de comando quando executado com o argumento help.
Por exemplo, ip link help mostra:
Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen
PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU }
ip link show [ DEVICE ]
Configurando uma interface Wi-Fi
O programa iwconfig, que vem no pacote wireless-tools, é usado para interfaces Wi-Fi, juntamente com
o ifconfig ou ip.
Configurando uma interface com um endereço IP estático
Suponha que você quer configurar uma interface Ethernet que tem um endereço IP fixo 192.168.0.123. Esse
endereço começa com 192.168.0 então deve estar em uma LAN. Suponha também que 192.168.0.1 é o
endereço do gateway da LAN para a Internet. Edite o arquivo /etc/network/interfaces de forma que inclua uma
entrada como essa:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
Se você tiver o resolvconf instalado então pode adicionar linhas que especifiquem informação de DNS. Por
exemplo:
iface eth0 inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
dns-search meudominio.org
dns-nameservers 195.238.2.21 195.238.2.22
Depois que a interface foi levantada, os argumentos das opções dns-search e dns-nameservers se tornam
disponíveis para o resolvconf para inclusão no arquivo resolv.conf. O argumento meudominio.org da opção
dns-search corresponde ao argumento de uma opção search em resolv.conf(5). Os argumentos 195.238.2.21
Roberto Amaral – Marcelo Soares Farias
Página 21
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
e 195.238.2.22 da opção dns-nameservers corresponde aos argumentos das opções nameserver no
resolv.conf(5). Outras palavras de opção reconhecidas são dns-domain e dns-sortlist.
Configurando uma interface usando DHCP
Para configurar uma interface usando DHCP edite o arquivo /etc/network/interfaces de forma que inclua uma
entrada como essa:
iface eth0 inet dhcp
Para que isso funcione você precisa ter instalado um dos clientes DHCP mencionados abaixo. A configuração
de baixo nível de interfaces de rede pode ser automatizada por meio do Dynamic Host Configuration Protocol
(DHCP) (Protocolo de Configuração Dinâmica de Sistemas). Seu firewall ou sistema roteador ou seu ISP de
banda larga podem fornecer endereços IP e outros parâmetros dessa maneira. Para isso funcionar você
precisa instalar um dos seguintes pacotes:
• dhcp3-client (versão 3, Internet Software Consortium)
• dhcpcd (Yoichi Hariguchi e Sergei Viznyuk)
• pump (Redhat)
O pump é simples e largamente utilizado. O dhcp3-client é complexo mas mais configurável.
Configurando uma interface Wi-Fi
O pacote wireless-tools inclui um script /etc/network/if-pre-up.d/wireless-tools que torna possível configurar
hardware Wi-Fi (802.11a/b/g) antes de levantar a interface. A configuração é feita usando o programa iwconfig.
Para cada parâmetro de comando possível do iwconfig você pode incluir uma opção em /etc/network/interfaces
nomeada como o parâmetro com um prefixo ”wireless-“. Por exemplo, para definir o ESSID de eth0 para
meuessid e a chave de encriptação para 123456789e antes de levantar a eth0 usando DHCP, edite o
arquivo /etc/network/interfaces de forma a incluir uma entrada como esta:
iface eth0 inet dhcp
wireless-essid myessid
wireless-key 123456789e
Configurando múltiplas interfaces Ethernet para um gateway
Suponha que a eth0 esteja conectada à Internet com um endereço IP configurado por DHCP e que a eth1
esteja conectada à LAN com um endereço IP estático 192.168.1.1. Editando o arquivo /etc/network/interfaces
de forma a incluir entradas como essas:
iface eth0 inet dhcp
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
Configurando interfaces virtuais
Usando interfaces virtuais você pode configurar uma única placa Ethernet para ser uma interface para várias
sub-redes IP. Por exemplo, suponha que seu sistema esteja em uma rede LAN 192.168.0.x/24. Você quer
Roberto Amaral – Marcelo Soares Farias
Página 22
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
conectar o sistema à Internet usando um endereço IP público provido via DHCP usando sua placa Ethernet
existente. Edite o /etc/network/interfaces de forma a incluir entradas como essas:
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
iface eth0:0 inet dhcp
A interface eth0:0 é uma interface virtual. Quando é levantada, também é levantada a sua superior eth0.
Reconfiguração de rede
O que vem a seguir será importante para o leitor compreender a diferença entre uma interface física e uma
interface lógica. Uma interface física é o que temos chamado de ”a interface“, a coisa que é chamada eth0,
ppp1, ou o que você tiver. Uma interface lógica é um conjunto de valores que pode ser atribuído aos
parâmetros variáveis de uma interface física. Se você achar isso confuso, substitua a expressão ”configurado
como interface lógica X“ pela expressão ”configurado com o perfil de interface X“ conforme você ler.
As definições iface no arquivo /etc/network/interfaces são na verdade definições de interfaces lógicas, não de
interfaces físicas. Se você nunca quiser reconfigurar suas interfaces então pode ignorar esse fato já que a
interface física X por padrão será configurada como interface lógica X. Entretanto, suponha que seu
computador seja um laptop que você transporta entre a casa e o trabalho. Quando você conecta o computador
à rede corporativa ou à sua LAN doméstica você precisa configurar a eth0 apropriadamente.
Primeiro defina duas interfaces lógicas casa e trabalho (ao invés de eth0 como fizemos anteriormente) que
descrevem como a interface deve ser configurada para a rede doméstica e a rede do trabalho,
respectivamente.
iface casa inet static
address 192.168.0.123
netmask 255.255.255.0
gateway 192.168.0.1
iface work inet static
address 81.201.3.123
netmask 255.255.0.0
gateway 81.201.1.1
Então a interface física eth0 pode ser levantada para a rede doméstica com a configuração apropriada
especificando na linha de comando:
# ifup eth0=casa
Para configurar a eth0 para a rede do trabalho execute os comandos:
Roberto Amaral – Marcelo Soares Farias
Página 23
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
# ifdown eth0
# ifup eth0=work
Note que com o arquivo interfaces escrito como acima não será mais possível levantar a eth0 usando apenas
ifup eth0. A razão para isso é que o ifup usa o nome da interface física como o nome padrão da interface lógica
e agora em nosso exemplo não há uma interface lógica eth0 definida.
Configuração de rede durante a inicialização
Na inicialização o script /etc/rcS.d/S40networking executa o comando ifup -a. Isso levanta todas as interfaces
físicas listadas em entradas auto no etc/network/interfaces. Atualmente é freqüentemente melhor gerenciar a
configuração de rede usando métodos dinâmicos. Uma vez que estão disponíveis mecanismos para suportar
hardware que mude dinamicamente se torna mais simples tratar hardware estático como se fosse dinâmico
também. Entretanto, na maioria dos casos se deseja que pelo menos a interface de loopback lo seja levantada
na inicialização. Assim, certifique-se de que o /etc/network/interfaces inclua as seguintes entradas.
auto lo
iface lo inet loopback
Você pode listar nomes de interfaces físicas adicionais em entradas auto se desejar que também sejam
levantadas durante a inicialização. Nunca liste interfaces PCMCIA em entradas auto. O programa cardmgr de
PCMCIA é iniciado mais tarde na seqüência de inicialização que quando o /etc/rcS.d/S40networking é
executado.
Configuração de rede via hotplug
Para obter suporte a hot plug instale o pacote hotplug. Hardware de rede pode ser conectado com o
computador ligado durante a inicialização ou depois que um cartão (por exemplo, um cartão PCMCIA) é
inserido na máquina ou depois que um utilitário como o discover é executado e carrega os módulos de
controladores necessários. Quando o kernel detecta um novo hardware ele inicializa o controlador (driver) para
o hardware e então executa o programa hotplug para configurá-lo. Mais tarde, se o hardware for removido,
então o kernel executa o hotplug novamente com ajustes de variáveis de ambiente diferentes. No Debian,
quando o hotplug é chamado ele executa scripts em /etc/hotplug/ e /etc/hotplug.d/.
O hardware de rede recentemente inserido é configurado pelo script /etc/hotplug/net.agent. Suponha que seu
cartão de rede PCMCIA tenha sido inserido resultando na interface eth0 se tornando disponível para uso. O
/etc/hotplug/net.agent faz o seguinte:
ifup eth0=hotplug
A menos que você tenha adicionado uma definição de interface lógica ou um mapeamento chamado hotplug
em /etc/network/interfaces, esse comando não fará nada. Para fazer com que o comando configure a eth0,
adicione a seguinte entrada em /etc/network/interfaces:
Roberto Amaral – Marcelo Soares Farias
Página 24
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
mapping hotplug
script echo
(Não inclua uma entrada mapping como essa se você estiver usando pedidos do ifplugd iniciados pelo hotplug
para controlar a interface, como descrito em ‘Gatilhando a configuração de rede – ifplugd’ on the current page.)
Se você quiser que apenas a eth0 e mais nenhuma outra interface seja levantada com hot plug então use grep
ao invés de echo como a seguir:
mapping hotplug
script grep
map eth0
Resolução de problemas com rede
Se você encontrar problemas então verifique a saída seguinte como primeira verificação do que está
acontecendo:
# ifconfig
# cat /proc/pci
# cat /proc/interrupts
# dmesg | more
Testes de rede básicos
Instale os pacotes netkit-ping, traceroute, dnsutils, ipchains (para kernel 2.2), iptables (para kernel 2.4) e nettools e :
$ ping yahoo.com # checa a conexão Internet
$ traceroute yahoo.com # rastrea pacotes IP
$ ifconfig # checa configuração do host
$ route -n # checa configuração de roteamento
$ dig [@servidor-dns.com] host.domínio [{a|mx|any}] |less
# checa os registros DNS de host.domínio usando servidor-dns.com para um registro a {mx|any}
$ ipchains -L -n |less # checa o filtro de pacotes (kernel 2.2)
$ iptables -L -n |less # checa o filtro de pacotes (kernel 2.4)
$ netstat -a # encontra todas as portas abertas
$ netstat -l --inet # encontra as portas em escuta
$ netstat -ln --tcp # encontra todas as portas TCP em escuta (numérico)
Roteamento
Roberto Amaral – Marcelo Soares Farias
Página 25
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
O primeiro endereço em uma rede IP é o endereço da própria rede. O último endereço é o endereço de
broadcast da rede. Todos os outros endereços podem ser alocados a sistemas na rede. Desses, o primeiro ou
o último endereço normalmente é alocado para o gateway de Internet para a rede.
A tabela de roteamento contém a informação do kernel sobre como enviar pacotes IP aos seus destinos. Aqui
está um exemplo de tabela de roteamento para um sistema Debian em uma rede local (LAN) com endereço IP
192.168.50.x/24. O sistema 192.168.50.1 (também na LAN) é um roteador para a rede corporativa
172.20.x.x/16 e o sistema 192.168.50.254 (também na LAN) é um roteador para a Internet para todos.
# route
Kernel IP routing table
Destination
Gateway
Genmask
Flags
Metric Ref
Use
Iface
127.0.0.0
*
255.0.0.0
U
0
0
2
lo
192.168.50.0
*
255.255.255.0 U
0
0
137
eth0
172.20.0.0
192.168.50.1
255.255.0.0
UG
1
0
7
eth0
default
192.168.50.254
0.0.0.0
UG
1
0
36
eth0
A primeira linha depois do cabeçalho diz que o tráfego destinado à rede 127.x.x.x será roteado para lo a
interface de loopback.
• A segunda linha diz que o tráfego destinado aos sistemas na LAN serão roteados através de eth0.
• A terceira linha diz que o tráfego destinado à rede corporativa será roteado para o gateway
192.168.50.1 e também através de eth0.
• A quarta linha diz que o tráfego destinado à Internet será roteado para o gateway 192.168.50.254 e
também através de eth0.
Os endereços IP na tabela também podem aparecer como nomes que são obtidos procurando endereços em
/etc/networks ou usando o resolvedor da Biblioteca C.
Configuração de rotas
Para inserir uma rota use o comando no formato:
route add [ -net | -host ] target [ netmask Nm ] [ gw Gw ] [[ dev ] If ].
Exemplos:
Inserir uma rota para uma rede:
# route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.1.3
Inserir uma rota para um host, utilizando uma determinada interface ponto-aponto:
# route add -net 192.168.10.1 dev ppp0
Para selecionar a rota default:
# route add default gw 192.168.1.200
Roberto Amaral – Marcelo Soares Farias
Página 26
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Para remover rotas usamos praticamente a mesma sintaxe, mas ao invés do "add" usamos o "del". Se
quisermos adicionar uma rota ao subir uma determinada interface, poderíamos usar a seguinte linha dentro das
opções da interface:
iface eth0 inet static
...
up ip route add 10.0.0.0/24 via 200.X.X.Y
Entradas na Tabela de Roteamento.
Cada tabela de roteamento pode ter várias entradas. Abaixo temos alguns tipos de rotas que podem ser
adicionadas com o comando ip route.
•
unicast: Uma rota unicast é a mais comum na tabela. Isto é tipicamente um rota para uma rede de
destino. Se o tipo de rota não é especificado é assumido como sendo unicast. Ex:
# ip route add unicast 192.168.0.0/24 via 192.168.100.5
# ip route add default via 193.7.255.1
# ip route add unicast default via 206.59.29.193
# ip route add 10.40.0.0/16 via 10.72.75.254
•
broadcast: Esta rota é usada pela camada de link de dispositivos (placas Ethernet) o qual suportam a
notação de endereço broadcast. Este tipo de rota é usado somente na tabela local e é tipicamente
manuseado pelo kernel. Ex:
# ip route add table local broadcast 10.10.20.255 dev eth0 proto kernel scope link src
10.10.20.67
# ip route add table local broadcast 192.168.43.31 dev eth4 proto kernel scope link src
192.168.43.14
•
local: O kernel irá adicionar entradas para a tabela de roteamento local quando endereços IP são
adicionados para uma interface. Isto significa que os IP's estão no próprio host.
# ip route add table local local 10.10.20.64 dev eth0 proto kernel scope host src 10.10.20.67
# ip route add table local local 192.168.43.12 dev eth4 proto kernel scope host src
192.168.43.14
•
nat: Esta rota é adicionada para o kernel na tabela de roteamento local, quando o usuário tenta
configurar stateless NAT. (Re-escreve o destino do pacote) Ex:
# ip route add nat 193.7.255.184 via 172.16.82.184
# ip route add nat 10.40.0.0/16 via 172.40.0.0
•
unreachable: Quando um requisição para uma decisão de roteamento retorna um destino com rota do
tipo unreachable, um ICMP unreachable é gerado e retornado para o endereço de origem. Ex:
# ip route add unreachable 172.16.82.184
# ip route add unreachable 192.168.14.0/26
# ip route add unreachable 209.10.26.51
Roberto Amaral – Marcelo Soares Farias
Página 27
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
•
prohibit: Análogo ao unreachable mas gera um ICMP prohibit. Ex:
# ip route add prohibit 10.21.82.157
# ip route add prohibit 172.28.113.0/28
# ip route add prohibit 209.10.26.51
•
blackhole: Um pacote que casa com uma rota do tipo blackhole é descartado. Ex:
# ip route add blackhole default
# ip route add blackhole 202.143.170.0/24
# ip route add blackhole 64.65.64.0/18
•
throw: Este tipo de rota é conveniente, quando deseja-se que uma consulta na tabela de roteamento
falhe, fazendo com que o pacote continue sendo analizado no RPDB. Ex:
# ip route add throw 10.79.0.0/16
# ip route add throw 172.16.0.0/12
Configuração do Netfilter
O projeto netfilter/iptables é um subsistema de firewalling para o kernel Linux 2.4 e superiores. Com o uso
desta ferramenta definimos regras especiais para entrada, saída e passagem de pacotes entre interfaces,
podendo atuar antes ou após as ações referentes ao roteamento.
O iptables atua sobre as tabelas presentes no Kernel, que indicam situações de roteamento, de acordo com a
situação em que se encontra o pacote, a qual é referida por uma corrente de regras, ou chain.
Básico do netfilter
As tabelas do iptables são:
•
filter: é a tabela padrão, sobre a qual podemos nos referir a três correntes de regras, ou chains:
•
INPUT, pacotes que entram na interface;
•
OUTPUT, pacotes que saem da interface
•
FORWARD, pacotes que estão sendo roteados de uma interface para outra;
•
nat: esta tabela se refere ao uso do recurso de Network Address Translation ou NAT, na qual podemos
nos referir aos chains: PREROUTING, pacotes que serão alterados antes de roteamento; OUTPUT,
pacotes locais que serão alterados antes do roteamento e POSTROUTING, pacotes que serão
alterados após a aplicação das regras de roteamento;
•
mangle: usada para alterações especiais no pacote, PREROUTING, para alteração antes do
roteamento e OUTPUT, pacotes locais que serão alterados antes do roteamento.
Dentre as ações que são feitas sobre os pacotes que atendem a um determinado chain em uma dada tabela,
temos:
•
ACCEPT: aceita o pacote;
•
DROP: rejeita o pacote;
Roberto Amaral – Marcelo Soares Farias
Página 28
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
•
MASQUERADE: atua somente sobre a tabela nat e indica que será efetuado a conversão de
endereços ou NAT, conforme indicado no comando.
Podemos definir regras padrão para um determinado chain e regras mais específicas, usando:
iptables [–t TABELA] –P CHAIN AÇÃO
onde TABELA é a tabela sobre a qual estamos atuando – caso não especificarmos, será assumida a tabela
filter; CHAIN é a corrente de regras à qual o pacote está associado; e AÇÃO é a ação a ser executada.
Para adicionarmos uma regra usando iptables, procedemos da seguinte forma:
iptables [–t TABELA] –A CHAIN {OPÇÕES} –j AÇÃO
sendo OPÇÕES é um conjunto diverso de opções que podemos especificar, como interface de origem ou de
destino e TABELA, CHAIN e AÇÃO definidos como anteriormente. De modo análogo,
iptables [–t TABELA] –D CHAIN {OPÇÕES} –j AÇÃO
permite removermos uma regra.
Para limparmos todas as regras existentes de um chain usamos:
iptables [–t TABELA] –F CHAIN.
Alvo Netfilter
Regras de firewall possuem diversos alvos:
•
quatro alvos básicos :
o
ACCEPT significa deixar o pacote passar.
o
DROP significa descartar o pacote.
o
QUEUE significa passar o pacote para o userspace (caso suportado pelo kernel).
o
RETURN significa parar de atravessar esta chain e continuar na próxima regra na chain
anterior (a chain que chamou esta).
•
alvos extendidos :
o
LOG liga o logging do kernel.
o
REJECT envia como resposta um pacote de erro e descarta o pacote.
o
SNAT altera o endereço de origem de pacote e é usado somente na chain POSTROUTING.
(somente tabela nat)
--to-source endereçoip[-endereçoip][:porta-porta]
Roberto Amaral – Marcelo Soares Farias
Página 29
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
– MASQUERADE é o mesmo que SNAT mas para conexões com endereços IP atribuídos dinamicamente
(discadas). (somente tabela nat)
--to-ports porta[-porta]
– DNAT altera o endereço de destino do pacote e é usado nas chains PREROUTING e OUTPUT e em chains
definidas pelo usuário que são chamadas somente a partir destas chains. (somente tabela nat)
--to-destination endereçoip[-endereçoip][:porta-porta]
– REDIRECT altera o endereço IP de destino para enviar o pacote para a própria máquina.
--to-ports porta[-porta]
Comandos do Netfilter
Os comandos básicos do iptables são :
iptables -N chain # cria uma chain
iptables -A chain \ # adiciona regra na chain
-t tabela \ # usa tabela (filter, nat, mangle)
-p protocolo \ # tcp, udp, icmp ou all,
-s endereço-origem[/máscara] \
--sport porta[:porta] \ # porta de origem caso -p seja tcp ou udp
-d endereço-origem[/máscara] \
--dport porta[:porta] \ # porta de destino caso -p seja tcp ou udp
-j alvo \ # o que fazer se o pacote casar
-i nome-interface-entrada \# para INPUT, FORWARD, PREROUTING
-o nome-interface-saída # para FORWARD, OUTPUT, POSTROUTING
Fazendo NAT
Dicas:
Qualquer regra aplicada a SNAT usa somente a chain POSTROUTING. Antes de iniciar o uso da tabela NAT
temos que habilitar o roteamento no kernel, usando:
# echo “1” > /proc/sys/net/ipv4/ip_forward
Para que não percamos o roteamento é necessário editar o arquivo /etc/sysctl.conf e inserirmos ou
modificarmos a linha do modo que fique assim:
net.ipv4.ip_forward= 1
Exemplos de SNAT:
iptables –t nat –A POSTROUTING –s 10.0.3.1 –o eth0 –j SNAT --to 192.111.22.33
iptables –t nat –A POSTROUTING –s 10.0.3.0/8 –o eth0 –j SNAT --to 192.111.22.33
iptables –t nat –A POSTROUTING –s 10.0.3.1 –o eth0 –j SNAT --to 192.111.22.33-192.11.22.66
Roberto Amaral – Marcelo Soares Farias
Página 30
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Exemplos de DNAT:
iptables –t nat –A PREROUTING –s 10.0.3.1 –i eth0 –j DNAT --to 192.111.22.33
iptables –t nat –A PREROUTING –s 10.0.3.1 –i eth0 –j DNAT --to 192.111.22.33-192.11.22.66
iptables –t nat –A PREROUTING –i eth0 –j DNAT --to 192.111.22.33:22
Teste seus conhecimentos:
iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth1 -j MASQUERADE
Compartilhando Conexão com IPTABLE
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o INTERFACE -j MASQUERADE
Substitua o "INTERFACE" pela placa conectada na Internet. Este comando simplesmente compartilha
a conexão proveniente da placa da Internet com todas as demais placas de rede espetadas no servidor, por
isso não é necessário especificar a placa de rede local.
•
O primeiro comando ativa o "iptable_nat", o módulo do Iptables responsável por oferecer
suporte ao roteamento de pacotes via NAT.
•
O segundo comando ativa o "ip_forward", o módulo responsável pelo encaminhamento de
pacotes, utilizado pelo módulo iptable_nat.
•
O terceiro comando cria uma regra de roteamento, que orienta o servidor a direcionar para a
Internet todos os pacotes (recebidos dos clientes) que se destinarem a endereços que não
façam parte da rede local (ou seja, qualquer coisa fora da faixa 192.168.0.x). A partir daí, o
servidor passa a ser o gateway da rede.
Nem todas as distribuições instalam o executável do Iptables por padrão. Em muitas distribuições com
o Kernel 2.6, é necessário usar um quarto comando ao compartilhar uma conexão, por exemplo ADSL. Este
comando ajusta os tamanhos dos pacotes recebidos do modem ao MTU usado na rede local.
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clampmss-to-pmtu
Caso a conexão seja via via ADSL com autenticação (PPPoE), e precise usar o pppoeconf ou o adslsetup para estabelecer a conexão, lembre-se de substituir "eth0" no comando por "ppp0".
DHCP
De um modo geral o trabalho de um servidor DHCP é bastante simples. Ele responde aos pacotes de
broadcast das estações, enviando um pacote com um dos endereços IP disponíveis e os demais dados da
Roberto Amaral – Marcelo Soares Farias
Página 31
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
rede. Periodicamente o servidor DHCP verifica se as estações ainda estão lá, exigindo uma renovação do
"aluguel" do endereço IP (opção lease time). Assim os endereços IP são gastos apenas com quem realmente
estiver online, evitando que os endereços disponíveis se esgotem.
No Linux o serviço de DHCP é exercido pelo dhcp3-server que nas distribuições baseadas no Debian pode ser
instalado através do comando:
# apt-get install dhcp3-server
Os comandos "/etc/init.d/dhcp3-server start" e "/etc/init.d/dhcp3-server stop" comandam a atividade do serviço.
O arquivo de configuração é o dhcpd.conf. No Debian o caminho completo para ele é: /etc/dhcp3/dhcpd.conf
A configuração do arquivo é igual independentemente da distribuição. Um arquivo de configuração básico,
contém o seguinte:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.201;
option routers 192.168.0.10;
option domain-name-servers 200.177.250.10,200.204.0.10;
option broadcast-address 192.168.0.255;
}
A opção " default-lease-time" controla o tempo de renovação dos endereços IP. O "600" indica que o
servidor verifica a cada dez minutos se as estações ainda estão ativas. Se você tiver mais endereços IP do
que máquinas os endereços IP das estações raramente vai precisar mudar. Mas, no caso de uma rede
congestionada, o " max-lease-time" determina o tempo máximo que uma estação pode usar um determinado
endereço IP. Isso foi planejado para ambientes onde haja escassez de endereços IP.
A opção "range" determina a faixa de endereços IP que será usada pelo servidor. Se você utiliza a faixa de
endereços 192.168.0.1 até 192.168.0.254 por exemplo, pode reservar os endereços de 192.168.0.1 a
192.168.0.100 para estações configuradas com IP fixo e usar os demais para o DHCP.
Na "option routers" vai o endereço do default gateway da rede, ou seja, o endereço do servidor que está
compartilhando a conexão. Não é necessário que o mesmo micro que está compartilhando a conexão rode
também o servidor DHCP.
A opção "option domain-name-servers" contém os servidores DNS que serão usados pelas estações. Ao usar
dois ou mais endereços eles devem ser separados por vírgula, sem espaços.
Ao fazer qualquer alteração no arquivo, você deve reiniciar o servidor DHCP usando o comando:
# /etc/init.d/dhcp3-server restart
Roberto Amaral – Marcelo Soares Farias
Página 32
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Sempre que configurar um servidor com duas placas de rede, é importante que o servidor DHCP seja
configurado para escutar apenas na placa da rede local. No Debian, esta configuração vai no arquivo
"/etc/default/dhcp3-server". Procure pela linha:
INTERFACES=""
... e adicione a placa que o servidor DHCP deve escutar, como em:
INTERFACES="eth0"
Para que a configuração entre em vigor, basta reiniciar o serviço novamente.
Trabalho prático sobre conhecimentos adquiridos:
Juntar a um amigo, utilize um dos computadores para ser o roteador (compartilhamento de conexão).
1º) Execício
Máquina 1
Crie um alias (192.168.0.X)  x = número da máquina.
Crie um compartilhamento com iptable.
Máquina 2
Coloque o endereço desta como 192.168.0.x  x = número da máquina
Coloque o Máquina 1 como gateway.
Ping o site www.utp.br
Com o Lynx verifique se sua conexão ficou correta, acessando o www.google.com.br
2º) Execício
Máquina 1
Crie um alias (192.168.0.X)  x = número da máquina.
Crie um compartilhamento com iptables.
Filtre com iptable o protocolo ICMP
Máquina 2
Coloque o endereço desta como 192.168.0.x  x = número da máquina
Coloque o Máquina 1 como gateway.
Ping o site www.utp.br
Com o Lynx verifique se sua conexão ficou correta, acessando o www.google.com.br
Roberto Amaral – Marcelo Soares Farias
Página 33
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Universidade Tuiuti do Paraná –
UTP
Faculdade de Ciências Exatas e de Tecnologia
Cursos de Computação
Grupo de Estudos de Redes de Computadores e Sistemas Distribuídos
Professores:
Marcelo Soares Farias
Roberto Néia Amaral
Roberto Amaral – Marcelo Soares Farias
Página 34
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Curitiba, 2008
Samba
Com o SAMBA é possível compartilhar diretórios, impressoras, acessar arquivos na rede exatamente como em
redes Microsoft. Mas neste caso, seu servidor é um Linux rodando uma aplicação específica.
Instalação
Para instalar o SAMBA é necessário executar o comando: ( apt-get install samba smbclient smbfs )
Algumas perguntas aparecerão e aparecem com a resposta sugerida:
Senhas criptografadas? Sim
Modificar para usar conf Wins do dhcp? Não
Como deseja executar o Samba? Daemons
Gerar a base de dados? Sim
Configuração
Toda a configuração do SAMBA é centralizada no arquivo smb.conf, que deve ser guardado no diretório
/etc/samba. Nele é que são descritos os compartilhamentos, permissões de acesso, impressoras, dentre outras
configurações disponíveis. Quando instalado, o SAMBA disponibiliza os seguintes componentes:
smbd - O servidor SAMBA.
nmbd - O Servidor de nomes NetBios.
smbclient - Cliente SMB para sistemas Unix.
smbpasswd - Alterar senhas (encriptadas) de usuários smb.
smbspool - Cliente para envio de impresão a sistemas Linux.
smbstatus - Apresenta a situação atual das conexoes SMB no Host.
testparm - Verifica o arquivo smb.conf (configuração do SAMBA).
testprns - Verifica a comunicação via rede com as impressoras.
O smb.conf é dividido basicamente em três partes: a configuração do servidor SAMBA (parâmetros na seção
[global]), a configuração dos diretórios/pastas pessoais dos usuários (parâmetros na seção [homes]) e as
demais seções que correspondem aos diretórios compartilhados ou impressoras.
Nome de máquina (nome NetBios)
Toda a máquina em uma rede NetBEUI é identificada por um nome, este nome deve ser único na rede e
permite que outras máquinas acessem os recursos disponibilizados ou que sejam enviadas mensagens para a
máquina. Este nome é composto de 16 caracteres, sendo 15 que identificam a máquina e o último o tipo de
serviço que ela disponibiliza. O tipo de serviço é associado com o nome da máquina e registrado em servidores
de nomes confirme a configuração da máquina.
Roberto Amaral – Marcelo Soares Farias
Página 35
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Grupo de trabalho
O grupo de trabalho organiza a estrutura de máquinas da rede em forma de árvore, facilitando sua pesquisa e
localização. Tomemos como exemplo uma empresa grande com os departamentos comunicação, redes, web,
rh, as máquinas que pertencem ao grupo de redes serão agrupadas no programa de navegação:
redes
técnico; marcelo; henrique; michelle
rh
burns
web
web1; web2; web3
comunicacao
comunic1; comunic2; comunic3
A segurança no acesso a arquivos e diretórios na configuração de grupo de trabalho é controlada pela própria
máquina, normalmente usando segurança a nível de compartilhamento. Esta segurança funciona definindo um
usuário/senha para acessar cada compartilhamento que a máquina possui. O Lan Manager, Windows for
Workgroups, Windows 95, Windows 98, XP Home Edition usam este nível de acesso por padrão.
Domínio
O funcionamento é semelhante ao grupo de trabalho, com a diferença que a segurança é controlada pela
máquina central (PDC) usando diretivas de acesso e grupos. O PDC (Primary Domain Controller) deverá ter
todas as contas de acesso que serão utilizadas pelo usuário para acessar os recursos existentes em outras
máquinas, script de logon que poderá ser executado em cada máquina para fazer ajustes, sincronismo,
manutenção ou qualquer outra tarefa programada pelo administrador do sistema.
Compartilhamento
Um compartilhamento é um recurso da máquina local que é disponibilizado para acesso via rede, que poderá
ser mapeada por outra máquina. O compartilhamento pode ser um diretório, arquivo, impressora. Além de
permitir o acesso do usuário, o compartilhamento pode ser protegido por senha, e ter controle de acesso de
leitura/gravação, monitoração de acessos, diretórios ocultos, autenticação via PDC e outras formas para
restringir e garantir segurança na disponibilidade dos dados.
Um compartilhamento no SAMBA pode ser acessível publicamente (sem senha) ou estar rigidamente protegido
tendo que passar por diversas barreiras para chegar ao seu conteúdo, como senhas, endereço de origem,
interfaces, usuários autorizados, permissões de visualização, etc.
Roberto Amaral – Marcelo Soares Farias
Página 36
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Mapeamento
Mapear significa pegar um diretório/arquivo/impressora compartilhado por alguma máquina da rede para ser
acessada pela máquina local. Para mapear algum recurso de rede, é necessário que ele seja compartilhado na
outra máquina. Por exemplo, o diretório /usr compartilhado com o nome usr, pode ser mapeado por uma
máquina Windows como a unidade F:, ou mapeado por uma máquina Linux no diretório /mnt/samba.
O programa responsável por mapear unidades compartilhadas no Linux é o smbmount e smbclient.
Navegação na Rede e controle de domínio
Esta função é controlada pelo nmbd que fica ativo o tempo todo disponibilizando os recursos da máquina na
rede, participando de eleições NetBIOS, fazer logon de máquinas no domínio, etc.
A função de navegação na rede é feita utilizando o compartilhamento IPC$. Este compartilhamento possui
acesso público somente leitura e utiliza o usuário "guest" para disponibilização de seus recursos.
OBS: A função de navegação (browsing) poderá não funcionar corretamente caso a máquina não consiga
resolver nomes NetBIOS para endereços IP.
smbmount
O smbmount é uma ferramenta que permite a montagem de um disco compartilhado por uma máquina
NetBEUI remota como uma partição. Alguns exemplos:
smbmount //servidor/discoc /mnt/discoc
Monta o compartilhamento de //servidor/discoc em /mnt/discoc usando o nome de usuário atual. Será pedido
uma senha para acessar o conteúdo do compartilhamento, caso ele seja público, você pode digitar qualquer
senha ou simplesmente pressionar enter.
smbmount //servidor/discoc /mnt/discoc -N
Semelhante ao comando cima, com a diferença que o parâmetro -N não pergunta por uma senha. Isto é ideal
para acessar compartilhamentos anônimos.
smbmount //servidor/discoc /mnt/discoc -o username=adminsamba,workgroup=teste
Semelhante aos anteriores, mas acessa o compartilhamento usando adminsamba como nome de usuário e
teste como grupo de trabalho. Este método é ideal para redes que tem o nível de acesso por usuário ou para
acessar recursos compartilhados em um domínio.
smbclient
O smbclient é uma ferramenta de navegação em servidores SAMBA. Ao invés dela montar o compartilhamento
como um disco local, você poderá navegar na estrutura do servidor de forma semelhante a um cliente FTP e
executar comandos como ls, get, put para fazer a transferência de arquivos entre a máquina remota e a
máquina local. Também é através dele que é feita a interface com impressoras compartilhadas remotamente.
Alguns exemplos do uso do smbclient:
Roberto Amaral – Marcelo Soares Farias
Página 37
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
smbclient -L samba1
Lista todos os compartilhamentos existentes (-L) no servidor samba1.
smbclient //samba1/discoc
Acessa o conteúdo do compartilhamento discoc no servidor samba1.
smbclient //samba1/discoc -N
Idêntico ao acima, mas não utiliza senha (ideal para compartilhamentos com acesso anônimo).
smbclient //samba1/discoc -I 192.168.1.2
Se conecta ao compartilhamento usando o endereço IP 192.168.1.2 ao invés da resolução de nomes.
smbclient //samba1/discoc -U user -W teste
Se conecta ao compartilhamento como usuário user usando o grupo de trabalho teste.
smbclient //samba1/discoc -U user%senha01 -W teste
Idêntico ao acima, mas também envia a senha senha01 para fazer a conexão diretamente.
Caso receba a mensagem NT Status Access Denied, isto quer dizer que não possui direitos de acesso
adequados para listas ou acessar os compartilhamentos da máquina. Nesse caso, utilize as opções -U usuário
e -W grupo/domínio para fazer acesso com uma conta válida de usuário existente na máquina.
OBS:Note que a ordem das opções faz diferença no smbmount.
O smb.conf
Um parâmetro é definido no formato nome = valor. Na configuração de booleanos, a seguinte sintaxe pode ser
usada: 0 ou 1 - yes ou no - true ou false
Linhas iniciadas por # ou ; são tratadas como comentário. Quebras de linha podem ser especificadas com uma
\ no final da linha.
Nomes e grupos de trabalho
netbios name = [nome do servidor]
Especifica o nome NetBIOS primário do servidor samba. Caso não seja ajustado, ele usará o hostname de sua
máquina como valor padrão. Ex.: netbios name = Servidorsamba.
workgroup = [grupo de trabalho/domínio]
Diz qual o nome do grupo de trabalho/domínio que a máquina samba pertencerá. Ex.: workgroup = empresa.
netbios aliases = [nomes alternativos ao sistema]
Permite o uso de nomes alternativos ao servidor, separados por espaços. Ex.: teste1 teste2.
server string = [identificação]
Identificação enviada do servidor samba para o ambiente de rede. A string padrão é Samba %v (%v é
substituída pela versão do samba) Ex: server string = Servidor Samba versão %v.
name resolve order = [ordem]
Roberto Amaral – Marcelo Soares Farias
Página 38
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Define a ordem de pesquisa para a resolução de nomes no samba. A ordem padrão é: lmhosts host wins bcast,
que é a melhor para resolução rápida e que tente gerar menos tráfego broadcast possível.
Restrições de acesso/mapeamento de usuários
guest account = [conta]
Define a conta local de usuário que será mapeada quando um usuário se conectar sem senha (usuário guest).
invalid users
Define uma lista de usuários que não terão acesso aos recursos do servidor ou compartilhamento. É seguro
restringir o acesso samba a usuários com grande poder no sistema (como o root).
valid users
Semelhante a opção invalid users mas permite que somente os usuários especificados tenham acesso ao
sistema.
default service = nome
Caso o serviço que o usuário deseja se conectar não for encontrado no servidor, o SAMBA mapeará o serviço
especificado nesta diretiva como alternativa. A variável "%S" e o caracter "_" podem ser interessantes em
algumas alternativas de configuração. A opção default é um sinônimo para esta opção. Caso utilize esta opção,
crie o compartilhamento em modo somente leitura e com acesso público, caso contrário (dependendo do
planejamento de partições e segurança do sistema de arquivos) a máquina poderá ser derrubada sem
dificuldades.
username map = [arquivo]
Especifica um arquivo que faz o mapeamento entre nomes fornecidos por clientes e nomes de contas Unix
locais.
obey pam restrictions = yes
Indica se as restrições do usuário nos módulos PAM terão efeito também no SAMBA.
Níveis de autenticação
Define o nível de segurança do servidor. Os seguintes valores são válidos:
share - Usada principalmente quando apenas a senha é enviada por compartilhamento acessado para o
servidor, caso muito típico em sistemas Lan Manager e Windows for Workgroups.
Mesmo assim o samba tenta mapear para um UID de usuário local do sistema usando os seguintes métodos
(retirado da página de manual do samba):
Se o parâmetro guest only é usado no compartilhamento junto com o guest ok, o acesso é
imediatamente permitido, sem verificar inclusive a senha.
Caso um nome de usuário seja enviado junto com a senha, ele é utilizado para mapear o UID e aplicar
as permissões deste usuário (como acontece no nível de segurança user).
Roberto Amaral – Marcelo Soares Farias
Página 39
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Se ele usou um nome para fazer o logon no Windows este nome será usado como usuário local do
SAMBA. Caso ele seja diferente, você deverá usar o mapeamento de nomes para associar o nome
remoto do nome local
O nome do serviço é tentado como nome de usuário.
O nome da máquina NetBios é tentada como nome de usuário
Os usuários especificados na opção user dos compartilhamentos são utilizados.
Caso nenhum destes métodos acima for satisfeito, o acesso é NEGADO.
Hoje em dia, o uso do nível de acesso share é raramente usado, porque todos os sistemas a partir do Windows
95 e acima enviam o nome de usuário ao acessar um compartilhamento (caindo na segunda checagem do
nível share), sendo equivalente a usar o nível user. Entretanto, o nível de segurança share é recomendado
para servidores onde TODO o conteúdo deve ter acesso público (seja leitura ou gravação) e o parâmetro guest
shares também funciona nativamente.
As senhas criptografadas (encrypt passwords = 1) NÃO funcionarão no nível share, lembre-se deste detalhe.
user - Este é o padrão. O usuário precisa ter uma conta de usuário no Linux para acessar seus
compartilhamentos. A mesma conta de usuário/senha deverá ser usada no Windows para acessar seus
recursos ou realizado um mapeamento de nomes de usuários. Este é o padrão do SAMBA. No nível de acesso
user o usuário precisa ser autenticado de qualquer forma, inclusive se for usado o parâmetro guest only ou
user. Os seguintes passos são usados para autorizar uma conexão usando o nível user (retirado da
documentação do SAMBA):
É tentada a validação usando o nome/senha passados pelo cliente. Se tudo estiver OK, a conexão é permitida.
Caso já tenha se autenticado anteriormente para acessar o recurso e forneceu a senha correta, o acesso é
permitido.
O nome NetBIOS da máquina do cliente e qualquer nome de usuário que foi usado é novamente tentado junto
com a senha para tentar permitir o acesso ao recurso compartilhado.
Caso o cliente tenha validado o nome/senha com o servidor e o cliente enviou novamente o token de validação,
este nome de usuário é usado.
É tentada a checagem com o parâmetro user no compartilhamento..
É verificado se o serviço é público, então a conexão é feita usando o usuário guest account e ignorando a
senha.
domain - Neste nível, o acesso só será permitido quando a máquina for adicionada ao domínio com o
smbpasswd. Neste nível de acesso, a conta de usuário será validada em um servidor PDC (controlador de
domínio) e o acesso aos recursos das máquinas que fazem parte do domínio será feito a partir do PDC.
server - A máquina samba tentara autenticar o usuário em outro servidor NT (ou samba). No caso da
autenticação falhar, será usado o nível de acesso user na base de usuários local (será necessário o arquivo de
senhas criptografado do samba para que a autenticação local funcione. Este nível é bastante usado quando
configuramos um servidor de perfis de usuários ou logon separado do PDC.
Roberto Amaral – Marcelo Soares Farias
Página 40
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Log de acessos/serviços
log file= [arquivo]
Define a localização e nome do arquivo de log gerado pelo samba. As variáveis de expansão podem ser
usadas caso o administrador queira ter um melhor controle dos logs gerados. Ex.: /var/log/samba/samba-log%m.
OBS: Se possível coloque uma extensão no arquivo de log gerado pelo SAMBA (como .log). O motivo disto é
porque se estes logs forem rotacionados pelo logrotate você terá problemas de recompactação múltiplas caso
utilize um coringa samba-log-*, gerando arquivos como .gz.gz.gz.., lotando a tabela de arquivos do diretório e
deixando sua máquina em um loop de compactação.
max log size = [tamanho]
Especifica o tamanho máximo em Kb do arquivo de log gerado pelo samba. O valor padrão é 5000Kb (5MB).
debug pid = [valor]
Este processo adiciona a pid aos logs gerados pelo processo smbd Isto é útil para depuração caso existam
múltiplos processos rodando. O valor padrão é no e a opção debug timestamp deve ser yes para esta opção ter
efeito.
debug timestamp = [valor]
Ativa ou desativa a gravação de data/hora nos arquivos de log gerados pelo samba. O valor padrão é yes.
debug level = [valor]
Aumenta o nível de depuração dos daemons do SAMBA de 0 a 9. Um nível de depuração interessante e que
produz uma quantidade razoável de dados para configuração de um logrotate só para o SAMBA é o 2,
produzindo a lista de todos os compartilhamentos acessados, quem acessou, data/hora (dependendo das
outras opções de depuração). Isto permite ao administrador saber exatamente o que está sendo acessado e
por quem, quais as tentativas de acesso. Assim terá certeza que o conteúdo não está sendo acessado
indevidamente. O nível de depuração 0 é o padrão.
debug uid = [valor]
Este parâmetro inclui o euid, egid, uid, gid nos arquivos de log. O valor padrão é no.
lock directory = [diretório]
Define onde serão gravados os arquivos de lock gerados pelo samba.
Navegação no servidor/tipo de servidor
os level=[num]
Especifica o nível do sistema operacional. Este número é usado para as eleições netbios para definir o
navegador de grupo local e controlador de domínio. O valor pode ser de 0 a 255, o padrão é 32.
announce as = [sistema]
Selecione o nome que o samba (nmbd) se anunciará na lista de pesquisa de rede. Os seguintes nomes podem
ser usados: NT Server (ou NT) - Anuncia como Windows NT Server. Este é o padrão.
NT Workstation - Anuncia-se como um NT Workstation.
Roberto Amaral – Marcelo Soares Farias
Página 41
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Win95 ou WfW - Anuncia-se na rede como uma estação Windows 9x, Windows for Workgroups, Windows NT
Server e Windows NT Workstation de uma só vez.
domain master = [valor]
Diz se o servidor tentará se tornar o navegador principal de domínio. Os valores que podem ser especificados
são: yes, no e auto. O valor padrão é auto.
local master = [valor]
Diz se o servidor participará ou não das eleições para navegador local do grupo de trabalho (workgroup). Os
valores que podem ser especificados são: yes, no. O valor padrão é yes. Para vencer a eleição, o samba
precisa ter o valor de os level maior que os demais.
Note também que o Windows NT não aceita perder as eleições e convoca uma nova eleição caso ele perca.
Como esta eleição é feita via broadcasting, isso gera um tráfego grande na rede. Desta forma, se tiver um
computador NT na rede configure este valor para "no".
preferred master = [valor]
Diz se o servidor samba terá ou não vantagens de ganhar uma eleição local. Se estiver configurado para "yes",
o servidor samba pedirá uma eleição e terá vantagens para ganha-la. O servidor poderá se tornar
garantidamente o navegador principal do domínio se esta opção for usada em conjunto com domain master =
1. Os valores especificados podem ser yes, no e auto, o padrão é auto.
Antes de ajustar este valor para yes, verifique se existem outros servidores NetBIOS em sua rede que tem
preferência para se tornar o master principal, pois poderá ocorrer um tráfego alto de broadcasting causado
pelas eleições solicitadas pelas outras máquinas.
Seção [homes]
Esta seção tem a função especial de disponibilizar o diretório home do usuário. Quando o usuário envia seu
nome de login como compartilhamento é feita uma busca no arquivo smb.conf procurando por um nome de
compartilhamento que confira. Caso nenhum seja encontrado, é feita uma busca por um nome de usuário
correspondente no arquivo /etc/passwd, se um nome conferir e a senha enviada também, o diretório de usuário
é disponibilizado como um compartilhamento com o mesmo nome do usuário local. O diretório home do usuário
poderá ser modificado com o uso de mapeamento de nomes. Quando o caminho do compartilhamento não for
especificado, o SAMBA utilizará o diretório home do usuário (no /etc/passwd).
Para maior segurança da instalação, principalmente porque o diretório home do usuário não é um requerimento
para a autenticação de usuário, recomendo usar a variável de substituição %S apontando para um diretório
com as permissões apropriadas configuradas em seu sistema, por exemplo:
[homes]
comment = Diretórios de Usuários
path=/pub/usuarios/%S
Roberto Amaral – Marcelo Soares Farias
Página 42
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Você apenas terá o trabalho extra de criar os diretórios de usuários que farão acesso ao sistema. Isto não será
nenhum problema após você programar um shell script simples que verifique os nomes de contas em
/etc/passwd e crie os diretórios com as permissões/grupos adequados.
Os parâmetros aceitos em [homes] aqui são os mesmos usados para compartilhamentos normais.
OBS1:Caso nenhum caminho de compartilhamento seja utilizado, o diretório home do usuário será
compartilhado.
OBS2:Não utilize o parâmetro public yes na seção guest, caso contrário todos os diretórios de usuários serão
lidos por todos.
Seção [printers]
Esta seção tem a função de disponibilizar as impressoras existentes no sistema (lp, lp1, lp2, etc) existentes no
/etc/printcap como compartilhamento de sistemas Windows. O método que os nomes de impressoras são
pesquisados é idêntico a forma feita para a seção [homes]: Primeiro o nome do compartilhamento é
pesquisado como um nome de serviço, depois se ele é um nome de usuário (tentando mapear o serviço
disponibilizado em [homes]), depois será verificado a seção [printers].
OBS:É importante lembrar que a seção [printers] DEVE ser definida como printable usando o parâmetro
printable = yes para funcionar. O utilitário testparm poderá ser usado para verificar problemas no arquivo de
configuração do SAMBA.
Compartilhamento de arquivos e diretórios
Esta seção documenta como disponibilizar arquivos e impressoras com o SAMBA e os parâmetros usados
para realizar restrições de compartilhamento, modo que os dados serão disponibilizados e itens de
performance. A maior parte destes parâmetros é empregada em serviços do SAMBA, mas nada impede que
também sejam colocados na seção [global] do arquivo de configuração, principalmente quando isto é válido
para diversos serviços compartilhados.
Descrição de parâmetros usados em compartilhamento
Abaixo temos algumas das opções que podem ser usadas para controlar o comportamento do
compartilhamento de arquivos por serviços no servidor SAMBA: path
Indica o diretório que será compartilhado. Lembre-se que o usuário terá as permissões de acesso que ele teria
caso estivesse logado no sistema como um usuário UNIX normal, exceto se estiver fazendo mapeamento para
outros nomes de usuários. Ex: path=/pub - Compartilha o diretório local /pub.
OBS: Quando não é definido um path, o diretório /tmp é usado como padrão.
comment
Descrição do compartilhamento que será mostrada na janela de procura de rede ou no smbclient -L maquina.
Ex: comment=Pasta de conteúdo público do sistema.
Roberto Amaral – Marcelo Soares Farias
Página 43
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
browseable
Define se o compartilhamento será ou não exibido na janela de procura de rede. Mesmo não sendo exibido, o
compartilhamento poderá ser acessado. Ex: browseable=yes - Lista o compartilhamento na janela de pesquisa
de servidores.
guest account
Conta que será usada para fazer acesso sem senha (convidado) quando o parâmetro guest ok ou public forem
usados em um compartilhamento. Por padrão ela é mapeada para o usuário nobody. É importante especificar
uma nome de usuário guest (convidado), principalmente porque seu UID será usado para fazer várias
operações no SAMBA, como exibir os recursos disponíveis na máquina para a rede. Por motivos claros, é
recomendável que este usuário não tenha acesso login ao sistema.
Caso não tenha a intenção de ocultar o SAMBA na lista de máquinas da rede (fazendo apenas acesso direto
aos recursos), especifique um valor para esta opção.
Ex: guest account = sambausr - Mapeia os usuários se conectando sem senha para o usuário sambausr, desde
que o acesso guest seja permitido pela opção public.
public
Permitem aos usuários usuários se conectarem ao compartilhamento sem fornecer uma senha usando o
usuário guest. O UID que o usuário guest será mapeado é especificado pelo parâmetro guest account. O
parâmetro guest ok é equivalente a public. Ex: public = no - Não permite
guest only
Permite somente conexões guest ao recurso. O UID do usuário é mapeado para guest, mesmo que forneça
uma senha correta. O valor padrão é no. Ex: guest only = no.
write list
Lista de usuários separados por espaço ou vírgula que poderão ler e gravar no compartilhamento. Caso o
nome for iniciado por "@", o nome especificado será tratado como um grupo UNIX (/etc/group) e todos os
usuários daquele grupo terão acesso de gravação. O uso deste parâmetro ignora o read only = yes.
Ex: write list = adminsamba, @usuarios - Permite acesso gravação somente do usuário adminsamba e todos
os usuários pertencentes ao grupo @usuarios.
OBS: - O significado de "@" nos parâmetros "invalid users"/"valid users" é diferente das opções write list e read
list.
read list
Lista de usuários separados por espaço ou vírgula que poderão apenas ler o compartilhamento. O caracter "@"
pode ser especificado para fazer referência a grupos, como no write list. O uso deste parâmetro ignora o read
only = no. Ex: read list = nobody, system, operador, @usuarios - Permite acesso de leitura somente do usuário
nobody, system, operador e todos os usuários pertencentes ao grupo @usuarios.
user
Especifica um ou mais nomes de usuários ou grupos (caso o nome seja seguido de "@") para checagem de
senha. Quando o cliente somente fornece uma senha (especialmente na rede Lan Manager, Windows for
Roberto Amaral – Marcelo Soares Farias
Página 44
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Workgroups e primeira versão do Windows 95) ela será validada no banco de dados de senhas usando o
usuário especificado nesta opção. Ex: user = john @usuariosrede
only user
Especifica se somente serão permitidas conexões vindas de usuários da diretiva user. O padrão é no. Caso
deseje restringir o acesso a determinados usuários, o certo é faze-lo usando valid users e invalid users. O uso
de only user é apropriado quando é necessário um controle específico de acesso sobre a diretiva user. Ex:
only user = no.
locking
Permite ao SAMBA fazer um lock real de arquivo ou apenas simular. Caso seja especificado como "0", o
arquivo não é bloqueado para acesso exclusivo no servidor mas uma resposta positiva de lock é retornada ao
cliente. Se definido como "1", um lock real é feito. O padrão é yes. Ex: locking = yes
available
Faz o SAMBA ignorar o compartilhamento (como se tivesse retirado do servidor). O valor padrão é "no".
follow symlinks
Permite o uso de links simbólicos no compartilhamento (veja também a opção wide links). A desativação desta
opção diminui um pouco a performance de acesso aos arquivos. Como é restrita a compartilhamento, o
impacto de segurança depende dos dados sendo compartilhados. O valor padrão desta opção é "YES". Ex:
follow symlinks = yes
wide links
Permite apontar para links simbólicos para fora do compartilhamento exportado pelo SAMBA. O valor padrão
esta opção é "YES". Ex: wide links = yes.
OBS: - A desativação desta opção causa um aumento na performance do servidor SAMBA, evitando a
chamada de funções do sistema para resolver os links. Entretanto, diminui a segurança do seu servidor, pois
facilita a ocorrência de ataques usando links simbólicos.
Lembre-se mais uma vez que a segurança do seu sistema começa pela política e uma instalação bem
configurada, isso já implica desde a escolha de sua distribuição até o conhecimento de permissões e
planejamento na implantação do servidor de arquivos.
dont descend
Não mostra o conteúdo de diretórios especificados. Ex: dont descend = /root, /proc, /win/windows,
"/win/Arquivos de Programas", "/win/program files".
printable
Especifica se o compartilhamento é uma impressora (yes) ou um compartilhamento de arquivo/diretório (no). O
padrão é "no".
read only
Especifica se o compartilhamento é somente para leitura (yes) ou não (no) para todos os usuários. O
parâmetro writable é um antônimo equivalente a este parâmetro, só que utiliza as opções invertidas. Por
segurança, o valor padrão é somente leitura. Ex: read only = yes.
create mask
Roberto Amaral – Marcelo Soares Farias
Página 45
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Modo padrão para criação de arquivos no compartilhamento. O parâmetro "create mode" é um sinônimo para
este. O modo de arquivos deve ser especificado em formato octal. Ex: create mask = 0600.
directory mask
Modo padrão para a criação de diretórios no compartilhamento. O parâmetro "directory mode" é um sinônimo
para este. O modo de diretório deve ser especificado em formato octal. Ex: directory mask = 0700.
getwd cache
Permite utilizar um cache para acesso as requisições getwd, diminuindo o número de ciclos de processamento
para acesso a arquivos/diretórios. O valor padrão é "Yes".
write cache size
Tamanho do cache de leitura/gravação do compartilhamento. Este valor é especificado em bytes e o padrão é
"0". Ex: write cache size = 384000.
inherit permissions
Permite herdar permissões de arquivos/diretórios do diretório pai quando novos arquivos/diretórios são criados,
isto inclui bits SGID (set group ID). O padrão é NÃO herdar permissões. O uso desta opção substitui as opções
fornecidas por create mask, directory mask, force create mask e force directory mask. Ex: inherit permissions.
preexec
Executa um comando antes a abertura de um compartilhamento. O parâmetro exec é um sinônimo para este.
postexec
Executa um comando depois da utilização do compartilhamento.
preexec close
Fecha imediatamente o compartilhamento caso o valor do comando executado pela opção preexec seja
diferente de 0. O uso desta opção só faz sentido em conjunto com preexec. O valor padrão é "no". Exemplo:
preexec close = yes.
volume = nome
Retorna o nome de volume especificado quando é feito o acesso ao compartilhamento. Isto é muito útil para
instalações onde o serial do CD, disquete ou HD é verificado durante o acesso. Isto acontece com freqüência
em produtos de fabricantes proprietários como forma de evitar a execução ilegal do programa.
WINS
Este é um serviço de resolução de nomes que funciona de forma semelhante ao DNS, só que voltado para o
NetBIOS. Quando uma máquina cliente NetBIOS entra na rede, o servidor WINS pega seu nome e IP e inclui
em uma tabela para futura consulta pelos clientes da rede.
Esta tabela consultada toda vez que um cliente NetBIOS solicita um nome de máquina, componentes do grupo
de trabalho ou domínio na rede. Uma outra aplicação importante de um servidor WINS é permitir a resolução
de nomes em pontos de redes que requerem roteamento, a simplicidade de um protocolo não roteável como o
NetBIOS fica limitada a simplicidade das instalações de rede. Um servidor WINS pode ser instalado em cada
ponta da rede e eles trocarem dados entre si e atualizar suas tabelas de nomes/grupos de trabalhos/IPs.
A resolução de nomes de máquinas será feita consultando diretamente a máquina WINS ao invés de
broadcasting (que geram um tráfego alto na rede).
Roberto Amaral – Marcelo Soares Farias
Página 46
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Configurando o servidor WINS
Para ativar o servidor WINS no samba, inclua as seguinte linha na seção [global] do seu arquivo
/etc/samba/smb.conf:
[global]
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
O parâmetro wins proxy pode ser necessário para alguns clientes antigos que tenham problemas no envio de
suas requisições WINS. O dns proxy permite que o servidor WINS faça a pesquisa no DNS para localização de
nomes de máquinas caso não exista no cache. Ambas as opções wins support, wins proxy e dns proxy tem
como valor padrão não.
Se estiver configurando uma subrede com masquerade para acesso a um PDC ou um servidor WINS, você
terá que mexer no gateway central para apontar uma rota para o gateway masquerade. O motivo disto é
porque o masquerade do Linux atua somente nos cabeçalhos, mas o IP da estação é enviada e processada
pelo PDC para retornar uma resposta. Da mesma forma, este IP é registrado no servidor WINS para uso das
estações de trabalho. Isto só vai ser resolvido quando for escrito um módulo de conntrack para conexões
SAMBA.
OBS1: NUNCA configure mais de um servidor WINS em uma mesma rede.
OBS2: NÃO especifique o parâmetro wins server caso esteja usando o suporte a WINS.
Ativando o suporte a senhas criptografadas
O uso de senhas criptografadas é um requisito quando você deseja configurar o SAMBA para ser um servidor
PDC ou um cliente de um domínio. Quando utiliza senhas criptografadas, elas trafegam em formato seguro
através da rede, dificultando a captura por outras pessoas. Em versões mais recentes do Windows (a partir da
OSR/2 e NT 4 service pack3) o suporte a senhas criptografadas vem habilitado como padrão para login e
utilização de serviços da rede.
O utilitário smbpasswd é o programa utilizado para gerenciar o arquivo de senhas e também o status de contas
de usuários/máquinas do domínio.
Edite o arquivo /etc/samba/smb.conf e altere as seguintes linhas na seção [global] para adicionar o suporte a
senhas criptografadas:
[global]
encrypt passwords = true
smb passwd file =/etc/samba/smbpasswd
A linha encrypt passwords = true diz para usar senhas criptografadas e que o arquivo /etc/samba/smbpasswd
contém as senhas (smb passwd file =/etc/samba/smbpasswd).
Roberto Amaral – Marcelo Soares Farias
Página 47
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Opções da conta criada no smbpasswd:
U - Especifica que a conta é uma conta de usuário normal
D - Significa que a conta foi desativada com a opção -d
W - Especifica que a conta é uma conta de máquina criada com a opção -m
N - A conta não possui senha
Para ativar a conta do usuário adminsamba, usamos o comando:
smbpasswd -U adminsamba
Digite a senha do usuário e repita para confirmar. Assim que a senha for definida, a conta do usuário é ativada.
Você também pode especificar a opção "-s" para entrar com a senha pela entrada padrão (muito útil em
scripts). Apenas tenha cuidado para que esta senha não seja divulgada em seus arquivos/processos.
Reinicie o processo do SAMBA.
Verifique se o suporte a senhas criptografadas está funcionando com o comando:
smbclient -L localhost -U adminsamba
Substitua localhost pelo IP do servidor e adminsamba pelo usuário. Caso obtenha a mensagem session setup
failed: NT_STATUS_LOGON_FAILURE significa que a senha informada está incorreta.
Migrando de senhas texto plano para criptografadas
No SAMBA, é possível fazer um processo de migração de senhas em texto plano de usuários para
criptografadas sem que eles deixem de acessar o servidor durante esta mudança. Caso este seja seu caso,
insira o parâmetro
update encrypted = yes
na seção [global] do seu arquivo de configuração smb.conf. A senha criptografada é definida assim que o
usuário se logar usando sua senha em texto plano. Não se esqueça de desativar esta opção ou remove-la
após o prazo necessário para que todas as senhas sejam trocadas.
Adicionando usuários no smbpasswd
A adição de um usuário no smbpasswd segue duas etapas: primeiro é necessário adiciona-lo no sistema com o
adduser e depois no samba com o smbpasswd. Você deve estar se perguntando qual a vantagem de se ter um
arquivo separado de usuários se ainda é preciso criar o login nos dois arquivos; O SAMBA para fazer o
controle de acesso aos arquivos utiliza além dos mecanismos tradicionais do NT, o controle de permissões a
nível UNIX para manter os arquivos ainda mais restritos. Além disso, será necessário usuários e grupos para
criação e acesso ao sistema.
Adicione um usuário no sistema com o comando:
Roberto Amaral – Marcelo Soares Farias
Página 48
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
useradd -g grupo-dominio -c "Usuário de Domínio" -s /bin/false -d /dev/null joão
Este comando adiciona o usuário "joao" no grupo grupo-dominio e não define nem uma shell, diretório home
nem senha para este usuário. Isto mantém o sistema mais seguro e não interfere no funcionamento do
SAMBA, pois somente é necessário para fazer o mapeamento de UID/GID de usuários com as permissões do
sistema UNIX.
É interessante padronizar os usuários criados no domínio para um mesmo grupo para pesquisa e outras
coisas.
Crie o usuário "joao" no SAMBA:
smbpasswd -a joao
Será solicitada a senha do usuário.
Removendo usuários do smbpasswd
Utilize o comando
smbpasswd -x usuario
para remover um usuário do arquivo smbpasswd. Se desejar, você pode manter o usuário no /etc/passwd ou
remove-lo com o userdel.
OBS: Removendo um usuário deste arquivo fará que ele não tenha mais acesso ao SAMBA. Utilize o comando
smbpasswd -a teste
Desabilitando uma conta no smbpasswd
Como administrador, pode ser necessário que precise desativar temporariamente uma conta de usuário por
alguma situação qualquer (má utilização de recursos, dúvida se a conta está sendo usada, etc.). Remover uma
conta e novamente adicioná-la então não é uma situação muito prática. Utilize então o seguinte comando para
desativar uma conta de usuário:
smbpasswd -d usuário
Quando a conta de usuário é desativada, uma flag "D" é adicionada às opções do usuário (junto com as opções
"UX").
Roberto Amaral – Marcelo Soares Farias
Página 49
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Habilitando uma conta no smbpasswd
Uma conta desativada com o uso do comando smbpasswd -d pode ser novamente ativada usando:
smbpasswd -e usuario
Alterando a senha de um usuário
O utilitário smbpasswd pode ser usado tanto para alterar a senha de usuários locais do SAMBA ou de uma
conta em um servidor remoto (seja SAMBA, NT, W2K). Para alterar a senha de um usuário local, digite:
smbpasswd -U usuario
Será pedida a antiga senha, a nova senha e a confirmação. Caso seja o usuário root, somente a nova senha e
a confirmação. Isto é mecanismo de proteção para usuários que esquecem a senha.
Para alterar a senha de um usuário remoto, utilize:
smbpasswd -r servidor -U usuário
Note que apenas foi adicionada a opção -r servidor comparado com a opção anterior. A diferença é que a
senha antiga do usuário sempre será solicitada para troca (pois o root das 2 máquinas pode não ser o mesmo).
Definindo acesso sem senha para o usuário
Para fazer um usuário acessar sem senha, use o comando:
smbpasswd -n usuario
Isto é completamente desencorajado e necessita que a opção null passwords da seção [global] no arquivo
smb.conf esteja ajustada para yes (que NÃO é o padrão).
Ativando o suporte a senhas em texto plano
Esta forma de autenticação é enviada por implementações NetBIOS antigas, como a encontrada no Lan
Manager, Windows for Workgroups e Windows 95 OSR1. As versões mais novas destas implementações
enviam a senha em formato criptografado, sendo necessário também usar o formato criptografado no SAMBA
para que possa se autenticar.
Em geral, o administrador prefere a utilização da autenticação usando texto plano quando deseja usar o
/etc/passwd para autenticação e está usando grupos de trabalho é necessário usar senhas criptografadas para
autenticação).
Para configurar o SAMBA para utilizar senhas em texto, modifique o parâmetro encrypt passwords para no:
[global]
encrypt passwords = no
Roberto Amaral – Marcelo Soares Farias
Página 50
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Reinicie o SAMBA e a partir de agora, ele usará o /etc/passwd para autenticação.
OBS: Tenha certeza de não estar participando de um domínio ou que sua máquina seja o PDC antes de fazer
esta modificação.
Configuração em Domínio
Esta seção descreve todos os passos necessários para configurar um servidor de domínio PDC (Primary
Domain Control) com perfis móveis e outros recursos que tornam úteis e seguras a administração de uma rede
NetBEUI.
Uma breve introdução a um Domínio de rede
Um domínio de rede consiste em uma máquina central chamada de PDC, que mantém o controle de todas as
contas de usuários/grupos e permissões para acesso a rede NetBEUI. O acesso desta forma é centralizado,
como vantagem disto você pode usar o nível de acesso por usuários nas máquinas, definindo quais usuários
ou grupos terão acesso de leitura/gravação.
É permitido criar scripts de logon, assim comandos programados pelo administrador serão executados nas
máquinas clientes durante o logon no.
O nome da máquina é protegido contra hijacking através de contas de máquinas que fazem parte do domínio.
Isto só é possível em clientes Linux, Windows NT, Windows 2000 e Windows XP.
Você poderá usar perfis móveis, copiando todas as personalizações do seu desktop para qualquer máquina na
rede que você faça o logon. Para o administrador, ele poderá definir políticas com o Poledit e outros programas
que serão salvas junto com o perfil do usuário, valendo para qualquer máquina que ele se autentique na rede.
Local Master Browser
É a máquina que ganhou a eleição no segmento local de rede. Logo que é declarada o local master browser,
ela começa a receber via broadcasting a lista de recursos compartilhados por cada máquina para montar a lista
principal que será retornada para outras máquinas do grupo de trabalho ou outras subredes que solicite os
recursos compartilhados por aquele grupo.
Uma nova eleição é feita a cada 36 minutos ou quando a máquina escolhida é desligada.
Domain Master Browser
Quando o local master browse é eleito no segmento de rede, uma consulta é feita ao servidor WINS para saber
quem é o Domain Master Browse da rede para enviar a lista de compartilhamentos. A máquina escolhida como
Local Master Browse envia pacotes para a porta UDP 138 do Domain Master e este responde pedindo a lista
de todos os nomes de máquinas que o local master conhece, e também o registra como local master para
aquele segmento de rede.
Caso tenha configurado sua máquina para ser o domain master browser da rede (também chamado de
controlador principal de domínio ou PDC), ela tentará se tornar a máquina que terá a lista completa de recursos
Roberto Amaral – Marcelo Soares Farias
Página 51
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
enviados pelos locais master browsers de cada segmento de rede. Um PDC também é o local master browse
de seu próprio segmento de rede.
É possível ter mais de um domain master browse, desde que cada um controle seu próprio domínio, mas não é
possível ter 2 domain master browsers em um mesmo domínio. Caso utilize um servidor WINS em sua rede, o
PDC fará consultas constantes em sua base de dados para obter a lista de domínios registrados. O domínio é
identificado pelo caracter 1b na rede.
OBS: O Windows NT configurado como PDC sempre tenta se tornar o domain master browser em seu grupo
de trabalho. Não sendo possível retirar o Windows NT configurado como PDC do domínio (por alguma outra
razão), a única forma será deixar ele ser o domain master browser. Se este for o caso, você poderá continuar
lendo este documento para aprender mais sobre NetBIOS e talvez ainda mudar de idéia sobre manter o NT na
rede após ver as características do SAMBA ;-)
Configurando um servidor PDC no SAMBA
Para configurar uma máquina para ser o PDC (Controladora Principal de Domínio ou Primary Domain Control),
siga esta seqüência:
Habilite o suporte a senhas criptografadas. Na seção [global], insira/modifique os seguintes parâmetros:
;Identificação da máquina e domínio
netbios name = adminsamba
workgroup = empresa
;níveis de acesso e funções do servidor
security = user
domain master = yes
prefered master = yes
local master = yes
; senhas criptografadas
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd.db
Onde os parâmetros significam:
netbios name = adminsamba - Nome do computador. Este também será o nome usado pelas outras máquinas
clientes quando for configurar o PDC (controlador de domínio).
workgroup = empresa - Nome do domínio que está criando. Todas as máquinas que pertencerem a este
domínio terão o nível de acesso definido pelo PDC. Note que o parâmetro workgroup também é usado ao
especificar o nome do grupo de trabalho quando se é usado a configuração grupo de trabalho.
Roberto Amaral – Marcelo Soares Farias
Página 52
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
security = user - Requerido para controle de acesso por domínio, já que é utilizado o controle de acesso local
usando usuários e grupos locais.
domain master = yes - Especifica se está máquina está sendo configurada para ser o PDC da rede.
OBS: Certifique-se que não existe outro PDC no domínio.
prefered master = yes - Força uma eleição com algumas vantagens para seu servidor ser eleito sempre como o
controlador de domínio. Isto garante que a máquina SAMBA sempre seja o PDC.
local master = yes - Define se a máquina será o controlador principal do grupo de trabalho local que ela
pertence.
Pronto, agora teste se existem erros em sua configuração executando o comando testparm e corrija-os se
existir. Resta agora reiniciar o servidor nmbd para que todas as suas alterações tenham efeito.
Contas de máquinas de domínio
Uma conta de máquina de domínio garante que nenhum outro computador possa utilizar o mesmo nome de
uma máquina confiável e assim utilizar os compartilhamentos que ela tem permissão. Os clientes Windows NT,
Windows XP e Windows 2000 precisam de uma conta de máquina para ter acesso ao domínio e seus recursos.
A criação de uma conta de máquina é bastante semelhante a criação da conta de um usuário normal no
domínio.
Existe uma coisa que precisa sempre ter em mente quando estiver configurando uma conta de máquina de
domínio: Quando você cria uma conta para a máquina, ela entra e altera sua senha no próximo logon usando
um "segredo" entre ela e o PDC, este segredo a identifica sempre como dona daquele nome NetBIOS, ou seja,
até o primeiro logon no NT, outra máquina com o mesmo nome NetBIOS poderá ser a dona do netbios naquele
domínio caso faça o logon no domínio. A única forma de se evitar isto é logar imediatamente no domínio NT
assim que criar as contas de máquinas.
Existem duas formas para criação de contas de máquinas: manual e automática.
Criando contas de máquinas manualmente
Para criar uma conta de domínio para a máquina master, siga estes 2 passos:
Crie uma conta de máquina no arquivo /etc/passwd:
useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null master$
O comando acima cria uma conta para a máquina master$ e torna ela parte do grupo domainmac. É
necessário especificar o caracter $ após o nome da máquina para criar uma conta de máquina no domínio,
caso contrário o próximo passo irá falhar. Acredito que nas próximas versões do SAMBA seja desnecessário o
uso do arquivo /etc/passwd para a criação de contas de máquina.
Crie uma conta de máquina no arquivo /etc/samba/smbpasswd:
smbpasswd -m -a master
Roberto Amaral – Marcelo Soares Farias
Página 53
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Isto cria uma conta de máquina para o computador master no arquivo /etc/samba/smbpasswd. Note que a
criação de uma conta de máquina é muito semelhante a criação de um usuário apenas precisa adicionar a
opção -m. Quando for criar uma conta com o smbpasswd Não é necessário especificar $ no final do nome da
máquina.
O mais importante: Entre IMEDIATAMENTE no domínio após criar a conta de máquina usando a conta de
administrador de domínio criada no SAMBA. Como a máquina ainda não se autenticou pela primeira vez,
qualquer máquina que tenha o mesmo nome e entre no domínio, poderá alocar o nome recém criado. A única
forma de resolver este problema, é apagando a conta de máquina e criando-a novamente no domínio. Siga os
passos de acordo com o sistema operacional em Configurando clientes em Domínio para colocar seus clientes
em domínio.
Criando contas de máquinas automaticamente
Através deste método, as máquinas clientes terão sua conta criada automaticamente assim que seja feita a
entrada no domínio usando a conta do administrador de domínio no SAMBA. Este é o método recomendável
de colocação de máquinas no domínio por ser mais prática ao invés do método manual. Note que normalmente
isto funciona para o WinXP e Win2000 mas não funciona em redes com o NT4, devendo ser criadas contas de
máquinas usando o método manual.
Para fazer a configuração automática, coloque a seguinte linha no arquivo smb.conf na seção [global]:
add user script = useradd -g domainmac -c "Maquina de Dominio" -s /bin/false -d /dev/null %u
Assim, a conta de máquina será automaticamente criada quando o administrador fizer sua configuração no
domínio. No SAMBA 3.0, a opção add machine script deverá ser usada no lugar de add user script para
adicionar uma máquina no domínio.
Criando uma conta de administrador de domínio
A conta de administrador do domínio é a conta que tem permissões para realizar operações de manutenção e
administração de máquinas que compõem o domínio de rede. Com ela é possível, entre outras coisas,
adicionar e remover máquina que compõem o domínio. Para especificar que contas de usuários do arquivo
/etc/samba/smbpasswd que terão poderes administrativos, utilize a opção domain admin group ou admin users
na seção [global] do arquivo /etc/samba/smb.conf.
O parâmetro admin users permite que todas as operações realizadas pelo usuário sejam feitas com poderes de
usuário root. Isto é necessário porque o arquivo smbpasswd (usado para ajustar as contas de máquinas)
normalmente tem permissões de leitura/gravação somente para root. O domain admin group permite que
usuários específicos ou usuários do grupo especificado sejam parte do grupo de administradores do domínio
para adicionar máquinas, etc. Por exemplo, para tornar o usuário adminsamba com privilégios para
adicionar/remover máquinas no domínio:
Roberto Amaral – Marcelo Soares Farias
Página 54
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
[global]
...
admin users = adminsamba
ou
domain admin group = @admins adminsamba
Isto permite que o usuário adminsamba possa adicionar/remover máquinas do domínio NT entre outras tarefas.
Por segurança, recomendo que coloque esta conta no invalid users de cada compartilhamento para que seja
utilizada somente para fins de gerenciamento de máquinas no domínio, a menos que deseje ter acesso total
aos compartilhamentos do servidor (nesse caso, tenha consciência do nível de acesso que esta conta possui e
dos problemas que pode causar caso caia em mãos erradas).
Compartilhamento de impressão no servidor SAMBA
Configurando o Linux como um servidor de impressão Windows
Será necessário ter o pacote samba instalado e adicionar as seguintes linhas no seu arquivo
/etc/samba/smb.conf:
[hp-printer]
path = /tmp
printer name=HP DeskJet 690C
printable = yes
print command = lpr -r -h -P %p %s
valid users = winuser winuser2
create mode = 0700
O compartilhamento acima tornará disponível a impressora local "lp" as máquinas Windows com o nome "HP
DeskJet 690C". Uma impressora alternativa pode ser especificada modificando a opção -P da linha de
comando do lpr. Note que somente os usuários "winuser" e "winuser2" poderão usar esta impressora. Os
arquivos de spool (para gerenciar a fila de impressão) serão gravador em /tmp (path = /tmp) e o
compartilhamento [hp-printer] será mostrado como uma impressora (printable = yes).
Agora será necessário instalar o driver desta impressora no Windows (HP 690C) e escolher impressora
instalada via rede e seguir os demais passos de configuração.
Controle de acesso ao servidor SAMBA
Nível de acesso de usuários conectados ao SAMBA
Quando acessa um compartilhamento, o usuário do samba é mapeado com o UID respectivo de usuário do
sistema ou o usuário guest (especificado pela opção "guest account") no caso de um acesso público. Quando
isto ocorre, um processo filho do smbd é executado sobre o UID e GID deste usuário. Isto significa que em
Roberto Amaral – Marcelo Soares Farias
Página 55
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
nenhuma ocasião o SAMBA dará mais permissões que as necessárias para o usuário (com excessão de
quando é usado o parâmetro admin users).
Restringindo o acesso por IP/rede
Esta restrição pode ser feita pelos parâmetros allow hosts e deny hosts tanto em serviços individuais ou em
todo o servidor. Os parâmetros hosts allow e hosts deny são equivalentes a estes acima. O allow hosts permite
o acesso a máquina especificadas como argumento. São permitidos os seguintes métodos para permitir o
acesso a uma máquina/rede:
192.168.1.1 - IP da máquina
servidor - Nome da máquina
192.168.1.0/255.255.255.0 - IP com máscara de rede
192.168.1.0/24 - IP com máscara de rede octal
192.168.1. - Porção de rede sem o host (como no hosts.allow e hosts.deny.
@nome - Pesquisa por máquinas no grupo NIS.
É permitido usar mais de um endereço IP separando-os por vírgulas ou espaços. A palavra chave EXCEPT
pode ser usada para fazer excessão de um ou mais endereços IPs, por exemplo:
hosts allow = 192.168.1. EXCEPT 192.168.1.20
Que permite o acesso a toda as máquinas da faixa de rede 192.168.1.0/24 exceto para a 192.168.1.20.
O deny hosts possui a mesma sintaxe do allow hosts mas bloqueia o acesso das máquinas especificadas como
argumento. Quando o allow hosts e deny hosts são usados juntos, as máquinas em allow hosts terão
prioridade (processa primeiro as diretivas em allow hosts e depois em deny hosts).
Se você está executando o SAMBA via inetd, os arquivos hosts.allow e hosts.deny são verificados antes do
controle e acesso ao smbd. Caso estiver usando o SAMBA via inetd e deseja restringir o acesso usando TCP
Wrappers.
OBS: Lembre-se de usar o testparm para verificar a sintaxe do arquivo smb.conf sempre que desconfiar de
problemas.
Testando a restrição de Acesso por IP/Redes
Um método interessante e útil para testar se a nossa configuração vai bloquear o acesso a serviços é usando o
testparm da seguinte forma:
testparm /etc/samba/smb.conf IP/host
Você precisará dizer para o testparm qual é o arquivo de configuração que está usando e o endereço IP/nome
de host que fará a simulação de acesso. Este método não falsifica o endereço IP para testes, apenas usa os
valores em allow hosts e deny hosts para checagem. Por exemplo, para verificar o acesso vindo do IP
192.168.1.50:
testparm /etc/samba/smb.conf 192.168.1.50
Load smb config files from /etc/samba/smb.conf
Roberto Amaral – Marcelo Soares Farias
Página 56
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
Processing section "[cdrom]"
Loaded services file OK.
Allow connection from /etc/samba/smb.conf (empresa) to homes
Allow connection from /etc/samba/smb.conf (empresa) to printers
Allow connection from /etc/samba/smb.conf (empresa) to tmp
Allow connection from /etc/samba/smb.conf (empresa) to cdrom
Restringindo o acesso por interface de rede
Esta restrição de acesso permite que façamos o SAMBA responder requisições somente para a interfaces
indicadas. O método de segurança descrito em Restringindo o acesso por IP/rede serão analisadas logo após
esta checagem.
Para restringir o serviço SAMBA a interfaces, primeiro será necessário ativar o parâmetro bind interfaces only
usando 1, yes ou true (o padrão é desativado). Depois, definir que interfaces serão servidas pelo samba com o
parâmetro interfaces. Os seguintes formatos de interfaces são permitidos:
eth0, sl0, plip0, etc - Um nome de interface local. É permitido o uso de * para fazer o SAMBA monitorar todas
as interfaces que iniciam com aquele nome (por exemplo, eth*).
192.168.1.1, 192.168.1.2, etc - Um endereço IP de interface local.
192.168.1.2/24, 192.168.1.2/255.255.255.0 - Um par de endereço/máscara de rede.
Mais de uma interface pode ser usada separando-as com vírgula ou espaços. A escolha do uso de nome da
interface ou do IP é feita de acordo com a configuração da máquina. Em uma máquina DHCP por exemplo, é
recomendado o uso do nome da interface. Quando bind interfaces only estiver ativado, o padrão é esperar
conexões em todas as interfaces que permitem broadcast exceto a loopback.
Exemplo:
bind interfaces only = 1
interfaces = loopback eth0
Permite o recebimento de requisições de acesso ao SAMBA somente da interface loopback (desnecessário,
pois como notou durante a leitura, sempre é permitida a conexão) e eth0.
Restringindo o acesso por usuários
Permite que você controle quem poderá ou não acessar o compartilhamento da máquina. Este controle é feito
pelos parâmetros valid users e invalid users.
O invalid users lista de usuário que NÃO terão acesso ao compartilhamento. Se o nome for iniciado por "+" o
parâmetro será tratado como um nome de grupo UNIX (/etc/group). O caracter "&" faz ele pesquisar o nome de
Roberto Amaral – Marcelo Soares Farias
Página 57
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
grupo no banco de dados NIS. O caracter "@" permite fazer a busca do grupo primeiro no banco de dados NIS
e caso ele não seja encontrado, no arquivo de grupos do sistema (/etc/group).
É possível usar a combinação de caracteres "+&" e "&+" para alternar a ordem de busca enter o /etc/group e o
NIS.
Exemplos:
invalid users = junior, marcio, +badusers
Não permite que os usuários especificados e os usuários do grupo +badusers tenham acesso ao
compartilhamento.
invalid users = &;semacesso
Bloqueia o acesso de todos os usuários NIS que pertençam ao grupo semacesso.
invalid users = bruno, henrique, +@users,
Bloqueia o acesso dos usuários bruno, henrique e de todos os usuários que pertençam ao grupo users. A
pesquisa de grupo é feita primeiro no /etc/group e em seguida no NIS.
invalid users = @semacesso
Bloqueia o acesso dos usuários que pertencem ao grupo "semacesso". A pesquisa é feita primeiro no NIS e
depois no /etc/group (equivalente ao uso de "&+").
O valid users possui a mesma sintaxe de funcionamento do invalid users, mas permite somente o acesso para
os usuários/grupos listados. Caso a opção valid users não seja especificada ou a lista esteja vazia, o acesso é
permitido. Se um mesmo nome de usuário estiver na lista valid users e invalid users, o padrão é ser mais
restritivo, negando o acesso.
valid users = adminsamba, michelle, geo
A segurança deste método de acesso depende muito da forma de autenticação dos nomes antes de passar o
controle para o SAMBA, pois uma autenticação fraca põe em risco a segurança da sua máquina.
Evite o uso do parâmetro hosts equiv!
Este parâmetro permite que máquinas tenham acesso sem senha a um servidor.
Evite o uso de senhas em branco!
O parâmetro null passwords é usado na seção [global] permitindo que contas de usuários sem senha tenham
acesso permitido ao servidor. ISTO É TOTALMENTE INSEGURO e deve ser sempre evitado.
Criando um compartilhamento para acesso sem senha
Em algumas situações (mesmo em instalações seguras) é preciso tornar um compartilhamento acessível
publicamente, exemplos disto incluem um diretório que contém drivers de impressoras, arquivos comuns, um
diretório temporário, etc.
Para configurar um acesso público utilizamos a opção public = yes ou guest ok = yes (que é um sinônimo para
o último comando). O UID utilizado no acesso público é especificado pelo parâmetro guest account, portanto
Roberto Amaral – Marcelo Soares Farias
Página 58
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
ele deverá ser um usuário válido do sistema. Caso você queira somente definir acesso guest a um
compartilhamento, especifique a opção guest only para o serviço, desta forma, mesmo que o usuário tenha
acesso, ele será mapeado para o usuário guest.
Uma boa medida de segurança é usar o usuário nobody pois a maioria das distribuições de Linux seguras
adotam-o como padrão como usuário que não é dono de quaisquer arquivos/diretórios no sistema, não possui
login, senha ou sequer um diretório home.
Veja um exemplo disponibilizando o compartilhamento [download] para acesso público com acesso a gravação:
[global]
guest account = nobody
..
..
[download]
path = /downloads
comment = Espaço público para abrigar downloads de Usuários
guest ok = yes (aqui poderá ser também "public = yes").
writable = yes
follow symlinks = false
O parâmetro guest account também poderá ser especificado no compartilhamento, isto é útil quando não quiser
que o usuário que acesse o compartilhamento não seja o mesmo usado na diretiva [global].
Caso seu servidor somente disponibiliza compartilhamentos para acesso público, é mais recomendado utilizar
o nível security = share pra diminuir a carga máquina, pois o usuário guest será o primeiro a ser checado pelas
regras de acesso (ao contrário do nível user, onde o acesso guest é o último checado).
Criando um compartilhamento com acesso somente leitura
Esta proteção é útil quando não desejamos que pessoas alterem o conteúdo de um compartilhamento. Isto
pode ser feito de duas formas: negando o acesso de gravação para todo o compartilhamento ou permitindo
leitura somente para algumas pessoas. O parâmetro usado para fazer a restrição de acesso somente leitura é
o read only = yes ou seu antônimo writable = no. Abaixo seguem os dois exemplos comentados:
[teste]
comment = Acesso a leitura para todos
path = /tmp
read only = yes
public = yes
No exemplo acima, o diretório /tmp (path = /tmp) foi compartilhado com o nome teste ([teste]), de forma pública
(acesso sem senha - public = yes), e todos podem apenas ler seu conteúdo read only = yes).
Roberto Amaral – Marcelo Soares Farias
Página 59
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
[teste]
comment = Acesso a gravação para todos com excessões
path = /tmp
read only = no
read list = @users, adminsamba
invalid users = root
Neste, o mesmo compartilhamento teste ([teste]) foi definido como acesso leitura/gravação para todos (read
only = no), mas os usuários do grupo @users e o usuário adminsamba terão sempre acesso leitura (read list =
@users, adminsamba). Adicionalmente foi colocada uma proteção para que o superusuário não tenha acesso a
ele (invalid users = root). Esta forma de restrição é explicada melhor em Excessão de acesso na permissão
padrão de compartilhamento).
Criando um compartilhamento com acesso leitura/gravação
Esta forma de compartilhamento permite a alteração do conteúdo do compartilhamento dos usuários que
possuem as permissões de acesso apropriadas. Este controle pode ser feito de duas formas: Acesso total de
gravação para os usuários e acesso de gravação apenas para determinados usuários. Este controle é feito
pela opção read only = no e seu antônimo equivalente writable = yes. Abaixo dois exemplos:
[teste]
comment = Acesso de gravação para todos.
path = /tmp
writable = yes
public = yes
No exemplo acima, o diretório /tmp (path = /tmp) foi compartilhado com o nome teste ([teste]), de forma pública
(acesso sem senha - public = yes) e todos podem ler/gravar dentro dele (writable = yes).
[teste]
comment = Acesso a leitura para todos com excessões
path = /tmp
writable = no
write list = @users, adminsamba
Neste, o mesmo compartilhamento teste ([teste]) foi definido como acesso de leitura para todos (writable = no),
mas os usuários do grupo @users e o usuário adminsamba serão os únicos que terão também acesso a
gravação (write list = @users, adminsamba). Esta forma de restrição é explicada melhor em Excessão de
acesso na permissão padrão de compartilhamento).
Roberto Amaral – Marcelo Soares Farias
Página 60
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Excessão de acesso na permissão padrão de compartilhamento
É possível alterar o nível de acesso para determinados usuários/grupos em um compartilhamento, para
entender melhor: Caso tenha criado um compartilhamento somente leitura e queira permitir que apenas alguns
usuários ou grupos tenham acesso a gravação, isto é possível e será explicado nesta seção. Este
comportamento é controlado por duas opções: read list e write list. Veja alguns exemplos:
[temporario]
comment = Diretório temporário
path = /tmp
writable = yes
read list = adminsamba, root
browseable = no
available = yes
Neste exemplo, disponibilizamos o diretório /tmp (path = /tmp) como compartilhamento de nome temporario
([temporario]), seu acesso padrão é leitura/gravação para todos (writable = yes), exceto para os usuários root e
adminsamba (read list = root, adminsamba). Em adição, tornamos o compartilhamento invisível no "Ambiente
de Rede" do Windows (browseable = no) e ele será lido e disponibilizado pelo SAMBA (available = yes).
[temporario]
comment = Diretório temporário
path = /tmp
writable = no
write list = adminsamba, @operadores
browseable = yes
Neste exemplo, disponibilizamos o diretório /tmp (path = /tmp) como compartilhamento de nome temporario
([temporario]), seu acesso padrão é apenas leitura para todos (writable = no), exceto para o usuário
adminsamba e usuários do grupo Unix operadores, que tem acesso a leitura/gravação (write list =
adminsamba, @operadores). Tornamos o compartilhamento visível no "Ambiente de Rede" do Windows
(browseable = yes - que é o padrão).
Criando um compartilhamento invisível
Para não exibir um compartilhamento da lista de compartilhamentos das máquinas, utilize o parâmetro
browseable = no. Por exemplo:
[teste]
path = /tmp
comment = Diretório temporário
read only = yes
browseable = no
Roberto Amaral – Marcelo Soares Farias
Página 61
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Neste exemplo, o diretório /tmp (path = /tmp) foi compartilhado através de teste ([teste]) com acesso somente
leitura (read only = yes) e ele não será mostrado na listagem de compartilhamentos do ambiente de rede do
Windows (browseable = no).
Note que o compartilhamento continua disponível, porém ele poderá ser acessado da estação Windows,
especificando a \\maquina\compartilhamento. Para acessar o compartilhamento do exemplo acima:
# Clique em Iniciar/Executar e digite:
\\nome_do_servidor_samba\teste
Ao contrário das máquinas Windows onde é necessário adicionar um "$" do nome de compartilhamento para
criar um compartilhamento oculto (como teste$) o SAMBA cria um compartilhamento realmente oculto, não
aparecendo mesmo na listagem do smbclient.
Exemplos de configuração do servidor SAMBA
Os exemplos existentes nesta seção cobrem diferentes tipos de configuração do servidor, tanto em modo de
compartilhamento com acesso público ou um domínio restrito de rede. Todos os exemplos estão bem
comentados e explicativos, apenas pegue o que se enquadre mais em sua situação para uso próprio e
adaptações.
Grupo de Trabalho com acesso público
Este exemplo pode ser usado de modelo para construir uma configuração baseada no controle de acesso
usando o nível de segurança share e quando possui compartilhamentos de acesso público. Esta configuração
é indicada quando necessita de compatibilidade com softwares NetBIOS antigos.
[global]
# nome da máquina na rede
netbios name = teste
# nome do grupo de trabalho que a máquina pertencerá
workgroup = empresa
# nível de segurança share permite que clientes antigos
# mantenham a compatibilidade enviando somente a senha para
# acesso ao recurso, determinando o nome de usuário de outras
# formas
security = share
# O recurso de senhas criptografadas não funciona quando usamos
# o nível share de segurança. O motivo disto é porque
# automaticamente é assumido que você está selecionando este
# nível por manter compatibilidade com sistemas antigos ou para
Roberto Amaral – Marcelo Soares Farias
Página 62
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
# disponibilizar compartilhamentos públicos, onde
encrypt passwords = false
# Conta que será mapeada para o usuário guest
guest account = nobody
# Como todos os compartilhamentos desta configuração são de
# acesso público coloquei este parâmetro na seção [global],
# assim esta opção afetará todos os compartilhamentos.
guest ok = 1
# Conjunto de caracteres utilizados para acessar os
# compartilhamentos. O padrão para o Brasil e países de língua
# latina é o ISO 8859-1
character set = ISO8859-1
# Compartilha o diretório /tmp (path = /tmp) com o nome
# "temporario" ([temporario]),
# é adicionada a descrição "Diretório temporário" com acesso
# leitura/gravação (read only = no) e exibido na janela de
# navegação da rede (browseable = yes).
[temporario]
path = /tmp
comment = Diretório temporário
read only = no
browseable = yes
# Compartilha o diretório /pub (path = /pub) com o nome
# "publico" ([publico]). A descrição "Diretório de acesso
# público" é associada ao compartilhamento com acesso somente
# leitura (read only = yes) e exibido na janela de navegação
# da rede (browseable = yes).
[publico]
path =/pub
comment = Diretório de acesso público
read only = yes
browseable = yes
# Compartilha todas as impressoras encontradas no /etc/printcap
# do sistema.
Roberto Amaral – Marcelo Soares Farias
Página 63
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
[printers]
comment = All Printers
path = /tmp
create mask = 0700
printable = Yes
browseable = No
Grupo de Trabalho com acesso por usuário
O exemplo abaixo descreve uma configuração a nível de segurança por usuário onde existem
compartilhamentos que requerem login e usuários específicos, e restrições de IPs e interface onde o servidor
opera. Esta configuração utiliza senhas em texto claro para acesso dos usuários, mas pode ser facilmente
modificada para suportar senhas criptografadas.
[global]
# nome da máquina na rede
netbios name = teste
# nome do grupo de trabalho que a máquina pertencerá
workgroup = empresa
# nível de segurança user somente aceita usuários autenticados
# após o envio de login/senha
security = user
# É utilizada senhas em texto claro nesta configuração
encrypt passwords = false
# Conta que será mapeada para o usuário guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responderá
bind interfaces only = yes
# Faz o samba só responder requisições vindo de eth0
interfaces = eth0
# Supondo que nossa interface eth0 receba conexões roteadas de
# diversas outras redes, permite somente as conexões vindas da
# rede 192.168.1.0/24
hosts allow = 192.168.1.0/24
# A máquina 192.168.1.57 possui gateway para acesso interno, como
# medida de segurança, bloqueamos o acesso desta máquina.
hosts deny = 192.168.1.57/32
# Conjunto de caracteres utilizados para acessar os
Roberto Amaral – Marcelo Soares Farias
Página 64
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
# compartilhamentos. O padrão para o Brasil e países de língua
# latina é o ISO 8859-1
character set = ISO8859-1
# As restrições do PAM terão efeito sobre os usuários e recursos
# usados do SAMBA
obey pam restriction = yes
# Mapeia o diretório home do usuário autenticado.
[homes]
comment = Diretório do Usuário
create mask = 0700
directory mask = 0700
browseable = No
# Compartilha o diretório win (path = /win) com o nome "win"
#([win]). A descrição associada ao compartilhamento será "Disco do Windows", o nome de volume precisa ser
especificado pois usamos
# programas que a proteção anti cópia é o serial. Ainda fazemos
# uma proteção onde qualquer usuário existente no grupo @adm é
# automaticamente rejeitado e o usuário "baduser" somente possui
# permissão de leitura (read list = baduser).
#
[win]
path = /win
comment = Disco do Windows
volume = 3CF434C
invalid users = @adm
browseable = yes
read list = baduser
# Compartilha o diretório /pub (path = /pub) com o nome "publico"
# ([publico]). A descrição "Diretório de acesso público" é
# associada ao compartilhamento com acesso somente leitura (read
# only = yes) e exibido na janela de navegação da rede (browseable
# = yes). O parâmetro public = yes permite que este
# compartilhamento seja acessado usando o usuário "nobody" sem o
# fornecimento de senha.
Roberto Amaral – Marcelo Soares Farias
Página 65
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
[publico]
path =/pub
comment = Diretório de acesso público
read only = yes
browseable = yes
public = yes
Domínio
[global]
# nome da máquina na rede
netbios name = teste
# nome do grupo de trabalho que a máquina pertencerá
workgroup = empresa
# String que será mostrada junto com a descrição do servidor
server string = servidor PDC principal de testes
# nível de segurança user somente aceita usuários autenticados
# após o envio de login/senha
security = user
# Utilizamos senhas criptografadas nesta configuração
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd
# Conta que será mapeada para o usuário guest
guest account = nobody
# Permite restringir quais interfaces o SAMBA responderá
bind interfaces only = yes
# Faz o samba só responder requisições vindo de eth0
interfaces = eth0
# como estamos planejando ter um grande número de usuários na
# rede, dividimos os arquivos de log do servidor por máquina.
log file = /var/log/samba/samba-%m-%I.log
# O tamanho de CADA arquivo de log criado deverá ser 1MB (1024Kb).
max log size = 1000
# Escolhemos um nível de OS com uma boa folga para vencer as
# eleições de controlador de domínio local
os level = 80
# Dizemos que queremos ser o Domain Master Browse (o padrão é
Roberto Amaral – Marcelo Soares Farias
Página 66
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
# auto)
domain master = yes
# Damos algumas vantagens para o servidor ganhar a eleição caso
# aconteça desempate por critérios
preferred master = yes
# Também queremos ser o local master browser para nosso segmento
# de rede
local master = yes
# Este servidor suportará logon de usuários
domain logons = yes
# Usuários que possuem poderes para adicionar/remover máquinas no
# domínio (terão seu nível de acesso igual a root)
admin users = adminsamba
# Unidade que será mapeada para o usuário local durante o logon
# (apenas sistemas baseados no NT).
logon drive = m:
# Nome do script que será executado pelas máquinas clientes
logon script = logon.bat
# Ação que será tomada durante o recebimento de mensagens do
# Winpopup.
message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# Conjunto de caracteres utilizados para acessar os
# compartilhamentos. O padrão para o Brasil e países de língua
# latina é o ISO 8859-1
character set = ISO8859-1
# As restrições do PAM terão efeito sobre os usuários e recursos
# usados do SAMBA
obey pam restriction = yes
# Mapeia o diretório home do usuário autenticado. Este
# compartilhamento especial é descrito em mais detalhes no inicio
# do capítulo sobre o SAMBA no Foca Linux.
[homes]
comment = Diretório do Usuário
create mask = 0700
Roberto Amaral – Marcelo Soares Farias
Página 67
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
directory mask = 0700
browseable = No
# Compartilha o diretório win (path = /win) com o nome "win"
# ([win]). A descrição associada ao compartilhamento será "Disco
# do Windows", o nome de volume precisa ser especificado pois
# usamos programas que a proteção anti cópia é o serial. Ainda
# fazemos uma proteção onde qualquer usuário existente no grupo
# @adm é automaticamente rejeitado e o usuário "baduser" somente
# possui permissão de leitura (read list = baduser).
#
[win]
path = /win
comment = Disco do Windows
volume = 3CF434C
invalid users = @adm
browseable = yes
read list = baduser
# Compartilha o diretório /pub (path = /pub) com o nome "publico"
# ([publico]). A descrição "Diretório de acesso público" é
# associada ao compartilhamento com acesso somente leitura (read
# only = yes) e exibido na janela de navegação da rede (browseable
# = yes). O parâmetro public = yes permite que este
# compartilhamento seja acessado usando o usuário "nobody" sem o
# fornecimento de senha.
[publico]
path =/pub
comment = Diretório de acesso público
read only = yes
browseable = yes
public = yes
# Compartilhamento especial utilizado para o logon de máquinas na
# rede
[netlogon]
path=/pub/samba/netlogon/logon.bat
read only = yes
Roberto Amaral – Marcelo Soares Farias
Página 68
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Servidor de Informação (NIS)
O sistema NIS (Network Information System) permite compartilhar bases de dados globais,
contendo informações sobre usuários (/etc/passwd), grupos (/etc/group) e hosts (/etc/hosts) em ambiente Unix.
Informações compartilhadas por servidores NIS são visíveis pelos cliente, servindo, por exemplo, para a
autenticação de usuários num domínio de redes. As informações compartilhadas pelo NIS eram chamadas de
Yellow Pages – yp.
A unidade de compartilhamento do NIS são os registros e não o arquivo. Um registro corresponde
a uma linha de configuração em um arquivo de configuração.
A operação deste sistema envolve a execução de um processo servidor (ypserv) numa máquina
que será o mestre de um domínio (NIS máster) e a execução da versão cliente do programa (ypbind) nas
máquinas clientes. A utilização dos arquivos compartilhados para autenticação dos usuários nos cliente,
contudo, depende ainda dos ajustes de autenticação.
•
ypserv: processo servidor do NIS;
•
ypbind: processo cliente NIS;
•
yppasswdd: processo de autenticação/modificação de senhas via rede. Deve ser executado
no servidor mestre do domínio;
•
ypinit: script de configuração do servidor NIS (como principal ou secundário). Cria as tabelas a
partir dos arquivos em /etc;
•
yppush: comando para cópia dos arquivos do mestre para os escravos;
•
portmap: faz o mapeamento entre chamada RPC e número de portas para o serviço NIS;
•
/etc/yp.conf: arquivo de configuração do cliente NIS;
•
/etc/ypserv.conf: arquivo de configuração do servidor NIS;
•
/var/yp: arquivos de configuração e tabelas de domínio exportado pelo servidor;
•
/var/yp/ypservers; relação dos servidores do domínio;
•
/var/yp/securenets: relação de redes e hosts autorizados a acessar as informações do
domínio
Configuração do servidor
Antes que o servidor NIS possa ser ativado, é preciso criar as tabelas exportadas. Para simplificar a
construção das tabelas exportadas, entretanto, há um arquivo de configuração em /var/yp. Sua operação
requer apenas que o nome do domínio NIS que se deseja atender esteja configurado:
Roberto Amaral – Marcelo Soares Farias
Página 69
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
•
Domainname: define o nome do domínio DNS. Ex: domainname gerds.utp.br
•
Ypdomainname, nisdomainname: define o nome do domínio NIS. Ex. ypdomainname
gerds.utp.br
Embora sejam normalmente coincidentes, não há restrições entre o nome de domínio DNS e o domínio
NIS.
A configuração de um servidor NIS requer a instalação do pacote ypserv. Uma vez ajustado o domínio
NIS que se deseja gerenciar, é preciso ajustar os scripts de configuração das tabelas exportadas, localizados
no diretório /var/yp.
•
/var/yp: diretório que contém os arquivos para configuração do servidor NIS e as tabelas
exportadas;
•
/var/yp/Makefile: arquivo de configuração das tabelas que serão criadas para exportação.
Configuração (manual) de um servidor NIS:
1. Definição do domínio:
domainname dom.com.br
ou
ypdomainname dom.com.br
ou
nisdomaniname dom.com.br
2. Ajuste das tabelas exportadas (/var/yp/Makefile) :
cd /var/yp
#editar /var/yp/Makefile
#editar linha all: passwd group hosts ...  contém relação dos mapas que serão criados para exportação
#editar linha MERGE_PASSWD=true  indica se passwd e shadow serão unificados para exportação
#editar linha MERGE_GROUP=true  indica se group e gshadow serão unificados para exportação
#editar linha MINUID=500  início dos logins exportados
#editar linha MINGID=500  início dos grupos exportados
3. Criação das tabelas exportadas
Make  cria tabelas para domínio definido com ypdomaninname, caso não existam, ou atualiza as
tabelas existente.
Roberto Amaral – Marcelo Soares Farias
Página 70
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
OBS.: O padrão é utilizar os arquivos em /etc como fonte para geração dos maas do NIS. É
possível alterar este padrão, editando o arquivo /var/yp/Makefile, modificando as variáveis
YPSRCDIR e YPPWDDDIR para que indiquem o diretório onde estão os arquivos. Assim, é
viável manter usuários locais e do NIS de forma independente. As opções MINUID e
MINGID também permitem restringir os usuários que serão exportados.
Os comandos executados pelo make, equivalem a criação das tabelas, utilizando os comandos
abaixo:
•
/usr/lib/yp/ypinit –m: script para criação das tabelas do servidor. Este script, executando
com opção –m, configura o servidor como “mestre”(ou principal), pegando como
informações os dados contidos em /etc/passwd, /etc/group, /etc/hosts, /etc/networks,
/etc/services, /etc/protocols, /etc/netgroup e /etc/rpc. Inclui, linha a linha, os servidores
do NIS.
•
/usr/lib/yp/yp/ypinit –s nome-do-servidor-principal. A opção –s, seguida do nome do
servidor mestre, configura o servidor “escravo” (ou secundário). Pode haver um único
mestre, mas várias escravos.
4. Ajustes de segurança: limitar o acesso aos campos das tabelas exportadas editando
/etc/ypserv.conf
Uma vez definidas as tabelas que serão exportadas, é preciso realizar ajustes de segurança antes de
ativar o servidor (ypserv). O ajuste de opção de segurança dos mapas exportados é feito através do
arquivo /etc/ypserv.conf.
•
/etc/ypserv.conf: arquivo com parâmetros para o servidor do domínio NIS:
i.
Dns: indica se o servidor fará consultas ao servidor DNS para a resolução de
nomes de domínio não atendidos por /etc/hosts
ii. Cada linha contém informações sobre uma tabela exportada, incluindo os
seguintes campos, separados por “:”:host, mão, security, mangle e field
1. host: endereço IP
2. map: nome do mapa ou *, para todos os mapas
3. security: nome (sempre permite acesso), port (permite acesso se porta <
1024), deny (nega acesso a este mapa), des (exige autenticação no
formato DES);
4. mangle: yes ou no. Substitui valor de campo nas informações exibidas
caso o usuário não tenha acesso.
5. field: indica o campo que será substituído (mangled). Defaul=2
Roberto Amaral – Marcelo Soares Farias
Página 71
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Exemplo:
# /etc/ypserv.conf
# HOST: Domain
:Map
:Security
#
*
:*
:passwd.byname
:port # restringe o acesso a tabela
*
:*
:passwd.byuid
:port # restringe o acesso a tabela
5. Restringir os hosts que poderão fazer a autenticação de usuários usando as tabelas exportadas
(/var/yp/securenets)
A relação de clientes autorizados a usar as tabelas do sistema (nis clients) é definida através do
arquivo /var/yp/securenets. As linhas do arquivo contêm informações sobre as máscaras de rede e os
endereços IP autorizados.
# /var/yp/securenets
#
255.0.0.0
127.0.0.0
#libera acesso para o localhost
255.255.255.0
200.1.1.0
#libera acesso para a rede 200.1.1.0
6. Ativação do serviço do servidor:
A ativação do servidor é feita iniciando-se o processo ypserv (/usr/sbin/ypserv). O ajuste para sua
ativação automática nos níveis de execução multiusuário pode ser feita como descrito anteriormente.
AplicaçõesConfigurações do SistemaConfigurações de ServidorServiços
Portmap
Ypserv
O serviço ypxferd pode ser ativado para auxiliar na transferência dos mapas entre o servidor NIS
máster e os servidores slave:
Ypxferd
7. Habilitando o ajuste de senhas pela rede (yppasswdd):
A alteração de senha no ambiente NIS pode ser feita com o comando yppasswd. Para tanto, ;e preciso
que o serviço yppasswdd esteja sendo executado no servidor NIS, caso contrário, os usuários deverão
fazer um acesso remoto ao servidor para alterar a senha localmente com o comandopasswd. Neste
caso, ainda, a nova senha só se torna cálida após a reiniciação do servidor NIS (ypserv).
AplicaçõesConfigurações SistemasConfigurações de ServidorServiços
Yppasswdd
Roberto Amaral – Marcelo Soares Farias
Página 72
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Nos clientes, a senha da rede pode ser alterada executando-se o comando yppasswd.
Configuração dos clientes para realizarem acessaem um servidor NIS corresponde a habilitar a
autenticação usando NIS.
HTTPD - Servidor Web Apache2
O Apache é o Servidor Web mais utilizado sendo utilizados para servir pedidos de Páginas WEB por clientes.
Os clientes em geral fazem requisições e visualizam Páginas da WEB usando navegadores. Usuários utilizam
URL (Uniform Resource Locator) para apontar para um servidor Web através do seu Nome de Domínio
Completo (Fully Qualified Domain Name - FQDN) e um caminho. O protocolo mais comum usado para
transferir páginas é o HTTP - Protocolo de transferência de hipertexto. Protocolos como HTTPS - Protocolo
seguro de transferência de hipertexto e FTP - Protocolo de transferência de arquivo, protocolo para enviar e
receber arquivos, são também suportados. Servidores Web Apache são geralmente utilizados em conjunto
com o banco de dados MySQL, a linguagem de construção de scripts pré-processadora de hiper-texto (PHP), e
outras linguagens de construção de scripts populares como o Python e o Perl..
Instalação
O servidor web Apache2 está disponível no Ubuntu Linux. Para instalar o Apache2:
# sudo apt-get install apache2#
Configuração
O Apache é configurado colocando-se diretivas em arquivos de configuração de texto puro. O arquivo de
configuração principal é chamado apache.conf. Além disso, outros arquivos de configuração podem ser
adicionados utilizando-se a diretiva Include. Qualquer diretiva pode ser colocada em qualquer desses arquivos
de configuração. Mudanças no arquivo de configuração apenas são reconhecidas quando este for iniciado ou
reiniciado. O servidor também irá ler um arquivo contendo os tipos mime de documentos; o nome do arquivo é
definido pela diretiva TypesConfig. O arquivo de configuração do Apache2 é o /etc/apache2/apache2.conf.
Pode ser configurado, número da porta, raiz dos documentos, módulos, arquivos de log, hosts virtuais, etc.
Configurações Básicas
O Apache é configurado com um host virtual único padrão (diretiva VirtualHost) o qual pode ser modificado ou
utilizado como está, se você tiver apenas um site, ou ainda usado como modelo para hosts virtuais adicionais
Roberto Amaral – Marcelo Soares Farias
Página 73
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
caso tenha múltiplos sites. Se não for alterado, o host virtual padrão servirá como seu site padrão. Para
modificar o virtual host padrão, edite o arquivo /etc/apache2/sites-available/default. Caso deseje
configurar um novo host virtual, copie esse arquivo para o mesmo diretório com um nome de sua escolha.
Por exemplo:
sudo cp
/etc/apache2/sites-available/default
/etc/apache2/sites-available/meunovosite.
Edite o novo arquivo para configurar o novo site utilizando algumas das diretivas descritas abaixo.
• ServerAdmin especifica o endereço de email a ser anunciado. Se website apresentar problema, o Apache2
mostrará uma mensagem de erro contendo este endereço de email para qual o problema poderá ser relatado.
• Listen especifica a porta, e opcionalmente o endereço IP, na qual o Apache2 irá escutar. Se o endereço IP
não for especificado, o Apache2 irá escutar em todos os endereços IP designados para a máquina no qual ele
esteja rodando. O valor padrão para diretiva Listen é 80. Altere isso para 127.0.0.1:80 para fazer com que o
Apache apenas escute apenas na sua interface de loopback. Esta diretiva pode ser encontrada e alterada em
seu próprio arquivo, /etc/apache2/ports.conf
• ServerName especifica qual a FQDN seu site deverá responder. O host virtual padrão não possui diretiva
ServerName especificada, portanto ele irá responder a todas as requisições que não combinem com uma
diretiva ServerName em outro host virtual. Por exemplo: para o domínio ubunturocks.com e adicione este nome
na diretiva ServerName no arquivo de configuração do host virtual. Adicione esta diretiva ao novo arquivo de
site virtual que você criou antes (/etc/apache2/sites-available/meunovosite).
• DocumentRoot especifica o local dp s arquivos padrão que formam o site. O padrão é /var/www. Nenhum
site está configurado lá, mas pode descomentar a diretiva RedirectMatch em /etc/apache2/apache2.conf as
requisições serão redirecionadas para /var/www/apache2-default. Altere este valor no arquivo de host virtual do
seu site e lembre-se de criar aquele diretório se necessário. O diretório /etc/apache2/sites-available não é
decodificado pelo Apache2. Links simbólicos em /etc/apache2/sites-enabled apontam para sites "disponíveis"
(available). Utilize o utilitário a2ensite (Apache2 EnableSite) para criar esses links simbólicos.
Configuração Padrão
Esta seção explica a configuração das definições padrão do servidor Apache2.
• DirectoryIndex é a página padrão do servidor quando o usuário requisita um índice de um diretório
especificando uma barra (/) no final do nome do diretório. Por exemplo, quando um usuário solicita a página
http://www.examplo.com/este_diretório/, ele vai ver: o DirectoryIndex se ele existir; uma lista do diretório gerado
pelo servidor caso não exista e as opções de índices estiverem especificadas; ou uma página de Permissão
Negada se nenhuma das duas opções forem verdadeiras. Se ele não encontrar nenhum destes arquivos e se
as Opções de Índices estiver ajustada para aquele diretório, o servidor irá gerar e retornar uma lista, no formato
HTML, dos subdiretórios e arquivos no diretório. O valor padrão, encontrado em /etc/apache2/apache2.conf é
"index.html index.cgi index.pl index.php index.xhtml".
• ErrorDocument permite que você especifique um arquivo para o Apache usar para um evento específico de
erro. Por exemplo, se um usuário solicitar um recurso que não existe, um erro 404 ocorrerá, e por padrão de
Roberto Amaral – Marcelo Soares Farias
Página 74
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
configuração do Apache, o arquivo /usr/share/apache2/error/HTTP_NOT_FOUND.html. vai será mostrado. Este
arquivo não está na Raiz de Documentos do servidor, mais existe uma diretiva em /etc/apache2/apache2.conf
que redireciona as requisições do diretório /error para /usr/share/apache2/error/. Para ver a listagem de diretiva
padrão de Documentos de Erro, use o comando: grep ErrorDocument /etc/apache2/apache2.conf
• Por padrão, o servidor registra as transferências no arquivo /var/log/apache2/access.log, conforme informado
no arquivo de configuração e na diretriz CustomLog,. Pode ser especificado o arquivo onde os erros serão
registrados, através da diretriz ErrorLog, que por padrão é /var/log/apache2/error.log. Estes são mantidos
separados do log de transferência para permitir eliminação de problemas. Pode ser especificado o LogLevel (o
valor padrão é "alertar") e o LogFormat (veja o /etc/apache2/apache2.conf para o valor padrão).
• Algumas opções são especificadas num esquema por diretórios. A diretiva Option é uma dessas diretivas.
Uma instância de Directory é encapsulada entre tags semelhantes ao XML, como em:
<Directory /var/www/mynewsite>
...
</Directory>
A diretiva Options com uma instância de Directory aceita um ou mais dos seguintes valores:
• ExecCGI - Permite execução de scripts CGI. Scripts CGI não são executados se esta opção não estiver
habilitada. Scripts CGI devem ser mantidos em diretórios separados, fora do DocumentRoot, e somente este
diretório deve ter a opção ExecCGI habilitada. O local padrão para os scripts CGI é /usr/lib/cgi-bin.
• Includes - Permite inclusões no lado do servidor, permitindo que um arquivo HTML inclua outros arquivos.
• IncludesNOEXEC - Permite includes, mais desabilita o comandos #exec e #include nos scripts CGI
• Indexes - Mostra uma lista formatada dos conteúdos dos diretórios, caso não exista um DirectoryIndex (tal
como index.html). Por motivos de segurança, não deve estar habilitado. Habilite esta opção com cuidado,
somente se você tem certeza de que quer que os usuários vejam o conteúdo inteiro do diretório.
• Multiview - Suporta multi-visões negociadas pelo conteúdo; esta opção é desabilitada por segurança.
• SymLinksIfOwnerMatch - Segue os links simbólicos caso o arquivo seja do mesmo dono que o link.
Configurações de Hosts Virtuais
Hosts virtuais permitem que rode diferentes servidores para diferentes endereços IP, diferentes nomes, ou
diferentes portas da mesma máquina. Por exemplo, pode rodar o website por http://www.exemplo.com.br e
http://www.outroexemplo.com.br no mesmo servidor Web usando hosts virtuais. Esta opção corresponde à
diretiva <VirtualHost> para o virtual host padrão e virtual hosts baseados em IP. E corresponde à diretiva
<NameVirtualHost> para um virtual host baseado em nomes. As diretivas para um host virtual somente são
aplicadas para um host virtual em particular. Se a diretiva é setada para escopo de servidor e não definida
dentro das configurações de um virtual host, as configurações padrão serão usadas. Ajuste DocumentRoot
para o diretório que contém o documento raíz para o host virtual. O DocumentRoot padrão é /var/www.
A diretiva ServerAdmin dentro da instância do VirtualHost armazena o email usado no rodapé da página de
erros caso você escolha mostrar um rodapé com o endereço de email na página de erro.
Roberto Amaral – Marcelo Soares Farias
Página 75
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Configurações do Servidor
LockFile - A diretiva LockFile define o caminho do arquivo usado quando o servidor é compilado tanto com
USE_FCNTL_SERIALIZED_ACCEPT quanto com USE_FLOCK_SERIALIZED_ACCEPT.
PidFile - A diretiva PidFile define o arquivo em que o servidor gravará o seu ID de processo (pid). Este arquivo
deve ter permissões de leitura somente para o root. Na maioria dos casos, o valor padrão deve ser deixado.
User - A diretiva User seta o UserID usado pelo servidor para responder as solicitações. Esta opção determina
o acesso ao servidor. Qualquer arquivo inacessível a este usuário será também inacessível aos visitantes do
seu website. O valor padrão para o User é www-data. Usando o root como User você irá criar brechas de
segurança para seu ser servidor Web. A diretiva Group é similar a diretiva User. Group define o grupo que o
servidor irá responder as solicitações. O grupo padrão é www-data.
Módulos do Apache
O Apache é um servidor modular. Isso significa que somente as funcionalidades básicas são inclusas no
núcleo do servidor. A extensão das funcionalidades são disponibilizadas através de módulos, que podem ser
carregados no Apache. Por padrão, alguns módulos básicos já estão inclusos na hora da compilação. Se o
servidor for compilado para usar o carregamento dinâmico de módulos, então os módulos podem ser
compilados separadamente, e adicionados à qualquer hora usando a diretiva LoadModule. Caso contrário, o
Apache2 precisa ser recompilado para adicionar ou remover módulos. As diretivas de configuração podem ser
incluídas condicionalmente, com a presença de um módulo em particular incluído num bloco <IfModule>. Você
pode instalar módulos adicionais do Apache2 e usá-los com o seu servidor WEB. Você pode instalar módulos
do Apache2 usando o comando apt-get. Por exemplo, para instalar o módulo do Apache2 para autenticação
por MYSQL, você pode executar o seguinte comando de um prompt de terminal (linha de comando).
sudo apt-get install libapache2-mod-auth-mysql
Quando você instala um módulo, ele estará disponível no diretório /etc/apache2/mods-available.
Configurações HTTPS
O módulo mod_ssl adiciona uma funcionalidade importante no servidor Apache2 – a habilidade de encriptar
comunicações. Portanto, quando o seu navegador se comunica utilizando encriptação SSL, o prefixo https:// é
usado no começo da URL na barra de navegação do navegador. O módulo mod_ssl está disponível no pacote
apache2-common. Se você possuir este pacote instalado, você pode executar o comando a seguir de um
prompt de terminal para ativar o módulo mod_ssl: sudo a2enmod ssl
Certificados e Segurança
Para configurar um servidor seguro, use a criptografia de chave pública para criar um par de chaves pública e
privada. Na maioria dos casos, você manda o seu pedido de certificação (incluindo a sua chave pública), uma
prova da identidade da sua companhia e o pagamento para uma Autoridade de Certificados (CA). A CA verifica
o pedido de certificação e sua identidade, e depois manda de volta um certificado para o seu servidor seguro.
Roberto Amaral – Marcelo Soares Farias
Página 76
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Alternativamente, você pode criar o seu certificado auto-assinado. Note que, entretanto, o certificado autoassinado não deve ser usando na maioria dos ambientes de produção. Certificados auto-assinados não são
automaticamente aceitos pelo navegador dos usuários. Os usuários são questionados pelo navegador para
aceitar o certificado e criar uma conexão segura. Assim que você tiver um certificado auto-assinado ou um
certificado assinado por um CA de sua escolha, você precisa instalá-lo no seu servidor seguro.
Tipos de Certificados
Você precisa de uma chave e um certificado para operar o seu servidor seguro, o que significa que você tanto
pode gerar uma certificado auto-assinado como comprar um certificado assinado por um CA. Um certificado
assinado por um CA provê duas capacidades importantes para o seu servidor:
• Navegadores reconhecem o certificado e permitem uma conexão segura sem questionamentos ao usuário.
• Quando um CA emite um certificado assinado, está garantindo a identidade da organização que está
provendo as páginas da web para o navegador.
Squid
Atualmente, os servidores proxy deixaram de ser um simples privilégio e passaram a ser uma necessidade.
Proxy e Cache
Um proxy serve para basicamente uma coisa: tratar as requisições dos clientes nos protocolos suportados
por ele, seja bloqueando URL's de sites indevidos ou controlando o acesso à WWW pelos usuários.
O Squid além de um servidor proxy, também integra um sistema de caching para requisições feitas à
Internet. Um servidor cache é armazena informações de requisições temporariamente em disco para uma
visualização mais rápida posterior.
O que é o Squid?
O Squid é o servidor proxy HTTP para plataformas UNIX-Like, surgiu de um projeto entre o governo americano
e a Universidade do Colorado. O Squid trabalha com os protocolos HTTP, HTTPS, FTP, Gopher e WAIS e é o
proxy que possui o maior número de co-projetos.
Instalando via APT
Partindo do princípio que você já tenha o seu APT e seus repositórios de preferência no sources.list, você
pode simplesmente rodar este comando.
# apt-get install squid
Roberto Amaral – Marcelo Soares Farias
Página 77
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
O arquivo squid.conf
O arquivo squid.conf é o principal arquivo de configuração do Squid. Zela pela simplicidade das tags, mas
não muito pelo tamanho, possuindo cerca de 2 mil linhas. Antes de mexer no arquivo, é recomendável que faça
um backup do arquivo original, em caso quaisquer problemas:
# cp /etc/squid/squid.conf /etc/squid/squid.conf.defaults
Algumas das tags mais importantes
Um proxy que apenas sejam configuradas estas tags ainda não é um proxy funcional.
http_port
Padrão: http_port 3128 - Define a porta em que o serviço Squid irá escutar por requisições.
cache_mem
Padrão: cache_mem 8M - Este parâmetro configura a quantidade de memória utilizada para cache e objetos
em trânsito, e não a quantidade de memória reservada para o Squid.
cache_dir
Padrão: cache_dir ufs /var/spool/squid 100 16 256 - Nesta opção são configurados os números de diretórios,
subdiretórios e tamanho do cache. onde:
•
cache_dir - Nome da tag;
•
ufs - É a forma de armazenamento de cache. Existe também a opção aufs, mas que só está disponível
para outras plataformas. Para mais informações, leia o squid.conf;
•
/var/spool/squid - Diretório onde o cache do Squid ficará;
•
100 - Espaço em disco que o cache do Squid poderá ocupar, contado em MB;
•
16 - Quantidade de diretórios que o cache do Squid possuirá;
•
256 - Quantidade de subdiretórios que o cache do Squid possuirá;
cache_access_log
Padrão: cache_access_log /var/log/squid/access.log - Define o arquivo de log de acessos do Squid. Caso
queira saber quem acessou determinada página da internet, é através deste arquivo que descobrirá.
cache_mgr
Padrão: cache_mgr email - Este parâmetro tem a finalidade de especificar o e-mail do administrador do proxy.
Roberto Amaral – Marcelo Soares Farias
Página 78
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
cache_effective_user
Padrão: cache_effective_user squid - Informa ao Squid com qual nome de usuário ele deve rodar.
cache_effective_group
Padrão: cache_effective_group squid - Tem a mesma função da tag acima, mas trabalhar com com o grupo.
visible_hostname
Padrão: visible_hostname none - Define o hostname que fica visível nas mensagens de erro do Squid
apresentadas para os clientes e caso não seja setada, o Squid não starta. Por isso coloque alguma coisa
parecida com isto: visible_hostname squid.seudominio.com.br
Access Control Lists (ACL's)
Uma ACL nada mais é do que a ferramenta que o Squid utiliza para especificar quem pode quem não pode, o
quê pode e o que não pode.
Tipos de ACL's
Src : Endereço IP de origem. Especifica um determinado host ou uma determinada rede de origem.
Dst : Endereço IP de destino. Especifica um determinado host ou uma determinada rede de destino.
Dstdomain : Domínio de destino. Restringe o acesso à um determinado ou para identificar um domínio de
destino.
time : Hora e dia da semana. Especifica um determinado horário.
Port : Número da porta de destino, usado para especificar acesso à determinada porta de um servidor.
url_regex : Compara uma string à uma URL inteira. Muito utilizado para fazer o bloqueio de sites indevidos.
urlpath_regex : Tem uma função semelhante à anterior, porém procura apenas em pedaços do caminho da
URL. Muito utilizado para bloquear extensões.
proto: Especifica um protocolo de transferência.
proxy_auth: Somente utilizada caso esteja utilizando autenticação. Serve para especificar nomes de usuários.
Definindo ACL's
Dentro do arquivo de configuração do Squid, o squid.conf, encontra-se uma área que é ideal para declarar
as ACL's, onde começam a ser definidas, facilmente identificada. Para declarar ACL's, a sintaxe básica:
acl <nome da acl> <tipo da acl> <string>|"<endereço de arquivo>"
Um exemplo prático de ACL:
acl palavra_proibida url_regex -i sexo
A ACL acima bloqueia todos os sites que contenham em seu endereço a palavra "sexo".
A tag http_access
É inútil o uso de ACL's sem o uso da tag http_access. Esta trava ou libera o que a ACL está estipulando.
Roberto Amaral – Marcelo Soares Farias
Página 79
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Exemplo:
http_access deny proibido
Se nós considerarmos o conjunto ACL + http_access, ficaria:
acl proibido url_regex -i sexo
http_access deny proibido
O que o conjunto acima proibi qualquer site que possua em seu endereço a palavra "sexo".
Ordem das ACL's
•
1 - O Squid vai ler todas as ACL's e testar se todas as ACL's declaradas possuem uma sintaxe correta
e se elas estão sendo referenciadas por algum http_access;
•
2 - Depois disso, se ele iniciar normalmente, irá começar a testar todas as requisições que são feitas e
tentar casar as mesmas com as regras que as ACL's estipulam em conjunto com os http_access;
•
3 - Caso uma URL case com uma ACL, ele ignorará todas as outras ACL's para aquela requisição.
Uma outra maneira mais prática de tentar implementar isso é fazer da seguinte maneira:
•
1 - Coloque as ACL's que estipulam uma exceção à alguma regra de bloqueio que virá à seguir;
•
2 - Depois coloque as suas ACL's que vão bloquear sites e tudo o mais;
•
3 - Só então você coloca as suas ACL's liberando o acesso.
Casos
Alguns casos e alguns modos principais para configurar o Squid.
Habilitando o Squid
Para botar o Squid para rodar, basta encontrar a linha: http_access deny all
Para: http_access allow all
E depois reinicie o serviço: # /etc/init.d/squid restart
Restringindo o acesso ao Squid
Quando encontrar a linha http_access allow all, ela vai estar liberando acesso à todos os hosts, já que a
ACL "all" está especificando todos os hosts. Para arrumar isto, você deve encontrar e comentar as linhas:
acl all src 0.0.0.0/0.0.0.0
Roberto Amaral – Marcelo Soares Farias
Página 80
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
http_access allow all
Agora crie uma nova ACL do tipo "src", especificando a rede interna:
acl redeinterna src 192.168.0.0/24
Agora autorize a ACL que acabou de criar por meio de um http_access:
http_access allow redeinterna
Como visto acima, estamos somente permitindo o uso ao proxy pela rede interna. Agora, caso queira
especificar uma range de IP's, faça assim:
acl faixa_adm src 192.168.0.10-192.168.0.50
http_access allow faixa_adm
Bloqueando sites indevidos no proxy
O tipo de ACL url_regex serve para comparar termos dentro de uma URL para saber se esta palavra está
ou não liberada e se os usuários vão ou não, visualizar a página. Utilizado para bloquear sites, Exemplo:
Adicione a seguinte ACL: acl palavra url_regex -i sex
Agora bloqueie o acesso com o http_access: http_access deny palavra
Com este exemplo, todos os sites que possuam a palavra "sex" não serão visualizados pelos usuários. O
parâmetro "-i" serve para que o Squid não distingua entre maiúsculas ou minúsculas. Porém neste momento
você deve estar pensando que não é prático definir uma ACL para cada palavra que você deseje bloquear. E
realmente não é. Por isso nós vamos declarar listas inteiras de palavras negadas. Eis o exemplo:
Primeiro nós vamos criar o arquivo texto que nos vai servir como lista de palavras bloqueadas e damos à
ela permissões de leitura:
# touch /etc/squid/lists/blocked
# chmod 755 /etc/squid/lists/blocked
Nele insira todas as palavras proibidas. Lembre-se que você deve adicionar uma palavra por linha.
Após isto, nós criamos a ACL da seguinte maneira: acl blocked url_regex -i "/etc/squid/lists/blocked"
E bloqueamos o acesso com o http_access: http_access deny blocked
Feito isto, todos os sites que contém em seu endereço palavras como "sex", "sexo", "sexologia" serão
bloqueados, porém nem todos os sites que contém a palavra "sex" é um site pornográfico. Para distinguir os
sites que podem ser liberados dos que não podem, crie uma outra lista para as exceções como "sexologia".
Vamos seguir o mesmo procedimento. Criamos uma lista também para as palavras não bloqueadas.
# touch /etc/squid/lists/unblocked
Roberto Amaral – Marcelo Soares Farias
Página 81
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
# chmod 755 /etc/squid/lists/unblocked
Nesta lista coloque todos os sites que são exceções à regra, como "www.sexologia.org", um site por linha,
ou palavras somente. Depois junte as duas ACL's em um único http_access, desta maneira:
http_access deny blocked !unblocked
Note a utilização do sinal de exclamação, significando uma inversão no sentido da regra. Pronto, o
procedimento está feito. Agora tudo o que você deve fazer é reiniciar o serviço do Squid:
# /etc/init.d/squid restart
Restringindo o horário de acesso
Aqui é o controle que pode ser criado para controle por horário. Para fazer isto, deve ser feito o uso da ACL
do tipo time. Exemplo:
acl horariopermitido time MTWHF 08:00-18:00
http_access deny !horariopermitido
O sinal de exclamação inverte o sentido da regra, negando o uso do proxy em todos os horários, COM
EXCESSÃO do horário especificado na ACL horário permitido. As letras "MTWHF" na frente da ACL,
especificam os dias da semana conforme esta tabela: S - Sunday (Domingo), M - Monday (Segunda), T Tuesday (Terça), W - Wednesday (Quarta), H - Thursday (Quinta), F - Friday (Sexta), A - Saturday (Sábado).
O chefe...
O seu chefe adora proibir as coisas para os usuários mortais, mas ele quer ter o controle completo. Para
contornar a situação, faça o seguinte: acl chefidap src 192.168.1.23
E permitir a lista de palavras negadas para ele, assim: http_access allow blocked chefidap
Uma outra maneira de se fazer ambos os bloqueios é definir o IP/login do seu chefe em uma ACL e na hora
em que for declarar o http_access, definir acima das ACL's de bloqueio, assim:
http_access allow chefidap
http_access deny blocked !unblocked
Só site liberado
Ao invés de especificar os sites negados, especifique o site que vai poder acessar. Primeiramente,
especifique os sites que irão poder acessar: acl bancos url_regex -i "/etc/squid/lists/bancos"
Adicione os endereços dos bancos na lista e especifique também o IP do computador do usuário:
acl peao src 192.168.1.24
Então junte os dois em um único http_access, desta maneira: http_access deny !bancos peao
Roberto Amaral – Marcelo Soares Farias
Página 82
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Interpretando a regra, fica: Vamos bloquear todos os sites, COM EXCESSÃO DOS SITES
ESPECIFICADOS NA LISTA DE BANCOS para o IP 192.168.1.24.
Bloqueando MSN
Bem, aqui está um problema pelo qual alguns administradores possam ter dificuldades. O MSN a partir da
versão 6.x (in)felizmente passou a fazer conexões utilizando tunneling por http. Ou seja: Ele se conecta pela
porta 80 também! O bloqueio do Squid é simples de ser feito, bastando adicionar o termo "gateway.dll" na sua
lista de palavras negadas.
Bloqueando extensões e downloads de determinados
Você pode bloquear extensões que os usuários baixam no computador por meio de HTTP ou de FTP e de
quaisquer outros protocolos que o Squid suporte, fazendo os seguintes passos:
Primeiramente, você deve criar a velha listinha e setar as permissões corretas:
# touch /etc/squid/lists/extensoes
# chmod 755 /etc/squid/lists/extensoes
Feito isto, deve escrever as extensões que deseja bloquear da seguinte maneira no arquivo:
\.mp3$
\.wav$
\.pif$
\.bat$
NOTA: O "\" é um eliminador de metacaracteres e serve para cancelar a função do ".". Já o "$" serve para
que seja analizado até o final de string. Agora vamos adicionar a ACL no Squid que vai bloquear as extensões
efetivamente, juntamente com o seu http_access:
acl extensoes urlpath_regex -i "/etc/squid/lists/extensoes"
http_access deny extensoes
Note que ao invés do url_regex, eu utilizei o urlpath_regex.
Segurança em um servidor Squid
Todo servidor, independente de plataforma ou serviço que executa, precisa de certas configurações de
segurança, para não sofrer ataques. Os principais erros de segurança na configuração do Squid:
Erro I: Definição de relay do servidor Squid
Assim como a maioria dos servidores, o Squid também possui suas configurações de relay. Entenda por
relay o "lado para qual o servidor está rodando, se é para a internet ou para a rede interna". Claro que é
Roberto Amaral – Marcelo Soares Farias
Página 83
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
interessante que monte um servidor para a sua rede interna. Sendo assim, deveria se preocupar com o relay
do servidor Squid, pois geralmente os usuários costumam disfarçar seus IP's utilizando servidores proxy
abertos pela Internet, prática conhecida como IP Spoofing. Você pode detectar se existe alguém utilizando o
seu proxy de duas maneiras: A primeira é deixar o seu servidor rodando e tirar o log de 1 dia.. Com certeza
algo aparecerá, seja um endereço IP que não é da rede interna ou um endereço de host totalmente nada a ver.
A segunda é monitorar a ações do seu proxy com o "tail", em tempo real. Por outro lado, temos também duas
maneiras de resolver este problema.
1ª Maneira: http_port
Você pode editar esta tag para que o Squid só escute requisições vindas da rede interna, desta maneira:
Troque o valor-padrão da tag:
http_port 3128
Para:
http_port 192.168.1.1:3128
Se você resolver por aqui, o seu problema com relay morreu. Eu prefiro esta maneira por ser mais prática e
por não ter que ficar mexendo com ACL's e se algum dia um abelhudo passar um portscanner na sua máquina,
como o nmap, ele não irá apresentar o serviço Squid rodando.
2ª Maneira: acl all src 192.168.0.0/24
Você pode permitir o http_port como mencionado acima, mas deverá definir a sua rede interna quando for
utilizar as suas ACL's, desta maneira:
Troque a ACL all de: acl all src 0.0.0.0/0
Para: acl all src 192.168.0.0/24 (O Squid somente irá permitir conexões vindas da rede interna.)
Erro II: http_access deny all
Coloque esta linha no final das declarações das suas ACL's. O motivo disto é que se o Squid não encontra
uma ocasião pela qual encaixar uma ACL, ele simplesmente libera a sua utilização.
Erro III: Usuários
Geralmente usuários removem as configurações de proxy do navegador para navegarem sem restrições e
somente pelo NAT ou procuram por proxies abertos na Internet e configuram os navegadores para utilizarem
estes endereços ou ainda vão em páginas como o "anonymizer" ou similares e navegam por lá. Por isto, é
importante bloquear de tais páginas.
Roberto Amaral – Marcelo Soares Farias
Página 84
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Erro IV - Proxy Transparente sem ser no gateway da rede
Também é comum receber e-mails de pessoas perguntando como fazer isso. Não é uma idéia muito
segura, a menos que você possua uma DMZ. Isso porque os usuários podem alterar as configurações de rede
e fazer com que o gateway da rede aponte para o roteador final, fazendo um caminho alternativo para os
pacotes e fazendo com que os mesmos não passem pelo servidor Squid.
Criando um script de relatório simples
Para a criação de um shell-script que gere o relatório que pegue as últimas requisições negadas pelo proxy,
devemos criar um arquivo em branco:# touch /usr/bin/squidreport
Com o conteúdo abaixo: #!/bin/bash
cat /var/log/squid.log | grep DENIED | tail -n 60 | mail root
Mude as permissões do arquivo para: # chmod 700 relatoriosquid.sh
E agende o relatório para ser gerado dentro do CRON, com a seguinte linha:
# crontab -e
30
21
*
*
*
squidreport
Pronto! Todos os dias às nove e meia da noite, será gerado o relatório de acessos negados pelo Squid e
eles vão estar dentro da caixa de e-mails do administrador do sistema.
NFS
O que é NFS?
O Network File System (NFS) foi desenvolvido para permitir que se possam montar partições ou diretórios
remotos como se fosse um disco local, garantindo especificar diferentes permissões de acesso a cada cliente
de acesso ao compartilhamento.
Servidor
Instalação
# apt-get install nfs-user-server nfs-common statd
portmap
Configurando o Servidor NFS
Para começar a configurar o serviço, deve entrar no sistema como root e criar um diretório /Compartilhado,
como default desse documento, ou se preferir escolha outro local ou outro nome de diretório a ser
compartilhado. Editar o arquivo /etc/exports para definir a pasta a ser compartilhada e permissões de acesso. A
linha abaixo, por exemplo, dá acesso diretório "Compartilhado" para o IP 192.168.0.2 com direitos de leitura,
escrita e execução.
/Compartilhado 192.168.0.2/255.255.255.0(rw,no_root_squash,sync)
Roberto Amaral – Marcelo Soares Farias
Página 85
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Onde:
rw (escrita e leitura), no_root_squash (privilégios de superusuário), sync (não permite que o servidor responda
a pedidos antes que as alterações feitas pelo pedido sejam salvas no disco.)
O padrão de construção da linha de permissões de acesso ao compartilhamento, está abaixo:
Diretório host1(opção11, opção12) host2(opção21, opção22)
Diretório: Diretório a ser compartilhado (ex. /home/fabio/).
HostN: IP do pc cliente do compartilhamento.
OpçãoXY: Permissões de acesso ao compartilhamento
Editar o arquivo /etc/hosts.deny para definir a segurança do compartilhamento. nserir as seguintes linhas:
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
Editar o arquivo /etc/hosts.allow para definir o IP ou faixa de IPs que poderão "concorrer" aos
compartilhamentos, ou seja, especifica quem terá acesso a cada serviço. Inserir as seguintes linhas para
permitir que toda a rede 192.168.0.0/24 tenha direito serviços especificados.
portmap: 192.168.0.0/24
lockd: 192.168.0.0/24
rquotad: 192.168.0.0/24
mountd: 192.168.0.0/24
statd: 192.168.0.0/24
No exemplo é especificado uma faixa de IPs, mas pode definir os hosts separadamente dentro do padrão
abaixo:
serviço: host1, host2, host3, hostX
Executar os seguintes comandos:
/etc/init.d/portmap restart
/etc/init.d/nfs-user-server restart
/etc/init.d/nfs-common restart
rpc.montd
rpc.nfsd
rpc.statd
rpc.lockd
Roberto Amaral – Marcelo Soares Farias
Página 86
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Cliente
Instalação
# apt-get install nfs-common
statd portmap
Editar o arquivo /etc/hosts.deny para definir a segurança do compartilhamento. Inserir as seguintes linhas:
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
Executar os seguintes comandos:
/etc/init.d/portmap restart
rpc.statd
rpc.lockd
mount -t nfs 192.168.1.115(end do servidor):/Compartilhado /diretorio/local
Se você acha muito incômodo ter que repetir essa linha de comando enorme, adicione essa linha ao fstab:
: /Compartilhado /diretorio/local nfs defaults,noauto 0 0
Feito isso a montagem fica bem mais simples, basta digitar:
# mount /diretorio/local
Ssh
O SSH permite administrar máquinas remotamente, permite transferir arquivos de várias formas diferentes e,
como se não bastasse, permite também encapsular outros protocolos. A grande vantagem do SSH sobre
outras ferramentas de acesso remoto é a grande ênfase na segurança. Um servidor SSH bem configurado é
virtualmente impenetrável. O SSH é dividido em dois módulos. O sshd é o módulo servidor, um serviço que fica
residente na máquina que será acessada, enquanto o ssh é o módulo cliente, um utilitário que você utiliza para
acessá-lo. No Debian, ambos são instalados através do pacote "ssh".
Instalação
O padrão do Debian é já trazer o ssh instalado. Caso seja necessário instalar, use:#apt-get install ssh
Iniciando o servidor ssh. Com o pacote instalado, você inicia o servidor usando o comando:/etc/init.d/ssh start
Para que ele seja inicializado durante o boot, use o comando: update-rc.d -f ssh defaults
A configuração do servidor, vai no arquivo /etc/ssh/sshd_config, enquanto a configuração do cliente vai no
/etc/ssh/ssh_config. Note que muda apenas um "d" entre os dois. No Debian o servidor só funcionará se o
arquivo sshd_not_to_be_run, presente em /etc/ssh for renomeado ou excluído. Renomeando o arquivo:
mv /etc/ssh/sshd_not_to_be_run /etc/sshd_not_to_be_run.old
Roberto Amaral – Marcelo Soares Farias
Página 87
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Configuração do servidor
O SSH tem dois protocolos de autenticação:
• protocolo SSH versão 1:
– métodos de autenticação disponíveis:
* RSAAuthentication: autenticação de usuário baseado em chave de identidadeRSA
* RhostsAuthentication: autenticação de máquina baseado em .rhosts (inseguro, desabilitado)
* RhostsRSAAuthentication: autenticação .rhosts combinada com chave de máquina RSA
* ChallengeResponseAuthentication: autenticação pergunta-resposta RSA
* PasswordAuthentication: autenticação baseada em senha
• protocolo SSH versão 2:
– métodos de autenticação disponíveis:
* PubkeyAuthentication: autenticação de usuário baseado em chave pública
* HostbasedAuthentication: autenticação .rhosts ou /etc/hosts.equiv combinado com autenticação de
chave pública de máquina cliente (desabilitado)
* ChallengeResponseAuthentication: autenticação pergunta-resposta
* PasswordAuthentication: autenticação baseada em senha
Você pode configurar várias opções relacionadas ao servidor SSH, incluindo a porta TCP a ser usada editando
o arquivo "/etc/ssh/sshd_config". A maior parte das opções dentro do arquivo podem ser omitidas, pois o
servidor simplesmente utiliza valores padrão para as opções que não constarem no arquivo.
- Porta: Uma das primeiras linhas é a: Port 22
Esta é a porta que será usada pelo servidor SSH. O padrão é usar a porta 22. Ao mudar a porta do servidor
aqui, você deverá usar a opção "-p" ao conectar a partir dos clientes, para indicar a porta usada, como em:
# ssh -p 2222 [email protected]
Outra opção é editar o arquivo "/etc/ssh/ssh_config" (nos clientes) e alterar a porta padrão. Mudar a porta
padrão do SSH é uma boa idéia se você está preocupado com a segurança. Muitos dos ataques "casuais",
quando não existe um alvo definido, começam com um portscan genérico, feito em faixas inteiras de endereços
IP, mas apenas em algumas portas conhecidas, como a 21, 22 e 80. A partir daí, os ataques vão sendo
refinados e direcionados apenas para os servidores vulneráveis encontrados na primeira varredura. Colocar
seu servidor numa porta mais escondida, já dificulta um pouco as coisas.
Controle de acesso: Logo abaixo vem a opção "ListenAddress", que permite limitar o SSH a uma única placa
de rede (mesmo sem usar firewall), em casos de micros com duas ou mais placas. O típico caso onde você
quer que o SSH fique acessível apenas na rede local, mas não na internet, por exemplo. Digamos que o
Roberto Amaral – Marcelo Soares Farias
Página 88
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
servidor use o endereço "192.168.0.1" na rede local e você quer que o servidor SSH não fique disponível na
Internet. adicionaria a linha: ListenAddress 192.168.0.1
Note que especificamos nesta opção o próprio IP do servidor na interface escolhida, não a faixa de IP's da rede
local ou os endereços que terão acesso a ele.
Protocolo: Atualmente utilizamos o SSH 2, mas ainda existem alguns poucos clientes que utilizam a primeira
versão do protocolo. Por padrão, o servidor SSH aceita conexões de clientes que utilizam qualquer um dos dois
protocolos, o que é indicado na linha: Protocol 2,1
O protocolo SSH 1 tem alguns problemas fundamentais de segurança, por isso alguns administradores
preferem desabilitar a compatibilidade com ele, aceitando apenas clientes que usam o SSH 2. Neste caso, a
linha fica apenas "Protocol 2"
- Usuários e senhas: Outra opção interessante, logo abaixo é a: PermitRootLogin yes
Esta opção determina se o servidor aceitará que usuários se loguem como root. Do ponto de vista da
segurança, é melhor deixar esta opção como "no", pois assim o usuário precisará primeiro se logar usando um
login normal e depois virar root usando o "su" ou "su -". Por padrão, o SSH permite que qualquer usuário
cadastrado no sistema logue-se remotamente, mas você pode refinar isso através da opção "AllowUsers", que
especifica uma lista de usuários que podem usar o SSH. Quem não estiver na lista, continua usando o sistema
localmente, mas não consegue se logar via SSH. Isso evita que contas com senhas fracas, usadas por
usuários que não tem necessidade de acessar o servidor remotamente coloquem a segurança do sistema em
risco. Para permitir que apenas os usuários tico e teco possam usar o SSH, adicione a linha: AllowUsers tico
teco. Você pode ainda inverter a lógica, usando a opção "DenyUsers". Neste caso, todos os usuários
cadastrados no sistema podem fazer login, com exceção dos especificados na linha, como em:
DenyUsers joaquim ricardao
Outra opção relacionada à segurança é a: PermitEmptyPasswords no
Esta opção faz com que qualquer conta sem senha fique automaticamente desativada no SSH, evitando que
alguém consiga se conectar ao servidor "por acaso" ao descobrir a conta desprotegida. Lembre-se que a senha
é justamente o ponto fraco do SSH. De nada adianta usar 2048 bits de encriptação se o usuário escreve a
senha num post-it colado no monitor, ou deixa a senha em branco.
- Banner: Alguns servidores exibem mensagens de advertência antes do prompt de login, avisando que todas
as tentativas de acesso estão sendo monitoradas ou coisas do gênero. A mensagem é especificada através da
opção "Banner", onde você indica um arquivo de texto com o conteúdo a ser mostrado, como em:
Roberto Amaral – Marcelo Soares Farias
Página 89
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Banner = /etc/ssh/banner.txt
- X11 Forwarding: Um pouco depois temos a opção:
X11Forwarding yes
Esta opção determina se o servidor permitirá que os clientes executem aplicativos gráficos remotamente. Se o
servidor será acessado via internet ou se possui um link lento, você pode deixar esta opção como "no" para
economizar banda. Desta forma, os clientes poderão executar apenas comandos e aplicativos de modo texto.
- Módulos: O SSH inclui um módulo de transferência de arquivos (o SFTP). Ele é ativado através da linha:
Subsystem sftp /usr/lib/sftp-server
É realmente necessário que esta linha esteja presente para que o SFTP funcione. Comente esta linha apenas
se você realmente quiser desativá-lo.
Para que as alterações entrem em vigor, reinicie o servidor SSH:
# /etc/init.d/ssh restart
Transferindo arquivos
Além de permitir rodar aplicativos e fazer toda a administração de um servidor remotamente, o ssh também
pode ser usado para transferir arquivos. Uma forma primitiva de transferir arquivos via SSH é usar o "scp", que
permite especificar numa única linha o login e endereço do servidor, junto com o arquivo que será transferido.
Graças a isso, ele é muito usado em scripts. A sintaxe do scp é:
scp arquivo_local login@servidor:pasta_remota
como em:
$ scp /home/arquivo.tar [email protected]:/var/www/download
Você pode adicionar também as opções "-p" (que preserva as permissões de acesso além das datas de
criação e modificação do arquivo original), "-r" (que permite copiar pastas, recursivamente), "-v" (verbose, onde
são mostradas todas as mensagens) e "-C" (que ativa a compressão dos dados, ajuda muito na hora de
transferir grandes arquivos via internet). Neste caso o comando ficaria:
$ scp -prvC /home/arquivo.tar [email protected]:/var/www/download
Ao incluir a opção "-r", você pode especificar diretamente uma pasta no primeiro parâmetro.
Roberto Amaral – Marcelo Soares Farias
Página 90
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Outra forma mais básica de fazer isso é usar o sftp, um comando que faz parte do pacote padrão. Ele oferece
uma interface similar à dos antigos programas de FTP de modo texto, mas todos os arquivos transferidos
através dele trafegam através de um túnel encriptado, criado através do SSH. Na prática, temos uma espécie
de VPN temporária, criada no momento em que é efetuada a conexão. A melhor parte é que o próprio SSH
cuida de tudo, não é necessário instalar nenhum programa adicional. Para se conectar a um servidor usando o
sftp, o comando é: $ sftp [email protected]
Se o servidor ssh na outra ponta estiver configurado para escutar numa porta diferente da 22, é preciso indicar
a porta no comando, incluindo o parâmetro -o port=, como em:
$ sftp -o port=22 [email protected]
A partir daí você tem um prompt do sftp. Use o comando "put" para dar upload de um arquivo e "get" para
baixar um arquivo do servidor para a pasta local. Para navegar entre as pastas do servidor, use os comandos
"cd pasta/" (para acessar a pasta), "cd .." (para subir um diretório), "ls" (para listar os arquivos) e "pwd" (para
ver em qual diretório está). Exemplo:
user@athenas:~$ sftp -o port=2222 [email protected]
Connecting to XX.XX.XX.XX...
Password:
sftp> ls
Desktop Meu Computador OpenOffice.org1.1.1a bkp060901
sftp> get bkp060901
Fetching /home/user/bkp060901 to bkp060901
/home/user/bkp060901 100% 825KB 825.1KB/s 00:01
sftp> put RealPlayer10GOLD.bin
Uploading RealPlayer10GOLD.bin to /home/user/RealPlayer10GOLD.bin
RealPlayer10GOLD.bin 100% 6726KB 3.3MB/s 00:02
sftp> pwd
Remote working directory: /home/user
Existem ainda os comandos:
lcd
#(local cd)
lls
#(local ls)
lmkdir
#(local mkdir)
lpwd
#(local pwd)
Por exemplo, digamos que você está atualmente no diretório /mnt/arquivos. Ao abrir a conexão via sftp, tudo
que você baixar será colocado automaticamente neste diretório. Mas, digamos que você queira baixar um
determinado arquivo para o diretório /home/tico. Você usaria então o comando
lcd /home/tico
Roberto Amaral – Marcelo Soares Farias
Página 91
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
para mudar o diretório local e depois o get arquivo para baixá-lo já na pasta correta. Na hora de dar upload de
um arquivo é a mesma coisa. Você pode usar o "lpwd" para listar os arquivos no diretório local e depois o "put
arquivo" para dar upload.
Telnet
O serviço telnet é oferece o login remoto em seu computador, que permite trabalhar conectado a distância
como se estivesse em frente a ele. Ele substitui o rlogin e possui muitas melhorias em relação a ele, como o
controle de acesso, personalização de seção e controle de terminal. Atualmente possui tanto a versão original
(insegura), quanto uma versão mais segura com suporte a ssl.
Pacotes:
telnet Cliente telnet com suporte a autenticação.
telnetd Servidor telnet com suporte a autenticação.
telnet-ssl Cliente telnet com suporte a autenticação e ssl. Também suporta conexão a servidores telnet padrão
quando o servidor não suporta ssl. Por padrão é tentada a conexão usando ssl, se esta falhar será assumida a
transmissão em texto plano.
Telnetd-ssl Servidor telnet com suporte a autenticação e ssl. Também suporta conexão de clientes telnet
padrão (sem suporte a ssl).
Utilitários:
in.telnetd Servidor telnet
telnet Cliente telnet padrão (quando o pacote telnetssl está instalado, é simplesmente um link para telnetssl).
telnet-ssl Cliente telnet com suporte a ssl.
Instalação
apt-get install telnet telnetd
ou
apt-get install telnet-ssl telnetd-ssl
Os pacotes com o ssl no final possuem suporte a criptografia ssl. Por padrão a porta usada para executar o
serviço telnet é a 23 (ou outro número de porta definido no /etc/services). A instalação do servidor telnet é feita
via inetd (no arquivo /etc/inetd.conf) e o controle de acesso ao serviço é feito através dos arquivos
/etc/hosts.allow e /etc/hosts.deny. O servidor tem o nome in.telnetd e este deverá ser usado para ajustar o
controle de acesso nos arquivos acima.
Roberto Amaral – Marcelo Soares Farias
Página 92
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Iniciando o servidor/reiniciando/recarregando a configuração
O arquivo que controla o funcionamento do servidor telnet é o /etc/inetd.conf e o controle de acesso sendo feito
pelos arquivos /etc/hosts.allow e /etc/hosts.deny. Será necessário reiniciar o servidor inetd caso algum destes
três arquivos seja modificado:
killall HUP inetd
A porta de operação padrão é a 23 e pode ser modificada no arquivo /etc/services.
Opções de linha de comando do servidor telnetd:
-D nível_de_depuração Permite especificar o que será registrado pelo servidor
durante a conexão dos clientes telnet. As seguintes opções são suportadas:
options Mostra detalhes sobre a negociação das opções de conexão.
report Mostra detalhe de opções e o que está sendo feito.
netdata Mostra os dados transferidos na conexão telnetd.
ptydata Mostra os dados mostrados na pty.
-edebug Ativa a depuração do código de criptografia apenas para o servidor telnet com suporte a ssl.
-h Somente mostra os detalhes de configuração do seu PC após o usuário fornecer um nome/senha válidos.
-L [programa] Utiliza o programa especificado para fazer o login do usuário
(/usr/sbin/telnetlogin é o padrão).
-n Não envia pacotes keep alive para verificar o estado da conexão. Desativando esta opção poderá fazer o
servidor ficar rodando constantemente caso aconteça algum problema e o usuário não consiga se desconectar
normalmente.
-S TOS Ajusta o tipo de serviço usado na conexão para o valor especificado.
Estas opções deverão ser especificadas após o servidor in.telnetd no arquivo
/etc/inetd.conf.
Fazendo conexões ao servidor telnet
Use o comando:
telnet [endereço] [porta]
para realizar conexões com uma máquina rodando o servidor telnet.
Adicionalmente as seguintes opções podem ser usadas:
-l [usuario] Envia o nome de usuário ao computador remoto. Muito útil com o telnetssl.
-E Desativa o caracter de escape
Roberto Amaral – Marcelo Soares Farias
Página 93
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
-a Tenta fazer o login automático usando o nome de usuário local. Se o login falhar, será solicitado o nome de
usuário. Esta opção é usada por padrão com o cliente telnetssl.
-r Emula o comportamento do programa rlogin.
Exemplo:
# Conecta-se ao servidor telnet rodando na porta 23 de sua própria máquina
telnet localhost
# Conecta-se ao servidor telnet 200.200.200.200 operando na porta 53454 usando o
# nome de usuário john
telnet –l john 200.200.200.200 53454
Roberto Amaral – Marcelo Soares Farias
Página 94
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Instalação de Servidor de e-mail (usando post-fix)
# apt-get install postfix
# apt-get install postfix-ldap
# apt-get install postfix-mysql
# apt-get install postfix-pgsql
Passos de Configuração:
I. A primeira pergunta é sobre a função do servidor de e-mails.
a. "Internet Site", cria um servidor que envia e recebe os e-mails diretamente.
b. "with smarthost", servidor recebe mensagens, mas o envio fica a cargo de outra máquina.
c. "Satellite system", servidor envia através de outra máquina e não recebe mensagens.
d. "Local only" é usada apenas em redes de terminais leves,permite apenas que os usuários logados no
servidor troquem e-mails entre si.
II. Defina a conta do Administrador do Sistema de e-mail
III. Insira o Domíno Registrado (neste caso use gerds+bancada.utp.br)
IV. Definir os destinos que serão aceitos pelo servidor, ou seja, os endereços que colocados no destinatário da
mensagem fazem ele entender que o e-mail é para ele. Use o nome da máquina, o domínio registrado,
"localhost.localdomain" e "localhost", todos separados por vírgula e espaço.
V. A opção "synchronous updates" permite desativar as otimizações no envio das mensagens, fazendo com que os
e-mails sejam enviados conforme são recebidos e em ordem.
Depois de concluída a instalação, o servidor já estará iniciado e configurado para subir automaticamente durante o boot.
Testando:
$ telnet seuip 25
Trying seuip
Connected to seuip
Escape character is '^]'.
220 debian ESMTP Postfix (Debian/GNU)
HELO smtp.eu.com
250 debian
MAIL From: [email protected]
250 Ok
RCPT to: joao@localhost
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Vai ver se estou na esquina!
.
250 Ok: queued as 8CEDB2215
QUIT
221 Bye
Connection closed by foreign host.
Roberto Amaral – Marcelo Soares Farias
Página 95
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Instalando um Cliente em modo texto
apt-get install mutt
Instalando suportes
Existem vários servidores pop3, como o Cyrus e o Courier. O Courier é o mais usado, pois
inclui vários componentes adicionais. Ele é, na verdade, uma suíte, que inclui até mesmo um
webmail.
# apt-get install courier-pop
# apt-get install courier-pop-ssl
# apt-get install courier-imap
# apt-get install courier-imap-ssl
Cadastro de Usuário
# adduser usuario
Configurando o /etc/postfix/main.cf
# /etc/postfix/main.cf
myhostname = gerds(+bancada).utp.br
mydomain = gerds.utp.br
append_dot_mydomain = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = etch.gerds.utp.br, gerds.utp.br, localhost
relayhost =
mynetworks = 10.10.10.0/24
home_mailbox = Maildir/
mailbox_command =
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
message_size_limit = 20000000
mailbox_size_limit = 0
Roberto Amaral – Marcelo Soares Farias
Página 96
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Universidade Tuiuti do Paraná –
UTP
Faculdade de Ciências Exatas e de Tecnologia
Cursos de Computação
Grupo de Estudos de Redes de Computadores e Sistemas Distribuídos
AULA PRÁTICA
Professores:
Marcelo Soares Farias
Roberto Néia Amaral
Roberto Amaral – Marcelo Soares Farias
Página 97
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Curitiba, 2008
HTTPD - Servidor Web Apache2
Instalação
O servidor web Apache2 está disponível no Ubuntu Linux. Para instalar o Apache2:
# sudo apt-get install apache2#
Configuração
sudo cp /etc/apache2/sites-available/default
Campos:
• ServerAdmin especifica o endereço de email a ser anunciado.
• Listen especifica a porta, e opcionalmente o endereço IP, na qual o Apache2 irá escutar.
• ServerName especifica qual a FQDN seu site deverá responder.
• DocumentRoot especifica o local do s arquivos padrão que formam o site.
Configuração Padrão
Esta seção explica a configuração das definições padrão do servidor Apache2.
• DirectoryIndex é a página padrão do servidor quando o usuário requisita um índice de um diretório.
• ErrorDocument permite que especifique um arquivo para o Apache usar para um evento específico de erro.
• ExecCGI - Permite execução de scripts CGI.
• Includes - Permite inclusões no lado do servidor, permitindo que um arquivo HTML inclua outros arquivos.
• IncludesNOEXEC - Permite includes, mais desabilita o comandos #exec e #include nos scripts CGI
• Indexes - Mostra uma lista formatada dos conteúdos dos diretórios.
• Multiview - Suporta multi-visões negociadas pelo conteúdo; esta opção é desabilitada por segurança.
• SymLinksIfOwnerMatch - Segue os links simbólicos caso o arquivo seja do mesmo dono que o link.
Roberto Amaral – Marcelo Soares Farias
Página 98
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Squid
Instalando via APT
# apt-get install squid
O arquivo squid.conf
Antes de mexer no arquivo faça um backup do arquivo original:
/etc/squid/squid.conf.defaults
# cp /etc/squid/squid.conf
Algumas das tags mais importantes
Um proxy que apenas sejam configuradas estas tags ainda não é um proxy funcional.
http_port Padrão: http_port 3128 - Define a porta em que o serviço Squid irá escutar por requisições.
cache_mem Padrão: 8M - Quantidade de memória utilizada para cache e objetos em trânsito.
cache_dir Padrão: cache_dir ufs /var/spool/squid 100 16 256
•
cache_dir - Nome da tag;
•
ufs - É a forma de armazenamento de cache.
•
/var/spool/squid - Diretório onde o cache do Squid ficará;
•
100 - Espaço em disco que o cache do Squid poderá ocupar, contado em MB;
•
16 - Quantidade de diretórios que o cache do Squid possuirá;
•
256 - Quantidade de subdiretórios que o cache do Squid possuirá;
cache_access_log
Padrão: cache_access_log /var/log/squid/access.log - Define o arquivo de log de acessos do Squid
cache_mgr
Padrão: cache_mgr email - Este parâmetro tem a finalidade de especificar o e-mail do administrador do proxy.
cache_effective_user
Padrão: cache_effective_user squid - Informa ao Squid com qual nome de usuário ele deve rodar.
cache_effective_group
Padrão: cache_effective_group squid - Tem a mesma função da tag acima, mas trabalhar com com o grupo.
visible_hostname
Padrão: visible_hostname none - Define o hostname que fica visível nas mensagens de erro do Squid
apresentadas para os clientes e,caso não seja setada, o Squid não starta. Por isso coloque alguma coisa
parecida com isto: visible_hostname squid.seudominio.com.br
Roberto Amaral – Marcelo Soares Farias
Página 99
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Access Control Lists (ACL's)
Uma ACL nada mais é do que a ferramenta que o Squid utiliza para especificar quem pode quem não pode, o
quê pode e o que não pode.
Tipos de ACL's
Src : Endereço IP de origem. Especifica um determinado host ou uma determinada rede de origem.
Dst : Endereço IP de destino. Especifica um determinado host ou uma determinada rede de destino.
Dstdomain : Domínio de destino. Restringe o acesso ou para identificar um domínio de destino.
time : Hora e dia da semana. Especifica um determinado horário.
Port : Número da porta de destino, usado para especificar acesso à determinada porta de um servidor.
url_regex : Compara uma string à uma URL inteira. Muito utilizado para fazer o bloqueio de sites indevidos.
urlpath_regex : Tem uma função semelhante à anterior, porém procura apenas em pedaços do caminho da
URL. Muito utilizado para bloquear extensões.
proto: Especifica um protocolo de transferência.
proxy_auth: Somente utilizada caso esteja utilizando autenticação. Serve para especificar nomes de usuários.
Definindo ACL's
Em squid.conf, declarar ACL's, a sintaxe básica:
acl <nome da acl> <tipo da acl> <string>|"<endereço de arquivo>"
Um exemplo prático de ACL: acl palavra_proibida url_regex -i sexo
A tag http_access
É inútil o uso de ACL's sem o uso da tag http_access. Esta trava ou libera o que a ACL está estipulando.
Exemplo: http_access
deny proibido
Exemplo:
acl proibido url_regex -i sexo
http_access deny proibido
Ordem das ACL's
• 1 - O Squid vai ler todas as ACL's e testar se possuem uma sintaxe correta;
• 2 - Testa todas as requisições que são feitas e casa com as regras;
• 3 - Caso uma URL case com uma ACL, ele ignorará todas as outras ACL's para aquela requisição.
Uma outra maneira mais prática de tentar implementar isso é fazer da seguinte maneira:
• 1 - Coloque as ACL's que estipulam uma exceção à alguma regra de bloqueio que virá à seguir;
• 2 - Depois coloque as suas ACL's que vão bloquear sites e tudo o mais;
• 3 - Só então você coloca as suas ACL's liberando o acesso.
Habilitando o Squid
Para botar o Squid para rodar, basta encontrar a linha: http_access deny all
Para: http_access allow all / E depois reinicie o serviço: # /etc/init.d/squid restart
netfilter
As tabelas do iptables são:
•
filter: é a tabela padrão, sobre a qual podemos nos referir a três correntes de regras, ou chains:
Roberto Amaral – Marcelo Soares Farias
Página 100
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
•
INPUT, pacotes que entram na interface;
•
OUTPUT, pacotes que saem da interface
•
FORWARD, pacotes que estão sendo roteados de uma interface para outra;
•
nat: esta tabela se refere ao uso do recurso de Network Address Translation ou NAT, na qual podemos
nos referir aos chains: PREROUTING, pacotes que serão alterados antes de roteamento; OUTPUT,
pacotes locais que serão alterados antes do roteamento e POSTROUTING, pacotes que serão
alterados após a aplicação das regras de roteamento;
•
mangle: usada para alterações especiais no pacote, PREROUTING, para alteração antes do
roteamento e OUTPUT, pacotes locais que serão alterados antes do roteamento.
Dentre as ações que são feitas sobre os pacotes que atendem a um determinado chain em uma dada tabela:
•
ACCEPT: aceita o pacote;
•
DROP: rejeita o pacote;
•
MASQUERADE: atua somente sobre a tabela nat e indica que será efetuado a conversão de
endereços ou NAT, conforme indicado no comando.
Compartilhando Conexão com IPTABLE
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o INTERFACE -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
MRTG
MRTG coleta informações em base de script para criar relatórios que podem ser visualizados o estado de um
roteador, servidor ou link em determinados tempos.
Servidor (script – Monitoração HD)
Servidor (script – Monitor HD e Memória)
#chmod +x /etc/mrtg/mrtg-hd.sh
#chmod +x /etc/mrtg/mrtg-cpu.sh
if [ -e $1 ] then printf "parametro ausente\n"
unset LANG
else
mem=$(/usr/bin/free|grep ^-)
total=`df | grep $1 | awk '{print $2}' 2>> /dev/null`
load=$(cat /proc/loadavg)
livre=`df | grep $1 | awk '{print $3}' 2>> /dev/null`
awk -v load="$load" -v mem="$mem" '
ocupado=`df | grep $1 | awk '{print $4}' 2>>
BEGIN {
/dev/null`
split(load,loadstats)
percent_oc=$(($ocupado * 100 / $total))
print int(100*loadstats[2])
percent_li=$((100 - $percent_oc))
split(mem,memstats);
echo "$percent_oc"
print int(100*memstats[3]/(memstats[3]+\
echo "$percent_li"
fi
Roberto Amaral – Marcelo Soares Farias
memstats[4]));
}'
Página 101
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Servidor (script) – Configuração do mrtg.cfg
WorkDir: /usr/local/apache/htdocs/mrtg/
Language: brazilian
RunAsDaemon: yes
Interval: 5
Target[hdboot]:`/etc/mrtg/mrtg-hd.sh hdb1 2>> /dev/null`
Title[hdboot]:"Uso do HD do Sistema"
PageTop[hdboot]:<h1>Uso do HD do Sistema</h1>
Options[hdboot]: growright,noinfo,gauge
YLegend[hdboot]: Percentual
ShortLegend[hdboot]: %
MaxBytes[hdboot]: 100
Legend1[hdboot]: espaco livre
Legend2[hdboot]: espaco ocupado
LegendI[hdboot]: Livre
LegendO[hdboot]: Ocupado
Target[eth0]: `/etc/mrtg/mrtgstats-net.sh eth0`
Title[eth0]:"Trafego na placa de rede - eth0"
MaxBytes[eth0]:1400000
PageTop[eth0]: <h1>Trafego de dados na placa de rede</h1>
Options[eth0]: growright,bits,noinfo
Target[perf]:`/etc/mrtg/mrtg-cpu.sh`
Title[perf]:"Carga da CPU e Uso da Mem"
PageTop[perf]:<h1>Carga da CPU e Uso da Mem</h1>
Options[perf]: growright,noinfo,gauge
YLegend[perf]: Percentual
ShortLegend[perf]: %
MaxBytes[perf]: 100
Legend1[perf]: Carga da CPU
Legend2[perf]: Uso da mem real
LegendI[perf]: Carga
LegendO[perf]: Mem
ssh
A configuração do servidor, vai no arquivo /etc/ssh/sshd_config
A configuração do cliente vai no /etc/ssh/ssh_config.
Com o pacote instalado, você inicia o servidor usando o comando /etc/init.d/ssh start
No Debian o servidor só funcionará se o arquivo sshd_not_to_be_run, presente em /etc/ssh for renomeado ou
excluído. Renomeando o arquivo:
mv /etc/ssh/sshd_not_to_be_run /etc/sshd_not_to_be_run.old
Roberto Amaral – Marcelo Soares Farias
Página 102
03/03/2010
Universidade Tuiuti do Paraná
GERDS - Grupo Interdisciplinar de Redes de Computadores e Sistemas Distribuídos
CURSO: LPI - SERVIDORES DE REDES E GERENCIAMENTO - LINUX
Em uma empresa, é padrão existir um equipamento específico para servidor de serviços,
assim como roteador para acesso a Internet. Este equipamento sempre encontra-se isolado
e o mesmo somente pode ser acesso através de login remoto.
Para as pessoas que trabalham na empresa, este Servidor/Roteador é utilizado como
firewall, proibindo tráfego em certos horários, palavras e principalmente sites.
Portanto o objetivo deste trabalho é por em prática a implementação de um equipamento
Servidor/Roteador que atenda uma empresa.
Cliente Apache
Cliente Squid
Clinete SSH
Rede Trabalho (10.11.12.X/24)
Interface Interna 10.11.12.2
Servidor Apache
Altere o DocumentRoot para /var/www/html
Servidor SSH
Antes de fazer o Squid crie um compartilhamento
com IPTable
Servidor Squid
Bloqueando sexo e site
Interface Interna 10.11.12.1
Interface Externa a local/atual
Rede Laboratório
10.10.10.10/24
Gateway
10.10.10.10
INTERNET
Roberto Amaral – Marcelo Soares Farias
Página 103
03/03/2010

Documentos relacionados