Servidor Debian - Parte 3 - Firewall e Proxy
Em um rede é essencial ter segurança.
Squid
Para configurar o proxy, utilizaremos o Squid-cache.apt install squid
- Conf:/etc/squid3/squid.conf
- Dica: Para saber a quantidade total de memória para definição do cache, utilizar o comando free -mt
- Dica: Para saber a quantidade total do uso do disco para definição do cache, utilizar o comando df -h
# Porta do Squid http_port 10357 # Nome do servidor visible_hostname squidServer # Cache cache_mem 64 MB maximum_object_size_in_memory 1 MB maximum_object_size 512 MB minimum_object_size 3 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid3/cache 2048 16 256 # Logs de acesso cache_access_log /var/log/squid3/access.log cache_log /var/log/squid3/cache.log logfile_rotate 6 error_directory /usr/share/squid3/errors/pt-br #padrão de utilização do cache refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 # Autenticacao por nomes e senhas do Samba auth_param basic program /usr/lib/squid3/smb_auth -W dominioPDC -U 192.168.2.2 auth_param basic realm Bem vindo a rede ... Por favor entre com o seu Usuario e Senha auth_param basic children 5 auth_param basic credentialsttl 2 hour auth_param basic casesensitive off # Regras acl padrão #acl all src 0.0.0.0/0.0.0.0 acl network src 192.168.2.0/24 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl SSL_ports port 443 563 873 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 873 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais 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 Safe_ports port 901 # swat acl Safe_ports port 1025-65535 # portas altas acl purge method PURGE acl CONNECT method CONNECT # Permissões e bloqueios padrão http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Permissão rede local e servidor acl user_lib src "/etc/squid3/acl/user_lib" acl cont_lib url_regex -i "/etc/squid3/acl/cont_lib" acl download url_regex -i "/etc/squid3/acl/download" acl cont_bloq url_regex -i "/etc/squid3/acl/cont_bloq" acl user_bloq src "/etc/squid3/acl/user_bloq" #samba acl autenticacao proxy_auth REQUIRED #acl nomes proxy_auth teste http_access deny !network http_access allow autenticacao http_access allow user_lib http_access allow cont_lib http_access deny download http_access deny cont_bloq http_access allow user_bloq #regras para limitar consumo de banda #delay_pools 1 #delay_class 1 2 #delay_parameters 1 114688/114688 16384/16348 #banda total disponível e banda por usuário em bytes, respectivamente (somente para a rede, não para o servidor - localhost) #delay_access 1 allow network http_access allow localhost http_access allow network http_access deny all
Limpando access.log
- echo >/var/log/squid3/access.log
Rotacionando arquivo access.log
- squid3-k rotate
Atualizando o Squid sem reiniciar (sem parar a internet)
- squid3 -k reconfigure
SARG
- Instalação: aptitude install sarg
- Alterar o arquivo /etc/sarg/sarg.conf para apontar o local de saída dos relatórios output_dir /var/www/sarg
Iptables
O firewall é uma ferramenta essencial para garantir a segurança da sua rede, do seu computador, etc.O IPTables é um sistema muito simples, porém muito eficaz.
Portas
Tudo é feito através de portas...Ex. de Configuração:
#!/bin/bash
# Declarando as Váriaveis
IF_WAN="eth0"
IF_LAN="eth1"
LAN="192.168.2.0/24"
PORTAS="80,443"
SSH="22"
SQUID="10357"
FTP="21"
function start(){
#apagando as regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#mudando a politica para o padrao DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#habilita o suporte do kernel para o forward (roteamento)
echo 1 > /proc/sys/net/ipv4/ip_forward
#cria a ida e volta entre as chains (modulo state)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
###############################
### NAT ###
###############################
#compartilhamento da internet
iptables -t nat -A POSTROUTING -s $LAN -o $IF_WAN -j MASQUERADE
#proxy transparente - inútil devido à porta 443 (https)
#iptables -t nat -A PREROUTING -s $LAN -p tcp --dport 80 -j REDIRECT --to-port $SQUID
#???redirecionamento, caso não esteja configurado o proxy no navegador
#iptables -t nat -A PREROUTING -s $LAN -p tcp -m multiport --dports $PORTAS -j DNAT --to-dest 192.168.2.2:80
#permite o redirecionamento da conexao remota (é preciso liberar a regra na sessão FORWARD)
#iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.2.6:3389
###############################
### INPUT ###
###############################
#libera o tráfego de entrada na interface de loopback
iptables -A INPUT -i lo -j ACCEPT
#protecao contra ataque DoS (ping da morte)
#aceita somente pings internos
iptables -A INPUT -s $LAN -p icmp --icmp-type echo-request -j ACCEPT
#iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
#iptables -A INPUT -p icmp -j DROP
#libera o squid
iptables -A INPUT -s $LAN -p tcp --dport $SQUID -j ACCEPT
#libera o acesso externo via SSH
iptables -A INPUT -p tcp --dport $SSH -j ACCEPT
#libera o acesso a porta para que possam acessar o apache
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#ibera o acesso ao SAMBA tcp (smbd)
iptables -A INPUT -s $LAN -p tcp -m multiport --dports 139,445 -j ACCEPT
#libera o acesso ao SAMBA udp (nmbd)
iptables -A INPUT -s $LAN -p udp -m multiport --dports 137,138 -j ACCEPT
#libera o acesso ao FTP
iptables -A INPUT -p tcp --dport $FTP -j ACCEPT
iptables -A INPUT -p tcp --dport 27000:28000 -j ACCEPT
###############################
### OUTPUT ###
###############################
#libera a saida para o squid (caso este servidor esteja com o proxy configurado no navegador)
iptables -A OUTPUT -p tcp --dport $SQUID -j ACCEPT
#libera a saida para as portas da variável
iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS -j ACCEPT
#libera DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#libera ping originado no servidor
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
##libera o acesso a FTP externo
##iptables -A OUTPUT -p tcp -m multiport --dports 21,22 -j ACCEPT
#libera o acesso ao SAMBA udp
iptables -A OUTPUT -s $LAN -p udp -m multiport --dports 137,138 -j ACCEPT
#libera a autenticação smb_auth para o proxy autenticado
iptables -A OUTPUT -s $LAN -p tcp -m multiport --dports 139,445 -j ACCEPT
#libera o acesso ao NTP (atualização do relógio)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
###############################
### FORWARD ###
###############################
#permite acesso remoto para uma máquina específica da rede (juntamente com o DNAT na sessão NAT)
#iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
#liberando o acesso ao DNS
#iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#ignora qualquer regra e permite acesso
#iptables -A FORWARD -s $LAN -p tcp --dport 443 -j ACCEPT
#ignora qualquer regra e permite acesso ao google pela porta de https
#iptables -A FORWARD -s $LAN -d www.google.com.br -p tcp --dport 443 -j ACCEPT
}
function stop(){
#limpando todas as regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#tornando como padrão o ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#compartilhando a internet com a rede
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $LAN -o $IF_WAN -j MASQUERADE
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Insira um parametro para /etc/initd/firewall.../start|stop|restart"
exit 0
;;
esac
Fontes:
https://e-tinet.com/linux/squid-proxy/
