Servidor de internet a rádio no Debian

Depois de bater um pouco a cabeça, vou mostrar aqui como montar um servidor de internet a rádio com firewall, controle de MAC/IP, proxy, controle de banda e servidor de DNS.

[ Hits: 26.232 ]

Por: Junior Corazza em 05/03/2010 | Blog: http://www.orkut.com.br/Main#Profile?uid=13460668254481863738&rl=t


Cenário



Algum tempo atrás fui procurado pela prefeitura de uma cidade vizinha para montar um serviço completo de internet a rádio para a população, eram cerca de 300 clientes e como sempre o custo teria que ser baixo.

Hardware do servidor:
  • Pentium III - 900 mhz
  • Placa Mãe Asus TUSI-M
  • 256 MB Memória Dimm
  • HD 20 GB
  • 2 Placas de rede

Software:
  • Debian 5.03
  • Iptables
  • Squid
  • Bind
  • BandLimit

Esse tutorial foi uma união de vários tutoriais espalhados pela internet, darei os créditos aos respectivos autores em cada pagina.

Firewall

Firewall é uma coisa bem pessoal, mas vou postar o meu aqui como um exemplo. Observe que no firewall eu já faço o controle de MAC/IP, portanto se você quer usar outro firewall é só manter as linhas do controle de MAC, a linha de compartilhamento de conexão e a linha que transfere a porta 3128 pra porta 80.

#!/bin/sh

#Internet=eth0
#Rede Interna=eth1

# Ativa módulos
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE

# Zera regras
iptables -F
iptables -X
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter


# Determina a política padrão
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Aceita os pacotes que realmente devem entrar
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Controle de acesso IP X MAC

#0001
iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.2 -m mac --mac-source 90:E6:BA:A4:2B:C8 -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.1.3 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.1.3 -d 0/0 -m mac --mac-source 90:E6:BA:A4:2B:C8 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth0 -j MASQUERADE

#0002
iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.3 -m mac --mac-source 00:1E:0B:45:13:DD -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.1.2 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.1.3 -d 0/0 -m mac --mac-source 00:1E:0B:45:13:DD -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.2 -o eth1 -j MASQUERADE

#0003
iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.4 -m mac --mac-source 00:1E:0B:45:13:DD -j ACCEPT
iptables -t filter -A FORWARD -d 192.168.1.4 -s 0/0 -j ACCEPT
iptables -t filter -A INPUT -s 192.168.1.4 -d 0/0 -m mac --mac-source 00:1E:0B:45:13:DD -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.1.4 -o eth1 -j MASQUERADE


#Compartilha a conexão
echo 1 > /proc/sys/net/ipv4/ip_forward

#transfere porta 80 para 3128
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# Abre uma porta (inclusive para a Internet). Neste caso apenas deixamos aberto o acesso para SSH, Proxy e DNS.

iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 53 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 3128 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

# Proteções diversas contra portscanners, ping of death, ataques DoS, etc.
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
iptables -A FORWARD -m unclean -j DROP

# Abre para a interface de loopback.
iptables -A INPUT -i lo -j ACCEPT

# BLOQUEIA O QUE NÃO SE ENCAIXA NAS REGRAS ACIMA
iptables -A INPUT -p tcp --syn -j DROP
iptables -P FORWARD DROP

Salve esse arquivo dentro do diretório /etc/init.d com o nome de rc.firewall e depois rode o comando:

# chmod +x /etc/init.d/rc.firewall

E inclua o caminho dele dentro do seu rc.local para que o firewall possa iniciar automaticamente com o servidor.

Créditos:

Firewall: Tiago André Geraldi - Guia do Hardware
http://www.guiadohardware.net/dicas/servidor-linux-provedor-wireless.html

Controle MAC/IP: Lacier Dias - Viva o Linux
http://www.vivaolinux.com.br/dica/Amarrando-IP-X-MAC-de-maneira-simples-e-funcional/

    Próxima página

Páginas do artigo
   1. Cenário
   2. Proxy e DNS
   3. Controle de banda
Outros artigos deste autor

Instalando Debian 5.0 e deixando com todos os programas que você gosta

Instalando Ubuntu 9.04 e deixando com todos os programas que você gosta

Leitura recomendada

Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).

Squid + iptables (método ninja)

IPtables - Trabalhando com Módulos

Criando um firewall simples e compartilhando a conexão usando o IPtables

Firewall profissional

  
Comentários
[1] Comentário enviado por doldan em 12/06/2010 - 19:54h

Boa noite Junior, me diz uma coisa, sempre li que no caso do firewall iptables ele interpreta as regras na sequencia, ou seja se no inicio do script libero as portas que preciso e em seguida nego todo o resto. No caso do teu script de firewall como tenho no inicio

iptables -P INPUT DROP
iptables -P FORWARD DROP

se usar assim, não vai me bloquear todo o tráfego?

no meu firewall uso assim:
iptables -A OUTPUT -p tcp --dport 35366 -j REJECT
iptables -A FORWARD -p tcp --dport 6890 -j REJECT
iptables -A FORWARD -p tcp --dport 6900 -j REJECT

iptables -A FORWARD -p tcp --dport 21000 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8001 -j ACCEPT
iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -A FORWARD -p tcp --dport 15000 -j ACCEPT
...
mais algumas regras
...
# bloqueia as demais portas
iptables -A FORWARD -i eth0 -p tcp -j DROP

# Bloqueio de portas UDP
iptables -A FORWARD -p udp --dport 0:499 -j DROP
iptables -A FORWARD -p udp --dport 501:1036 -j DROP

Caso eu tenha entendio mal o que li, me da uma dica, estou começando.
Valeu
Doldan

[2] Comentário enviado por llevon em 27/04/2012 - 10:58h

Controle de Internet - Controle o acesso da internet em sua empresa, bloqueio de sites indesejados, bloqueio de Msn, Orkut e outros sites - Confira!

http://www.llevon.com.br/solucoes/solucoes-linux/controle-de-internet">http://www.llevon.com.br/solucoes/solucoes-linux/controle-de-internet
http://www.llevon.com.br


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts