Você está na página 1de 27

Procedimento

Servidor Firewall

Autor: Sandro Venezuela <sandro@linux2business.com.br>

www.linux2business.com.br
1/27

Atribuio Uso no-comercial Compartilhamento pela mesma licena 2.5 Brasil

Voc pode:
Copiar, distribuir, exibir e executar a obra.

Sob as seguintes condies:


Atribuio: Voc deve dar crdito ao autor original, da forma
especificada pelo autor ou licenciante.
Uso no-comercial: Voc no pode utilizar esta obra com finalidades
comerciais
Compartilhamento pela mesma licena: Se voc alterar, transformar ou
criar outra obra com base nesta, voc somente poder distribuir a obra
resultante sob uma licena idntica a esta.

A reproduo do material contido neste tutorial permitido desde que se incluam os crditos ao
autor e a frase: Reproduzido da Linux2Business www.linux2business.com.br em local
visvel.

www.linux2business.com.br
2/27

ndice
Verso...................................................................................................................................................4
Objetivo................................................................................................................................................5
CentOS.................................................................................................................................................6
Instalao.........................................................................................................................................6
Configurao....................................................................................................................................6
Servios desnecessrios..............................................................................................................6
Desabilitar Ctrl-Alt-Del..............................................................................................................7
Desabilitar Terminais..................................................................................................................7
Desabilitar Acesso Local para Usurio root...............................................................................7
Desabilitar Acesso SSH para Usurio root.................................................................................8
SNMP..........................................................................................................................................8
SUDO..........................................................................................................................................8
DNS (Master / Slave).........................................................................................................................10
DHCP.................................................................................................................................................18
Proxy...................................................................................................................................................19
Firewall (Iptables)..............................................................................................................................21
Sincronizao de data e hora (NTP)...................................................................................................26
Referncias.........................................................................................................................................27

www.linux2business.com.br
3/27

Verso
Criado/Alterado

Data

Verso

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 instalao e configurao de um servidor Firewall contendo alm
das regras de Firewall, os servios de Proxy, DHCP, DNS Mestre e Escravo, e NTP, utilizando o
sistema operacional GNU/Linux, distribuio CentOS 5.
As configuraes foram realizadas tomando como referncia o uso de duas redes, sendo uma a rede
das estaes e a outra a dos servidores (DMZ), alm claro a rede da Internet.
Sero apresentadas tambm as configuraes realizadas no momento da instalao do sistema
operacional.

www.linux2business.com.br
5/27

CentOS
Instalao
Iniciar o servidor atravs da unidade de CD/DVD com a mdia do CentOS 5. A instalao deve
ocorrer sempre no idioma English.
Na configurao do fuso horrio deve-se marcar sempre a opo UTC para definio da data e hora.
O particionamento do disco deve obedecer a seguinte configurao:
Partio

Ponto de Montagem

Tamanho

/dev/sda1

1GB

/dev/sda2

/usr

4GB

/dev/sda3

swap

1GB

/home
/tmp
/var

1GB
1GB
>10GB

/dev/sda5(LVM)

Normalmente a instalao de um servidor firewall realizada com a quantidade mnima de pacotes,


onde para realizar tal configurao no CentOS necessrio selecionar a opo Customize Now e
desmarcar todos os grupos de pacotes.
Obs.: Somente possvel realizar a instalao mnima atravs da instalao grfica.
Deve ser criado o usurio sysadmin, para administrao do servidor e com isto evitar o uso do
usurio root.
Aps a instalao, caso sejam necessrios alguns pacotes extras, como nmap, tcpdump, crontabs,
etc, estes devem ser instalados atravs do comando YUM.

Configurao
Servios desnecessrios
Desabilitando os servios desnecessrios
#chkconfighaldaemonoff
#chkconfigkudzuoff
#chkconfigiptablesoff
#chkconfigip6tablesoff
#chkconfigmcstransoff
#chkconfigmessagebusoff
#chkconfignetfsoff
#chkconfigrestorecondoff

