montando um servidor

Iniciado por humbertojr, 21 de Março de 2008, 20:57

tópico anterior - próximo tópico

humbertojr

pode me dar um exemplo de servidor
pronto funcionando?
Obrigado desde ja agradesso.

Topicos
controle de banda,
cadastrar cliente,
ver quem ta acessando,
um servidor normal.
Muito obrigado...
o que eu preciso fazer pra ter isso...?

csat

Você tem duas mensagens com o mesmo título e isso pode dar problema para o forum.
Csat (Ubuntu 8.04)

Linux User #205394 ** Ubuntu User #19086

humbertojr

vc pode me ajudar eu fiz esse exemplode servidor mais num funcionou ñ

Primeiramente logue-se como root, no Ubuntu é necessário entrar com a conta normal e depois:


$ sudo su

Para facilitar as coisas, primeiro instale o SSH e use o servidor remotamente, irá facilitar na hora de copiar os scripts listados neste artigo e depois você poderá deixar o servidor sem monitor.


# apt-get update
# apt-get install ssh


Agora você pode usar o servidor através de outro computador que esteja na mesma rede, ligue a interface de rede eth1 num switch e configure outro computador com a mesma classe de IP. Para se conectar no Linux use o comando "ssh usuario@ip_do_servidor", no Windows baixe o programa Putty facilmente encontrado no Google.

Por questões de segurança muitos administradores mudam a porta padrão (22) do SSH para dificultar invasões, se desejar pode você fazer isso editando o arquivo "/etc/ssh/sshd_config.conf"

Agora a instalação dos serviços. Para instalar os pacotes usados dê o seguinte comando:


# apt-get install shaper squid bind9 -y

Ok, ao término os pacotes necessários já estarão instalados. Começaremos a configurá-los. Para o DNS não é necessário fazer nada, assim que instalado ele já funciona como cache de endereçamentos.



Configuração do Proxy


O primeiro a ser configurado será o proxy Squid, vamos remover o arquivo padrão e criar um totalmente novo (o editor de texto vi não é muito agradável no Ubuntu, você pode instalar e usar o vim, o nano, etc.):


# rm /etc/squid/squid.conf
# vi /etc/squid/squid.conf

Coloque o seguinte conteúdo. Observe os comentários e faça as adaptações necessárias.


http_port 3128 transparent
visible_hostname provedor_wireless

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object

# mude a faixa de IPs de acordo com a que você decidiu usar:
acl clientes src 192.168.0.0/255.255.255.0

# arquivos de Log
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

# tamanho máximo de arquivo que o cache guardará,
# pode ser aumentado.
maximum_object_size 80000 KB

# diretório onde será ficará armazenado o cache das páginas.
# O 10000 é o número em MBs do HD que será reservado para o cache.
# Mude como achar melhor.
# Você pode também mudar o diretório do cache, apenas certifique-se
# de que o usuário proxy tenha permissão de escrita neste local.
cache_dir ufs /var/spool/squid/ 10000 16 256

# usuário que executa o servidor proxy
cache_effective_user proxy

# habilita permissão pra rede definida e bloqueia acessos vindos de
# outros endereços
http_access allow clientes
http_access deny all

## FIM DO ARQUIVO ##


Depois de configurado o arquivo, você já pode ativar o Squid:


# /etc/init.d/squid restart



Cadastramento dos Clientes


Os seus clientes serão cadastrados no arquivo "/etc/provedor/clientes". Crie esse arquivo:


# vi /etc/provedor/clientes

Agora preencha esse arquivo como exemplo:


0010|novo-teste|192.168.0.7|128|12|8|00:E0:06:EF:7F:D8|3|A
0011|teste|192.168.0.3|256|30|15|00:0B:CD:A4:AE:2C|5|B


Cada linha corresponde a um cliente. Os campos são separados com "|" (pipe-line). O primeiro campo é o código do cliente, inicie a partir de 0010, sempre com 4 dígitos. Em seguida o nome, o endereço IP escolhido, a velocidade de conexão, a taxa de download, a taxa de upload, o endereço MAC, a prioridade (quanto mais baixo mais prioridade) e por fim, "A", ativo ou "B", bloqueado.

O script que lê essas informações será o "configurador.sh", crie-o na mesma pasta e depois dê permissão de execução


# touch /etc/provedor/configurador.sh
# chmod +x /etc/provedor/configurador.sh
# vi /etc/provedor/configurador.sh

A explicação do seu funcionamento vem em seguida. Cole o conteúdo:


#!/bin/bash
# script criado por Tiago Andre Geraldi – virgulla@gmail.com

