Buscar

Servidor Firewall

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Procedimento
Servidor Firewall
Autor: Sandro Venezuela <sandro@linux2business.com.br>
www.linux2business.com.br 
1/27
Atribuição – Uso não-comercial – Compartilhamento pela mesma licença 2.5 Brasil
Você pode:
Copiar, distribuir, exibir e executar a obra.
Sob as seguintes condições:
Atribuição: Você deve dar crédito ao autor original, da forma 
especificada pelo autor ou licenciante.
Uso não-comercial: Você não pode utilizar esta obra com finalidades 
comerciais
Compartilhamento pela mesma licença: Se você alterar, transformar ou 
criar outra obra com base nesta, você somente poderá distribuir a obra 
resultante sob uma licença idêntica a esta.
A reprodução do material contido neste tutorial é permitido desde que se incluam os créditos ao 
autor e a frase: “Reproduzido da Linux2Business — www.linux2business.com.br” em local 
visível.
www.linux2business.com.br 
2/27
Índice
Versão...................................................................................................................................................4
Objetivo................................................................................................................................................5
CentOS.................................................................................................................................................6
Instalação.........................................................................................................................................6
Configuração....................................................................................................................................6
Serviços desnecessários..............................................................................................................6
Desabilitar Ctrl-Alt-Del..............................................................................................................7
Desabilitar Terminais..................................................................................................................7
Desabilitar Acesso Local para Usuário root...............................................................................7
Desabilitar Acesso SSH para Usuário root.................................................................................8
SNMP..........................................................................................................................................8
SUDO..........................................................................................................................................8
DNS (Master / Slave).........................................................................................................................10
DHCP.................................................................................................................................................18
Proxy...................................................................................................................................................19
Firewall (Iptables)..............................................................................................................................21
Sincronização de data e hora (NTP)...................................................................................................26
Referências.........................................................................................................................................27
www.linux2business.com.br 
3/27
Versão
Criado/Alterado Data Versão
Sandro Venezuela 28/07/10 V1.0
Sandro Venezuela 24/08/10 V 1.1
Sandro Venezuela 09/09/10 V 1.2
Sandro Venezuela 18/10/10 V 1.3
Sandro Venezuela 23/11/10 V 1.4
www.linux2business.com.br 
4/27
Objetivo
Apresentar os procedimentos de instalação e configuração de um servidor Firewall contendo além 
das regras de Firewall, os serviços de Proxy, DHCP, DNS Mestre e Escravo, e NTP, utilizando o 
sistema operacional GNU/Linux, distribuição CentOS 5.
As configurações foram realizadas tomando como referência o uso de duas redes, sendo uma a rede 
das estações e a outra a dos servidores (DMZ), além é claro a rede da Internet.
Serão apresentadas também as configurações realizadas no momento da instalação do sistema 
operacional.
www.linux2business.com.br 
5/27
CentOS
Instalação
Iniciar o servidor através da unidade de CD/DVD com a mídia do CentOS 5. A instalação deve 
ocorrer sempre no idioma English.
Na configuração do fuso horário deve-se marcar sempre a opção UTC para definição da data e hora.
O particionamento do disco deve obedecer a seguinte configuração:
Partição Ponto de Montagem Tamanho
/dev/sda1 / 1 GB
/dev/sda2 /usr 4 GB
/dev/sda3 swap 1 GB
/dev/sda5 (LVM)
/home
/tmp
/var
1 GB
1 GB
>10 GB
Normalmente a instalação de um servidor firewall é realizada com a quantidade mínima de pacotes, 
onde para realizar tal configuração no CentOS é necessário selecionar a opção Customize Now e 
desmarcar todos os grupos de pacotes.
Obs.: Somente é possível realizar a instalação mínima através da instalação gráfica.
Deve ser criado o usuário sysadmin, para administração do servidor e com isto evitar o uso do 
usuário root.
Após a instalação, caso sejam necessários alguns pacotes extras, como nmap, tcpdump, crontabs, 
etc, estes devem ser instalados através do comando YUM.
Configuração
Serviços desnecessários
Desabilitando os serviços desnecessários
# chkconfig haldaemon off
# chkconfig kudzu off
# chkconfig iptables off
# chkconfig ip6tables off
# chkconfig mcstrans off
# chkconfig messagebus off
# chkconfig netfs off
# chkconfig restorecond off
Obs.: Os serviços iptables e ip6tables somente estão sendo desabilitados porque serão 
configuradas novas regras de firewall, senão recomenda-se que estes serviços sejam mantidos.
www.linux2business.com.br 
6/27
Desabilitar Ctrl-Alt-Del
Editar o arquivo /etc/inittab, comentando a seguinte linha:
# what to do when CTRL-ALT-DEL is pressed 
# ca::ctrlaltdel:/sbin/shutdown -r -t 4 now
Para habilitar a alteração, execute o comando:
# init q
Desabilitar Terminais
Editar o arquivo /etc/inittab, comentando a seguinte linha, em negrito:
...
# for ARGO UPS
sh:12345:powerfail:/sbin/shutdown -h now THE POWER IS FAILING
# getty-programs for the normal runlevels 
# <id>:<runlevels>:<action>:<process> 
# The "id" field MUST be the same as the last 
# characters of the device (after "tty"). 
1:2345:respawn:/sbin/mingetty --noclear tty1 
2:2345:respawn:/sbin/mingetty tty2 
# 3:2345:respawn:/sbin/mingetty tty3 
# 4:2345:respawn:/sbin/mingetty tty4 
# 5:2345:respawn:/sbin/mingetty tty5 
# 6:2345:respawn:/sbin/mingetty tty6
#
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt102
#cons:12345:respawn:/sbin/smart_agetty -L 38400 console
...
Normalmente devem ser permitidos somentes 2 terminais, acessíveis localmente através das teclas 
Alt+F1 e Alt+F2. Se for necessário mais terminais, basta habilitar, descomentando o terminal 
correspondente.
Para habilitar a alteração, execute o comando:
# init q
Desabilitar Acesso Local para Usuário root
Por padrão, não deve ser permitido o acesso local para o usuário root. Para bloquear este acesso, 
remova todas as linhas do arquivo /etc/securetty, conforme apresentado abaixo:
# cp -p /etc/securetty /etc/securetty.default
# cat /dev/null > /etc/securetty
Obs.: Este procedimento SOMENTE deve ser realizado após a criação de pelo menos um usuário, 
normalmente criado no momento da instalação.
www.linux2business.com.br 
7/27
Desabilitar Acesso SSH para Usuário root
Por padrão, não deve ser permitido o acesso via SSH para o usuário root. Para bloquear este acesso 
é necessário incluir ou alterar as seguintes linhas no arquivo /etc/ssh/sshd_config, conforme 
apresentado abaixo:PermitRootLogin no
AllowUsers sysadmin
Para que as alterações sejam ativadas é preciso reiniciar o serviço SSH:
# service sshd restart
Obs.: Este procedimento SOMENTE deve ser realizado após a criação de pelo menos um usuário, 
normalmente criado no momento da instalação.
SNMP
Para o serviço de monitoramento do servidor, devemos instalar o pacote net-snmp através do 
YUM. Em seguida, deve-se criar o arquivo snmpd.conf, no diretório /etc/snmp, com o seguinte 
conteúdo:
com2sec local 127.0.0.1/32 private
com2sec local 192.168.0.39/32 linux2business
group MyROGroup v1 local
group MyROGroup v2c local
group MyROGroup usm local
view all included .1 80
access MyROGroup "" any noauth exact all none none
syslocation Linux2Business
syscontact System Admin <sysadmin@linux2business.com.br>
Obs.: O endereço IP 192.168.0.39 deve ser substituído pelo endereço do seu servidor de 
monitoramento via SNMP.
Por fim, devemos iniciar o serviço SNMP:
# service snmpd start
E habilitar para que o serviço seja sempre iniciado junto com o sistema operacional:
# chkconfig snmpd on
SUDO
Para esta funcionalidade, deve-se instalar o pacote sudo através do YUM.
Com o comando visudo, que altera o arquivo /etc/sudoers, devemos adicionar os seguintes 
parâmetros para o usuário sysadmin:
www.linux2business.com.br 
8/27
# visudo
(Incluir ao final do arquivo)
# SysAdmin User
sysadmin ALL = NOPASSWD: /usr/bin/passwd administrator, /sbin/reboot, /sbin/halt
Obs.: Para cada servidor existirá uma configuração específica do sudo a ser realizada.
Com a configuração acima o usuário sysadmin terá o “poder” de alterar a senha do usuário 
administrator, reiniciar e desligar o servidor.
Outros comandos podem ser configurados, porém devem estar de acordo com a política de TI da 
empresa.
www.linux2business.com.br 
9/27
DNS (Master / Slave)
Instalar os pacotes bind e bind-chroot utilizando o YUM:
# yum install bind bind-chroot
Através dos arquivos de exemplo, disponíveis no diretório /usr/share/doc/bind-
<versão>/sample, será configurado um servidor de nomes (DNS) utilizado tanto para a rede 
interna quanto externa e posteriormente configurado um novo servidor secundário (Slave).
Como o servidor será executado em um ambiente restrito, ou seja, uma jaula chroot, toda 
configuração será criada dentro dos diretórios /var/named/chroot/etc e 
/var/named/chroot/var/named, conforme abaixo:
Arquivo /var/named/chroot/etc/named.conf:
options
{
 directory "/var/named";
 dump-file "data/cache_dump.db";
 statistics-file "data/named_stats.txt";
 memstatistics-file "data/named_mem_stats.txt";
 version "BIND";
 listen-on port 53 { any; };
 notify yes;
};
logging 
{
 channel default_debug {
 file "data/named.run";
 severity dynamic;
 };
};
view "localhost"
{
 match-clients { 127.0.0.1; };
 match-destinations { 127.0.0.1; };
 allow-transfer { 192.168.100.20; };
 allow-query { 127.0.0.1; };
 recursion yes;
 include "/etc/named.root.hints";
 include "/etc/named.rfc1912.zones";
 zone "linux2business.br" { 
 type master;
 file "internal.linux2business.br.db";
 allow-update { none; };
 };
 zone "linux2business.org.br" { 
www.linux2business.com.br 
10/27
 type master;
 file "internal.linux2business.org.br.db";
 allow-update { none; };
 };
};
view "internal"
{
 match-clients { 172.16.0.0/24; 192.168.100.0/24; };
 match-destinations { 172.16.0.0/24; 192.168.100.0/24; };
 allow-transfer { 192.168.100.20; };
 allow-query { 172.16.0.0/24; 192.168.100.0/24; };
 recursion yes;
 include "/etc/named.root.hints";
 zone "linux2business.br" { 
 type master;
 file "internal.linux2business.br.db";
 allow-update { none; };
 };
 zone "linux2business.org.br" { 
 type master;
 file "internal.linux2business.org.br.db";
 allow-update { none; };
 };
};
view "external"
{
 match-clients { any; };
 match-destinations { any; };
 allow-transfer { 192.168.100.20; };
 allow-query { any; };
 recursion no;
 include "/etc/named.root.hints";
 zone "linux2business.br" { 
 type master;
 file "external.linxux2business.br.db";
 allow-update { none; };
 };
 zone "linux2business.org.br" { 
 type master;
 file "external.linxux2business.org.br.db";
 allow-update { none; };
 };
};
key ddns_key
{
 algorithm hmac-md5;
www.linux2business.com.br 
11/27
 // Use /usr/sbin/dns-keygen to generate TSIG keys
 secret "9FDDwPimOMnhsfNtmjaxQvNSSdrBIHwg6gjxxRxZMvKP8wHRRPDzyiZaW76s";
};
Arquivo /var/named/chroot/etc/named.rfc1912.zones:
// named.rfc1912.zones:
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// 
zone "localdomain" IN {
 type master;
 file "localdomain.zone";
 allow-update { none; };
};
zone "localhost" IN {
 type master;
 file "localhost.zone";
 allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
 type master;
 file "named.local";
 allow-update { none; };
};
zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" 
IN {
 type master;
 file "named.ip6.local";
 allow-update { none; };
};
zone "255.in-addr.arpa" IN {
 type master;
 file "named.broadcast";
 allow-update { none; };
};
zone "0.in-addr.arpa" IN {
 type master;
 file "named.zero";
 allow-update { none; };
};
Arquivo /var/named/chroot/etc/named.root.hints:
//
// The 'named.root' root cache hints zone for the bind DNS 'named' 
nameserver.
//
// named's cache must be primed with the addresses of the root zone '.' 
nameservers. 
// The root zone file can be obtained by querying the root 'A' nameserver:
// $ dig . ns @198.41.0.4 > named.root
// Or by download via FTP / HTTP:
// $ wget ftp://ftp.rs.internic.net/domain/named.root 
www.linux2business.com.br 
12/27
// 
// Every view that is to provide recursive service must include this zone.
//
zone "." IN {
 type hint;
 file "named.root";
};
Alguns parâmetros importantes e que merecem uma informação a mais são:
listen-on – Configura em quais interfaces de rede e porta o serviço DNS 
ficará funcionando;
allow_transfer – Especifica os endereços IP dos servidores DNS que estão 
autorizados a receber as informações das zonas. Normalmente 
são os servidores DNS Escravos;
allow_query – Especifica os endereços IP que possuem permissão para 
utilizar o serviço DNS;
allow_update – Especifica os endereços IP que podem atualizar as informações 
das zonas. Normalmente utilizado em DNS Dinâmicos;
recursion – Determina a possibilidade ou não de realizar consultas 
recursivas, ou seja, de outros domínios. Normalmente esta 
opção é habilitada somente internamente.
Com os arquivos de configuração do DNS criados, vamos agora criar os arquivos de zona para os 
domínios, tanto para a rede interna quanto externa. Os arquivos estão apresentadosabaixo:
Arquivo /var/named/chroot/var/named/internal.linux2business.br.db:
$TTL 86400
@ IN SOA fw.linux2business.br. root.fw.linux2business.br. (
 2008080105 ; serial
 28800 ; refresh (seconds)
 7200 ; retry (seconds)
 604800 ; expire (seconds)
 86400 ) ; minimum (seconds)
 NS ns1.linux2business.br.
 NS ns2.linux2business.br.
 MX 10 mail.linux2business.br.