Obs.: Os servios iptables e ip6tables somente esto sendo desabilitados porque sero
configuradas novas regras de firewall, seno recomenda-se que estes servios 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 alterao, 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, acessveis localmente atravs das teclas
Alt+F1 e Alt+F2. Se for necessrio mais terminais, basta habilitar, descomentando o terminal
correspondente.
Para habilitar a alterao, execute o comando:
# init q

Desabilitar Acesso Local para Usurio root


Por padro, no deve ser permitido o acesso local para o usurio 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 aps a criao de pelo menos um usurio,
normalmente criado no momento da instalao.

www.linux2business.com.br
7/27

Desabilitar Acesso SSH para Usurio root


Por padro, no deve ser permitido o acesso via SSH para o usurio root. Para bloquear este acesso
necessrio incluir ou alterar as seguintes linhas no arquivo /etc/ssh/sshd_config, conforme
apresentado abaixo:
PermitRootLogin no
AllowUsers sysadmin

Para que as alteraes sejam ativadas preciso reiniciar o servio SSH:


# service sshd restart

Obs.: Este procedimento SOMENTE deve ser realizado aps a criao de pelo menos um usurio,
normalmente criado no momento da instalao.

SNMP
Para o servio de monitoramento do servidor, devemos instalar o pacote net-snmp atravs do
YUM. Em seguida, deve-se criar o arquivo snmpd.conf, no diretrio /etc/snmp, com o seguinte
contedo:
com2sec local
com2sec local

127.0.0.1/32
192.168.0.39/32

group MyROGroup v1
group MyROGroup v2c
group MyROGroup usm
view all

included

access MyROGroup ""

private
linux2business

local
local
local
.1

80
any

noauth

exact

all

none

none

syslocation Linux2Business
syscontact System Admin <sysadmin@linux2business.com.br>

Obs.: O endereo IP 192.168.0.39 deve ser substitudo pelo endereo do seu servidor de
monitoramento via SNMP.
Por fim, devemos iniciar o servio SNMP:
# service snmpd start

E habilitar para que o servio seja sempre iniciado junto com o sistema operacional:
# chkconfig snmpd on

SUDO
Para esta funcionalidade, deve-se instalar o pacote sudo atravs do YUM.
Com o comando visudo, que altera o arquivo /etc/sudoers, devemos adicionar os seguintes
parmetros para o usurio 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 configurao especfica do sudo a ser realizada.
Com a configurao acima o usurio sysadmin ter o poder de alterar a senha do usurio
administrator, reiniciar e desligar o servidor.
Outros comandos podem ser configurados, porm devem estar de acordo com a poltica 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

Atravs

dos

