Passo I: Configuração e Instalação
Configurando as interfaces de rede
Partindo do pressuposto que o sistema operacional, no caso o Ubuntu Server 11, já esteja instalado. Verifique as placas de rede que foram reconhecidas:$ sudo ifconfig
Exemplo:
eth0 Link encap:Ethernet HWaddr 00:0a:5e:65:a6:af
inet addr:192.168.x.x Bcast:192.168.x.255 Mask:255.255.255.0
inet6 addr: fe80::20a:5eff:fe65:a6af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:288803 errors:0 dropped:0 overruns:0 frame:0
TX packets:196541 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:325622713 (325.6 MB) TX bytes:28563856 (28.5 MB)
Interrupt:19
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16972 (16.9 KB) TX bytes:16972 (16.9 KB)
Se não reconhecer a outra(s) placa(s) de rede. Use o seguinte comando para cada placa de rede que você instalou e não apareceu.
Exemplo:
$ sudo ifconfig eth1 up
Para verificar, use o ifconfig novamente:
$ sudo ifconfig
eth0 Link encap:Ethernet HWaddr 00:0a:5e:65:a6:af
inet addr:192.168.x.x Bcast:192.168.x.255 Mask:255.255.255.0
inet6 addr: fe80::20a:5eff:fe65:a6af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:288803 errors:0 dropped:0 overruns:0 frame:0
TX packets:196541 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:325622713 (325.6 MB) TX bytes:28563856 (28.5 MB)
Interrupt:19
eth1 Link encap:Ethernet HWaddr 00:1e:c9:3e:0a:fe
inet addr:192.168.y.y Bcast:192.168.y.255 Mask:255.255.255.0
inet6 addr: fe80::21e:c9ff:fe3e:afe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:187374 errors:0 dropped:0 overruns:0 frame:0
TX packets:276611 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26530616 (26.5 MB) TX bytes:315087701 (315.0 MB)
Interrupt:18
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:16972 (16.9 KB) TX bytes:16972 (16.9 KB)
Agora, configure suas interfaces de rede:
$ sudo vi /etc/network/interfaces
Obs.: O arquivo deverá ficar semelhante ao exemplo abaixo:
# 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
# The primary network interface
auto eth0 eth1 #para subir as interfaces automaticamente no reboot e não precisar usar o comando sudo ifconfig “placa de rede” up
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0 eth1 #para subir as interfaces automaticamente no reboot e não precisar usar o comando sudo ifconfig “placa de rede” up
Exemplo:
iface eth0 inet static # configurar a saída de rede ( Seu IP Interno para um gateway ou IP Público)
address 192.168.x.x #IP de saída
netmask 255.255.255.0 #mascará padrão
network 192.168.x.0 # Inicio da rede
broadcast 192.168.x.255 # Fim da rede
gateway 192.168.x.x #gateway que sua rede aponta
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 # estou usando o DNS externo da Google
iface eth1 inet static #Placa de rede que irá controlar a rede interna
address 192.168.2.1 # IP desta placa
netmask 255.255.255.0 # Máscara padrão
network 192.168.2.0 # Inicio desta rede
broadcast 192.168.2.255 # Fim desta rede
address 192.168.x.x #IP de saída
netmask 255.255.255.0 #mascará padrão
network 192.168.x.0 # Inicio da rede
broadcast 192.168.x.255 # Fim da rede
gateway 192.168.x.x #gateway que sua rede aponta
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8 # estou usando o DNS externo da Google
iface eth1 inet static #Placa de rede que irá controlar a rede interna
address 192.168.2.1 # IP desta placa
netmask 255.255.255.0 # Máscara padrão
network 192.168.2.0 # Inicio desta rede
broadcast 192.168.2.255 # Fim desta rede
Inserir DNS de seu Provedor:
$ sudo vi /etc/resolv.conf
Exemplo:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 8.8.4.4
Reinicie as interfaces de rede:
$ sudo /etc/init.d/networking restart
Pode ser que dê uma mensagem de falha em uma das interfaces, mas não se preocupe (pelo menos neste momento, não).
Instalações necessárias
Atualize o sistema, antes de prosseguir, com o seguinte comando:$ sudo apt-get update –y;apt-get upgrade –y
Instale alguns programas e bibliotecas que ajudarão a manipular o GNU/Linux:
$ sudo apt-get install gcc g++ mc openssh-server libnet-ssleay-perl libauthen-pam-perl líbio-pty-perl
Instale o Squid, utilizando o comando:
$ sudo apt-get install squid squid-common bind9
Passo II: mão na massa
Entre no diretório do Squid:
$ cd /etc/squid
Obs.: Você verá um arquivo chamado squid.conf. Antes de editá-lo (ou antes de editar qualquer arquivo no GNU/Linux) crie um backup.
Exemplo:
$ sudo cp squid.conf squid.conf.ori
Onde:
Agora, edite o squid.conf:
Obs.: O mcedite é um editor de textos instalado anteriormente no comando:
# apt-get install mc
$ sudo mcedit squid.conf
Exemplo:
Tecle F2 para salvar o arquivo e F10 para sair do editor.
Crie um arquivo com todas as palavras para bloquear:
$ sudo mcedit bloqueados
E dentro do arquivo insira as palavras. Salve e saia do editor.
$ cd /etc/squid
Obs.: Você verá um arquivo chamado squid.conf. Antes de editá-lo (ou antes de editar qualquer arquivo no GNU/Linux) crie um backup.
Exemplo:
$ sudo cp squid.conf squid.conf.ori
Onde:
- O comando cp cria uma cópia;
- squid.conf é o arquivo a ser copiado;
- squid.conf.ori foi o nome que dei ao arquivo de backup.
Agora, edite o squid.conf:
Obs.: O mcedite é um editor de textos instalado anteriormente no comando:
# apt-get install mc
$ sudo mcedit squid.conf
Exemplo:
#Inicio
http_port 192.168.2.1:3128 transparent #3128 porta do direcionamento e transparente
visible_hostname nome_do_servidor
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_mem 400 MB #Quantidade de Cache que deseja permitir
maximum_object_size 512 KB #tamanho Maximo de cache
minimum_object_size 0 KB # arquivo mínimo de uso do HD
cache_swap_low 50 #em porcentagem – quanddo começar a liberar espaço de cache ele manterá até esse valor
cache_swap_high 90 #em porcentagem – começa a liberar o espaço de cachê (apagando cache mais antigos)
cache_access_log /var/log/squid/access.log #armazena os logs
cache_dir ufs /var/spool/squid 2048 16 256 # Cache no HD (espaço em disco para cache das páginas)
#2048 MG de espaço para cachê- 16 pastas e dentro e das 16 temos mais 256 pastas dentro delas.
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 192.168.2.0/255.255.255.0
#acl – all é o nome da acl – src é o tipo de acl – o IP identifica a rede local/ mascará padrão
acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl bloqueio url_regex -i "/etc/squid/bloqueados" # arquivos de palavras bloqueadas
acl CONNECT method CONNECT
acl redelocal src 192.168.2.0 # rede que se atribui as ACl’s
http_access allow redelocal # libera acesso da rede local
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny bloqueio
http_access allow all
http_port 192.168.2.1:3128 transparent #3128 porta do direcionamento e transparente
visible_hostname nome_do_servidor
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache_mem 400 MB #Quantidade de Cache que deseja permitir
maximum_object_size 512 KB #tamanho Maximo de cache
minimum_object_size 0 KB # arquivo mínimo de uso do HD
cache_swap_low 50 #em porcentagem – quanddo começar a liberar espaço de cache ele manterá até esse valor
cache_swap_high 90 #em porcentagem – começa a liberar o espaço de cachê (apagando cache mais antigos)
cache_access_log /var/log/squid/access.log #armazena os logs
cache_dir ufs /var/spool/squid 2048 16 256 # Cache no HD (espaço em disco para cache das páginas)
#2048 MG de espaço para cachê- 16 pastas e dentro e das 16 temos mais 256 pastas dentro delas.
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 192.168.2.0/255.255.255.0
#acl – all é o nome da acl – src é o tipo de acl – o IP identifica a rede local/ mascará padrão
acl manager proto cache_object
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl bloqueio url_regex -i "/etc/squid/bloqueados" # arquivos de palavras bloqueadas
acl CONNECT method CONNECT
acl redelocal src 192.168.2.0 # rede que se atribui as ACl’s
http_access allow redelocal # libera acesso da rede local
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny bloqueio
http_access allow all
Tecle F2 para salvar o arquivo e F10 para sair do editor.
Crie um arquivo com todas as palavras para bloquear:
$ sudo mcedit bloqueados
E dentro do arquivo insira as palavras. Salve e saia do editor.
Passo III: Script do firewall
Entre no init.d:
$ cd /etc/init.d
Crie um arquivo de firewall:
$ sudo mcedit firewall.sh
Exemplo:
Salve o arquivo e saia do Editor. Dê prioridade ao root neste arquivo:
$ sudo chown root.root firewall.sh
Mude a permissão do arquivo:
$ sudo chmod 755 firewall.sh
Tornando o script uma tarefa do sistema ao reinicializar:
$ sudo update-rc.d firewall defaults
$ cd /etc/init.d
Crie um arquivo de firewall:
$ sudo mcedit firewall.sh
Exemplo:
iptables_start(){
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
################################################################
#ATIVA REGRA SQUID
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" < /proc/sys/net/ipv4/tcp_syncookies
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#################################################################
#LIBERA ACESSO PARA REDE
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.2.0/255.255.255.0 -j ACCEPT
#################################################################
#Aqui poderão ser inseridas regras para bloqueios Ex: torrents, P2P,...
#################################################################
#FINALIZA ARQUIVO
#################################################################
#################################################################
#REGRAS DE EXCESSÃ(ACESSO LIVRE DO FIREWALL) Permite aceeso sem passar pelas regras
#################################################################
iptables -t nat -I PREROUTING 1 -p tcp -s 192.168.2.100 --dport 1:65334 -j ACCEPT
#################################################################
echo 1 > /proc/sys/net/ipv4/ip_forward
}
iptables_stop(){
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
"start")
iptables_start
;;
"stop")
iptables_stop
echo "O iptables esta sendo desativado"
sleep 2
echo "ok"
;;
"restart")
echo "O iptables esta sendo desativado"\e sleep 1
echo "ok"
iptables_stop; iptables_start
;;
*)
iptables -L -n
esac
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
################################################################
#ATIVA REGRA SQUID
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "1" < /proc/sys/net/ipv4/tcp_syncookies
echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo "0" > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
#################################################################
#LIBERA ACESSO PARA REDE
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.2.0/255.255.255.0 -j ACCEPT
#################################################################
#Aqui poderão ser inseridas regras para bloqueios Ex: torrents, P2P,...
#################################################################
#FINALIZA ARQUIVO
#################################################################
#################################################################
#REGRAS DE EXCESSÃ(ACESSO LIVRE DO FIREWALL) Permite aceeso sem passar pelas regras
#################################################################
iptables -t nat -I PREROUTING 1 -p tcp -s 192.168.2.100 --dport 1:65334 -j ACCEPT
#################################################################
echo 1 > /proc/sys/net/ipv4/ip_forward
}
iptables_stop(){
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
}
case "$1" in
"start")
iptables_start
;;
"stop")
iptables_stop
echo "O iptables esta sendo desativado"
sleep 2
echo "ok"
;;
"restart")
echo "O iptables esta sendo desativado"\e sleep 1
echo "ok"
iptables_stop; iptables_start
;;
*)
iptables -L -n
esac
Salve o arquivo e saia do Editor. Dê prioridade ao root neste arquivo:
$ sudo chown root.root firewall.sh
Mude a permissão do arquivo:
$ sudo chmod 755 firewall.sh
Tornando o script uma tarefa do sistema ao reinicializar:
$ sudo update-rc.d firewall defaults
Passo IV: Finalizando com BIND
Entre no diretório do BIND:
$ cd /etc/bind
Edite o arquivo named.conf.options:
Obs.: Descomente as linhas e insira os DNS externos (estou usando o do Google, mas você pode usar o DNS de seu provedor):
$ sudo mcedite named.conf.options
Exemplo:
Agora reboot o sistema:
$ sudo reboot
Obs.: Nas máquinas clientes, aponte o Gateway para o IP da rede interna e teste sua rede.
$ cd /etc/bind
Edite o arquivo named.conf.options:
Obs.: Descomente as linhas e insira os DNS externos (estou usando o do Google, mas você pode usar o DNS de seu provedor):
forwarders {
8.8.8.8;
8.8.4.4;
};
8.8.8.8;
8.8.4.4;
};
$ sudo mcedite named.conf.options
Exemplo:
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
8.8.8.8;
8.8.4.4;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
8.8.8.8;
8.8.4.4;
};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Agora reboot o sistema:
$ sudo reboot
Obs.: Nas máquinas clientes, aponte o Gateway para o IP da rede interna e teste sua rede.
Nenhum comentário:
Postar um comentário