linux2business.br. A 192.168.100.10
fw A 192.168.100.1
ns1 A 192.168.100.1
web A 192.168.100.10
mail A 192.168.100.20
ns2 A 192.168.100.20
base A 192.168.100.30
proxy A 172.16.0.1
ntp CNAME fw
www CNAME web
webmail CNAME web
ldap CNAME base
ldap2 CNAME mail
smtp CNAME mail
www.linux2business.com.br 
13/27
imap CNAME mail
Arquivo /var/named/chroot/var/named/internal.linux2business.org.br.db:
$TTL 86400
@ IN SOA fw.linux2business.org.br. root.fw.linux2business.org.br. (
 2008080102 ; serial
 28800 ; refresh (seconds)
 7200 ; retry (seconds)
 604800 ; expire (seconds)
 86400 ) ; minimum (seconds)
 NS ns1.linux2business.org.br.
 NS ns2.linux2business.org.br.
 MX 10 mail.linux2business.org.br.
linux2business.org.br. A 192.168.100.10
fw A 192.168.100.1
ns1 A 192.168.100.1
www A 192.168.100.10
mail A 192.168.100.20
ns2 A 192.168.100.20
base A 192.168.100.30
ntp CNAME fw
webmail CNAME www
ldap CNAME base
ldap2 CNAME mail
Arquivo /var/named/chroot/var/named/external.linux2business.br.db:
$TTL 86400
@ IN SOA fw.linux2business.br. root.fw.linux2business.br. (
 2008080101 ; serial
 28800 ; refresh (seconds)
 7200 ; retry (seconds)
 604800 ; expire (seconds)
 86400 ) ; minimum (seconds)
 NS ns1.linux2business.br.
 NS ns2.linux2business.br.
 MX 10 mail.linux2business.br.
