O documento fornece informações sobre:
1) Uma introdução à instalação e configuração de aplicações para servidores no Ubuntu.
2) Detalhes sobre o gerenciador de pacotes Apt e ferramentas como Apt-Get e Aptitude para instalar e atualizar software.
3) Configurações de rede, servidores e bancos de dados como Apache, MySQL e Samba.
3. Índice
About This Guide .............................................................................................................. vi
1. Conventions ........................................................................................................... vii
2. Contributing and Feedback ..................................................................................... viii
1. Introdução ...................................................................................................................... 9
2. Instalação ....................................................................................................................... 10
1. Preparando para instalar ......................................................................................... 11
2. Instalando pelo CD ................................................................................................ 13
3. Gerenciador de Pacotes .................................................................................................. 14
1. Introdução .............................................................................................................. 15
2. Apt-Get ................................................................................................................. 16
3. Aptitude ................................................................................................................. 18
4. Configuração .......................................................................................................... 20
5. Repositórios Extras ................................................................................................. 21
4. Rede .............................................................................................................................. 22
1. Configuração de Rede ............................................................................................ 23
2. TCP/IP .................................................................................................................. 26
3. Configuração do Firewall ....................................................................................... 30
4. Servidor OpenSSH ................................................................................................. 32
5. Servidor FTP ......................................................................................................... 35
6. Network File System (NFS) .................................................................................... 37
7. Dynamic Host Configuration Protocol (DHCP) ........................................................ 39
8. Domain Name Service (DNS) ................................................................................. 42
9. CUPS - Servidor de Impressora .............................................................................. 44
10. HTTPD - Servidor Web Apache2 .......................................................................... 47
11. PHP5 - Linguagem de Scripts ............................................................................... 57
12. Squid - Sevidor Proxy .......................................................................................... 59
13. Version Control System ........................................................................................ 61
14. Bancos de Dados .................................................................................................. 68
15. Serviços de Email ................................................................................................ 71
16. Sincronização de Horário com NTP ....................................................................... 83
5. Redes Windows ............................................................................................................. 85
1. Introdução .............................................................................................................. 86
2. Instalando o SAMBA ............................................................................................. 87
3. Configurando o SAMBA ........................................................................................ 88
A. Creative Commons by Attribution-ShareAlike 2.0 ........................................................... 94
B. GNU Free Documentation License ................................................................................. 99
1. PREAMBLE .......................................................................................................... 100
2. APPLICABILITY AND DEFINITIONS .................................................................. 101
3. VERBATIM COPYING ......................................................................................... 103
4. COPYING IN QUANTITY .................................................................................... 104
iii
4. Ubuntu Server Guide
5. MODIFICATIONS ................................................................................................. 105
6. COMBINING DOCUMENTS ................................................................................. 107
7. COLLECTIONS OF DOCUMENTS ....................................................................... 108
8. AGGREGATION WITH INDEPENDENT WORKS ................................................ 109
9. TRANSLATION .................................................................................................... 110
10. TERMINATION .................................................................................................. 111
11. FUTURE REVISIONS OF THIS LICENSE .......................................................... 112
12. ADDENDUM: How to use this License for your documents ................................... 113
iv
5. Lista de Tabelas
2.1. Requerimentos Mínimos Recomendados ....................................................................... 11
4.1. Métodos de Acesso ...................................................................................................... 62
v
7. About This Guide
1. Conventions
The following notes will be used throughout the book:
A note presents interesting, sometimes technical, pieces of information related to the
surrounding discussion.
A tip offers advice or an easier way of doing something.
A caution alerts the reader to potential problems and helps avoid them.
A warning advises the reader of a hazard that may arise in a given scenario.
Cross-reference conventions for print will be displayed as follows:
• Links to other documents or websites will look like this [http://www.ubuntu.com].
PDF, HTML, and XHTML versions of this document will use hyperlinks to handle
cross-referencing.
Type conventions will be displayed as follows:
• File names or paths to directories will be shown in monospace.
• Commands that you type at a Terminal command prompt will be shown as:
command to type
• Options that you click, select, or choose in a user interface will look like this.
Menu selections, mouse actions, and keyboard short-cuts:
• A sequence of menu selections will be displayed as follows: File → Open
• Mouse actions shall assume a right-handed mouse configuration. The terms “click” and
“double-click” refer to using the left mouse button. The term “right-click” refers to using the right
mouse button. The term “middle-click” refers to using the middle mouse button, pressing down on
the scroll wheel, or pressing both the left and right buttons simultaneously, based on the design of
your mouse.
• Keyboard shortcut combinations will be displayed as follows: Ctrl-N .Where the conventions for
“Control”, “Shift,” and “Alternate” keys will be Ctrl, Shift, and Alt, respectively, and shall mean
the first key is to be held down while pressing the second key.
vii
8. About This Guide
2. Contributing and Feedback
This book is developed by the Ubuntu Documentation Team
[https://wiki.ubuntu.com/DocumentationTeam]. You can contribute to this document by sending
ideas or comments to the Ubuntu Documentation Team mailing list. Information about the
team, its mailing lists, projects, etc. can be found on the Ubuntu Documentation Team Website
[https://wiki.ubuntu.com/DocumentationTeam].
If you see a problem with this document, or would like to make a suggestion, you can simply file a
bug report at the Ubuntu Bugtracker [https://launchpad.net/products/ubuntu-doc/+bugs]. Your help is
vital to the success of our documentation!
Many thanks,
-Your Ubuntu Documentation Team
viii
9. Capítulo 1. Introdução
Bem-vindo ao Ubuntu Server Guide!
O Ubuntu Server Guide contém informações sobre como instalar e configurar várias aplicações em
seu sistema Ubuntu para atender as suas necessidades. É um passo-a-passo, orientado às tarefas para
configurar e personalizar seu sistema. Este manual discute muitos tópicos intermediários tais como os
seguintes:
• Configuração de Rede
• Configuração do Apache2
• Bancos de Dados
• Redes Windows
Este manual é dividido nas seguintes categorias principais:
• Instalação
• Gerenciador de Pacotes
• Rede
• Redes Windows
Este guia assume que você possua uma compreensão básica de seu sistema Ubuntu. Caso você
necessite de ajuda detalhada sobre a instalação do Ubuntu, consulte o Guia de Instalação do Ubuntu.
As versões em HTML e PDF deste manual estão disponíveis online no site de Documentação do
Ubuntu [http://help.ubuntu.com].
Você pode comprar este guia em formato de livro de nossa loja Lulu
[http://www.lulu.com/ubuntu-doc]. Você apenas pagará despesas de impressão e envio.
9
10. Capítulo 2. Instalação
Este capítulo fornece uma visão rápida sobre a instalação do Ubuntu 6.10 Server Edition. Para
maiores detalhes, por favor veja o Guia de Instalação do Ubuntu.
10
11. Instalação
1. Preparando para instalar
Esta seção explica vários aspectos a serem considerados antes de começar a instalação.
1.1. Requisitos de Sistema
O Ubuntu 6.10 Server Edition suporta as três maiores arquiteturas: Intel x86, AMD64 e PowerPC. A
tabela abaixo lista as especificações de hardware recomendadas. Dependendo das suas necessidades,
você pode conseguir com menos do que isso. No entanto, a maioria dos usuários arriscam se frustrar
caso ignorem essas sugestões.
Tabela 2.1. Requerimentos Mínimos Recomendados
Tipo de Instalação RAM Espaço do Disc
Servidor 64 megabytes 500 megabytes
O perfil padrão para o Ubuntu 6.10 Server Edition é exibido abaixo. Mais uma vez, o tamanho da
instalação dependerá em grande parte dos serviços que você instalar durante a configuração. Para a
maioria dos administradores, os serviços padrão são apropriados para o uso geral do servidor.
Servidor
Este é um perfil pequeno de servidor, que fornece uma base comum para todos os tipos de
aplicações para servidores. É mínimo e projetado para ter os serviços desejados adicionados no
topo, tais como serviços de arquivos/impressão, serviços web, serviços de e-mail, etc. Para tais
serviços bastaria ao menos 500MB de espaço em disco, mas considere adicionar mais espaço
dependendo dos serviços que você gostaria de hospedar em seu servidor.
Lembre-se que estes tamanhos não incluem todos os materiais restantes que devem geralmente ser
encontrados, tais como arquivos de usuário, e-mail, logs, e dados. É melhor ser sempre generoso ao
considerar o espaço para os seus próprios arquivos e dados.
1.2. Fazendo Backup
• Antes de começar, certifique-se de fazer backup de cada arquivo que está agora em seu sistema. Se
for a primeira vez que um sistema operacional não-nativo está sendo instalado em seu computador,
será bem provável que você necessite reparticionar seu disco para garantir espaço ao Ubuntu.
Sempre que você vier a particionar seu disco, esteja preparado para perder tudo nele caso você
cometa um erro ou algo ocorra de errado durante o particionamento, tal como a falta de energia
para o sistema. Os programas utilizados na instalação são consideravelmente de confiança, e a
maioria tem sido utilizada há vários anos, mas eles também executam ações destrutivas, e um erro
na sua utilização pode resultar na perda de seus valiosos dados.
Se você estiver criando um sistema multi-boot, certifique-se de que você tenha em mãos a mídia de
distribuição de todos os outros sistemas operacionais sendo utilizados atualmente. Especialmente se
você reparticionar seu drive de boot, você pode vir a descobrir que tem que reinstalar o carregador
11
12. Instalação
de boot de seu sistema operacional, ou em muitos casos todo o sistema operacional e todos os
arquivos nas partições afetadas.
12
13. Instalação
2. Instalando pelo CD
Insira seu CD de instalação no seu drive de CD-ROM e reinicie seu computador. O sistema de
instalação é inicializado imediatamente ao ser feito boot pelo CD-ROM. Uma vez inicializado, sua
primeira tela aparecerá.
Neste momento, leia o texto na tela. Você pode querer ler a tela de ajuda fornecida pelo sistema de
instalação. Para fazer isto, pressione F1.
Para executar uma instalação padrão de servidor, selecione “Instalar no disco rígido” e pressione
Enter. O processo de instalação será inicializado. Simplesmente siga as instruções apresentadas na
tela, e seu sistema Ubuntu será instalado
Alternativamente, para instalar um servidor LAMP (Linux, Apache, MySQL, PHP/Perl/Python),
selecione “Instalar um Servidor LAMP ”, e siga as instruções.
13
14. Capítulo 3. Gerenciador de Pacotes
Uma característica do Ubuntu é um sistema que facilita o gerenciamento de pacotes, sua instalação,
atualização, configuração e remoção de software. Além de fornecer acesso a uma base organizada de
mais de 17.000 pacotes de software para seu computador Ubuntu, o Gerenciador de Pacotes também
inclue a capacidade de resolução de dependência e procura por atualizações de software.
Várias ferramentas estão disponíveis para interagir com o sistema de gerência de pacotes do Ubuntu,
de utilitários simples em linha de comando que facilmente pode ser automatizado por administradores
de sistema, a uma interface gráfica simples que é fácil de usar por novos usuários Ubuntu.
14
15. Gerenciador de Pacotes
1. Introdução
O sistema de gerenciamento de pacotes do Ubuntu é derivado do mesmo sistema usado na
distribuição Debian GNU/Linux. Os pacotes contém todos os arquivos necessário, meta-dados, e
instruções para implementar funcionalidades particulares ou softwares em seu computador Ubuntu.
Os pacotes Debian, tipicamente possuem a extensão ".deb" e como é de se esperar, possuem
repositorios que têm coleções de pacotes que podem ser encontrados na forma de midias, tais como
CD-ROM ou on-lines. Pacotes são, normalmente, binários pré-compilados; assim a instalação é
rápida, sem a necessidade de compilar o software.
Grande número de aplicativos (pacotes) requerem uma complexa árvore de dependências. Estas
dependências são informações adicionais necessárias para a correta execução de determinado pacote.
Por exemplo, o pacote sintetizador de fala Festival depende do pacote festvox-kalpc16k, que supre
com uma das vozes utilizada pelo programa. Para que Festival funcione, todas as dependências devem
ser instaladas em conjunto com o pacote principal, Festival. O gerenciador de pacotes do Ubuntu o faz
automaticamete.
15
16. Gerenciador de Pacotes
2. Apt-Get
O comando apt-get é uma poderosa ferramenta de trabalho presente no Ubuntu. Advanced Packaging
Tool (APT) ou Avançada Ferramenta de Pacotes, possui funcionalidades tais como instalação
de novos pacotes de software, atualização de pacotes existentes, atualização da lista de pacotes e
atualização do sistema Ubuntu como um todo.
Essencialmente uma ferramenta em linha de comando, apt-get possui numerosas vantagens, para
administradores de servidor, sobre outras ferramentas de gerenciamento de pacotes existentes no
Ubuntu. Algumas dessas vantagens é a facilidade de uso em um simples terminal de conecção (SSH)
e a capacidade de ser usado por scripts de administração de sistema que, por sua vez, podem ser
automatizados pela ferramenta de ações agendadas cron.
Outros exemplos populares de uso do apt-get:
• Instalando um Pacote: A instalação de um pacote utilizando a ferramenta apt-get é muito simples.
Por exemplo, para instalar o scanner de rede nmap, digite:
sudo apt-get install nmap
• Removendo um Pacote: Para remover um pacote ou pacotes não tem rodeios, o processo é
simples. Para remover o pacote nmap instalado no exemplo anterior, digite:
sudo apt-get remove nmap
Multiplos Pacotes: Para especificar multiplos pacotes a serem instalados ou removidos,
separe-os por espaços.
• Atualizando a Lista de Pacotes: A lista de pacotes do APT é essencialmente um bando de dados
com os pacotes disponíveis em repositórios definidos no arquivo /etc/apt/sources.list. Para
atualizar a lista local de pacotes com as ultimas alterações feitas no(s) repositorio(s), digite:
sudo apt-get update
• Atualizando Todos os Pacotes do Sistema: Com o tempo, versões atualizadas de pacotes
atualmente instalado em seu computador podem tornar-se disponíveis nos repositórios de pacotes
(atualizações de segurança, por exemplo). Para atualizar seu sistema, primeiro atualize a base de
dados de pacotes e então digite:
sudo apt-get upgrade
Se um pacote necessitar que seja instalada ou removida uma nova dependência quando realizar a
atualização, ele não será atualizado pelo comando upgrade. Para tal ação será necessário o uso do
comando dist-upgrade.
Also, you may upgrade your entire Ubuntu system from one revision to another with dist-upgrade.
For example, to upgrade from Ubuntu version 5.10 to version 6.10, you would first ensure
16
17. Gerenciador de Pacotes
the version 6.10 repositories replace the existing 5.10 repositories in your computer's
/etc/apt/sources.list, then simply issue the apt-get update command as detailed above, and
finally, perform the actual upgrade by typing:
sudo apt-get dist-upgrade
Após passado um tempo considerável, seu computador estará atualizado para a nova revisão.
Tipicamente, alguns passos de pós-melhora são exigidos como detalhado nas notas para atualização
de revisões.
As ações do comando apt-get, tais como isntalação e remoção de pacotes, são registradas no
arquivo de log /var/log/dpkg.log.
Para mais informações sobre o uso do APT, leia o detalhado Manual APT do Usuário Debian
[http://www.debian.org/doc/user-manuals#apt-howto] ou digite:
apt-get help
17
18. Gerenciador de Pacotes
3. Aptitude
Aptitude é uma interface a base de texto controlada por menus, do sistema Advanced Packaging
Tool (APT). Muitas funções comuns de um gerenciador de pacotes, tais como instalação, remoção e
atualização são executadas pelo Aptitude por simples comandos, os quais são tipicamente grafados
em letras minúsculas.
Aptitude é a melhor suíte para uso em ambiente não gráfico ou modo-texto, assegurando o
funcionamento adequado das teclas de comando. Caso queira utilizar o Aptitude a partir de seu
usuário padrão, faça uso do seguinte comando:
sudo aptitude
Quando o Aptitude iniciar, você poderá ver um menu no topo da janela e dois paineis abaixo do
menu. O painel de cima contém as categorias dos pacotes, tais como Novos Pacotes e Pacotes Não
Instalados. No painel inferior aparecerá informações relacionadas a categoria selecionada ou pacote
selecionado no painel acima.
Usando o Aptitude para gerenciar pacotes é relativamente rápido e sua interface torna tarefas comuns
algo simples. O seguir, são exemplos de funções populares no gerenciamento de pacotes realizadas
pelo Aptitude:
• Instalando Pacotes: Para instalar um pacote, localize o pacote em Pacotes Não Instalados,
por exemplo, use as teclas setas e pressione ENTER, selecione o pacote que deseja instalar.
Após selecionar o pacote que deseja instalar, pressione a tecla +, assim o pacote ficará verde,
isto indica que foi marcado para instalação. Agora pressione g e uma lista das ações lhe será
apresentada. Pressione g novamente e você será solicitado a torna-se "root" para que o processo
tenha continuidade. Pressione ENTER e forneça a senha de "root" solicitada no prompt Password:.
Finalmente, pressione g mais uma vez para que o processo de baixar pacote tenha início. Pressione
ENTER para a opção Continue e o processo de baixar e instalar do pacote terá início.
• Removendo Pacotes: Para remover um pacote, localize-o em Pacotes Instalados, utilizando as
setas do teclado e pressione ENTER e selecione o pacote que deseja remover. Após seleciona-lo,
pressione - e o pacote mudará para a cor rosa, indicando assim que foi marcado para remoção.
Agora pressione g e uma lista das ações lhe será apresentada. Pressione g novamente e você será
solicitado a torna-se "root" para que o processo tenha continuidade. Pressione ENTER e forneça a
senha de "root" solicitada no prompt Password:. Finalmente, pressione g mais uma vez para que o
processo de remoção do pacote tenha início. Pressione ENTER para a opção Continue e o processo
de remoção do pacote terá início.
• Atualizando Lista de Pacotes: Para atualizar a base de dados de pacotes, pressione u e, logo em
seguida, lhe será solicitado privilégios de "root". Pressione ENTER e forneça a senha de "root" no
pronpt Password:. Pressione ENTER e o processo de baixar as atulizações e renovação da base de
dados terá início.
• Atualizando Pacotes: Para atualizar pacotes, atualize primeiro a lista de pacotes como descrito
anteriormente e pressione a tecla U (shift + u) e todos os pacotes passíveis de atualização serão
18
19. Gerenciador de Pacotes
selecionados. Agora pressione g e lhe será apresentado um resumo das ações exigidas para o
pacote. Pressione g novamente e você será solicitado a torna-se "root" para que o processo tenha
continuidade. Pressione ENTER e forneça a senha de "root" solicitada no prompt Password:.
Finalmente, pressione g mais uma vez para que o processo de baixar os pacotes tenha início.
Pressione ENTER para a opção Continue e o processo de atualização dos pacotes terá início.
A primeira coluna de informação exibida na lista de pacote no painel superior, quando realmente
vendo os pacotes, lista o estado atual do pacote, e usa a seguinte tecla para descrever o estado do
pacote:
• i: Pacote instalado.
• c: Pacote não instalado, mas o pacotem possui configurações residuais no sistema
• p: Remover do sistema
• v: Pacote Virtual
• B: Pacote quebrado
• u: Arquivos desempacotados, mas o pacote não foi configurado
• C: Parcialmente configurado - Configuração fracassou e exige reparo
• H: Parcialmente instalado - A remoção fracassou e exige reparo
Para sair do Aptitude, basta pressionar a tecla q e confirmar que deseja sair. Outras opções estão
disponíveis no menu pressionando a tecla F10.
19
20. Gerenciador de Pacotes
4. Configuração
A configuração dos repositórios do sistema Advanced Packaging Tool (APT) está localizada no
arquivo de configuração /etc/apt/sources.list. Um exemplo deste arquivo está referido aqui, junto com
informação sobre como adicionar ou retirar referências de repositório do arquivo.
Aqui [../sample/sources.list] há um exemplo de um típico arquivo /etc/apt/sources.list.
Você pode editar o arquivo e habilitar repositórios ou desabilitar. Por exemplo, para desativar a
opção de inserir o Ubuntu CD-ROM toda vez que for instalar um pacote, basta comentar a linha que
descreve a mídia CD-ROM com um cifrão (#) no início da linha, como se segue:
# por favor, não requisitar pelo CD-ROM
# deb cdrom:[Ubuntu 6.06 _Dapper Drake_ - Release i386 (20060329.1)]/ dapper main restricted
20
21. Gerenciador de Pacotes
5. Repositórios Extras
Além dos repositórios de pacotes oficialmente apoiados e disponibilizados para Ubuntu, ainda
existem repositórios mantidos pela comunidade que adicionam milhares de pacotes extras, mas
potenciais a instalação. Dois destes repositórios são bem populares, o Universe (mantidos pela
comunidade) e o Multiverse (não-livre). Estes repositórios não são oficialmente suportados por
Ubuntu, por isso não são habilitados por padrão, mas eles geralmente fornecem pacotes que são
seguros para uso em seu computador Ubuntu.
Os pacotes no repositório Multiverse freqüentemente possuem licenças que os previnem
quanto a distribuição em sistemas operacionais livres, podendo ser ilegais em seu localidade.
Esteja ciente que nem o repositório Universe ou o Multiverse contém pacotes oficialmente
suportados. Em particular, talvez não seja seguro atualizar para estes pacotes
Várias fontes de pacotes estão disponíveis, às vezes, oferecendo apenas um pacote, como no caso
de fontes de pacotes fornecido pelo mantenedor de uma única aplicação. Você deve ser sempre
cuidadoso e cauteloso quando usar fontes não padrão de pacotes. Pesquise a fonte e pacotes
cuidadosamente antes de executar qualquer instalação, como algumas fontes de pacotes e seus
respectivos pacotes podem deixar seu sistema instável ou mesmo inabilitálo de fazer alguma
operação.
Para habilitar os repositórios Universe e Multiverse, edite o arquivo /etc/apt/sources.list
descomentando (removendo o símbolo de sustenido #) das seguintes linhas:
# Quero os repositórios Multiverse e Universe disponíveis
deb http://archive.ubuntu.com/ubuntu dapper universe multiverse
deb-src http://archive.ubuntu.com/ubuntu dapper universe multiverse
5.1. Referências
Como Adicionar Repositórios (Ubuntu Wiki) [https://wiki.ubuntu.com/AddingRepositoriesHowto]
21
22. Capítulo 4. Rede
As redes consistem em dois ou mais dispositivos, tal como sistemas de computador, impressoras e
equipamentos relacionados que são ligados por qualquer meio físico, como equipamentos de rede via
sinal de rádio (wireless), com o propósito de compartilhar informações e ou distribuir informações
entre os dispositivos conectados.
Esta seção do Guia para Servidores Ubuntu fornece informação gerais e específicas sobre redes,
incluindo uma vista geral de conceitos de rede e detalhes sobre protocolos populares de rede e
aplicações de servidor.
22
23. Rede
1. Configuração de Rede
O Ubuntu distribui um número de utilidades gráficas para configurar seus equipamentos de rede. Este
documento tem como foco administradores de servidores e focalizará em como administrar sua rede
usando a linha de comando.
1.1. Ethernet
A maior parte da configuração de rede está centralizada em um único arquivo,
/etc/network/interfaces. Se você não possui dispositívos de rede, somente a interface loopback
aparecerá neste arquivo, e será parecido com isto:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
Se você tiver apenas um dispositivo de rede, eth0, e este estiver obtendo a configuração via servidor
DHCP, ele pode ser carregado automaticamente durante o boot, para isso, bastam apenas duas linhas
adicionais:
auto eth0
iface eth0 inet dhcp
A primeira linha especifica que o dispositivo eth0 deve ser habilitado automaticamente durante
o boot. A segunda linha diz que a interface (“iface”) eth0 deve ter um espaço IPv4 (subistitua
“inet” por “inet6” para dispositivos IPv6) e isto deverá obter automaticamente a configuração
via DHCP. Assumindo que sua rede e servido DHCP já esteja devidamente configurado, esta
máquina não precisará de nenhuma configuração adicional para funcionar corretamente. O servidor
DHCP irá prover o gateway padrão (implementado através do comando route), os endereços de IP
(implementados com o comando ifconfig), e os servidores DNS usados na rede (implementados no
arquivo /etc/resolv.conf.)
Para configurar sua interface de rede ethernet com um IP estático e uma configuração personalizada,
será necessário algumas informações. Suponhamos que você queira definir o IP 192.168.0.2 para
a interface eth1, com a máscara de rede típica 255.255.255.0. Seu gateway (rota de saída) padrão é
192.168.0.1. Vocé deverá inserir algo como isto no arquivo /etc/network/interfaces:
iface eth1 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
Neste caso, voê precisará especificar o endereço dos servidores de DNS manualmente no arquivo
/etc/resolv.conf, que deverá parecer com algo do tipo:
23
24. Rede
search mydomain.com
nameserver 192.168.0.1
nameserver 4.2.2.2
A diretiva search vai anexar mydomain.com para a procura de hostnames, tentando resolver
nomes para sua rede. Por exemplo, se o domínio de sua rede é meudominio.com e você
tentar fazer um ping no host “meucomputador”, a procura pelo DNS será modificada para
“meucomputador.meudominio.com”. A diretiva nameserver especifica os servidores DNS a serem
usados para resolver os hostnames para o IP. Se você usa um nameserver (servidor DNS) próprio,
insira-o aqui. Senão, pergunte ao seu provedor de internet os servidores DNS primário e secundário, e
depois insira-os em /etc/resolv.conf, como mostrado abaixo.
Diversas outras configurações são possíveis, incluindo interfaces PPP, rede em IPv6, interfaces VPN,
entre outras. Execute o comando man 5 interfaces para mais informações e para as opções suportadas.
Lembre-se que /etc/network/interfaces é utilizado pelos scripts ifup/ifdown como um esquema de
configuração de mais alto nível, que pode ser utilizado por outras distribuições, e que os utilitários de
baixo nível, como ifconfig, route e dhclient continuam disponíveis para configurações ad hoc.
1.2. Administrando entradas DNS
Esta seção explica como configurar o servidor de nomes (DNS) para gerar endereços IP a hostnames e
vice versa. Não explica como configurar o sistema como um servidor de nome.
Para gerenciar entradas de DNS, você pode adicionar, alterar ou remover nomes de DNS do arquivo
/etc/resolv.conf. Um arquivo de exemplo [../sample/resolv.conf] pode ser visto abaixo:
search com
nameserver 204.11.126.131
nameserver 64.125.134.133
nameserver 64.125.134.132
nameserver 208.185.179.218
A chave search especifica a string que deverá aparecer para um hostname imcompleto. Aqui, nos a
temos mencionada como com. Então, quando nos executamos: ping ubuntu ela interpretará como
ping ubuntu.com.
A chave nameserver especifica o endereço IP do servidor de nomes. Ele será usado para resolver os
endereços IP ou hostnames. Este arquivo pode possuir multiplas entradas de DNS. Os DNS's serão
usados pela rede de mesma classe.
Se o DNS estiver obtendo dinâmicamente por DHCP ou PPPoE (obtido do seu provedor),
não adicione entrada neste arquivo. Isto será atualizado automaticamente.
The changes you do in /etc/resolv.conf will be erased when you reboot your machine.
If you want to make this change permanent, you should install resolvconf package and
update the DNS information in /etc/resolvconf/resolv.conf.d/base file provided by
that package.
24
25. Rede
1.3. Gerenciando Hosts
Para gerenciar hosts, você pode adicionar, alterar ou remover hosts do arquivo /etc/hosts. O arquivo
contêm endereços IP e seus nomes de host correspondentes. Quando seu sistema tenta resolver um
nome de host para um endereço IP ou determinar um nome de host para um endereço IP, ele procura
para o arquivo /etc/hosts antes de usar os servidores de nome. Se o endereço IP está listado no
arquivo /etc/hosts, os servidores de nome não serão utilizados. Este comportamento pode ser
alterado, bastando para isso editar o arquivo /etc/nsswitch.conf como quiser.
Se sua rede possui computadores cujos endereços IP não estão listadas no DNS, é recomendado que
você os adicione ao arquivo /etc/hosts.
25
26. Rede
2. TCP/IP
O Transmission Control Protocol e o Internet Protocol (TCP/IP) são um conjunto podrão de
protocolos desenvolvidos no final dos anos 1970 pela Defense Advanced Research Projects Agency
(DARPA) como uma forma de comunicação entre diferente tipos de computadores e redes de
computadores. TCP/IP é a força motora da Internet, e é portanto o mais popular conjunto de
protocolos da Terra.
2.1. Introdução ao TCP/IP
Os dois protocolos componentes do TCP/IP lidam com diferentes aspectos da computação em
rede. Internet Protocol, o "IP" do TCP/IP é um protocolo de sem conexão que lida somente
com o roteamento de pacotes da rede utilizando o datagrama de IPs como unidade básica das
informações de rede. O datagrama do IP consiste de um cabeçaho seguido de uma mensagem. O TCP
(Transmission Control Protocol - Protocolo de Controle de Transmissão)
2.2. Configurando TCP/IP
A configuração do protocolo TCP/IP consiste em diversos elementos, que podem ser editados
nos arquivos de configuração apropriados, ou optando-se por soluções como o servidor de DHCP
(Protocolo de Configuração Dinâmica de Hosts), que por sua vez pode ser configurado para prover
as configurações TCP/IP necessárias para cada cliente de rede automaticamente. Esses valores da
configuração precisam ser definidos corretamente, de maneira que que facilite o funcionamento em
rede do seu sistema Ubuntu.
Os elementos básicos de configuração do TCP/IP e seus objetivos são os seguintes:
• Endereço IP O Endereço de IP é uma string de identificação única, expressa em quatro números
decimais, que vão de zero (0) à duzentos e cinquenta e cinco (255), separada por pontos, com cada
um dos quatros números representado oito (8) bits do endereço, para um tamanho total de trinta e
dois (32) bits para todo o endereço. Este formato é chamado de notação decimal com pontos.
• Netmask A Máscara de Subrede (ou simplesmente netmask) é uma máscara de bits locais, ou
alguns marcadores que separam porções de endereços IPs relacionados à uma rede de uma subrede.
Por exemplo, na Classe C, a máscara padrão é 255.255.255.0, que mascara os primeiros três
bytes do endereço IP e permite somente o último byte do endereços disponível para a alocação e
especificação de hosts ou subredes.
• Endereço de Rede O Endereço de rede representa os bytes compreendidos na porção de rede
referente a um IP. Por exemplo, o host 12.128.1.2 da rede de Classe A, pode usar 12.0.0.0 como o
Endereço de Rede, que usa o doze (12) para representar o primeiro byte de um endereço IP, (a parte
de rede) e zeros (0s) em todos os outros três bytes restantes para representar os valores para hosts
em potencial. Redes de hosts usando endereços IPs comuns como os privados e não distribuídos,
como 192.168.1.100 pode então usar um endereço de rede como 192.168.1.0, que especifica os três
primeiros bytes para a Classe C de rede 192.168.1 e zero (0) para todos os outros possíveis hosts da
rede.
26
27. Rede
• Endereço de Transmissão O Endereço de Transmissão é um endereço IP que possibilita dados
de rede serem enviados simultaneamente para todos os hosts numa subrede, preferivelmente do
que especificar um host particular da rede. O padrão genérico de endereço de transmissão para
redes IP é 255.255.255.255, mas este endereço de transmissão não pode ser usado para enviar uma
mensagem a cada host na Internet porque roteadores bloqueiam-no. Por exemplo, em um popular
IP privado Classe C de rede, 192.168.1.0, o endereço de transmissão precisa ser configurado como
192.168.1.255. Transmissão de mensagens são tipicamente fruto de rede de protocolos tais como
Address Resolution Protocol (ARP) e Routing Information Protocol (RIP).
• Gateway AddressUm Gateway Address é o endereço IP direto de uma rede particular, ou host em
uma rede, podendo se estender. Se uma rede de host não define-se ao comunicar com outra rede de
host, e aquele host não é localizado em uma mesma rede, então um gateway deve ser usado. Em
muitos casos, o Gateway Anddress será de um roteador na mesma rede, que vai habilitar o trafico
de passagem em outras redes ou hosts, tais como Internet hosts. O valor definido a um Gateway
Address deve ser correto, ou seu sistema não será capaz de alcançar nenhum host ligado na mesma
rede.
• Endereço do Servidor de Nomes Endereços de servidores de nome representam o endereço IP
do sistema de Serviço de Nomes de Domínio (Domain Name Service - DNS), que resolve nomes
de hosts de rede para endereços IP. Há três níveis de endereços de servidor de nomes, que podem
ser especificados em ordem de precedência: O servidor de nomes Primário, o servidor de nomes
Secundário e o servidor de nomes Terciário. Para que seu sistema possa resolver nome de hosts
da rede para seus endereços IP correspondentes, você deve especificar um endereço de servidor de
nomes válido o qual você esteja autorizado a utilizar na configuração de TCP/IP do seu sistema.
Em muitos casos esses endereços podem e devem ser fornecidos pelo seu provedor de serviços de
rede, mas há muitos servidores de nomes gratuitos e acessíveis publicamente, como os servidores
Level3 (Verizon) com endereços de IP de 4.2.2.1 a 4.2.2.6.
O Endereço de IP, a Máscara de rede (netmask), o Endereço de rede, Endereço de
broadcast, e o Endereço de Gateway são, em geral, especificados com as diretivas
apropriadas no arquivo /etc/network/interfaces. O endereço do Servidor de Nomes
(DNS) é em geral especificado pela diretiva nameserver no arquivo /etc/resolv.conf.
Para maiores informações, veja a página de manual para interfaces ou resolv.conf
respectivamente, com os seguintes comandos a serem digitados no terminal:
Acesse o sistema de páginas de manual para interfaces com o seguinte comando:
man interfaces
Acesse o sistema de páginas de manual para resolv.conf com o seguinte comando:
man resolv.conf
27
28. Rede
2.3. Roteamento IP
O roteamento IP é uma forma de especificar e descobrir caminhos em uma rede TCP/IP na qual as
informações da rede serão enviadas.O roteamento usa um conjunto de tabelas de roteamento para
direcionar o encaminhamento de pacotes de dados de rede da fonte para o destino, geralmente por
meio de diversos nós de rede intermediários, conhecidos como roteadores. O Roteamento IP é o
principal modo de descoberta de caminhos na Internet. Há duas formas primárias de roteamento,
Estático e Dinâmico.
Static routing involves manually adding IP routes to the system's routing table, and this is usually
done by manipulating the routing table with the route command. Static routing enjoys many
advantages over dynamic routing, such as simplicity of implementation on smaller networks,
predictability (the routing table is always computed in advance, and thus the route is precisely the
same each time it is used), and low overhead on other routers and network links due to the lack of
a dynamic routing protocol. However, static routing does present some disadvantages as well. For
example, static routing is limited to small networks and does not scale well. Static routing also fails
completely to adapt to network outages and failures along the route due to the fixed nature of the
route.
Roteamento Dinâmico depende de grandes redes com múltiplas possibilidade de rotas IP de uma
fonte a um destino e faz uso de protocolos especiais de roteamento, tal como o Router Information
Protocol (RIP), que manipula o ajuste automático para os protocolos da tabela de roteamento, e assim,
fazer o roteamento dinâmico possível. Roteamento dinâmico tem sérias vantagens sobre roteamento
estático, como escalabilidade superior e a capacidade de adaptação a falhas ou ocilações ao longo
das rotas na rede. Adicionalmente, essa posição é inferior a configuração manual para a tabela de
roteamento, desde que os roteadores aprendam sobre outro roteador, sua existencia e rotas possíveis.
Esta peculiaridade também elimina a possibilidade de introduzir um erro em tabelas de roteamento
por erro humano. Roteamento dinâmico não é perfeito, de qualquer modo, ele apresente desvantagens
como alta complexidade e despesas gerais adicionais para a rede, que não beneficiam imediatamente
os usuários finais, e ainda consome banda da rede.
2.4. TCP e UDP
TCP é um protocolo de conexão, oferecendo correção de erro e entrega garantida de dados via o que
é conecido como controle de fluxo. O controle de fluxo determina quando o fluxo de certos dados
devem ser parados, e previamente quais pacotes de dados devem ser re-enviados devido a problemas
como colisões, por exemplo, deste modo assegurando a entrega exata e completa dos dados. TCP é
tipicamente usado em trocas de informações importantes tal como transações de banco de dados.
O User Datagram Protocol (UDP), por outro lado, é um protocolo de conectividade que raramente lida
com a transmissão de dados importantes porque falta controle de fluxo ou qualquer outro método para
assegurar a entrega confiável dos dados. UDP comumente é usado em aplicações como áudio e vídeo,
onde é consideravelmente mais rápido que TCP devido à falta de correção de erro e controle de fluxo,
e onde a perda de alguns pacotes não é catastrófico, geralmente.
28
29. Rede
2.5. ICMP
O Internet Control Messaging Protocol (ICMP) é uma extensão do Internet Protocol (IP) como
definido na Petição Para Comentários (RFC) #792 e apoia pacotes de rede contendo controle, erro,
e mensagens de informação. ICMP é usado por aplicações de rede como a utilidade de ping, que
pode determinar a disponibilidade de um host de rede ou dispositivo. Exemplos de mensagens de
erro retornadas por ICMP que são útil a ambos hosts de rede e para dispositivos tal como roteadores,
incluem Destino Inacessível e Tempo de Esperera Excedido.
2.6. Serviços
Daemons (serviços) são aplicações especiais do sistema que tipicamente executam continuamente
em segundo plano e esperam requisições para as funções que eles fornecem a outras aplicações.
Muitos daemons são rede-cêntrico; isso é, um grande número de daemons executando em segundo
plano em um sistema Ubuntu podem fornecer funcionalidades a redes relacionadas. Alguns exemplos
de daemons de rede incluem o Hyper Text Transport Protocol Daemon (httpd), que fornece
funcionalidade de servidor de Internet; o Secure SHell Daemon (sshd), que fornece identificação
(login) remota segura e capacidade de transferência de arquivo; e o Internet Message Access Protocol
Daemon (imapd), que fornece serviços de correio eletrônico (e-Mail).
29
30. Rede
3. Configuração do Firewall
O kernel Linux inclui o subsistema Netfilter, o qual é usado para manipular ou decidir o destino
do tráfego de rede dirigido para ou através de seu servidor. Todas as soluções de firewall Linux
modernas utilizam esse sistema para filtragem de pacotes.
3.1. Instrodução ao Firewall
O sistema de filtragem de pacotes do kernel tem pouca utilidade para os administradores sem uma
interface para gerenciá-la. Este é o propósito do iptables. Quando um pacote chega ao servidor, ele
será encaminhado ao subsistema Netfilter para aceitação, manipulação ou rejeição, baseado numa das
regras supridas pela interface via iptables. Então, o iptables é tudo que você precisa para gerenciar o
seu firewall, caso você tenha familiaridade com ele, mas existem diversos front ends (interfaces de
frente) para simplificar a tarefa.
3.2. Mascaramento de IP
O propósito da Máscara de IP é permitir máquinas com IP privado, endereço não-roteável em sua rede
para acessar a Internet por meio da máquina "mascarada". O tráfico destinado de sua rede privada
para a Internet deve ser manipulado para obter respostas da máquina que fez a petição, como em
uma rota invertida. Para fazer isto, o kernel deve modificar o endereço IP da fonte de cada pacote e
retornar respostas a ele, antes que o endereço privado IP faço o pedido de resposta, que é impossível
através da Internet. O Linux usa Connection Tracking (conntrack) para acompanhar que conexões
pertence a que máquinas e desviar cada pacote de retorno correspondente. O tráfico originado em sua
rede privada é assim "mascarado" como tendo originado de seu gateway Ubuntu. Este processo possui
refência na documentação da Microsoft como Conexão de Internet Compartilha.
Isto pode ser realizado com uma única regra no iptables, que pode diferir levemente baseado em sua
configuração de rede:
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE
O comando acima supõe que seu endereço privado está no intervalo 192.168.0.0/16 e sua interface de
Internet, ou dispositivo, é ppp0. A sintaxe é errada como se segue:
• -t nat -- a regra é para ir na tabela nat
• -A POSTROUTING -- a regra é para ser adicionada (-A) à corrente POSTROUTING
• -s 192.168.0.0/16 -- a regra é aplicada a trafego originando do endereço especificado
• -o ppp0 -- a regra é aplicada a trafego agendado para ser roteado pelo dispositivo de rede
especificado
• -j MASQUERADE -- trafego combinando com esta regra "pulará" (-j) para o alvo
MASQUERADE para ser manipulado como descrito acima
Cada série na tabela de filtro (a tabela padrão, onde a maioria ou todos os processos e filtragem
de pacotes ocorre) tem uma diretriz padrão para ACEITAR, mas se você estiver criando um
30
31. Rede
firewall adicional para o dispositivo de gateway, você terá que definir políticas de DESCARTE ou
REJEIÇÂO, em que caso seu tráfico "mascarado" necessitará de permição pra ENVIAR para a série
de regras de trabalho acima:
sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT
Os comandos acima permitem todas conexões de sua rede local à Internet e todo trânsito relacionado
a essas conexões retornar à máquina que os iniciou.
3.3. Ferramentas
Há muitas ferramentas disponíveis para ajudá-lo a construir um firewall completo sem conhecimento
íntimo da ferramenta iptables. Para os que preferem GUI (interfaces gráficas), sugere-se o Firestarter
é bem popular e de fácil utilização, e o fwbuilder, uma aplicação poderosa com visual familiar para
administradores que usam ferramentas comerciais de firewall, como o Checkpoint FireWall-1.
Se você preferir uma ferramenta em linha de comando para configurar arquivos em "texto puro",
o Shorewall é uma solução poderosa que o ajudará em configurações avançadas de firewall em
sua rede. Se sua rede for relativamente simples ou você não possuir uma rede o ipkungfu deve
proporcionar-lhe um firewall útil com configuração inicial zero, e o permitirá facilmente armar um
firewall mais avançado editando arquivos de configuração simples e bem documentados. Outra
ferramenta interessante é o fireflier, que é orientado para desktop. É composto de um servidor
(fireflier-server) e sua escolha de clientes GUI (GTK ou QT), e comporta-se como muitas aplicações
interativas populares de firewall para Windows.
3.4. Logs
O registro (log) das ações do firewall é essencial para reconhecer ataques, investigar e reparar
erros em suas regras do firewall e notar atividades inesperadas na rede. Você deve incluir regras de
registro em seu firewall para que registros sejam gerado, aliás, e regras de registro devem vir antes de
qualquer regra aplicável (uma regra com um alvo que decida o destino do pacote, tal como ACEPT,
DISCARD ou REJECT). Por exemplo:
sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "
As requisições pela porta 80 para a máquina local, então, geraria um registro dmesg parecido com
este:
[4304885.870000] NEW_HTTP_CONN: IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0
O registro acima é publicado em /var/log/messages, /var/log/syslog, e /var/log/kern.log.
Estes procedimentos podem ser alterado modificando o /etc/syslog.conf ou instalando e
configurando o ulogd e, assim, usar o ULOG como alvo ao invés do LOG (registro). O daemon
ulogd é um servidor userspace que observa o sistema para registrar instruções específicas do kernel
para firewalls e registrar qualquer arquivo que você queira, igual aos bancos de dados PostgreSQL e
MySQL. O registro das ações do firewall pode ser simplificada usando uma ferramenta para análise
de registros, como o fwanalog, fwlogwatch, ou lire.
31
32. Rede
4. Servidor OpenSSH
4.1. Introdução
This section of the Ubuntu Server Guide introduces a powerful collection of tools for the remote
control of networked computers and transfer of data between networked computers, called OpenSSH.
You will also learn about some of the configuration settings possible with the OpenSSH server
application and how to change them on your Ubuntu system.
OpenSSH é uma versão disponível livremente da família de ferramentas do protocolo Secure Shell
(SSH) para controlar um computador remotamente ou transferir arquivos entre computadores.
Ferramentas tradicionais utilizadas para cumprir essas funções, como telnet ou rcp são inseguras e
transmitem a senha de um usuário em texto puro quando utilizadas. O OpenSSH provê um servidor
daemon e ferramentas de cliente para facilitar controle remoto e operações de transmissão de arquivo
com segurança e criptografia, efetivamente substituindo ferramentas de legado.
O componete de servidor OpenSSH, sshd, observa constantemente conexões de clientes para qualquer
das ferramentas do cliente. Quando uma requisição de conexão ocorre, sshd inicia a conexão correta
dependendo do tipo de ferramenta de conexão do cliente. Por exemplo, se um computador remoto
conecta-se por um cliente ssh, o servidor OpenSSH iniciará o controle remoto da sessão após
autenticar. OpenSSH utiliza vários métodos de autentificação, incluindo senha simples, chave pública
e tiquetes Kerberos.
4.2. Instalação
A instalação do servidor e cliente OpenSSH é simples, Para instalar o OpenSSH cliente no seu
Ubuntu, use este comando no terminal:
sudo apt-get install openssh-client
Para instalar o OpenSSH servidor no seu Ubuntu, use este comando no terminal:
sudo apt-get install openssh-server
4.3. Configuração
Você pode configurar o comportamento padrão do servidor OpenSSH, sshd, editando o arquivo
/etc/ssh/sshd_config. Para mais informação sobre as diretrizes de configuração usadas neste
arquivo, você pode ver o manual apropriado com o seguinte comando, executado pela linha de
comando:
man sshd_config
32
33. Rede
Existem muitas diretrizes no arquivo de configuração do sshd que controlam coisas como
configurações de comunicação e modos de autenticação. Os seguintes são exemplos de diretrizes de
configuração que podem ser modificados editando o arquivo /etc/ssh/ssh_config.
Antes de editar o arquivo de configuração, você deve fazer uma cópia do arquivo original e
protegê-lo de escrita, para que você assim tenha os ajustes originais como uma referência e
para reusar como necessário.
Copie o arquivo /etc/ssh/sshd_config e proteja-o contra sobrescrição com com seguinte
comando, executado na linha de comando:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original
Os seguintes são exemplos de diretrizes de configuração que você pode modificar:
• Para ajustar seu OpenSSH para escutar na porta de TCP 2222 invés da porta de TCP padrão 22,
modifique a diretriz Port da seguinte forma:
Porta 2222
• Para fazer o sshd aceitar acesso público à base de chaves credenciais, simplesmente adicione ou
modifique a linha:
PubkeyAuthentication yes
no arquivo /etc/ssh/sshd_config, ou se já estiver presente, certifique-se que a linha não está
comentada.
• Para fazer o seu servidor OpenSSH exibir o conteúdo do arquivo /etc/issue.net como um aviso
antes de conectar, simplesmente adicione ou modifique a linha:
Banner /etc/issue.net
no arquivo /etc/ssh/sshd_config.
Após realizar as auterações no arquivo /etc/ssh/sshd_config, salve o arquivo e reinicie o servidor
de aplicações sshd para que as auterações tenham efeito. Para isto utilize o seguinte comando em um
terminal:
sudo /etc/init.d/ssh restart
Várias configurações adicionais de diretrizes do sshd estão disponíveis para auterar o
comportamento do servidor de acordo com suas necessidades. Esteja ciente, no entanto, que
se seu único método de acesso a um servidor é ssh e você comete um erro ao configurar o
sshd via arquivo de configuração /etc/ssh/sshd_config, você pode torna-lo indisponível
após reiniciar o servidor, ou esse servidor sshd pode recusar iniciar, devido a uma diretriz
33
34. Rede
incorreta na configuração, então seja extremamente cuidadoso quando editar este arquivo
num servidor remoto.
4.4. Referências
Web site OpenSSH [http://www.openssh.org/]
Página Wiki OpenSSH Avançado [https://wiki.ubuntu.com/AdvancedOpenSSH]
34
35. Rede
5. Servidor FTP
File Transfer Protocol (FTP) is a TCP protocol for uploading and downloading files between
computers. FTP works on a client/server model. The server component is called an FTP daemon. It
continuously listens for FTP requests from remote clients. When a request is received, it manages the
login and sets up the connection. For the duration of the session it executes any of commands sent by
the FTP client.
Acesso à um servidor FTP pode ser controlado em 2 maneiras:
• Anônimo
• Autenticado
No modo Anônimo, clientes remotos podem acessar o servidor FTP usando a conta de usuário
padrão chamada 'anonymous' ou 'ftp' e informando um endereço de e-mail como senha. No modo
Autenticado um usuário precisa ter uma conta e uma senha. O acesso do usuário aos diretórios e
arquivos do servidor de FTP depende das permissões definidas para a conta usada no login. Como
uma regra geral, o serviço de FTP irá esconder o diretório root do servidor de FTP e alterá-lo para o
diretório Home do FTP. Isso ocultará o restante do sistema de arquivos nas sessões remotas.
5.1. vsftpd - Instalação de Servidor FTP
O vsftpd é um daemon FTP disponível no Ubuntu. Ele é fácil de instalar, configurar e manter. Para
instalar o vsftpd você pode rodar o seguinte comando:
sudo apt-get install vsftpd
5.2. vsftpd - Configuração Servidor FTP
Você pode editar o arquivo de configuração do vsftpd, /etc/vsftpd.conf, para modificar as
configurações padrões. Por padrão apenas FTP anônimo é permitido. Se você deseja desabilitar essa
opção, você deve modificar a seguinte linha:
anonymous_enable=YES
para
anonymous_enable=NO
Por padrão, os usuários locais do sistema não tem permissão para fazer login no servidor FTP. Para
modificar essa configuração, você deve descomentar a seguinte linha:
#local_enable=YES
Por padrão, usuários tem permissão para descarregar arquivos do servidor FTP. Eles não tem
permissão para enviar arquivos para o servidor FTP. Para modificar essa configuração, você deve
descomentar a seguinte linha:
35
36. Rede
#write_enable=YES
Similarmente, por padrão, os usuários anônimos não tem permissão para enviar arquivos para o
servidor FTP. Para modificar essa configuração, você deve descomentar a seguinte linha:
#anon_upload_enable=YES
O arquivo de configuração é formado por vários parâmetros de configuração. As informações sobre
cada parâmetro estão disponíveis no arquivo de configuração. Alternativamente, você pode consultar
a página do manual, man 5 vsftpd.conf para um melhor detalhamento de cada parâmetro.
Uma vez configurado o vsftpd você pode iniciar o serviço usando o seguinte comando:
sudo /etc/init.d/vsftpd start
Note que os valores padronizados no arquivo de configuração estão ajustados da forma que
estão por motivos de segurança. Cada uma das modificações feitas acima deixa o sistema
cada vez menos seguro, portanto use-as somente se forem realmente necessárias.
36
37. Rede
6. Network File System (NFS)
NFS permite um sistema a compartilhar diretórios e arquivos com outros sistemas em uma rede. Ao
usar NFS, usuários e programas podem acessar arquivos em sistemas remotos quase que como se os
mesmos fossem arquivos locais.
Alguns dos mais notáveis benefícios que NFS oferece são:
• Máquinas de trabalho locais usam menos espaço de disco porque dados comumente usados podem
ser armazenados em uma única máquina e ainda assim permanecer acessível à outros na rede.
• Não é necessário criar diretórios pessoais de usuários separados em cada máquina na rede.
Diretórios pessoais podem ser criados em um servidor NFS de forma acessível por toda a rede.
• Dispositivos de armazenamento como disquetes, CD-ROM, e chaveiros USB podem ser usados por
outras máquinas na rede. Isto pode reduzir o número de dispositivos de mídia removíveis por toda a
rede.
6.1. Instalação
Em um prompt de terminal entre o seguinte comando para instalar o servidor NFS:
sudo apt-get install nfs-kernel-server
6.2. Configuração
Você pode configurar os diretórios a serem exportados adicionando-os ao arquivo /etc/exports. Por
exemplo:
/ubuntu *(ro,sync,no_root_squash)
/home *(rw,sync,no_root_squash)
Você pode substituir o * com um dos formatos de nome de host. Faça a declaração de nome de host o
mais específica possível para que sistemas indesejados não acessem a montagem NFS.
Para inicar o servidor NFS, você pode executar o seguinte comando em um terminal:
sudo /etc/init.d/nfs-kernel-server start
6.3. Configuração do Cliente NFS
Use o comando mount para montar um diretório compartilhado NFS de outra máquina, digitando num
prompt de terminal um comando similar ao seguinte:
sudo mount exemplo.nomedamáquina.com:/ubuntu /local/ubuntu
37
38. Rede
O diretório ponto de montagem /local/ubuntu deve existir. Não devem existir arquivos ou
subdiretórios dentro do diretório /local/ubuntu.
Uma forma alternativa para montar uma partição compartilhada NFS remota é adicionar uma linha ao
arquivo /etc/fstab. A linha deve conter o nome do servidor NFS host, o diretório no servidor sendo
exportado, e o diretório local onde a partição NFS deve ser montado.
A sintaxe normal para a linha no arquivo /etc/fstab é a seguinte:
exemplo.nomedohost.com:/ubuntu /local/ubuntu nfs rsize=8192,wsize=8192,timeo=14,intr
6.4. Referências
Linux NFS faq [http://nfs.sourceforge.net/]
38
39. Rede
7. Dynamic Host Configuration Protocol (DHCP)
O Protocolo de Configuração Dinâmica de Hosts (DHCP) é um serviço de rede que permite que os
computadores sejam configurados automáticamente apartir de configurações feitas em um servidor
ao invés de serem configurados individualmente de forma manual. Computadores configurados
para serem clientes de DHCP não tem controle sobre as configurações que eles recebem do servidor
DHCP, e a configuração é transparente para o usuário do computador.
As configurações mais comuns providenciadas por um servidor DHCP para um cliente DHCP são:
• Endereço IP e Netmask
• DNS
• WINS
Entretanto, um servidor DHCP pode também providenciar propriedades de configuração como:
• Noma da Máquina
• Nome do Domínio
• Gateway Padrão
• Servidor de Tempo
• Servidor de Impressão
A vantagem de usar DHCP é que as alterações em uma rede, por exemplo a alteração do endereço
de um servidor DNS, precisam apenas ser modificadas no servidor DHCP, e todos os equipamentos
da rede irão ser reconfigurados da próxima vez que seu cliente de DHCP consultar o servidor. Como
vantagem adicional, ele também torna mais fácil a integração de novos computadores à rede, já que
não é necessário confirmar a disponibilidade de um endereço IP. Conflitos na alocação de endereços
IP também são reduzidos.
Um servidor DHCP pode fornecer parâmetros de configuração usando dois métodos:
Endereço MAC
Esse método consiste na utilização do DHCP por meio da identificação do endereço de hardware
único de cada placa de rede conectada à rede e então fornecendo uma configuração constante
cada vez que o cliente de DHCP faz uma requisição para o servidor DHCP usando o mesmo
dispositivo de rede.
Pool de Endereços
Esse método consiste na definição de um pool (algumas vezes chamado de faixa ou escopo) de
endereços IP apartir do qual os clientes DHCP terão suas propriedades e configurações supridas
dinâmicamente baseado num método de "o primeiro que chega é o primeiro que leva". Quando
um cliente DHCP não mais está em rede por período de tempo especificado, a configuração
expira e é disponibilizada novamente no pool de endereços para uso por outros clientes DHCP.
O Ubuntu é fornecido com ambos, o cliente e o servidor DHCP. O servidor é o dhcpd (dynamic host
configuration protocol daemon). O cliente fornecido com o Ubuntu é o dhclient e deverá ser instalado
em todos os computadores que pretendem ser automáticamente configurados. Ambos os programas
39
40. Rede
são fáceis de instalar e configurar e serão automáticamente iniciados durante a inicialização do
sistema.
7.1. Instalação
Em um terminal, digite o seguinte comando para instalar dhcpd:
sudo apt-get install dhcpd
Você verá a seguinte saída, a qual explica o que fazer em seguinda:
Por favor note que se você estiver instalando o servidor DHCP pela primeira
vez você irá precisar configurá-lo. Por favor pare (/etc/init.d/dhcp
stop) o serviço do servidor DHCP, edite o /etc/dhcpd.conf para
ajustá-lo às suas necessidades
e configurações particulares, e reinicie o serviço do servidor DHCP
(/etc/init.d/dhcp start).
Você também precisará editar o /etc/default/dhcp para especificar as interfaces que o dhcpd
deverá ouvir. Por padrão ele ouve na eth0.
NOTA: as mensagens do dhcpd são enviadas para o syslog. Procure lá por
mensagens de diagnóstico.
Iniciando o servidor DHCP: o dhcpd falhou ao iniciar - verifique o syslog para diagnosticar o proble
7.2. Configuração
A mensagem de erro encontrada no final da instalação pode ser um pouco confusa, mas os seguintes
passos vão te ajudar a configurar o servidor:
Geralmente, o que você quer fazer é associar um endereço IP de forma aleatoria. Isto pode ser feito
com as seguintes configurações:
# Exemplo /etc/dhcpd.conf
# (adicione seus comentários aqui)
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
range 192.168.1.150 192.168.1.200;
}
40
41. Rede
Isso irá fazer com que o servidor DHCP atribua ao cliente um endereço IP a partir da faixa
192.168.1.10-192.168.1.100 ou 192.168.1.150-192.168.1.200. Ele irá emprestar um endereço por
600 segundos se o cliente não perguntar por um determinado período de tempo. O servidor também
irá "avisar" o cliente que ele deve usar 255.255.255.0 como sua máscara de sub-rede, 192.168.1.255
como seu endereço de broadcast, 192.168.1.254 como roteador/gateway e 192.168.1.1 e 192.168.1.2
como seus servidores DNS.
Se for preciso especificar um servidor WINS para os seus clientes de Windows, você deverá incluir a
opção netbios-nome-servidor.
option netbios-name-servers 192.168.1.1;
Configurações do dhcpd foram adiquiridas do mini-HOWTO do DHCP, que pode ser encontrado aqui
[http://www.tldp.org/HOWTO/DHCP/index.html].
7.3. Referências
DHCP FAQ [http://www.dhcp-handbook.com/dhcp_faq.html]
41
42. Rede
8. Domain Name Service (DNS)
Serviço de Nome de Domínio ( Domain Name Service - DNS) é um serviço de internet que mapeia
endereços IP para nomes de domínio completamente qualificados (FQDN) e vice-versa. Dessa forma,
o DNS faz com que não seja necessário decorar endereços IP. Os computadores que rodam o DNS são
chamados de servidores de nomes. O Ubuntu vem com o BIND Berkley Internet Naming Daemon), o
programa mais utilizado para manter um servidor de nomes no Linux.
8.1. Instalação
Em um terminal, digite o seguinte comando para instalar dns:
sudo apt-get install bind
8.2. Configuração
Os arquivos de configuração do DNS são armazenados no diretório /etc/bind. O arquivo de
configuração principal é o /etc/bind/named.conf. O conteúdo da configuração padrão está disposto
abaixo:
// Este é o arquivo de configuração primária para o servidor de DNS BIND named.
//
// Por favor, leia /usr/share/doc/bind/README.Debian para informações sobre a
// estrutura dos arquivos de configuração do BIND no Debian para versão 8.2.1 do BIND
// ou superior, *ANTES* de você customizar este arquivo de configuração.
//
include "/etc/bind/named.conf.options";
// reduz a saída de log em erros fora do nosso controle
logging {
category lame-servers { null; };
category cname { null; };
};
// servidor primário, que conhece os servidores raiz
zone "." {
type hint;
file "/etc/bind/db.root";
};
// seja a autoridade para repasses locais, zonas reversas e para a
// zona de broadcast, como definido no RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
42
43. Rede
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
// adicione definições locais aqui
include "/etc/bind/named.conf.local";
A linha include especifica o nome do arquivo que contém as opções do DNS. A linha directory no
arquivo de opções diz ao DNS onde procupar por arquivos. Todos os arquivos utilizados pelo BIND
estão contidos nesse diretório.
The file named /etc/bind/db.root describes the root name servers in the world. The servers change
over time, so the /etc/bind/db.root file must be maintained now and then.
A seção zone define um servidor mestre, e ela é armazenado em um arquivo mencionado através da
tag file. Cada zona contém 3 registros de recursos (RRs): um RR SOA, um RR NS, e um RR PTR.
SOA é a abreviatura para Start of Authority, ou seja, Início da Autoridade. A "@" é uma notação
especial que denota a origem. NS é a RR para Servidor de Nomes. PTR é Ponteiro para Servidor de
Nomes. Para iniciar o servidor DNS, rode o seguinte comando apartir do prompt de um terminal:
sudo /etc/init.d/bind start
Você pode se referir à documentação mencionada na seção de referências para detalhes.
8.3. Referências
TUTORIAL DNS [http://www.tldp.org/HOWTO/DNS-HOWTO.html]
43
44. Rede
9. CUPS - Servidor de Impressora
The primary mechanism for Ubuntu printing and print services is the Common UNIX Printing
System (CUPS). This printing system is a freely available, portable printing layer which has become
the new standard for printing in most Linux distributions.
O CUPS gerencia serviços de impressão e filas, além de fornecer impressão em rede usando o
Protocolo padrão de Impressão da Internet (IPP), além de oferecer suporte a uma grande variedade
de impressoras, de matriciais a lasers dentre muitas outras. O CUPS também suporta Descrições de
Impressoras PostScript (PPD) e auto-detecção de impressoras de rede, e aprensenta também uma
ferramenta de administração simples baseada na web.
9.1. Instalação
To install CUPS on your Ubuntu computer, simply use sudo with the apt-get command and give the
packages to install as the first parameter. A complete CUPS install has many package dependencies,
but they may all be specified on the same command line. Enter the following at a terminal prompt to
install CUPS:
sudo apt-get install cupsys cupsys-client
Uma vez autenticado com a senha do seu usuário, deverá ocorrer o download e instalação dos pacotes
sem erros. Após a instalação, o servidor CUPS será inicializado automaticamente. Para resolução
de problemas, você pode acessar os erros do servidor CUPS através do arquivo de log de erros em:
/var/log/cups/error_log. Se os logs de erros não mostrar informações necessárias para resolução
dos seus problemas que você encontrar, a qualidade de saída de log do CUPS pode ser incrementada,
alterando a diretiva LogLevel no arquivo de configuração (discutido logo abaixo) para "debug" ou
ainda "debug2", o que causará o registro em log de tudo, do padrão ao "info". Se você fizer esta
mudança, lembre-se de desfazê-la assim que você resolver seu problema, para prevenir que o arquivo
fique muito grande.
9.2. Configuração
O comportamento do servidor CUPS (The Common UNIX Printing System) é configurado através
das diretivas contidas no arquivo /etc/cups/cupsd.conf. O arquivo de configuração do CUPS segue
a mesma sintaxe que o arquivo de configuração primário para o servidor de HTTP Apache, portanto
os usuários familiares com a edição do arquivo de configuração do Apache deverão ter uma maior
facilidade ao editar a configuração do CUPS. Alguns exemplos de configuração que você queira
inicialmente alterar serão apresentados aqui.
Antes de editar o arquivo de configuração, você deve fazer uma cópia do arquivo original
e protegê-lo contra sobrescrição, porque assim você terá os ajustes originais como uma
referência, e para reusar como necessário.
44
45. Rede
Copiar o arquivo /etc/cups/cupsd.conf e protegê-lo contra sobrescrição com o seguinte
comando, executado na linha de comando:
sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original
sudo chmod a-w /etc/cups/cupsd.conf.original
• ServerAdmin: Para configurar o endereço de email designado para o administrador do servidor
CUPS, simplesmente edite o arquivo de configuração /etc/cups/cupsd.conf com seu editor de
textos predileto, e altere a diretiva ServerAdmin de acordo. Por exemplo, se você é o administrador
do servidor CUPS, e seu email é bjoy@somebigco.com, Então você deverá alterar a diretiva
ServerAdmin para ficar como:
ServerAdmin bjoy@somebigco.com
Para mais exemplos de diretivas de configuração no arquivo de configuração do servidor CUPS, veja
a página de manual do sistema relacionada através da utilização do seguinte comando no prompt de
um terminal:
man cupsd.conf
Cada vez que você fizer alterações no arquivo de configuração /etc/cups/cupsd.conf,
você precisará re-iniciar o servidor CUPS digitando o seguinte comando no prompt de um
temrinal:
sudo /etc/init.d/cupsys restart
Algumas das outras configurações do servidor CUPS são feitas no arquivo
/etc/cups/cups.d/ports.conf:
• Listen: Por padrão no Ubuntu, o servidor CUPS escuta somente na interface de loopback no
endereço de IP 127.0.0.1. Para instruir o CUPS a escutar num endereço IP de uma rede, você deve
especificar um hostname, um endereço de IP, ou opcionalmente, um endereço/porta de acordo com
as diretivas Listen. Por exemplo, se seu servidor CUPS fica numa rede local com o endereço de IP
192.168.10.250 e você gostaria de torná-lo acessível para outros sistemas em sua sub-rede, você
deverá editar o arquivo /etc/cups/cups.d/ports.conf e adicionar uma diretiva Listen, como:
Listen 127.0.0.1:631 # Loopback existente
Listen /var/run/cups/cups.sock # Escuta de socket existente
Listen 192.168.10.250:631 # Escutando na interface LAN, porta 631 (IPP)
No exemplo acima, você deve comentar ou remover a referência ao endereço Loopback (127.0.0.1)
se você não desejar que o cupsd escute naquela interface, mas sim preferir que ele escute somente
na interface Ethernet da sua Rede Local (LAN). Para habilitar a escuta para todas as interfaces
45
46. Rede
de rede em que um hostname esteja ligado, incluíndo a loopback, você pode criar uma entrada de
Listen para o hostname socrates como:
Listen socrates:631 # Escute em todas as interfaces pelo hostname 'socrates'
ou omitindo a diretriz Listen e usando Port invés, como:
Port 631 # Escute na porta 631 em todas as interfaces
9.3. Referências
Website do CUPS [http://www.cups.org/]
46
47. Rede
10. HTTPD - Servidor Web Apache2
Apache is the most commonly used Web Server on Linux systems. Web Servers are used to serve
Web Pages requested by client computers. Clients typically request and view Web Pages using Web
Browser applications such as Firefox, Opera, or Mozilla.
Users enter a Uniform Resource Locator (URL) to point to a Web server by means of its Fully
Qualified Domain Name (FQDN) and a path to the required resource. For example, to view the home
page of the Ubuntu Web site [http://www.ubuntu.com] a user will enter only the FQDN. To request
specific information about paid support [http://www.ubuntu.com/support/paid], a user will enter the
FQDN followed by a path.
O protoloco mais comum usado para transferir páginas de internet é o Hyper Text Transfer Protocol
(HTTP - Protocolo de transferência de hipertexto). Protocolos como Hyper Text Transfer Protocol
over Secure Sockets Layer (HTTPS - Protocolo seguro de transferência de hipertexto) e File Transfer
Protocol (FTP - Protocolo de transferência de arquivo), um protocolo para enviar e receber arquivos,
são também suportados.
Servidores Web Apache são geralmente utilizados em conjunto com o motor de banco de dados
MySQL, a linguagem de 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. Essa configuração é
denominada LAMP (Linux, Apache, MySQL e Perl/Python/PHP) e dá forma a uma poderosa e
robusta plataforma de desenvolvimento e hospedagem de aplicações basedas na web.
10.1. Instalação
O servidor web Apache2 está disponível no Ubuntu Linux. Para instalar o Apache2:
• No prompt de um terminal informe o seguinte comando:
#
sudo apt-get install apache2#
10.2. Configuração
O Apache é configurado colocando-se diretivas em arquivos de configuração de texto puro. O arquivo
de configuração principal é chamado apache2.conf. Além disso, outros arquivos de configuração
podem ser adicionados utilizando-se a diretiva Include, e caracteres coringa (wildcards) podem
ser utilizados para incluir vários arquivos de configuração. Qualquer diretiva pode ser colocada
em qualquer desses arquivos de configuração. Mudanças no arquivo de configuração apenas são
reconhecidas pelo Apache2 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, e é mime.types por padrão.
47
48. Rede
O arquivo de configuração padrão do Apache2 é o /etc/apache2/apache2.conf. Você pode editar
esse arquivo para configurar o servidor Apache2. Você pode configurar o número da porta, raiz dos
documentos, módulos, arquivos de log, hosts virtuais, etc.
10.2.1. Configurações Básicas
Essa seção explica os parâmetros de configuração essenciais do servidor Apache2. Procure pela
Documentação do Apache2 [http://httpd.apache.org/docs/2.0/] para mais detalhes.
• O Apache2 vem com uma configuração padrão amigável para hosts virtuais. Isto é, ele é
configurado com um host virtual único padrão (utilizando a 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 caso você tenha múltiplos sites. Se não for alterado, o host virtual
padrão servirá como seu site padrão, ou o site que os usuários utilizarão caso a URL que eles
especifiquem não bata com a diretiva ServerName de nenhum de seus sites customizados. Para
modificar o virtual host padrão, edite o arquivo /etc/apache2/sites-available/default.
Caso você deseje configurar um novo host virtual ou site, 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.
• A diretiva ServerAdmin especifica o endereço de email a ser anunciado como do administrador do
servidor. O valor padrão é webmaster@localhost. Ele deve ser alterado para um endereço de email
que seja entregue para você (caso você seja o administrador do servidor). Se seu website possuir
um problema, o Apache2 mostrará uma mensagem de erro contendo este endereço de email para
qual o problema poderá ser relatado. Encontre esta diretiva no arquivo de configuração do site site
em /etc/apache2/sites-available.
• A diretiva 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 a 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,
de forma que ele esteja disponível para a Internet, para (por exemplo) 81 para mudar a porta no
qual ele escuta, ou deixe o valor como está para operação normal. Esta diretiva pode ser encontrada
e alterada em seu próprio arquivo, /etc/apache2/ports.conf
• A diretiva ServerName é opcional e 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. Se
você acabou de adquirir o nome de domínio ubunturocks.com e gostaria de hospedá-lo no seu
servidor Ubuntu, o valor da diretiva ServerName no arquivo de configuração do seu host virtual
deverá ser ubunturocks.com. Adicione esta diretiva ao novo arquivo de site virtual que você
criou antes (/etc/apache2/sites-available/meunovosite). VocServerAlias para isso.
VocServerAlias *.ubunturocks.com ir
• A diretiva DocumentRoot especifica onde o Apache deve procurar pelos arquivos que formam o
site. O valor padrão é /var/www. Nenhum site está configurado lá, mas você pode descomentar a
48
49. Rede
diretiva RedirectMatch em /etc/apache2/apache2.conf as requisições serão redirecionadas para
/var/www/apache2-default onde o site padrão do Apache2 aguarda. 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 Enable Site) para criar esses links simbólicos, como neste
exemplo: sudo a2ensite meunovosite onde o arquivo de configuração do seu site é
/etc/apache2/sites-available/meunovosite. Semelhantemente, o utilitário a2dissite
deve ser usado para desabilitar sites.
10.2.2. Configuração Padrão
Esta seção explica a configuração das definições padrão do servidor Apache2. Por exemplo, se você
adicionar um host virtual, as definições que você configurar para o host virtual têm precedência para
aquele host virtual. Para uma diretiva não definida dentro da definição de host virtual, o valor padrão
é utilizado.
• O DirectoryIndex é a página padrão servida pelo 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
ou ela vai ver: o DirectoryIndex (DiretórioÍndice) 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. O servidor irá tentar encontrar
um dos arquivos listados no DirectoryIndex e irá retornar o primeiro que for encontrado. Se ele
não encontrar nenhum destes arquivos e se as Opções de Índices estiver ajustadas 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 padão, encontrado em /etc/apache2/apache2.conf é "index.html index.cgi
index.pl index.php index.xhtml". Portanto, se o Apache2 encontras um arquivo no diretório
solicitado que bate com um destes nomes, o primeiro será mostrado.
• A diretiva 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 configuração do Apache2, o arquivo
/usr/share/apache2/error/HTTP_NOT_FOUND.html.var será mostrado. Este arquivo
não está na Raiz de Documentos do servidor, mais existe uma diretiva de apelido no
/etc/apache2/apache2.conf que redireciona as requisições do diretório /error para
/usr/share/apache2/error/. Para ver a listagem de directivas padrão de Documentos de Erro, use o
comando: grep ErrorDocument /etc/apache2/apache2.conf
• Por padrão, o servidor registra o arquivo de transferências no arquivo /var/log/apache2/access.log.
Você pode mudar isto site por site em seu arquivo de configuração de host virtual atravéz
da diretriz CustomLog, ou omiti-la para aceitar o padrão, especificado no arquivo
/etc/apache2/apache2.conf. Você pode também especificar o arquivo onde os erros serão
registrados, através da diretriz ErrorLog, que por padrão é /var/log/apache2/error.log. Estes
49
50. Rede
são mantidos separados do log de transferência para permitir eliminação de problemas com seu
servidor Apache2. Você pode também especificar 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 ao invéz de um esquema por
servidor. 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 um instância de Directory aceita um ou mais dos seguintes valores (entre
outros), separados por espaços:
• ExecCGI - Permite execução de scripts CGI. Scripts CGI não são executados se esta opção não
estiver abilitada.
A maioria dos arquivos não devem ser executados como scripts CGI. Isto pode ser
muito perigoso. Scripts CGI devem ser mantidos em diretórios separados fora do
DocumentRoot, e somente este diretório deve ter a opção ExecCGI habilitada. Isto é o
padrão, e o local padrão para os scripts CGI é /usr/lib/cgi-bin.
• Includes - Permite inclusões no lado do servidor. Inclusões no lado do servidor permitem que
um arquivo HTML inclua outros arquivos. Essa não é uma opção comum. Veja o Apache2 SSI
Howto [http://httpd.apache.org/docs/2.0/howto/ssi.html] para maiores informações.
• IncludesNOEXEC - Permite server-side includes, mais desabilita uso dos 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) no diretório requisitado .
Por motivos de segurança, isto geralmente não deveria estar hablilitado, e certamente
não deveria estar habilitado no seu diretório DocumentRoot. Habilite esta opção
com cuidado, diretório por diretório 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 está desabilitada
por padrão por motivos de segurança. Veja a Documentação do Apache2 para esta opção
[http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews].
• SymLinksIfOwnerMatch - Somente segue os links simbólicos caso o arquivo alvo ou diretório
seja do mesmo dono que o link.
10.2.3. Configurações de Hosts Virtuais
Hosts virtuais permitem que você rode diferentes servidores para diferentes endereços IP, diferentes
nomes, ou diferentes portas da mesma máquina. Por exemplo, você 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
50
51. Rede
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. Por exemp#o, você pode definir o email do Webmaster e não
definir um email individual para cada virtual host.
Ajuste a diretiva DocumentRoot para o diretório que contém o documento raíz (como o index.html)
para o host virtual. O DocumentRoot padrão é /var/www.
The ServerAdmin directive within the VirtualHost stanza is the email address used in the footer of
error pages if you choose to show a footer with an email address on the error pages.
10.2.4. Configurações do Servidor
Esta seção explica como configurar as opções básicas de um servidor.
LockFile - A diretiva LockFile define o caminho do arquivo de trava usado quando o
servidor é compilado tanto com USE_FCNTL_SERIALIZED_ACCEPT quanto com
USE_FLOCK_SERIALIZED_ACCEPT. É obrigatório armazená-lo no disco local. Deixe o valor
padrão a menos que o diretório de logs esteja localizando em um compartilhamento NFS. Se este for
o caso, o valor padrão deverá ser alterado para um caminho no disco local e para um diretório no qual
apenas o root tem permissões de leitura.
PidFile - A diretiva PidFile define o arquivo em que o servidor gravará o seu ID de processo (pid).
Este arquivo deve ser 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
A não ser que você saiba exatamente o que está fazendo, não defina a diretiva User para
root. Usando o root como User (usuário) você irá criar largas brechas de serguranç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.
10.2.5. 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
51
52. Rede
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.
O Ubuntu compila o Apache2 de maneira que permita o carregamento dinâmico de 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.
Você pode usar o comando a2enmod para habilitar um módulo. Você pode usar o comando a2dismod
para desabilitar um módulo. Quando você desabilita um módulo, ele estará disponível no diretório
/etc/apache2/mods-enabled.
10.3. 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 do Localizador de Recurso Uniforme (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
10.3.1. 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.
Alternativamente, você pode criar o seu certificado auto-assinado. Note que, entretando, o certificado
auto-assinado 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.
52