Servidor Proxy - Parte I
Descrição: Neste artigo serão abordados os principais aspectos para a implantação de um servidor proxy com os serviços de DHCP, Proxy Transparente, Sarg, Samba, exemplos de scripts para automatização de atualização remota, cron e repositórios locais para clientes GNU/Linux.
Parte 2: Atualização do S.O. / Configurações do servidor DHCP e firewall
Atualize o Debian e instale os pacotes necessários:
# apt-get update && apt-get upgrade -y
Instale os pacotes:
# apt-get install -y squid3 samba sarg cups isc-dhcp-server ntp bind9 apache2 debmirror
# nano /etc/dhcp/dhcpd.conf
Status do funcionamento do ISC DHCP Server:
# systemctl status isc-dhcp-server
● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: active (running) since Qua 2015-07-08 23:28:36 BRT; 2s ago
Process: 9399 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/isc-dhcp-server.service
└─9407 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid
Jul 08 23:28:33 onix dhcpd[9406]: Wrote 0 leases to leases file.
Jul 08 23:28:34 onix dhcpd[9407]: Server starting service.
Jul 08 23:28:36 onix isc-dhcp-server[9399]: Starting ISC DHCP server: dhcpd.
Em caráter opcional é possível realizar a atualização do arquivo /etc/resolv.conf de forma que é possível apontar quais servidores DNS serão consultados primeiramente. A cada nova conexão o arquivo resolv.conf é atualizado, a forma mais apropriada para a atualização deste arquivo e através do dhclient.conf na pasta /etc/dhcp. Localize no arquivo as linhas:
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
Modifique-as retirando o # e adicione as informações necessárias, neste exemplo será usado OpenDNS.
Encerre a edição do arquivo e reinicie o serviço.
# touch /etc/init.d/rc.firewall
Atribua o valor de executável para o arquivo e adicione o script à inicialização do sistema:
# chmod +x rc.firewall
# update-rc.d rc.firewall defaults
Verifique as tabelas do iptables:
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3128
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
# apt-get update && apt-get upgrade -y
Instale os pacotes:
# apt-get install -y squid3 samba sarg cups isc-dhcp-server ntp bind9 apache2 debmirror
Configurações do servidor DHCP
O servidor DHCP será o responsável por distribuir IPs na rede local, para editar as configurações iniciais localize o arquivo dhcpd.conf na pasta /etc/dhcp e tenha em mãos as informações relativas ao servidor DNS primário e secundário, para este exemplo foi usado o servidor do opendns.com:# nano /etc/dhcp/dhcpd.conf
# Configurações do Servidor DHCP
#
INTERFACES=eth1;
ddns-update-style none;
authoritative;
#
# Declaração da Rede Local
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.2 172.16.0.254;
option domain-name-servers 208.67.222.222,208.67.220.220;
option domain-name "opendns.com";
option routers 172.16.0.1;
option broadcast-address 172.16.255.255;
default-lease-time 600;
max-lease-time 7200;
}
# Declaração para Interface Primária
subnet 192.168.0.0 netmask 255.255.255.0 {
}
#
INTERFACES=eth1;
ddns-update-style none;
authoritative;
#
# Declaração da Rede Local
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.2 172.16.0.254;
option domain-name-servers 208.67.222.222,208.67.220.220;
option domain-name "opendns.com";
option routers 172.16.0.1;
option broadcast-address 172.16.255.255;
default-lease-time 600;
max-lease-time 7200;
}
# Declaração para Interface Primária
subnet 192.168.0.0 netmask 255.255.255.0 {
}
Status do funcionamento do ISC DHCP Server:
# systemctl status isc-dhcp-server
● isc-dhcp-server.service - LSB: DHCP server
Loaded: loaded (/etc/init.d/isc-dhcp-server)
Active: active (running) since Qua 2015-07-08 23:28:36 BRT; 2s ago
Process: 9399 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/isc-dhcp-server.service
└─9407 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid
Jul 08 23:28:33 onix dhcpd[9406]: Wrote 0 leases to leases file.
Jul 08 23:28:34 onix dhcpd[9407]: Server starting service.
Jul 08 23:28:36 onix isc-dhcp-server[9399]: Starting ISC DHCP server: dhcpd.
Em caráter opcional é possível realizar a atualização do arquivo /etc/resolv.conf de forma que é possível apontar quais servidores DNS serão consultados primeiramente. A cada nova conexão o arquivo resolv.conf é atualizado, a forma mais apropriada para a atualização deste arquivo e através do dhclient.conf na pasta /etc/dhcp. Localize no arquivo as linhas:
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
Modifique-as retirando o # e adicione as informações necessárias, neste exemplo será usado OpenDNS.
supersede domain-name "opendns.com";
prepend domain-name-servers 208.67.222.222,208.67.220.220;
prepend domain-name-servers 208.67.222.222,208.67.220.220;
Encerre a edição do arquivo e reinicie o serviço.
Definição de firewall e redirecionamento
A definição do firewall será realizado pelo iptables através de um script. O conteúdo deste script deve ser definido de acordo com as necessidades e normas de segurança da rede. Neste exemplo será utilizado um firewall básico para redirecionar todas as requisições para a porta 3128:# touch /etc/init.d/rc.firewall
#!/bin/bash ### BEGIN INIT INFO # Provides: Script Firewall # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: # Short-Decription: Script Firewall based on Iptables ### END INIT INFO # Clean modules iptables -F iptables -t nat -F iptables -t mangle -F # Proxy iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Masquerading IP iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Forward echo 1 > /proc/sys/net/ipv4/ip_forward
Atribua o valor de executável para o arquivo e adicione o script à inicialização do sistema:
# chmod +x rc.firewall
# update-rc.d rc.firewall defaults
Verifique as tabelas do iptables:
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3128
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
_________________________
Wagner F. de Souza
Técnico/Instrutor de Informática
"GNU/Linux for human beings."
LPI ID: LPI000297782