linux2business.br. A 200.0.0.10
fw A 200.0.0.1
ns1 A 200.0.0.1
www A 200.0.0.10
mail A 200.0.0.20
ns2 A 200.0.0.20
base A 200.0.0.30
webmail CNAME www
ldap CNAME base
ldap2 CNAME mail
Arquivo /var/named/chroot/var/named/external.linux2business.org.br.db:
$TTL 86400
@ IN SOA fw.linux2business.org.br. root.fw.linux2business.org.br. (
 2008080101 ; serial
 28800 ; refresh (seconds)
 7200 ; retry (seconds)
www.linux2business.com.br 
14/27
 604800 ; expire (seconds)
 86400 ) ; minimum (seconds)
 NS ns1.linux2business.org.br.
 NS ns2.linux2business.org.br.
 MX 10 mail.linux2business.org.br.
linux2business.org.br. A 200.0.0.10
fw A 200.0.0.1
ns1 A 200.0.0.1
www A 200.0.0.10
mail A 200.0.0.20
ns2 A 200.0.0.20
base A 200.0.0.30
webmail CNAME www
ldap CNAME base
ldap2 CNAME mail
Vamos criar os links simbólicos para os arquivos criados dentro do ambiente chroot, senão alguns 
comandos de verificação do DNS, como named-checkconf e named-checkzone, não irão 
funcionar:
# cd /etc
# ln -s /var/named/chroot/etc/named.conf named.conf
# ln -s /var/named/chroot/etc/named.rfc1912.zones named.rfc1912.zones
# ln -s /var/named/chroot/etc/named.root.hints named.root.hints
# cd /var/named
# ln -s /var/named/chroot/var/named/external.linux2business.br.db \
> external.linux2business.br.db
# ln -s /var/named/chroot/var/named/external.linux2business.org.br.db
> external.linux2business.org.br.db
# ln -s /var/named/chroot/var/named/internal.linux2business.br.db \
> internal.linux2business.br.db
# ln -s /var/named/chroot/var/named/internal.linux2business.org.br.db \
> internal.linux2business.org.br.db
# ln -s /var/named/chroot/var/named/localdomain.zone localdomain.zone
# ln -s /var/named/chroot/var/named/localhost.zone localhost.zone
# ln -s /var/named/chroot/var/named/named.broadcast named.broadcast
# ln -s /var/named/chroot/var/named/named.ip6.local named.ip6.local
# ln -s /var/named/chroot/var/named/named.local named.local
# ln -s /var/named/chroot/var/named/named.root named.root
# ln -s /var/named/chroot/var/named/named.zero named.zero
Por fim, vamos habilitar o serviço para que seja iniciado junto com o sistema operacional:
# chkconfig named on
Os procedimentos de instalação e configuração do DNS Escravo (Slave) são praticamente os 
mesmos utilizados para configurar o DNS Mestre (Master), sendo necessário alterar somente o 
arquivo /etc/named.conf:
Arquivo /etc/named.conf:
options
{
 directory "/var/named";
 dump-file "data/cache_dump.db";
 statistics-file "data/named_stats.txt";
www.linux2business.com.br 
15/27
 memstatistics-file "data/named_mem_stats.txt";
 version "BIND";
 listen-on port 53 { any; };
 
 notify no; 
}; 
logging 
{
 channel default_debug {
 file "data/named.run";
 severity dynamic;
 };
};
view "localhost"
{
 match-clients { 127.0.0.1; };
 match-destinations { 127.0.0.1; };
 allow-transfer { none; };
 allow-notify { 192.168.100.1; };
 allow-query { 127.0.0.1; };
 recursion yes;
 include "/etc/named.root.hints";
 include "/etc/named.rfc1912.zones";
 zone "linux2business.br" { 
 type slave;
 file "slaves/internal.linux2business.br.db";
 masters { 192.168.100.1; };
 };
 zone "linux2business.org.br" { 
 type slave;
 file "slaves/internal.linux2business.org.br.db";
 masters { 192.168.100.1; };
 };
};
view "internal"
{
 match-clients { 172.16.0.0/24; 192.168.100.0/24; };
 match-destinations{ 172.16.0.0/24; 192.168.100.0/24; };
 allow-transfer { none; };
 allow-notify { 192.168.100.1; };
 allow-query { 172.16.0.0/24; 192.168.100.0/24; };
 recursion yes;
 include "/etc/named.root.hints";
 zone "linux2business.br" { 
 type slave;
www.linux2business.com.br 
16/27
 file "slaves/internal.linux2business.br.db";
 masters { 192.168.100.1; };
 };
 zone "linux2business.org.br" { 
 type slave;
 file "slaves/internal.linux2business.org.br.db";
 masters { 192.168.100.1; };
 };
};
view "external"
{
 match-clients { any; };
 match-destinations { any; };
 allow-transfer { none; };
 allow-notify { 192.168.100.1; };
 allow-query { any; };
 recursion no;
 include "/etc/named.root.hints";
 zone "linux2business.br" { 
 type slave;
 file "slaves/external.linxux2business.br.db";
 masters { 192.168.100.1; };
 };
 zone "linux2business.org.br" { 
 type slave;
 file "slaves/external.linxux2business.org.br.db";
 masters { 192.168.100.1; };
 };
};
key ddns_key
{
 algorithm hmac-md5;
 // Use /usr/sbin/dns-keygen to generate TSIG keys
 secret "9FDDwPimOMnhsfNtmjaxQvNSSdrBIHwg6gjxxRxZMvKP8wHRRPDzyiZaW76s";
};
Obs.: Lembre-se que o arquivo /etc/named.conf é um link simbólico para o arquivo 
/var/named/chroot/etc/named.conf.
Os arquivos /etc/named.root.hints e /etc/named.rfc1912.zones são idênticos ao utilizado no 
servidor DNS primário.
www.linux2business.com.br 
17/27
DHCP
Instalar o pacote dhcp, através do YUM:
# yum install dhcp
Para configurar o serviço DHCP devemos alterar o arquivo /etc/dhcpd.conf, conforme abaixo:
Arquivo /etc/dhcpd.conf:
ddns-update-style interim;
authoritative;
subnet 172.16.0.0 netmask 255.255.255.0 {
 default-lease-time 3600;
 max-lease-time 14400;
 option subnet-mask 255.255.255.0;
 option broadcast-address 172.16.0.255;
 option routers 172.16.0.1;
 option domain-name "linux2business.br";
 option domain-name-servers 172.16.0.1;
 option ntp-servers 172.16.0.1;
 option time-offset -10800; # Brazil East
 range dynamic-bootp 172.16.0.50 172.16.0.100;
}
www.linux2business.com.br 
18/27
Proxy
Instalar o pacote squid, através do comando YUM:
# yum install squid
Para configurar o Squid deve-se alterar o arquivo /etc/squid/squid.conf, conforme abaixo:
Arquivo /etc/dhcpd.conf:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object 
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8 
acl SSL_ports port 443 
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl internal_net src 172.16.0.0/24
http_access allow internal_net
http_access allow localhost
http_access deny all
icp_access allow all
http_port 172.16.0.1:3128
hierarchy_stoplist cgi-bin ?
cache_mem 64 MB
cache_dir ufs /var/spool/squid 1000 16 256
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /var/spool/squid
Obs.: Para listar somente as linhas válidas, ou seja que não são comentários e também não são 
linhas em branco, deve-se utilizar o comando “grep ^[^#$] /etc/squid/squid.conf”.
A configuração acima é bem simples, liberando o acesso a qualquer estação que tenha um endereço 
IP dentro da rede 172.16.0.0/24. Qualquer regra de bloqueio que for adicionada a configuração deve 
ser obrigatoriamente inserida antes da linha “http_access allow internal_net”.
Outro detalhe, para liberar sites que funcionam em portas diferentes da porta 80, como por exemplo, 
www.linux2business.com.br 
19/27
81, 82, etc, é necessário adicionar uma ACL com o parâmetro Safe_ports com a porta necessária, 
por exemplo, “acl Safe_ports port 81”.
Por fim, uma breve explicação sobre os parâmetros cache_mem e cache_dir, onde o primeiro deve 
ser configurado com aproximadamente 25% da memória RAM total do servidor, porém é comum 
encontrar na Internet pessoas indicando valores de até 75% da memória RAM.
No parâmetro cache_dir, o tamanho do cache (terceiro valor, logo após a definição do diretório) 
depende do tamanho disponível na partição /var, lembrando que cada 1GB de tamanho representa 
um consumo de 10MB da memória RAM.
Um detalhe importante, a configuração do Squid apresentada acima não é para um Proxy 
transparente, assim, para funcionar, o navegador deve ser alterado.
www.linux2business.com.br 
20/27
Firewall (Iptables)
Normalmente o pacote iptables já vem instalado, porém se for necessário, este pacote pode ser 
instalado via YUM, através do comando abaixo:
# yum install iptables
Para configurar as regras de firewall deve-se criar o script firewall no diretório /etc/init.d, 
conforme abaixo:
Arquivo /etc/init.d/firewall:
#!/bin/sh
#
# firewall Start iptables firewall
#
# chkconfig: 2345 08 92
# description: Starts, stops and saves iptables firewall
#
# Source function library.
. /etc/init.d/functions
IPTABLES=iptables
IPV=${IPTABLES%tables} # ip for ipv4 | ip6 for ipv6
PROC_IPTABLES_NAMES=/proc/net/${IPV}_tables_names
VAR_SUBSYS_IPTABLES=/var/lock/subsys/$IPTABLES
if [ ! -x /sbin/$IPTABLES ]; then
 echo -n $"/sbin/$IPTABLES does not exist."; warning; echo
 exit 0
fi
if lsmod 2>/dev/null | grep -q ipchains ; then
 echo -n $"ipchains and $IPTABLES can not be used together."; warning; echo
 exit 1
fi
# Default firewall configuration:
IPTABLES_STATUS_NUMERIC="yes"
IPTABLES_STATUS_VERBOSE="no"
IPTABLES_STATUS_LINENUMBERS="yes"
start() {
 # Load Modules
 modprobe ip_nat_ftp
 modprobe ip_conntrack_ftp
 # Disable IP Spoofing attack
 sysctl -w net.ipv4.conf.all.rp_filter=2 > /dev/null 2>&1
 # Enable IP Forward
 sysctl -w net.ipv4.ip_forward=1 > /dev/null 2>&1
 # Kill Timestamps
 sysctl -w net.ipv4.tcp_timestamps=0 > /dev/null 2>&1
 # Enable protection Cookie TCP syn
 sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null 2>&1
www.linux2business.com.br 
21/27
 # Disable ICMP broadcast
 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null 2>&1
 # Enable protection to bad error message
 sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 > /dev/null 2>&1
 # It certifys that packages routed in the origin had been discarded
 sysctl -w net.ipv4.conf.all.accept_source_route=0 > /dev/null 2>&1
 # Change TTL value
 sysctl -w net.ipv4.ip_default_ttl=255 > /dev/null 2>&1
 # Ratemask to ICMPs: 0 3 4 5 8 11 12
 sysctl -w net.ipv4.icmp_ratemask=6457 > /dev/null 2>&1
 # Recommended values of datagram TCP thinking aboutDOS and DRDOS attack
 sysctl -w net.ipv4.tcp_fin_timeout=30 > /dev/null 2>&1
 sysctl -w net.ipv4.tcp_keepalive_time=1800 > /dev/null 2>&1
 sysctl -w net.ipv4.tcp_window_scaling=0 > /dev/null 2>&1
 sysctl -w net.ipv4.tcp_sack=0 > /dev/null 2>&1
 # Clear the firewall rules
 iptables -F
 iptables -t nat -F
 iptables -X
 iptables -t nat -X
 # Allow loopback
 iptables -A INPUT -j ACCEPT -i lo -d 127.0.0.1
 iptables -A OUTPUT -j ACCEPT -o lo -s 127.0.0.1
 # Allow ICMP
 iptables -A INPUT -j ACCEPT -i eth0 -p icmp
 iptables -A OUTPUT -j ACCEPT -o eth0 -p icmp
 iptables -A INPUT -j ACCEPT -i eth1 -p icmp
 iptables -A OUTPUT -j ACCEPT -o eth1 -p icmp
 iptables -A INPUT -j ACCEPT -i eth2 -p icmp
 iptables -A OUTPUT -j ACCEPT -o eth2 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth0 -o eth1 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth0 -o eth2 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth2 -o eth0 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth1 -o eth2 -p icmp
 iptables -A FORWARD -j ACCEPT -i eth2 -o eth1 -p icmp
 # Allow Firewall to access the Internet
 iptables -A INPUT -j ACCEPT -i eth0 -p tcp -m multiport --sport 80,443
 iptables -A OUTPUT -j ACCEPT -o eth0 -p tcp -m multiport --dport 80,443
 iptables -A INPUT -j ACCEPT -i eth0 -p udp -m multiport --sport 53,123
 iptables -A OUTPUT -j ACCEPT -o eth0 -p udp -m multiport --dport 53,123
 # Allow Firewall to access the DMZ
 iptables -A INPUT -j ACCEPT -i eth1 -p tcp -m multiport --sport 22
 iptables -A OUTPUT -j ACCEPT -o eth1 -p tcp -m multiport --dport 22
 # Allow Firewall to access the LAN
 iptables -A INPUT -j ACCEPT -i eth2 -p tcp -m multiport --sport 22
www.linux2business.com.br 
22/27
 iptables -A OUTPUT -j ACCEPT -o eth2 -p tcp -m multiport --dport 22
 # Allow Internet to access the Firewall
 iptables -A INPUT -j ACCEPT -i eth0 -p tcp -m multiport --dport 22
 iptables -A OUTPUT -j ACCEPT -o eth0 -p tcp -m multiport --sport 22
 # Allow Internet to access the DMZ
 # Allow Internet to access the LAN
 # Allow DMZ to access the Firewall
 iptables -A INPUT -j ACCEPT -i eth1 -p tcp -m multiport --dport 22,53
 iptables -A OUTPUT -j ACCEPT -o eth1 -p tcp -m multiport --sport 22,53
 iptables -A INPUT -j ACCEPT -i eth1 -p udp -m multiport --dport 53
 iptables -A OUTPUT -j ACCEPT -o eth1 -p udp -m multiport --sport 53
 # Allow DMZ to access the Internet
 iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -p tcp -m multiport --dport 80
 iptables -A FORWARD -j ACCEPT -i eth0 -o eth1 -p tcp -m multiport --sport 80
 # Allow DMZ to access the LAN
 # Allow LAN to access the Firewall
 iptables -A INPUT -j ACCEPT -i eth2 -p tcp -m multiport --dport 22,53,80,3128
 iptables -A OUTPUT -j ACCEPT -o eth2 -p tcp -m multiport --sport 22,53,80,3128
 iptables -A INPUT -j ACCEPT -i eth2 -p udp -m multiport --dport 53,67
 iptables -A OUTPUT -j ACCEPT -o eth2 -p udp -m multiport --sport 53,67
 # Allow LAN to access the Internet
 # Allow LAN to access the DMZ
 iptables -A FORWARD -j ACCEPT -i eth2 -o eth1 -p tcp -m multiport --dport 25,80,143,389,443
 iptables -A FORWARD -j ACCEPT -i eth1 -o eth2 -p tcp -m multiport --sport 25,80,143,389,443
 # NAT
 iptables -t nat -A POSTROUTING -j MASQUERADE -s 192.168.100.0/24 -o eth0
 iptables -t nat -A POSTROUTING -j MASQUERADE -s 172.16.0.0/24 -o eth0
 # PREROUTING
 iptables -t nat -A PREROUTING -i eth0 -d 200.0.0.10 -p tcp -m multiport 
--dport 80,443,8080 -j DNAT --to 192.168.100.10
 iptables -A FORWARD -j ACCEPT -i eth0 -o eth1 -d 192.168.100.10 -p tcp -m 
multiport --dport 80,443,8080
 iptables -A FORWARD -j ACCEPT -i eth1 -o eth0 -s 192.168.100.10 -p tcp -m 
multiport --sport 80,443,8080
 # Sets policy
 iptables -P INPUT DROP
 iptables -P OUTPUT DROP
 iptables -P FORWARD DROP
 # Logs
 iptables -A INPUT -j LOG --log-level alert --log-prefix “DROP”
 iptables -A OUTPUT -j LOG --log-level alert --log-prefix “DROP”
 iptables -A FORWARD -j LOG --log-level alert --log-prefix “DROP”
 touch $VAR_SUBSYS_IPTABLES
www.linux2business.com.br 
23/27
 return $ret
}
stop() {
 # Clear the firewall rules
 iptables -F
 iptables -t nat -F
 iptables -X
 iptables -t nat -X
 # Sets policy
 iptables -P INPUT ACCEPT
 iptables -P OUTPUT ACCEPT
 iptables -P FORWARD ACCEPT
 rm -f $VAR_SUBSYS_IPTABLES
 return $ret
}
status() {
 tables=`cat $PROC_IPTABLES_NAMES 2>/dev/null`
 # Do not print status if lockfile is missing and iptables modules are not 
 # loaded.
 # Check if iptable module is loaded
 if [ ! -f "$VAR_SUBSYS_IPTABLES" -a -z "$tables" ]; then
 echo $"Firewall is stopped."
 return 1
 fi
 # Check if firewall is configured (has tables)
 if [ ! -e "$PROC_IPTABLES_NAMES" ]; then
 echo $"Firewall is not configured. "
 return 1
 fi
 if [ -z "$tables" ]; then
 echo $"Firewall is not configured. "
 return 1
 fi
 NUM=
 [ "x$IPTABLES_STATUS_NUMERIC" = "xyes" ] && NUM="-n"
 VERBOSE= 
 [ "x$IPTABLES_STATUS_VERBOSE" = "xyes" ] && VERBOSE="--verbose"
 COUNT=
 [ "x$IPTABLES_STATUS_LINENUMBERS" = "xyes" ] && COUNT="--line-numbers"
 for table in $tables; do
 echo $"Table: $table"
 $IPTABLES -t $table --list $NUM $VERBOSE $COUNT && echo
 done
 return 0
}
restart() {
 stop
 start
}
www.linux2business.com.br 
24/27
case "$1" in
 start)
 stop
 start
 RETVAL=$?
 ;;
 stop)
 stop
 RETVAL=$?
 ;;
 restart)
 restart
 RETVAL=$?
 ;;
 status)
 status
 RETVAL=$?
 ;;
 *)
 echo $"Usage: $0 {start|stop|restart|status}"
 exit 1
 ;;