arquivos de exemplo, disponveis no diretrio /usr/share/doc/bind<verso>/sample, ser configurado um servidor de nomes (DNS) utilizado tanto para a rede
interna quanto externa e posteriormente configurado um novo servidor secundrio (Slave).
Como o servidor ser executado em um ambiente restrito, ou seja, uma jaula chroot, toda
configurao
ser
criada
dentro
dos
diretrios
/var/named/chroot/etc
e
/var/named/chroot/var/named, conforme abaixo:
Arquivo /var/named/chroot/etc/named.conf:
options
{
directory
dump-file
statistics-file
memstatistics-file

"/var/named";
"data/cache_dump.db";
"data/named_stats.txt";
"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
match-destinations

{ 127.0.0.1; };
{ 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
match-destinations

{ 172.16.0.0/24; 192.168.100.0/24; };
{ 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
match-destinations

{ any; };
{ 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
IN {

"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"
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 parmetros importantes e que merecem uma informao a mais so:


listen-on

Configura em quais interfaces de rede e porta o servio DNS


ficar funcionando;

allow_transfer

Especifica os endereos IP dos servidores DNS que esto


autorizados a receber as informaes das zonas. Normalmente
so os servidores DNS Escravos;

allow_query

Especifica os endereos IP que possuem permisso para


utilizar o servio DNS;

allow_update

Especifica os endereos IP que podem atualizar as informaes


das zonas. Normalmente utilizado em DNS Dinmicos;

recursion

Determina a possibilidade ou no de realizar consultas


recursivas, ou seja, de outros domnios. Normalmente esta
opo habilitada somente internamente.

Com os arquivos de configurao do DNS criados, vamos agora criar os arquivos de zona para os
domnios, tanto para a rede interna quanto externa. Os arquivos esto apresentados abaixo:
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)

linux2business.br.
fw
ns1
web
mail
ns2
base
proxy
ntp
www
webmail
ldap
ldap2
smtp

NS
NS
MX 10

ns1.linux2business.br.
ns2.linux2business.br.
mail.linux2business.br.

A
A
A
A
A
A
A
A
CNAME
CNAME
CNAME
CNAME
CNAME
CNAME

192.168.100.10
192.168.100.1
192.168.100.1
192.168.100.10
192.168.100.20
192.168.100.20
192.168.100.30
172.16.0.1
fw
web
web
base
mail
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)

linux2business.org.br.
fw
ns1
www
mail
ns2
base
ntp
webmail
ldap
ldap2

NS
NS
MX 10

ns1.linux2business.org.br.
ns2.linux2business.org.br.
mail.linux2business.org.br.

A
A
A
A
A
A
A
CNAME
CNAME
CNAME
CNAME

192.168.100.10
192.168.100.1
192.168.100.1
192.168.100.10
192.168.100.20
192.168.100.20
192.168.100.30
fw
www
base
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)

linux2business.br.
fw
ns1
www
mail
ns2
base
webmail
ldap
ldap2

NS
NS
MX 10

ns1.linux2business.br.
ns2.linux2business.br.
mail.linux2business.br.

A
A
A
A
A
A
A
CNAME
CNAME
CNAME

200.0.0.10
200.0.0.1
200.0.0.1
200.0.0.10
200.0.0.20
200.0.0.20
200.0.0.30
www
base
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
86400 )

linux2business.org.br.
fw
ns1
www
mail
ns2
base
webmail
ldap
ldap2

; expire (seconds)
; minimum (seconds)
NS
NS
MX 10

ns1.linux2business.org.br.
ns2.linux2business.org.br.
mail.linux2business.org.br.

A
A
A
A
A
A
A
CNAME
CNAME
CNAME

200.0.0.10
200.0.0.1
200.0.0.1
200.0.0.10
200.0.0.20
200.0.0.20
200.0.0.30
www
base
mail

Vamos criar os links simblicos para os arquivos criados dentro do ambiente chroot, seno alguns
comandos de verificao do DNS, como named-checkconf e named-checkzone, no iro
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 servio para que seja iniciado junto com o sistema operacional:
# chkconfig named on

Os procedimentos de instalao e configurao do DNS Escravo (Slave) so praticamente os


mesmos utilizados para configurar o DNS Mestre (Master), sendo necessrio alterar somente o
arquivo /etc/named.conf:
Arquivo /etc/named.conf:
options
{
directory
dump-file
statistics-file

"/var/named";
"data/cache_dump.db";
"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
match-destinations

{ 127.0.0.1; };
{ 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
match-destinations

{ 172.16.0.0/24; 192.168.100.0/24; };
{ 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
match-destinations

{ any; };
{ 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 simblico para o arquivo


/var/named/chroot/etc/named.conf.
Os arquivos /etc/named.root.hints e /etc/named.rfc1912.zones so idnticos ao utilizado no
servidor DNS primrio.

www.linux2business.com.br
17/27

DHCP
Instalar o pacote dhcp, atravs do YUM:
# yum install dhcp

Para configurar o servio 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
option broadcast-address
option routers

255.255.255.0;
172.16.0.255;
172.16.0.1;

option
option
option
option

"linux2business.br";
172.16.0.1;
172.16.0.1;
-10800; # Brazil East

domain-name
domain-name-servers
ntp-servers
time-offset

range dynamic-bootp 172.16.0.50 172.16.0.100;


}

www.linux2business.com.br
18/27

Proxy
Instalar o pacote squid, atravs 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 vlidas, ou seja que no so comentrios e tambm no so
linhas em branco, deve-se utilizar o comando grep ^[^#$] /etc/squid/squid.conf.
A configurao acima bem simples, liberando o acesso a qualquer estao que tenha um endereo
IP dentro da rede 172.16.0.0/24. Qualquer regra de bloqueio que for adicionada a configurao 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, necessrio adicionar uma ACL com o parmetro Safe_ports com a porta necessria,
por exemplo, acl Safe_ports port 81.
Por fim, uma breve explicao sobre os parmetros cache_mem e cache_dir, onde o primeiro deve
ser configurado com aproximadamente 25% da memria RAM total do servidor, porm comum
encontrar na Internet pessoas indicando valores de at 75% da memria RAM.
No parmetro cache_dir, o tamanho do cache (terceiro valor, logo aps a definio do diretrio)
depende do tamanho disponvel na partio /var, lembrando que cada 1GB de tamanho representa
um consumo de 10MB da memria RAM.
Um detalhe importante, a configurao do Squid apresentada acima no 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, porm se for necessrio, este pacote pode ser
instalado via YUM, atravs do comando abaixo:
# yum install iptables

Para configurar as regras de firewall deve-se criar o script firewall no diretrio /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 about DOS 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
iptables -A FORWARD -j ACCEPT -i eth1 -o eth0
iptables -A FORWARD -j ACCEPT -i eth0 -o eth2
iptables -A FORWARD -j ACCEPT -i eth2 -o eth0
iptables -A FORWARD -j ACCEPT -i eth1 -o eth2
iptables -A FORWARD -j ACCEPT -i eth2 -o eth1

-p
-p
-p
-p
-p
-p

icmp
icmp
icmp
icmp
icmp
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 servios existentes na rede e tambm
as necessidades de cada estrutura de servidores. Normalmente prefiro criar regras bem explcitas,
indicando quais servidores ou redes tem acesso determinados servios.
Uma vez criado o script, deve-se configurar as permisses corretas e habilit-lo para iniciar com o
sistema operacional:
# chmod a+x /etc/init.d/firewall
# chkconfig firewall on

Uma outra opo para configurar as regras do Firewall utilizar o Shorewall


(http://www.shorewall.net), que facilita muito a configurao, principalmente quando a estrutura
complexa e grande.

www.linux2business.com.br
25/27

Sincronizao de data e hora (NTP)


Instalar o pacote ntp, atravs do comando YUM:
# yum install ntp

Para configurar o servio NTP deve-se alterar o arquivo /etc/ntp.conf, conforme abaixo:
Arquivo /etc/ntp.conf:
# Permit
# permit
restrict
restrict

time synchronization with our time source, but do not


the source to query or modify the service on this system.
default kod nomodify notrap nopeer noquery
-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.0 stratum 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 configurao 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 estaes de
trabalho da rede local.
Um detalhe importante na sincronizao da data e hora o horrio de vero, onde para funcionar
corretamente, todas as estaes de trabalho precisam ter atualizado o arquivo de timezone, que
determina o dia correto do incio e trmino do horrio de vero.
Nas estaes com o sistema GNU/Linux, este arquivo /etc/localtime, que pode ser um link
simblico para o arquivo /usr/share/zoneinfo/Brazil/East, ou uma cpia deste arquivo.

www.linux2business.com.br
26/27

Referncias

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) - Verso 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 - Captulo 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

Você também pode gostar