Pesquisar este blog

sábado, 25 de setembro de 2010

SCRIPT DO FIREWALL IPTABLES

Pessoal encontrei um script de Firewall do Linux que eu achei muito interessante e disponibilizo abaixo.




#!/bin/bash

echo Script de Firewall Montando por:
echo Nome: Rafael da Silva Rosa
echo Funcao: Analista de informatica PL
echo Fone: 35 8833-0343 ou 35 3552-6462
echo
echo

# Variáveis

### Interface da Internet:
ifinternet="eth1"

### Interface da rede local
iflocal="eth0"

# Início do Firewall ########

### Habilitando os módulos
echo Carregando os Modulos
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_queue
modprobe ip_tables
modprobe ipt_LOG
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REDIRECT
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_mark
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_state
modprobe ipt_tcpmss
modprobe ipt_tos
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
echo Modulos Carregados ..... [ok]

### Compartilhamento da Internet
echo Compartilhando a internet
iniciar(){
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
echo Internet Compartilhada ..... [ok]

### Alterar política padrão
echo Alterando a Politica Padrao
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
echo politica padrao ..... [ok]

### Libera a loopback e a rede local
echo Liberando Loopback e Rede Local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.52.0/28 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.52.0/28 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.52.0/28 -j ACCEPT
echo Loopback e Rede local ..... [ok]

### Liberando programa do Sicoob
echo Liberando Sicoob
iptables -t nat -I PREROUTING -s 192.168.52.0/28 -p tcp -d 200.252.146.0/24 --dport 80 -j ACCEPT
echo Sicoob .... [ok]

### Redirecionar acessos para o Squid retirando o ip do servidor
echo Redirecionando rede para Squid e log na porta 80
iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 >'
iptables -I INPUT -s 192.168.52.3 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 200.xxx.xxx.xxx -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 DROP>'
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -t nat -A PREROUTING -s 192.168.52.4 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.52.2 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo Redirecionamento .... [ok]

# Segurança

### Segurança Diversa
echo Seguranca da rede, Firewall e gerando logs de portas
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter

### Impedindo ataque Ping of Death no Firewall
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

### Descarte de pacotes nao identificados ICMP
iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP
iptables -A INPUT -m state -p icmp --state INVALID -j DROP
iptables -A FORWARD -m state -p icmp --state INVALID -j DROP

### Impedindo ataque Ping of Death na rede
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

### Impedindo ataque de Denial Of Service Dos na rede e servidor
iptables -I FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp -m limit --limit 1/s -j ACCEPT

### Impedindo ataque Port Scanners na rede e no Firewall
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -I INPUT -p udp --dport 33435:33525 -j LOG --log-level info --log-prefix 'SCANNERS DROPADO>'
iptables -A INPUT -p udp --dport 33435:33525 -j DROP
iptables -I FORWARD -p udp --dport 33435:33525 -j LOG --log-level info --log-prefix 'SCANNERS DROPADO NA REDE>'
iptables -A FORWARD -p udp --dport 33435:33525 -j DROP

### Bloquear Back Orifice na rede
iptables -I INPUT -p tcp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE DROPADO>'
iptables -A INPUT -p tcp --dport 31337 -j DROP
iptables -I INPUT -p udp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE UDP>'
iptables -A INPUT -p udp --dport 31337 -j DROP
iptables -I FORWARD -p tcp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE NA REDE>'
iptables -A FORWARD -p tcp --dport 31337 -j DROP
iptables -I FORWARD -p udp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE NA REDE UDP>'
iptables -A FORWARD -p udp --dport 31337 -j DROP

### Bloquear NetBus na rede
iptables -I INPUT -p tcp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS >'
iptables -A INPUT -p tcp --dport 12345 -j DROP
iptables -I INPUT -p udp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS UDP>'
iptables -A INPUT -p udp --dport 12345 -j DROP
iptables -I FORWARD -p tcp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS NA REDE>'
iptables -A FORWARD -p tcp --dport 12345 -j DROP
iptables -I FORWARD -p udp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS UDP>'
iptables -A FORWARD -p udp --dport 12345 -j DROP

### Desabilita resposta para pingecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

### Desabilita port scan
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

### Desabilita redirecionamento de ICMP
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo 0 >$f
done

### Protecao contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

### Ativando protecao contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

### Protecao contra worms
iptables -I FORWARD -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS REDE>'
iptables -A FORWARD -p tcp --dport 135 -j DROP
iptables -I INPUT -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS >'
iptables -A INPUT -p tcp --dport 135 -j DROP

### Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i $ifinternet --dport 33435:33525 -j REJECT

### Permite o redirecionamento seguro dos pacotes
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects

### IMPEDINDO O REDIRECIONAMENTO E UMA ROTA
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
echo Seguranca Carregada e logs gerados ..... [ok]

# Liberando acesso remoto

### Libera acesso pelo SSH
echo Liberando Ssh e fazendo Log da porta
iptables -I INPUT -p tcp --dport xxxx -j LOG --log-level info --log-prefix 'SSH'
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
echo Liberacao do Ssh ..... [ok]

# Aceita Pacotes Estabilizados

echo Estabilizando Pacotes
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo Pacotes Estabilizado ..... [ok]

### Libera Msn
echo Liberando Msn
iptables -A OUTPUT -p tcp --sport 1024:5999 --dport 1863:1863 -m state --state NEW -j ACCEPT
echo Msn Liberado ..... [ok]

# Libera Dns para o Server e Rede
echo Liberando Dns Interno
iptables -A INPUT -p tcp --dport 53 -d 192.168.52.0 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -d 192.168.52.0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 53 -d 192.168.52.0 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -d 192.168.52.0 -j ACCEPT
echo Dns Liberado ..... [ok]
# Redireciona Terminal Service, Radmin

### Redireciona Terminal Service, Radmin
echo Redirecionamento de Servicos e Log das portas usadas
iptables -I INPUT -p tcp --dport xxxx -j LOG --log-level info --log-prefix 'MSTSC >'
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport xxxx -j DNAT --to 192.168.52.3
iptables -t nat -A PREROUTING -p tcp -i $ifinternet --dport xxxx -j DNAT --to 192.168.52.3
echo Redirecionamento e Logs ..... [ok]

### Bloqueia o resto das portas
echo Bloqueio das portas restantes
iptables -I INPUT -p tcp --syn -j LOG
iptables -A INPUT -p tcp --syn -j DROP
echo Bloqueio ..... [ok]
}
parar(){
echo Limpando as tabelas e Chains
iptables -F
iptables -F -t nat
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t mangle -F
iptables -t nat -F
iptables -X
echo Limpeza das Tabelas ..... [ok]
}
case "$1" in
"start") iniciar ;; "stop") parar ;;
"restart") parar; iniciar ;;
*) echo "Use os parametros start ou stop"
Esac

Autor: Rafael da Silva Rosa
Retirado de : http://www.vivaolinux.com.br/artigo/Script-de-firewall-e-analise-de-log/?pagina=2
Data:25/09/2010

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.