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/