Conforme orientacao dos colegas , fui at� o site http://focalinux.cipsga.org.br e encontrei um exemplo de script de firewall bastante interessante e inclusive personalizei-o para minha rede e que inclusive poder� facilmente ser alterado pelos colegas apenas mexendo nos cabecalhos de algumas variaveis. Porem neste script que baixei da internet presupoe que o meu smtp e squid estejam na mesma maquina com acesso a internet e at� agora estou tentando modificar isso. J� fui no MAN, Google, Historico, ... e at� consegui algumas regras para fazer isso, coloquei no meu script, mas na pratica n�o funciona. Eu acho que existe posicao correta para acrescenta-lo no script e eu n�o sei qual �, o problema deve ser bem simples para que entende de iptables.
No script abaixo eu comentei os dois problemas que tenho, um � o redirecionamento de SMTP (ip quente para ip frio) e o outro � para o firewall nao barrar as requisicoes do servidor que possui o squid. Alguem poderia me dar uma m�ozinha ? Desde j� continuo agradecendo. #!/bin/sh # Modelo de configuracao de firewall # Autor: Gleydson M. Silva # Data: 05/09/2001 # Adaptado para minha rede por : [EMAIL PROTECTED] em 05/09/2002 # Descricao: Produzido para ser distribuido livremente, acompanha o guia # Foca GNU/Linux. http://focalinux.cipsga.org.br # # E' assumido um sistema usando kmod para carga automatica dos modulos # usados por esta configuracao do firewall: # ipt_filter # ipt_nat # ipt_conntrack # ipt_mangle # ipt_TOS # ipt_MASQUERADE # ipt_LOG # Se voce tem um kernel modularizado que nao utiliza o kmod, sera necessario # carregar estes modulos via modprobe, insmod ou iptables --modprobe=modulo ############################################################## # Hamacker->Vamos carregar no braco todos os modulos # # porque nao uso nenhum kmod # ############################################################## #/sbin/modprobe ipt_mangle (nao encontrei esse modulo) /sbin/modprobe ip_conntrack /sbin/modprobe iptable_nat /sbin/modprobe iptable_filter /sbin/modprobe ipt_LOG /sbin/modprobe ipt_REJECT /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ip_conntrack_irc /sbin/modprobe ipt_REDIRECT /sbin/modprobe ipt_tos /sbin/modprobe ipt_MASQUERADE # Definindo os devices, rede local, smtp local e squid DEV_INTERNET='eth1' DEV_LOCAL='eth0' REDE_INTERNA='192.168.0.0/24' REDE_SERVIDORES='192.168.0.20/24' IP_FIREWALL_INVALIDO='192.168.0.254' IP_SMTP_SERVER='192.168.0.3:25' IP_SQUID_SERVER='192.168.0.3' ########################################## # Hamacker-> Limpando regras de firewall # ########################################## /sbin/iptables -F /sbin/iptables -X ########################################### # Iniciando firewall com politicas padrao # ########################################### # Tabela filter iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT ACCEPT iptables -t filter -P FORWARD DROP # Tabela nat iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -P POSTROUTING DROP # Tabela mangle iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P OUTPUT ACCEPT ##### Protecao contra IP Spoofing ##### for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 >$i done ##### Ativamos o redirecionamento de pacotes (requerido para NAT) ##### echo "1" >/proc/sys/net/ipv4/ip_forward # O iptables define automaticamente o numero maximo de conexoes simultaneas # com base na memoria do sistema. Para 32MB = 2048, 64MB = 4096, 128MB = 8192, # sendo que sao usados 350 bytes de memoria residente para controlar # cada conexao. # Quando este limite e' excedido a seguinte mensagem e' mostrada: # "ip_conntrack: maximum limit of XXX entries exceed" # # Como temos uma rede simples, vamos abaixar este limite. Por outro lado isto # criara uma certa limitacao de trafego para evitar a sobrecarga do servidor. echo "2048" > /proc/sys/net/ipv4/ip_conntrack_max ############################################################### # Tabela filter # ############################################################### ##### Chain INPUT ##### # Criamos um chain que sera usado para tratar o trafego vindo da Internet e iptables -N ppp-input # Aceita todo o trafego vindo do loopback e indo pro loopback iptables -A INPUT -i lo -j ACCEPT # Todo tr�fego vindo da rede interna tambem e' aceito iptables -A INPUT -s $REDE_INTERNA -i $DEV_LOCAL -j ACCEPT # Conexoes vindas da interface ppp0 sao tratadas pelo chain ppp-input iptables -A INPUT -i $DEV_INTERNET -j ppp-input # Qualquer outra conexao desconhecida e' imediatamente registrada e derrubada iptables -A INPUT -j LOG --log-prefix "FIREWALL: INPUT " iptables -A INPUT -j DROP ##### Chain FORWARD #### # Permite redirecionamento de conexoes entre as interfaces locais # especificadas abaixo. Qualquer trafego vindo/indo para outras # interfaces sera' bloqueado neste passo iptables -A FORWARD -d $REDE_INTERNA -i $DEV_INTERNET -o $DEV_LOCAL -j ACCEPT iptables -A FORWARD -s $REDE_INTERNA -i $DEV_LOCAL -o $DEV_INTERNET -j ACCEPT iptables -A FORWARD -j LOG --log-prefix "FIREWALL: FORWARD " iptables -A FORWARD -j DROP ############################################################## # Hamacker->Vamos redirecionar toda conexao smtp que vier da # # internet (DEV_INTERNET) para outro servidor smtp na rede # ############################################################## # N�o sei como fazer isso funcionar ainda, estou quebrando a # # cabeca, na minha opniao a linha abaixo deveria funcionar # # alguem poderia ajudar ? # ############################################################## #iptables -I FORWARD -p udp -d $IP_FIREWALL_INVALIDO --dport 25 -j ACCEPT iptables -I FORWARD -p udp -d $DEV_INTERNET --dport 25 -j ACCEPT iptables -t nat -A PREROUTING -p tcp -i $DEV_INTERNET --dport 25 -j DNAT --to $IP_SMTP_SERVER ##### Chain ppp-input #### # Aceitamos todas as mensagens icmp vindas de ppp0 com certa limitacao iptables -A ppp-input -p icmp -m limit --limit 2/s -j ACCEPT # Primeiro aceitamos o trafego vindo da Internet para o servico www (porta 80) iptables -A ppp-input -p tcp --dport 80 -j ACCEPT # A tentativa de acesso externo a estes servicos serao registrados no syslog # do sistema e serao bloqueados pela ultima regra abaixo. iptables -A ppp-input -p tcp --dport 21 -j LOG --log-prefix "FIREWALL: ftp " #iptables -A ppp-input -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: smtp " iptables -A ppp-input -p udp --dport 53 -j LOG --log-prefix "FIREWALL: dns " iptables -A ppp-input -p tcp --dport 110 -j LOG --log-prefix "FIREWALL: pop3 " iptables -A ppp-input -p tcp --dport 113 -j LOG --log-prefix "FIREWALL: identd " iptables -A ppp-input -p udp --dport 111 -j LOG --log-prefix "FIREWALL: rpc" iptables -A ppp-input -p tcp --dport 111 -j LOG --log-prefix "FIREWALL: rpc" iptables -A ppp-input -p tcp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba " iptables -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "FIREWALL: samba " # Bloqueia qualquer tentativa de nova conexao de fora para esta maquina iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-prefix "FIREWALL: ppp-in " iptables -A ppp-input -m state --state ! ESTABLISHED,RELATED -j DROP # Qualquer outro tipo de trafego e' aceito iptables -A ppp-input -j ACCEPT ####################################################### # Tabela nat # ####################################################### ##### Chain POSTROUTING ##### # Permite qualquer conexao vinda com destino a lo e rede local para $DEV_LOCAL iptables -t nat -A POSTROUTING -o lo -j ACCEPT iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_LOCAL -j ACCEPT # Nao queremos que usuarios tenham acesso direto a www e smtp da rede externa, o # squid e smtpd do firewall devem ser obrigatoriamente usados. # Tambem registramos as tentativas para monitorarmos qual # maquina esta tentando conectar-se diretamente. iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -p tcp --dport 80 -j LOG --log-prefix "FIREWALL: SNAT-www " iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -p tcp --dport 25 -j LOG --log-prefix "FIREWALL: SNAT-smtp " ################################################# # Hamacker-> pequena modificacao para permitir # # que usuarios internos possam usar smtp do # # provedor # ################################################# #iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -p tcp --dport 25 -j DROP iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -p tcp --dport 25 -j ACCEPT ################################################## # Hamacker->Outra modificacao para permitir que # # www seja permitido apenas pelo servidor que # # possui squid # ################################################## ################################################## # Tambem ainda n�o consegui fazer o firewall # # permitir que pelo menos o squid use a porta 80 # # Alguem possui alguma ajuda ? # # A segunda linha abaixo deveria permitir, mas # # como sou novato em iptables, simplesmente nao # # funciona # ################################################## iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -p tcp --dport 80 -j DROP iptables -t nat -A POSTROUTING -s $IP_SQUID_SERVER -o $DEV_INTERNET -p tcp --dport 80 -j ACCEPT # E' feito masquerading dos outros servicos da rede interna # indo para a interface $DEV_INTERNET iptables -t nat -A POSTROUTING -s $REDE_INTERNA -o $DEV_INTERNET -j MASQUERADE # Qualquer outra origem de trafego desconhecida indo para # $DEV_LOCAL (conexoes vindas de $DEV_INTERNET) sao bloqueadas aqui iptables -t nat -A POSTROUTING -o $DEV_LOCAL -d $REDE_INTERNA -j LOG --log-prefix "FIREWALL: SNAT unknown" iptables -t nat -A POSTROUTING -o $DEV_LOCAL -d $REDE_INTERNA -j DROP # Quando iniciamos uma conexao ppp, obtermos um endereco # classe A (10.x.x.x) e apos estabelecida a conexao real, # este endereco e' modificado. O trafego indo para a # interface ppp nao devera ser bloqueado. Os bloqueios serao feitos no # chain INPUT da tabela filter iptables -t nat -A POSTROUTING -o $DEV_INTERNET -j ACCEPT # Registra e bloqueia qualquer outro tipo de trafego desconhecido iptables -t nat -A POSTROUTING -j LOG --log-prefix "FIREWALL: SNAT " iptables -t nat -A POSTROUTING -j DROP ############################################### # Tabela mangle # ############################################### ##### Chain OUTPUT ##### # Define minimo de espera para os servicos ftp, telnet, irc e DNS, isto # dara uma melhor sensacao de conexao em tempo real e diminuira o tempo # de espera para conexoes que requerem resolucao de nomes. iptables -t mangle -A OUTPUT -o $DEV_INTERNET -p tcp --dport 21 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o $DEV_INTERNET -p tcp --dport 23 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o $DEV_INTERNET -p tcp --dport 6665:6668 -j TOS --set-tos 0x10 iptables -t mangle -A OUTPUT -o $DEV_INTERNET -p udp --dport 53 -j TOS --set-tos 0x10 Assinantes em 12/09/2002: 2225 Mensagens recebidas desde 07/01/1999: 182922 Historico e [des]cadastramento: http://linux-br.conectiva.com.br Assuntos administrativos e problemas com a lista: mailto:[EMAIL PROTECTED]