rm -f /etc/shaper/*
rm /etc/provedor/users.sh
touch /etc/provedor/users.sh
chmod +x /etc/provedor/users.sh

LISTA=`cat /etc/provedor/clientes`
for CLIENTE in $LISTA; do
CODIGO=`echo $CLIENTE | awk -F "|" '{print $1}'`
NOME=`echo $CLIENTE | awk -F "|" '{print $2}'`
IP=`echo $CLIENTE | awk -F "|" '{print $3}'`
CON=`echo $CLIENTE | awk -F "|" '{print $4}'`
DOWN=`echo $CLIENTE | awk -F "|" '{print $5}'`"kbit"
UP=`echo $CLIENTE | awk -F "|" '{print $6}'`"kbit"
MAC=`echo $CLIENTE | awk -F "|" '{print $7}'`
PRIO=`echo $CLIENTE | awk -F "|" '{print $8}'`
STAT=`echo $CLIENTE | awk -F "|" '{print $9}'`
# checa se esta ativado
if [ "$STAT" = "A" ]; then

UPLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_upload"
DOWNLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_download"
touch $UPLOAD
touch $DOWNLOAD
chown 755 /etc/shaper/*

# eth1 corresponde a interface de rede conectada aos usuarios
# mude se necessario

echo "DEVICE=eth1,100Mbit,10Mbit" >> $UPLOAD
echo "RATE=$CON""KBit" >> $UPLOAD
echo "WEIGHT=$UP" >> $UPLOAD
echo "PRIO=$PRIO" >> $UPLOAD
echo "BOUNDED=yes" >> $UPLOAD
echo "ISOLATED=yes" >> $UPLOAD
echo "MARK=30" >> $UPLOAD

echo "DEVICE=eth1,100Mbit,10Mbit" >> $DOWNLOAD
echo "RATE=$CON""KBit" >> $DOWNLOAD
echo "WEIGHT=$DOWN" >> $DOWNLOAD
echo "PRIO=$PRIO" >> $DOWNLOAD
echo "RULE=""$IP" >> $DOWNLOAD
echo "BOUNDED=yes" >> $DOWNLOAD
echo "ISOLATED=yes" >> $DOWNLOAD

echo "iptables -t nat -A POSTROUTING -s $IP"" -j MASQUERADE" >> /etc/nat/users.sh
echo "iptables -A FORWARD -s $IP"" -j ACCEPT" >> /etc/nat/users.sh
echo "iptables -A FORWARD -d $IP"" -j ACCEPT" >> /etc/nat/users.sh

arp -s $IP $MAC

fi

done

sh /etc/provedor/firewall.sh
/etc/init.d/shaper restart

## FIM DO ARQUIVO ##


O script trabalha com a pasta /etc/shaper onde fica o controle de banda, também usa o arquivo /etc/provedor/users.sh que será criado pelo script e que será lido pelo firewall que criaremos depois. Neste arquivo fica a habilitação de internet para os IPs cadastrados.

A primeira coisa que ele faz é apagar os arquivos atuais. Em seguida ele lê o "/etc/provedor/clientes" e guarda em variáveis, cria os arquivos do controle de banda e o "/etc/provedor/users.sh" atualizado. Dá o comando "arp" que prende o Ip ao MAC e por último reinicia o serviço de controle de banda e re-executa o firewall.

Sempre que fizer alguma alteração nos cadastros basta que você execute o configurador:


# sh /etc/provedor/configurador.sh

Mas calma, você ainda precisa criar o firewall, senão nada funcionará.



Firewall


Crie o arquivo "/etc/provedor/firewall.sh" com o conteúdo abaixo (fique atento nos comentários). Depois de salvar dê permissão de execução.


#!/bin/bash
# Esse script criado por Tiago André Geraldi é baseado
# no firewall criado por Carlos Morimoto para o Kurumin Linux

## limpa as tabelas das regras, nada a ser mudado aqui
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X

# habilita internet para os usuários cadastrados
sh /etc/nat/users.sh

# Marcacao de pacotes para controle de banda. Mude a faixa de IPs de acordo com a sua
for i in `seq 2 254`
do
iptables -t mangle -A POSTROUTING -s 192.168.0.$i -j MARK --set-mark $i
done

# Habilita roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward

# Habilita PROXY TRANSPARENTE
# mude a interface rede se eth1 não for a interface conectada ao wireless
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

# BLOQUEA O QUE NAO SE ENCAIXA NAS REGRAS ACIMA
iptables -A INPUT -p tcp --syn -j DROP
iptables -P FORWARD DROP

## FIM DO ARQUIVO ##




Conclusão


Depois dos passos anteriores, seu servidor já pode ser executado:


# sh /etc/provedor/configurador.sh

marcianovc

Citação de: humbertojr online 21 de Março de 2008, 21:25
vc pode me ajudar eu fiz esse exemplode servidor mais num funcionou ñ

Primeiramente logue-se como root, no Ubuntu é necessário entrar com a conta normal e depois:


$ sudo su

Para facilitar as coisas, primeiro instale o SSH e use o servidor remotamente, irá facilitar na hora de copiar os scripts listados neste artigo e depois você poderá deixar o servidor sem monitor.


# apt-get update
# apt-get install ssh


Agora você pode usar o servidor através de outro computador que esteja na mesma rede, ligue a interface de rede eth1 num switch e configure outro computador com a mesma classe de IP. Para se conectar no Linux use o comando "ssh usuario@ip_do_servidor", no Windows baixe o programa Putty facilmente encontrado no Google.

Por questões de segurança muitos administradores mudam a porta padrão (22) do SSH para dificultar invasões, se desejar pode você fazer isso editando o arquivo "/etc/ssh/sshd_config.conf"

Agora a instalação dos serviços. Para instalar os pacotes usados dê o seguinte comando:


# apt-get install shaper squid bind9 -y

Ok, ao término os pacotes necessários já estarão instalados. Começaremos a configurá-los. Para o DNS não é necessário fazer nada, assim que instalado ele já funciona como cache de endereçamentos.



Configuração do Proxy


O primeiro a ser configurado será o proxy Squid, vamos remover o arquivo padrão e criar um totalmente novo (o editor de texto vi não é muito agradável no Ubuntu, você pode instalar e usar o vim, o nano, etc.):


# rm /etc/squid/squid.conf
# vi /etc/squid/squid.conf

Coloque o seguinte conteúdo. Observe os comentários e faça as adaptações necessárias.


http_port 3128 transparent
visible_hostname provedor_wireless

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object

# mude a faixa de IPs de acordo com a que você decidiu usar:
acl clientes src 192.168.0.0/255.255.255.0

# arquivos de Log
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

# tamanho máximo de arquivo que o cache guardará,
# pode ser aumentado.
maximum_object_size 80000 KB

# diretório onde será ficará armazenado o cache das páginas.
# O 10000 é o número em MBs do HD que será reservado para o cache.
# Mude como achar melhor.
# Você pode também mudar o diretório do cache, apenas certifique-se
# de que o usuário proxy tenha permissão de escrita neste local.
cache_dir ufs /var/spool/squid/ 10000 16 256

# usuário que executa o servidor proxy
cache_effective_user proxy

# habilita permissão pra rede definida e bloqueia acessos vindos de
# outros endereços
http_access allow clientes
http_access deny all

## FIM DO ARQUIVO ##


Depois de configurado o arquivo, você já pode ativar o Squid:


# /etc/init.d/squid restart



Cadastramento dos Clientes


Os seus clientes serão cadastrados no arquivo "/etc/provedor/clientes". Crie esse arquivo:


# vi /etc/provedor/clientes

Agora preencha esse arquivo como exemplo:


0010|novo-teste|192.168.0.7|128|12|8|00:E0:06:EF:7F:D8|3|A
0011|teste|192.168.0.3|256|30|15|00:0B:CD:A4:AE:2C|5|B


Cada linha corresponde a um cliente. Os campos são separados com "|" (pipe-line). O primeiro campo é o código do cliente, inicie a partir de 0010, sempre com 4 dígitos. Em seguida o nome, o endereço IP escolhido, a velocidade de conexão, a taxa de download, a taxa de upload, o endereço MAC, a prioridade (quanto mais baixo mais prioridade) e por fim, "A", ativo ou "B", bloqueado.

O script que lê essas informações será o "configurador.sh", crie-o na mesma pasta e depois dê permissão de execução


# touch /etc/provedor/configurador.sh
# chmod +x /etc/provedor/configurador.sh
# vi /etc/provedor/configurador.sh

A explicação do seu funcionamento vem em seguida. Cole o conteúdo:


#!/bin/bash
# script criado por Tiago Andre Geraldi – virgulla@gmail.com

rm -f /etc/shaper/*
rm /etc/provedor/users.sh
touch /etc/provedor/users.sh
chmod +x /etc/provedor/users.sh

LISTA=`cat /etc/provedor/clientes`
for CLIENTE in $LISTA; do
CODIGO=`echo $CLIENTE | awk -F "|" '{print $1}'`
NOME=`echo $CLIENTE | awk -F "|" '{print $2}'`
IP=`echo $CLIENTE | awk -F "|" '{print $3}'`
CON=`echo $CLIENTE | awk -F "|" '{print $4}'`
DOWN=`echo $CLIENTE | awk -F "|" '{print $5}'`"kbit"
UP=`echo $CLIENTE | awk -F "|" '{print $6}'`"kbit"
MAC=`echo $CLIENTE | awk -F "|" '{print $7}'`
PRIO=`echo $CLIENTE | awk -F "|" '{print $8}'`
STAT=`echo $CLIENTE | awk -F "|" '{print $9}'`
# checa se esta ativado
if [ "$STAT" = "A" ]; then

UPLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_upload"
DOWNLOAD="/etc/shaper/cbq-"$CODIGO"."$NOME"_download"
touch $UPLOAD
touch $DOWNLOAD
chown 755 /etc/shaper/*

# eth1 corresponde a interface de rede conectada aos usuarios
# mude se necessario

echo "DEVICE=eth1,100Mbit,10Mbit" >> $UPLOAD
echo "RATE=$CON""KBit" >> $UPLOAD
echo "WEIGHT=$UP" >> $UPLOAD
echo "PRIO=$PRIO" >> $UPLOAD
echo "BOUNDED=yes" >> $UPLOAD
echo "ISOLATED=yes" >> $UPLOAD
echo "MARK=30" >> $UPLOAD

echo "DEVICE=eth1,100Mbit,10Mbit" >> $DOWNLOAD
echo "RATE=$CON""KBit" >> $DOWNLOAD
echo "WEIGHT=$DOWN" >> $DOWNLOAD
echo "PRIO=$PRIO" >> $DOWNLOAD
echo "RULE=""$IP" >> $DOWNLOAD
echo "BOUNDED=yes" >> $DOWNLOAD
echo "ISOLATED=yes" >> $DOWNLOAD

echo "iptables -t nat -A POSTROUTING -s $IP"" -j MASQUERADE" >> /etc/nat/users.sh
echo "iptables -A FORWARD -s $IP"" -j ACCEPT" >> /etc/nat/users.sh
echo "iptables -A FORWARD -d $IP"" -j ACCEPT" >> /etc/nat/users.sh

arp -s $IP $MAC

fi

done

sh /etc/provedor/firewall.sh
/etc/init.d/shaper restart

## FIM DO ARQUIVO ##


O script trabalha com a pasta /etc/shaper onde fica o controle de banda, também usa o arquivo /etc/provedor/users.sh que será criado pelo script e que será lido pelo firewall que criaremos depois. Neste arquivo fica a habilitação de internet para os IPs cadastrados.

A primeira coisa que ele faz é apagar os arquivos atuais. Em seguida ele lê o "/etc/provedor/clientes" e guarda em variáveis, cria os arquivos do controle de banda e o "/etc/provedor/users.sh" atualizado. Dá o comando "arp" que prende o Ip ao MAC e por último reinicia o serviço de controle de banda e re-executa o firewall.

Sempre que fizer alguma alteração nos cadastros basta que você execute o configurador:


# sh /etc/provedor/configurador.sh

Mas calma, você ainda precisa criar o firewall, senão nada funcionará.



Firewall


Crie o arquivo "/etc/provedor/firewall.sh" com o conteúdo abaixo (fique atento nos comentários). Depois de salvar dê permissão de execução.


#!/bin/bash
# Esse script criado por Tiago André Geraldi é baseado
# no firewall criado por Carlos Morimoto para o Kurumin Linux

## limpa as tabelas das regras, nada a ser mudado aqui
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X

# habilita internet para os usuários cadastrados
sh /etc/nat/users.sh

# Marcacao de pacotes para controle de banda. Mude a faixa de IPs de acordo com a sua
for i in `seq 2 254`
do
iptables -t mangle -A POSTROUTING -s 192.168.0.$i -j MARK --set-mark $i
done

# Habilita roteamento
echo 1 > /proc/sys/net/ipv4/ip_forward

# Habilita PROXY TRANSPARENTE
# mude a interface rede se eth1 não for a interface conectada ao wireless
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

# BLOQUEA O QUE NAO SE ENCAIXA NAS REGRAS ACIMA
iptables -A INPUT -p tcp --syn -j DROP
iptables -P FORWARD DROP

## FIM DO ARQUIVO ##




Conclusão


Depois dos passos anteriores, seu servidor já pode ser executado:


# sh /etc/provedor/configurador.sh

Amigo humbertojr,

Eu fiz um server aq seguindo este tutorial ae, aqui ta funcionando legal, eu so quer acrescenta mais uma coisa que talves alguem ae pode me ajudar, é assim:

O controle de banda ta perfeito, cache também, mas quero que faça o seguinte quando alguem fizer um download do mesmo local/link que ja esteja no cache, quero que fique com a velocidade da rede interna (o famoso cache full), se alguem ae puder me ajudar agradeço desde já...