esac
exit $RETVAL
Obs.: As regras apresentadas acima devem ser adequadas aos serviços existentes na rede e também 
as necessidades de cada estrutura de servidores. Normalmente prefiro criar regras bem explícitas, 
indicando quais servidores ou redes tem acesso à determinados serviços.
Uma vez criado o script, deve-se configurar as permissões corretas e habilitá-lo para iniciar com o 
sistema operacional:
# chmod a+x /etc/init.d/firewall
# chkconfig firewall on
Uma outra opção para configurar as regras do Firewall é utilizar o Shorewall 
(http://www.shorewall.net), que facilita muito a configuração, principalmente quando a estrutura é 
complexa e grande.
www.linux2business.com.br 
25/27
Sincronização de data e hora (NTP)
Instalar o pacote ntp, através do comando YUM:
# yum install ntp
Para configurar o serviço NTP deve-se alterar o arquivo /etc/ntp.conf, conforme abaixo:
Arquivo /etc/ntp.conf:
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1 
restrict -6 ::1
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available. 
server 127.127.1.0 # local clock
fudge 127.127.1.0stratum 10
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys
Obs.: A configuração depende da topologia da rede utilizada. Neste caso será permitido aos 
servidores da DMZ sincronizarem a data e hora com o servidor Firewall, assim como as estações de 
trabalho da rede local.
Um detalhe importante na sincronização da data e hora é o horário de verão, onde para funcionar 
corretamente, todas as estações de trabalho precisam ter atualizado o arquivo de timezone, que 
determina o dia correto do início e término do horário de verão.
Nas estações com o sistema GNU/Linux, este arquivo é /etc/localtime, que pode ser um link 
simbólico para o arquivo /usr/share/zoneinfo/Brazil/East, ou uma cópia deste arquivo.
www.linux2business.com.br 
26/27
Referências
• DNS for Rocket Scientists
http://www.zytrax.com/books/dns/
• Ajustando o tamanho do cache no Squid
http://www.vivaolinux.com.br/dica/Ajustando-o-tamanho-do-cache-no-Squid
• Otimizando seu Squid (Squid Tunning) - Versão 2008
http://linuxadm.blogspot.com/2008/02/otimizando-o-squid-verso-2008.html
• The netfilter.org project
http://www.netfilter.org/
• Guia Foca GNU/Linux - Capítulo 10 - Firewall iptables
http://focalinux.cipsga.org.br/guia/avancado/ch-fw-iptables.htm
• Iptables Tutorial 1.2.2
http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
www.linux2business.com.br 
27/27
	Versão
	Objetivo
	CentOS
	Instalação
	Configuração
	Serviços desnecessários
	Desabilitar Ctrl-Alt-Del
	Desabilitar Terminais
	Desabilitar Acesso Local para Usuário root
	Desabilitar Acesso SSH para Usuário root
	SNMP
	SUDO
	DNS (Master / Slave)
	DHCP
	Proxy
	Firewall (Iptables)
	Sincronização de data e hora (NTP)
	Referências

Continue navegando