Página 1 de 5 12345 ÚltimoÚltimo
+ Responder ao Tópico



  1. Nesse, pretendo mostrar c/ configurar um servidor Fedora, oferencendo os principais servicos pa/ sua rede: Firewall, servidor DHCP, Webcache(squid), Dnscache(bind), Controle de banda(cbq), controle de acesso, acesso remoto (SSH).

    Esse foi elaborado com base em pesquisas na internet e experiencia propria.
    Espero assim, ajudar a mtos.

    No final, voce devera ter um servidor para administrar sua rede.
    As opcoes aqui descrita nao é as unica maneira de criacao de tal sistema. Ha muitas maneiras de se alcancar este objetivo.
    Nao dou qualquer garantia de que os passos aqui descritos vao funcionar com voce.


    Sumario
    - 1. - Introducao
    - - 1.1 - Requisitos
    - - 1.2 - Cenario
    - - 1.3 - LINKs EXTRAS
    - 2. - SEGURANCA
    - - 2.1 - SELinux
    - - 2.2 - Introducao ao Firewall
    - - - 2.2.1 - Tabelas e Chains
    - - - 2.2.2 - Manipulando chains
    - - 2.3 - NAT
    - - 2.4 - LINKs EXTRAS
    - 3. - Servidor DHCP
    - - 3.1 - DHCP sem IP Fixo
    - - 3.2 - DHCP com IP Fixo
    - - 3.3 - LINKs EXTRAS
    - 4. - DNS Cache (Bind)
    - - 4.1. - Configuracao do DNS Cache
    - - 4.2 - LINKs EXTRAS
    - 5. - Web Cache (Squid)
    - - 5.1. - Configuracao do WEB Cache
    - - 5.2 - LINKs EXTRAS
    - 6. - Acesso remoto (SSH)
    - - 6.1. - Informacoes SSH
    - 7. - Controle de acesso (MACxIP)
    - 8. - Controle de Banda(CBQ)
    - - 8.1. - LINKs EXTRAS

    1. - Introducao
    1.1 - Requisitos
    - Fedora 11
    - Conexao com a internet
    - Hardware com 2 placas de rede (1 placa configurada para o acesso a internet, e a outra configurada para servir como Gateway da rede interna).
    Nesse, nao pretendo entrar em maiores detalhes de como baixar/instalar o Fedora 11, nen tao pouco de como configurar a rede.

    Nota: nesse, uso o hotname servidor.lgm.farolbr com endereco gateway 172.167.0.1. Essas configuracoes podem ser diferentes para voce, entao, tens que substitui-las sempre que for necessario.
    1.2. - Cenario
    #########................###############
    # INTERNET # === eth0# SERVIDOR FEDORA#eth1 === Rede interna
    #########...............###############

    Placa de rede eth0 (conexao externa - internet), configurado de acordo com sua conexao com a internet, aqui esta configurado assim:
    # eth0
    IP: 10.1.1.2
    mask: 255.0.0.0
    Gateway: 10.1.1.1
    DNS1: 201.10.128.2
    DNS2: 201.10.120.3
    Placa de rede eth1 (conexao interna - rede), configurado ao seu gosto, aqui esta configurado assim:
    # eth1
    IP: 172.167.0.1
    mask: 255.255.0.0
    1.3 - LINKs EXTRAS
    Ao final da maioria dos topicos deixarei alguns links que poderao ajudar nas configuracoes e/ou complementar o que foi discutido.

    Linux: Instalando o Fedora 10 [Artigo]
    http://www.guiadohardware.net/dicas/...sl-fedora.html
    http://www.vivaolinux.com.br/artigo/...racao?pagina=1
    Linux: Ativando a rede no Fedora Core [Dica]

    2. - SELinux, IPTABLES(Introducao, NAT)
    2.1 - SELinux
    O SELinux é uma implementacao de seguranca do Fedora, que por padrao, deveria oferecer uma maior seguranca.
    Porem, normalmente causa mais problemas do que vantagens ( eu tive alguns problemas, alguns servicos nao estavam funcionando, foi entao, que descobri que os servicos estavam corretamente configurados, mas o SELinux estava causando problemas).
    Alem do mais, na minha opiniao, voce nao precisa dele para configurar um sistema seguro.
    Portando, aconselho a desabilita-lo.

    O config do SELinux pode ser encontrado em: /etc/selinux/config
    edite-o, mude o SELINUX=enforcing para SELINUX=disabled:
    # vim /etc/selinux/config

    deixe-o assim:
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    # targeted - Targeted processes are protected,
    # mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    Reinicie o sistema:
    # reboot
    ou
    # init 6
    2.2 - Introducao ao Firewall
    Firewall é uma extencao de seguranca dado a um software/dispositivo que tem como seu principal objetivo aplicar uma politica de seguranca entre seu computador e a internet, ou, a um ponto especifico de controle de sua rede.
    Explicando de uma maneira generica, o firewall é como os segurancas da Casa Branca: so deixa entrar aqueles que sao permitidos(total acesso), barram os que nao sao permitidos (acesso negado) ou direcionam os conhecidos a um determinado local (acesso parcial).

    Nesse, abordaremos o iptables, na qual esta presente nos kernels atuais.
    O iptables é um firewall statefull, nivel de pacotes, e funciona baseado no endereço/porta de origem/destino do pacote, prioridade, etc.
    Podemos usar o iptables para uma gama de possibilidades, dependendo apenas da sua imaginacao.

    2.2.1 - Tabelas e Chains
    Existem 3 tabelas disponiveis no iptables: filter, nat, mangle.
    Tabelas - Sao os locais usados para armazenar os chains
    Chains - Sao os locais onde sao armazenadas os conjuntos de regras definidas pelo usuario.


    Nota: os nomes dos chains são case-sensitive, o chain output é completamente diferente de OUTPUT.

    filter: Tabela padrao, contem 3 chains:
    --INPUT (para pacotes destinado a própria máquina)
    --OUTPUT (para pacotes gerados localmente)
    --FORWARD (qualquer pacote que atravessa o firewall, oriundo de uma máquina e direcionado a outra).
    nat: Usada para dados que geram outra conexao.
    --PREROUTING (para alterar pacotes recebidos antes do roteamento)
    --OUTPUT (para alterar localmente pacotes gerados antes do roteamento)
    --POSTROUTING (para mudar o endereço de origem das conexões para algo diferente).
    mangle: Usada em acoes especiais para o tratamento do tráfego que atravessa os chains.
    --PREROUTING - Consultado quando os pacotes precisam ser modificados logo que chegam.
    --POSTROUTING - Consultado quando os pacotes precisam ser modificados apos o tratamento de roteamento.
    --INPUT - Consultado quando os pacotes precisam ser modificados antes que chegam a máquina(o proprio servidor... antes de ser tratado por qualquer outro chain).
    --OUTPUT - Consultado quando os pacotes precisam ser modificados antes de sair da máquina
    --FORWARD - Consultado quando os pacotes precisam ser modificados antes de serem redireicionado para outra interface
    2.3 - NAT
    "O NAT não é um protocolo nem um padrão. O NAT é apenas uma série de tarefas que um roteador (ou equipamento equivalente) deve realizar para converter endereços IPs entre redes distintas.
    Um equipamento que tenha o recurso de NAT (sigla em inglês: "Network Address Translation" ou Tradução de Endereço de Rede) deve ser capaz de analisar todos os pacotes de dados que passam por ele e trocar os endereços desses pacotes de maneira adequada.
    Vejamos agora como é fácil fazer um compartilhamento de acesso (NAT) no Linux com uma pequena ajuda do iptables"

    Para fazer um nat basta você editar o arquivo rc.local que está em /etc/rc.d e adicionar as
    seguintes linhas ao seu conteúdo:
    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo \"1\" > /proc/sys/net/ipv4/ip_forward

    Nota: que a placa de rede que se conecta a internet é eth1, isso pode mudar de acordo com sua configuração, podendo variar para eth0, ppp0, etc.


    Como queremos que apenas as regras que adicionamos sejam executadas, antes de mais nada, é necessario limpar qualquer regras do firewall existente.
    Adicione as seguintes linhas antes da regra que compartilha Conexao:
    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo \" Limpando Regras ..............................[ OK ]\"

    # Definindo Politica Padrao
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    echo \" Alterando politica padrao.....................[ OK ]\"
    Ficando o nosso script da seguinte forma:
    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo \" Limpando Regras ..............................[ OK ]\"

    # Definindo Politica Padrao
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    echo \" Alterando politica padrao.....................[ OK ]\"

    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo \"1\" > /proc/sys/net/ipv4/ip_forward
    2.4 - LINKs EXTRAS
    SELinux - Wikipédia, a enciclopédia livre
    http://www.vivaolinux.com.br/artigo/...do-o-IPtables/
    Guia Foca GNU/Linux - Firewall iptables
    http://www.vivaolinux.com.br/artigo/...s-e-aplicacao/
    Última edição por AndrioPJ; 03-10-2009 às 11:48.

  2. 3. - Servidor DHCP

    O dhcp permite que todos os micros da rede recebam automaticamente as suas configuracoes de rede, sem que voce precise ficar configurando os enderecos de rede em cada.
    Ou seja, quando um cliente for inicializado e não tive rum endereço IP configurado, ele manda uma mensagem para toda a rede em busca de um endereço IP. Todos os computadores receberão essa mensagem, porém o único que poderá atender a ela é o servidor DHCP.

    No fedora, a sua instalacao pode ser feita atraves do yum:
    # yum install dhcp

    O arquivo de configuracao do dhcpd pode ser encontrado em: /etc/dhcp/dhcpd.conf
    Para iniciar e parar o servidor dhcp, use os comandos:
    # service dhcpd start
    # service dhcpd stop

    Independente da distribuicao Linux, o arquivo de configuracao é igual. Vejamos 2 exemplo:
    3.1 - DHCP sem IP Fixo
    # vim /etc/dhcp/dhcpd.conf

    # /etc/dhcp/dhcpd.conf

    # Atualizaçao do dns
    ddns-update-style none;

    # Tempo padrão de emprestimo de ip
    default-lease-time 600;

    # Tempo maximo para emprestimo de ip
    max-lease-time 7200;

    # Este é o servidor autoritario, caso haja outro na rede
    authoritative;

    # A sua Subrede
    subnet 172.167.0.0 netmask 255.255.0.0 {

    # determina a faixa de endereços IP que será usada pelo servidor
    range 172.167.0.10 172.167.0.254;

    # endereço do default gateway da rede, ou seja, endereco da placa de rede que esta ligado a rede interna.
    option routers 172.167.0.1;

    # ervidores DNS que serão usados pelas estações.
    option domain-name-servers 208.67.222.222,208.67.220.220;

    # Endereço de broadcast
    option broadcast-address 172.167.0.255;
    }
    3.2 - DHCP com IP Fixo
    # vim /etc/dhcp/dhcpd.conf

    # /etc/dhcp/dhcpd.conf

    # Atualizaçao do dns
    ddns-update-style none;

    # Tempo padrão de emprestimo de ip
    default-lease-time 600;

    # Tempo maximo para emprestimo de ip
    max-lease-time 7200;

    # Nega cliente sem o mac cadastrado
    deny unknown-clients;

    # Este é o servidor autoritario, caso haja outro na rede
    authoritative;

    # A sua Subrede
    subnet 172.167.0.0 netmask 255.255.0.0 {

    # endereço do default gateway da rede, ou seja, endereco da placa de rede que esta ligado a rede interna.
    option routers 172.167.0.1;

    # ervidores DNS que serão usados pelas estações.
    option domain-name-servers 208.67.222.222,208.67.220.220;

    # Endereço de broadcast
    option broadcast-address 172.167.0.255;
    }

    #andrio/0002
    # especificação um nome para o cliente
    host andrio {

    # especificação do MAC address da placa do cliente.
    hardware ethernet 00:12:31:b3:6f:4C;

    # especificação de um endereco que o cliente devera receber
    fixed-address 172.167.0.9;

    # especificação da mascara que o cliente ira receber
    option subnet-mask 255.255.255.0;
    }
    3.3 - LINKs EXTRAS
    DHCP - Wikipédia, a enciclopédia livre
    http://www.gdhpress.com.br/servidore...x.php?p=cap2-5
    [ Comunidade Fedora Brasil ] - DHCP FACIL NO FEDORA


    4. - DNS Cache (Bind)
    Bind é o servidor DNS mais utilizado, especialmente em sistemas Unix/Linux.
    Nesse artigo, abordaremos a instalacao e configuracao de forma facil e funcional da aplicacao Bind, e assim servir de cache DNS. Dando um ganho de performace nas pesquisas DNS e uma pequena economia no Link.

    No fedora, a sua instalacao pode ser feita atraves do yum:
    # yum install bind

    O arquivo de configuracao do bind pode ser encontrado em: /etc/named.conf
    Para iniciar e parar o servidor bind, use os comandos:
    # service named start
    # service named stop
    4.1. - Configuracao do DNS Cache
    Edite o arquivo named.conf e deixe-o como abaixo:

    # vim /etc/named.conf

    //
    // named.conf
    //
    // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
    // server as a caching only nameserver (as a localhost DNS resolver only).
    //
    // See /usr/share/doc/bind*/sample/ for example named configuration files.
    //

    options {
    directory \"/var/named\";

    # Cache DNS
    dump-file \"/var/named/data/cache_dump.db\";

    # Estatisticas DNS (sucessos, falhas, etc)
    statistics-file \"/var/named/data/named_stats.txt\";
    memstatistics-file \"/var/named/data/named_mem_stats.txt\";

    # mude \"172.167.0.0/16 para a faixa usada em sua rede.
    allow-query { 172.167.0.0/16; localhost; };
    allow-recursion {172.167.0.0/16; 127.0.0.1; };
    forward only;

    # aqui vc ira colocar os dns de sua operadora ou outros dns, caso a requisicao da rede interna nao encontre o dns pesquisado
    # entao, sera pesquisado nos dns abaixo
    forwarders { 189.38.95.95; 208.67.222.222; 200.176.2.12; 200.225.157.104; 201.10.128.2; 200.176.2.10; 189.38.95.96; 208.67.220.220; 200.225.157.105; 201.10.120.3; 200.192.112.8; };
    tcp-clients 1000;
    version \"[Not Available]\";
    };

    logging {
    channel default_debug {
    file \"data/named.run\";
    severity dynamic;
    };
    };

    zone \".\" IN {
    type hint;
    file \"named.ca\";
    };

    include \"/etc/named.rfc1912.zones\";
    Reinicie o servidor bind:
    # service named restart

    Pronto, seu DNS Cache ja deve estar funcionando.
    4.2. - Dicas BIND
    1. - Para que sua rede possa pesquisar o dns diretamente no seu servidor (Gateway), teremos que editar o dhcpd.conf.
    Volte no arquivo de configuracao do dhcp, procure e altere: option domain-name-servers
    coloque o endereco da placa que ira atender a rede interna(Gateway rede interna)... no meu caso, fica assim:
    # option domain-name-servers 172.167.0.1;

    2. - Caso voce tenha seguido o script do Bind aqui descrito, o comando a seguir irá gravar dentro do arquivo /var/named/data/cache_dump.db toda a cache do DNS, lembrando que esse cache zera cada vez que o serviço é parado e reiniciado. Após rodar o comando, edite o arquivo e mate sua curiosidade.
    # rndc dumpdb
    4.2 - LINKs EXTRAS
    BIND - Wikipédia, a enciclopédia livre
    Linux: DNS Cache no Bind9 [Artigo]
    http://www.vivaolinux.com.br/artigo/...o-DNS?pagina=1
    https://www.isc.org/software/bind
    Última edição por AndrioPJ; 03-10-2009 às 12:11.



  3. 5. - Web Cache (Squid)

    Squid é um servidor proxy e cache q permite reduzir a utilizacao do Link.
    Podemos usar o Squid para varias funcoes: autenticação de usuários, restrições de acesso, auditoria, cache, etc.
    Nesse, abordaremos a instalacao e configuracao de forma facil e funcional do Squid para WEB Cache.

    No fedora, a sua instalacao pode ser feita atraves do yum:
    # yum install squid

    O arquivo de configuracao do squid pode ser encontrado em: /etc/squid/squid.conf
    Para iniciar e parar o servidor squid, use os comandos:
    # service squid start
    # service squid stop

    Para criar os diretorios swap:
    # squid -z

    mas antes disso, certifique-se de ter configurado o squid e de ter criado os diretorios swap.
    5.1. - Configuracao do WEB Cache
    Edite o arquivo named.conf e deixe-o como abaixo( comentei ele para facil entendimento):
    # vim /etc/squid/squid.conf

    # squid.conf
    # Andrio P. Jasper
    # mascaraapj@gmail.com
    #-----------------------------------------------
    # Opcoes para suportar proxy transparente.
    #nao esquecer de trocar a faixa de ip pela da sua rede
    http_port 172.167.0.1:3128 transparent

    #diz ao Squid que ele deve buscar os dados diretamente na origem
    hierarchy_stoplist cgi-bin ?

    #diz ao squid para não armazenar em cache o conteúdo dos CGI's
    acl QUERY urlpath_regex cgi-bin \?
    no_cache deny QUERY

    #memoria usada pelo squid
    cache_mem 128 MB

    #esvazia o cache
    cache_swap_low 75
    cache_swap_high 78

    #tamanho maximo para gravacao no cache squid
    maximum_object_size 150 MB

    #tamanho minimo para gravacao no cache squid
    minimum_object_size 0 KB

    # Tamanho maximo dos objetos mantidos em memoria.
    maximum_object_size_in_memory 2048 KB

    # politica de substituicao dos objetos quando se esgota o espaco destinado ao cache em disco.
    # lru: mantem os objetos referenciados recentemente.
    # heap GDSF: otimiza o \"hit rate\" por manter objetos pequenos e
    # e populares no cache, guardando assim um numero maior de objetos.
    # heap LFUDA: otimiza o \"byte hit rate\" por manter objetos populares
    # no cache sem levar em conta o tamanho. Se for utilizado este, o
    # maximum_object_size devera ser aumentado para otimizar o LFUDA.
    cache_replacement_policy heap LFUDA

    #define a politica de substituicao dos objetos em memoria
    #da mesma forma como o cache_replacement_policy
    memory_replacement_policy heap GDSF

    #determina onde e como será feito o cache e o tamanho
    #a cada 1GB (1024), deve separar 15mb de memoria
    cache_dir aufs /var/spool/squid 10000 64 128

    # Log de requisicoes.
    cache_access_log /var/log/squid/access.log

    # Log de objetos guardados. Pode ser desativado.
    cache_store_log none

    # Log do cache.
    cache_log /var/log/squid/cache.log

    #Pode ser usada para especificar uma lista de servidores DNS no
    #lugar no /etc/resolv.confdns_nameservers Endereço_IP
    #nao esquecer de trocar a faixa de dns pela da sua faixa
    # caso tenha um servidor dns instalado na mesma maquina, deixe assim: dns_nameservers 127.0.0.1
    dns_nameservers 127.0.0.1
    dns_nameservers 201.10.120.3

    #TAG's referentes ao processo de autenticação.
    auth_param basic children 5
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours

    auth_param basic casesensitive off

    ## Aumentando o tempo do CACHE WINDOWS UPDATE
    refresh_pattern -i w?xpsp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
    refresh_pattern -i w2ksp[0-9]\.microsoft\.com/ 0 100% 20160 reload-into-ims
    refresh_pattern -i windowsupdate.com/.*\.(cab|exe|dll|msi) 0 100% 43200 reload-into-ims
    refresh_pattern -i microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
    refresh_pattern -i download\.macromedia\.com/ 0 100% 20160 reload-into-ims

    #configuram como serão tratados os tempos de vida dos objetos no cache
    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 20% 2280
    refresh_pattern (/cgi-bin/|\?) 0 0% 0
    refresh_pattern . 0 20% 4320

    #O cache pode ser configurado para continuar com o download de requisições abortadas
    quick_abort_min -1 KB
    quick_abort_max 0 KB
    quick_abort_pct 100%

    #Tempo de vida para resultados mal sucedidos de resolução DNS.
    negative_ttl 2 minutes

    #Tempo de vida para resultados bem sucedidos de resolução DNS. não deixe inferior a 1 minuto.
    #Padrão de 6 horas.
    positive_dns_ttl 5 minutes

    #Alguns clientes podem parar o envio de pacotes TCP enquanto deixam o recebimento em aberto.
    #Algumas vezes o Squid não consegue diferenciar conexões TCP totalmente fechadas e parcialmente fechadas.
    #Mudando essa opção para off fará com que o Squid imediatamentefeche a conexão quando a leitura do socket
    #retornar \"sem mais dados para leitura\"
    half_closed_clients off
    read_timeout 60 seconds
    pconn_timeout 120 seconds

    #Estas ACL's fazem parte da configuração padrão do Squid e é o mínimo
    #recomendável para seu uso não sendo necessária nenhuma alteração nas mesmas
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl to_localhost dst 127.0.0.0/8
    acl SSl_ports port 443 563
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 563 # https
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 #unregistered ports
    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 CONNECT method CONNECT

    ##nao esquecer de trocar a faixa de ip pela da sua rede
    acl rede src 172.167.0.0/255.255.0.0

    #Definição de regras de acesso referentes as ACL's da parte da configuração
    #padrão do Squid, também não é necessária nenhuma alteração, portanto apenas
    #acrescente as suas próprias regras a estas;
    http_access allow localhost
    http_access allow rede
    http_access allow manager localhost
    http_access deny manager
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports

    #Ela diz ao Squid que se nenhuma das regras anteriores for
    #aplicada o acesso será então negado
    http_access deny all

    # Usuario sob o qual ira rodar o Squid.
    cache_effective_user squid
    # Grupo sob o qual ira rodar o Squid.
    cache_effective_group squid

    #Mostra o nome do servidor configurado nas mensagens de erro
    visible_hostname servidor.lgm.farolbr

    #Desligando essa variavel, faz com que o squid descarregue a memoria nao
    #utilizada, chamando uma funcao interna free() do squid
    memory_pools off

    #Por padrão o Squid irá incluir o ip ou nome da sua máquina nas solicitações HTTP.
    #Para o site visitado não interessa para ele qual seu ip interno, o importante é que você visitou o site.
    forwarded_for off

    #mensagens de erro em Portugues
    error_directory /usr/share/squid/errors/Portuguese

    #essa opção como off mostra no log o endereço completo.
    strip_query_terms off
    ie_refresh on

    # Resolve um problema com conexões persistentes que ocorre com certos servidores,
    detect_broken_pconn on

    #o Squid irá trabalhar com 2 requisições paralelamente
    pipeline_prefetch on
    Edite o script do firewall rc.local (/etc/rc.d.rc.local) e adicione a regra de redirecionamento do trafego para o squid.
    Ficando o nosso script da seguinte forma:
    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo \" Limpando Regras ..............................[ OK ]\"

    # Definindo Politica Padrao
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    echo \" Alterando politica padrao.....................[ OK ]\"

    # Redireciona todo trafego http(80) que nao seja para a conectividade social, para o squid (3128),
    iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128


    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo \"1\" > /proc/sys/net/ipv4/ip_forward
    5.2.- Dicas SQUID
    1. - Para ver quem esta acessando a web atraves do squid em tempo real (IP da maquina, Site cessado e Status do Acesso) digite no terminal:
    # tail -f /var/log/squid/access.log | awk '{print$3 " - " $4 " - " $7 }'

    2. - Para limpar o cache, digite os passos abaixo no terminal:
    # service squid stop
    # cd /var/spool/squid
    # rm -rf *
    # squid -z
    # service squid start
    5.3 - LINKs EXTRAS
    http://www.guiadohardware.net/dicas/...b-sua-lan.html
    Linux: Configurar Squid - squid.conf
    Instalando e Configurando o Squid
    Squid - Wikipédia, a enciclopédia livre
    squid : Optimising Web Delivery
    Última edição por AndrioPJ; 03-10-2009 às 12:23.

  4. 6. - Acesso remoto (SSH)
    Todo servidor necessita de manutenção seja ele que sistema operacional ele use. No Linux temos um serviço muito interessante chamado SSH (Secure SHell).
    O SSH é uma maneira extremamente segura de se conectar no servidor mesmo que está conexão seja vinda da internet.
    O SSH é tão bom que apenas precisaremos alterar algumas linhas para torná-lo ainda, mas seguro.

    O ssh ja vem por padrao no fedora.
    Arquivo de configuração do SSH, sshd_config pode ser encontrado em “/etc/ssh/sshd_config”

    Apenas as linhas abaixo precisam ser alteradas:
    1°: Port 22: está linha indica a porta na qual o ssh vai funcionar a padrão é 22, mas o ideal é ser mudada para uma porta a sua escolha.
    OBS: Cuidado para não escolher uma porta que está sendo utilizada por outro serviço.

    2°: PermitRootLogin no: está linha indica se o root pode se logar no sistema através deste serviço. Isso não é uma boa idéia pois é um alvo em potencial para ataques pois é um usuário que o Hacker sabe que existe no seu sistema.

    3°: LoginGraceTime 120: Define o tempo máximo que o usuário tem para digitar a senha e logar no sistema.

    4°: AllowUsers andrio: Permite o login somente dos usuarios configurado, dificultando ainda mais o trabalho de um hacker. No meu caso, permiti apenas o login do usuario andrio

    5°: MaxStartups 5:80:10: Desta forma ele rejeita 80% das tentativas de conexao
    6.1. - Informacoes SSH
    Para iniciar e parar o servidor SSH, use os comandos:
    # service sshd start
    # service sshd stop

    Logando no sistema via SSH:
    #ssh (login)@(ip) –p (numero da porta)
    #ssh andrio@192.168.100.1 –p 2250

    Para fazer o sistema sempre iniciar o SSH caso ele seja rebootado.
    Comado:
    # setup
    Opção: Serviços do Sistema
    Opção: sshd
    OK e SAIR

    7. - Controle de acesso (MACxIP)
    O controle de acesso por MACxIP é feito com a ajuda do iptables.
    O Cliente devera ter sempre o mesmo IP, basta configurar o DHCP com ip fixo ou configurar o micro do cliente manualmente.

    Funcionara da seguinte forma:
    -- teremos um arquivo que ira conter todos os IPs e MACs da rede.
    -- iremos alterar a politica padrao de ACCEPT para DROP (assim estaremos bloqueando TUDO),
    -- adicionaremos 2 regras no script do firewall, essas ultimas serao responsavel por liberar o acesso aos cadastrados.
    7.1. - Configurando o acesso (MACxIP)
    Atualmente, nosso rc.local (/etc/rc.d.rc.local), esta da seguinte forma:
    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo " Limpando Regras ..............................[ OK ]"

    # Definindo Politica Padrao
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    echo " Alterando politica padrao.....................[ OK ]"

    # Redireciona o trafego http(80) para o squid (3128)
    iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo "1" > /proc/sys/net/ipv4/ip_forward
    Criaremos o arquivo que contera os IPs e MACs, e adicionaremos os IPs e MACs, cada cliente em uma linha, da seguinte forma, :
    #IP;MAC;Marcacao pacote;nome do cliente

    # vim /etc/macxip
    172.167.0.9;00:12:31:b3:6f:4C;10019;andrio
    Agora, editamos o rc.local (/etc/rc.d.rc.local), deixando-o da Seguinte forma:
    # Paramentros do Controle de acesso
    MACLIST=/etc/macxip
    echo " Configuracoes necessarias.....................[ OK ]"


    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo " Limpando Regras ..............................[ OK ]"

    # Definindo Politica Padrao
    iptables -P INPUT DROP
    iptables -P FORWARD DROP

    iptables -P OUTPUT ACCEPT
    echo " Alterando politica padrao.....................[ OK ]"

    # # Controle de ACESSO # #
    # Diretivas do BD IP, MAC e Port
    for i in `cat $MACLIST`; do
    IPSOURCE=`echo $i | cut -d ';' -f 1`
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    CBQMARK=`echo $i | cut -d ';' -f 3`

    # Controle de Acesso IPxMAC
    iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT
    done


    # Redireciona o trafego http(80) para o squid (3128)
    iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo "1" > /proc/sys/net/ipv4/ip_forward
    Execute o script do firewall e seu controle de acesso IPxMAC ja estara funcionando.
    Para bloquear um determinado cliente, basta mudar os 2 primeiros "00" do MAC do mesmo, dessa forma, o novo mac cadastrado nao ira bater com o mac real do cliente( MAC 00:12:31:b3:6f:4C é diferente do MAC 11:12:31:b3:6f:4C)

    Nota: pode ser necessario adicionar mais 3 linhas de regras no script, para manter/aceitar as conexoes estabilizadas. adicione-as logo abaixo das regras de "Politica Padrao"
    # Aceita os Pacotes que realmente devem entrar
    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

    Como deixamos o firewall restritivo, é bom adicionar a regra abaixo, responsavel por aceitar toda conexao loopback.
    # Aceita todo o trafego vindo do loopback e indo pro loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT
    7.2. - LINKs EXTRAS
    Bloqueio por MAC

    8. - Controle de Banda(CBQ)

    No fedora, nao é necessario instalar o script do CBQ. Por padrao, ele ja vem no sistema.
    Importante saber:

    • -Os arquivos de limitacao ficam (classes) ficam em: /etc/sysconfig/cbq/
    • -Os arquivos de limitacao obedecem o formato pre-definido: cbq-(clsid).(nome)
    • -o mesmo IP não pode estar em duas regras
    • -É necessario 2 arquivo de limitacao para cada regra: 1 para download e outro para upload.
    • -Cada arquivo de limitacao deve conter as regras abaixo, com 1 pequena diferenca, um dos arquivos devera conter uma vírgula no final da RULE, o arquivo que conter a virgula sera o que vai indicar o upload:

    DEVICE=(interface rede),(banda),(peso)
    RATE=(velocidade)
    WEITH=(peso/10)
    PRIO=(prioridade)
    RULE=(ip ou rede a ser controlada)
    BOUNDED=yes/no se setado para yes o usuário estará limitado mesmo que o link esteja com folga.
    ISOLATED=yes/no se setado para yes indica que o cliente não poderá emprestar banda pra ninguém
    Exemplo, regra para o usuario andrio:
    # vim cbq-0002.andrio
    DEVICE=eth0,10Mbit,1Mbit
    RATE=256
    WEIGHT=64Kbit
    PRIO=5
    RULE=172.167.0.9
    BOUNDED=yes
    ISOLATED=no
    # vim cbq-0003.andrio
    DEVICE=eth1,10Mbit,1Mbit
    RATE=256
    WEIGHT=64Kbit
    PRIO=5
    RULE=172.167.0.9,
    BOUNDED=yes
    ISOLATED=no
    Nota: Qualquer regra seguida da virgula " , " controla o trafego de saida da sua rede

    Com todas as regras prontas, vamos ativar o serviço.
    Primeiro compilamos as novas regras
    # cbq compile

    e depois iniciamos o cbq:
    # cbq start

    Pronto, cbq funcionando.
    Faca o teste.
    Última edição por AndrioPJ; 02-10-2009 às 18:41.



  5. Para um controle de upload mais efetivo, aconselho a marcar os pacotes de cada cliente.
    editamos o rc.local (/etc/rc.d.rc.local)
    Adicione a opcao MARK na regra do cliente que contiver a virgula ","
    deixe-o assim:
    # vim cbq-0003.andrio
    DEVICE=eth0,10Mbit,1Mbit
    RATE=256
    WEIGHT=64Kbit
    PRIO=5
    RULE=172.167.0.9,
    MARK=16709
    BOUNDED=yes
    ISOLATED=no

    e o script do firewall, deixe-o da Seguinte forma:

    # Paramentros do Controle de acesso
    MACLIST=/etc/macxip
    echo " Configuracoes necessarias.....................[ OK ]"

    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo " Limpando Regras ..............................[ OK ]"

    # Definindo Politica Padrao
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    echo " Alterando politica padrao.....................[ OK ]"

    # Aceita os Pacotes que realmente devem entrar
    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

    # # Controle de ACESSO # #
    # Diretivas do BD IP, MAC e Port
    for i in `cat $MACLIST`; do
    IPSOURCE=`echo $i | cut -d ';' -f 1`
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    CBQMARK=`echo $i | cut -d ';' -f 3`

    # Controle de Acesso IPxMAC
    iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT

    #Pacote Marcado - importante lembrar que todo trafego de saida deve ser controlado na interface oposta do cliente.
    # no meu caso= eth0
    iptables -A PREROUTING -t mangle -i eth0 -s $IPSOURCE -j MARK --set-mark $CBQMARK
    done

    # Redireciona o trafego http(80) para o squid (3128)
    iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo "1" > /proc/sys/net/ipv4/ip_forward

    # Aceita todo o trafego vindo do loopback e indo pro loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT
    8.1. - LINKs EXTRAS
    Linux: Limitando banda com o CBQ [Artigo]
    Linux in Brazil ( Controle de banda com CBQ )
    CBQ: controle efetivo de banda no linux

    9. - Outras Regras
    1- O Kernel conta com algumas opcoes interessantes, vamos adiciona-las em nosso script de firewall, deixando por fim... assim:
    2- Entramos um problema no acesso remoto (ssh), pois deixamos nosso firewall restritivo, liberando acesso somente aos cadastrados. Vamos entao adicionar + 1 regra que permitira o acesso remoto na porta do ssh.

    # Paramentros do Controle de acesso
    MACLIST=/etc/macxip
    echo " Configuracoes necessarias.....................[ OK ]"

    # # Limpando Regras
    iptables -F
    iptables -X
    iptables -Z
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -F FORWARD
    iptables -F -t nat
    iptables -X -t nat
    iptables -F -t mangle
    iptables -X -t mangle
    echo " Limpando Regras ..............................[ OK ]"

    # Definindo Politica Padrao
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    echo " Alterando politica padrao.....................[ OK ]"

    # Aceita os Pacotes que realmente devem entrar
    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

    # Protecoes #
    # evita ataques como 'syn flood atack'
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies

    # rejeita todas as requisicao de ICMP ECHO, ou apenas aquelas destinadas a enderecamento broadcasting ou multicasting
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

    # ignora mensagens falsas de icmp_error_responses
    echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

    # Kill timestamps. These have been the subject of a recent bugtraq thread
    echo "0" > /proc/sys/net/ipv4/tcp_timestamps

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

    # Evita problema de resposta tamanho zero
    echo "0" > /proc/sys/net/ipv4/tcp_ecn

    # Tempo em segundos para manter um fragmento IP na memoria
    echo "15" > /proc/sys/net/ipv4/ipfrag_time

    # Tempo Maximo de Espera da Conexao sem Resposta
    echo "1800" > /proc/sys/net/ipv4/tcp_fin_timeout

    # conf/accept_redirects - essa opcao decide se o kernel aceita redirecionar mensagens ICMP ou nao
    # conf/accept_source_route - Desativar essa opcao fecha as chances para que um cracker realize ataques do tipo IP Spoofing
    # conf/send_redirects - Nao envie mensagens de redirecionamento ICMP
    # conf/*/log_martians - permite que pacotes de origem suspeita ou desconhecida (como pacotes forjados) sejam logados pelo proprio kernel.
    # conf/*/rp_filter - verifica o Endereçde Origem do Pacote, prevenindo a sua maquina de ataques como 'IP Spoofing'.
    for i in /proc/sys/net/ipv4/conf/*; do
    echo "0" > $i/accept_redirects
    echo "0" > $i/accept_source_route
    echo "0" > $i/send_redirects
    echo "1" > $i/log_martians
    echo "1" > $i/rp_filter;
    done

    # Liberando todos os dados cacheados da memoria
    echo 3 > /proc/sys/vm/drop_caches

    echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog
    echo "4096" > /proc/sys/net/core/netdev_max_backlog
    echo "3" > /proc/sys/net/ipv4/tcp_syn_retries

    # permite determinar o nº de segundos que uma conexao precisa estar ociosa antes de o TCP enviar checagens de keep-alive
    echo "1800" > /proc/sys/net/ipv4/tcp_keepalive_time
    echo "30" > /proc/sys/net/ipv4/tcp_keepalive_intvl

    # permite ativar o TCP Selective Acknowledgements previsto pela RFC2018
    echo "0" > /proc/sys/net/ipv4/tcp_sack

    # permite ativar o TCP window scaling previsto pela RFC1323
    echo "0" > /proc/sys/net/ipv4/tcp_window_scaling

    # Confundir fingerprinting "
    echo "255" > /proc/sys/net/ipv4/ip_default_ttl

    # Esse parametro determina o nº de pacotes SYN+ACK enviados antes de o kernel liberar a conexao
    echo "2" > /proc/sys/net/ipv4/tcp_synack_retries
    echo " Carregando Protecoes Adicionais...............[ OK ]"


    # # Controle de ACESSO # #
    # Diretivas do BD IP, MAC e Port
    for i in `cat $MACLIST`; do
    IPSOURCE=`echo $i | cut -d ';' -f 1`
    MACSOURCE=`echo $i | cut -d ';' -f 2`
    CBQMARK=`echo $i | cut -d ';' -f 3`

    # Controle de Acesso IPxMAC
    iptables -t filter -A FORWARD -d 0/0 -s $IPSOURCE -m mac --mac-source $MACSOURCE -j ACCEPT
    iptables -t filter -A INPUT -s $IPSOURCE -d 0/0 -m mac --mac-source $MACSOURCE -j ACCEPT

    #Pacote Marcado
    iptables -A PREROUTING -t mangle -i eth1 -s $IPSOURCE -j MARK --set-mark $CBQMARK
    done

    # Redireciona o trafego http(80) para o squid (3128)
    iptables -t nat -A PREROUTING -i eth1 -p TCP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
    iptables -t nat -A PREROUTING -i eth1 -p UDP ! -d 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128

    # Compartilha Conexao
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo "1" > /proc/sys/net/ipv4/ip_forward

    # Aceita todo o trafego vindo do loopback e indo pro loopback
    iptables -t filter -A INPUT -i lo -j ACCEPT

    # # SSH - mude a porta caso necessario
    iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
    Provavelmente, agora, voce deva ter um servidor que possa fazer controle da sua rede, com acesso remoto e com uma certa seguranca.
    Última edição por AndrioPJ; 02-10-2009 às 18:43.






Tópicos Similares

  1. Respostas: 9
    Último Post: 26-02-2015, 16:06
  2. Preciso de um servidor de cache que seja funcional
    Por elvisjunior no fórum Servidores de Rede
    Respostas: 40
    Último Post: 21-03-2014, 18:00
  3. virus na rede (Servidor Fedora em modo de texto)
    Por ronaldomacklaus no fórum Servidores de Rede
    Respostas: 5
    Último Post: 13-06-2008, 13:31
  4. Script para inclusão de clientes em servidor fedora 5
    Por fenix_se no fórum Linguagens de Programação
    Respostas: 0
    Último Post: 20-11-2006, 19:43
  5. Servidor/Proverdor de contas Shell
    Por no fórum Servidores de Rede
    Respostas: 4
    Último Post: 06-11-2002, 14:50

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L