ATENÇÃO A PARTIR DO KERNEL 2.4....... NÃO SE USA MAIS O IPCHAIM NEM IPMASQUERADE FORAM SUSBSTITUIDOS PELO IPTABLES VEJA NESTE DIRETÓRIO iptables.txt ****************************************************** links sobre IP masquerade, lembre que a partir do Kernel 2.4 o IPmasquerade foi susbstituido pelo IPtables, para que usa Kernel acima de 2.4 consulte neste diretorio o arquivo iptables.txt http://linux.unicamp.br/docs/diversos/ipmasquerade.html http://www.linux.org/docs/ldp/howto/IP-Masquerade-HOWTO/ http://linux.trix.net/rede_ipmasq.htm ****************************************************** > Preciso simplesmente, disponibilizar uma conexão estabelecida entre um > server Linux (RH 6.1) e meu provedor, através de um Modem e linha > discada, para um ou mais estações através da rede... Acrescente no final de /etc/rc.d/rc.local: if -x /etc/rc.d/rc.firewall then /etc/rc.d/rc.firewall fi E crie o arquivo /etc/rc.d/rc.firewall com: #!/bin/sh # conexao Internet echo 1 > /proc/sys/net/ipv4/ip_forward /sbin/modprobe ip_masq_ftp /sbin/ipchains -F /sbin/ipchains -X # /sbin/ipchains -M -S 240 90 120 /sbin/ipchains -P input ACCEPT /sbin/ipchains -P output ACCEPT /sbin/ipchains -P forward DENY iface=ppp0 for p in 25 6000:6099 3306 21 23 do /sbin/ipchains -I input 1 -p tcp -i $iface --destination-port $p -s 0.0.0.0/0 -j DENY done for p in 514 do /sbin/ipchains -I input 1 -p udp -i $iface --destination-port $p -s 0.0.0.0/0 -j DENY done /sbin/ipchains -I forward 1 -s IP.DA.SUA.REDE/MASK -d 0.0.0.0/0 -j MASQ #/sbin/ipchains -I forward 1 -d 255.255.255.255 -b -j DENY #/sbin/ipchains -I input 1 -d 255.255.255.255 -b -j DENY # end of file Onde IP.DA.SUA.REDE/MASK e' algo como 192.168.1.0/24 Faca "chmod +x" nesse arquivo. Se estiver conectado, basta executar esse script. Rejeva a seguranca conforme sua necessidade, faca um "netstat -na", identifique os servicos tcp e ip que estao rodando, e bloqueie todos os servicos que nao devem ficar expostos. Coloque em /etc/hosts.allow: sshd: ALL Coloque em /etc/hosts.deny: ALL: ALL EXCEPT 127. 192.168.1. (adapte para o IP da sua rede...) ****************************************************** ****************************************************** ****************************************************** ****************************************************** ****************************************************** Endereço: http://www.Dicas-l.com.br/dicas-l/20011120.shtml -------------------------------------------------------------------- Configuração Firewall --------------------------------------------------------------------- Colaboração: Alexandre Garbelini Segue script para você colocar em seu FIREWALL, bloqueia sites (se você não estiver usando squid como proxy ou proxy transparente). Estas linhas devem estar presentes no seu script de FIREWALL antes do IP Masquerading. No diretório /var você deve criar um arquivo chamado "sites", dentro deste arquivo você poderá colocar os domínios ou IP´s dos sites a serem bloqueados. Mesmo que o site possua balanceamento (Para o mesmo domínio várias máquinas respondem), basta colocar os domínios (nomes, por exemplo www.uol.com.br) que o ipchains converte para todos os IP´s que respondem por este domínio. O comando egrep tem por finalidade retirar as linhas comentadas e as linhas em branco. echo "Bloquear sites" for i in `cat /var/sites | egrep -v '#'| egrep -v ' '` do /sbin/ipchains -A forward -j REJECT -d $i /sbin/ipchains -A forward -j REJECT -s $i done echo " - Habilitando IP Masquerading na rede interna 1 para internet." /sbin/ipchains -A forward -j MASQ -i $EXTINT -s $INTLAN -d $UNIVERSE Onde: EXTINT - Interface externa (eth0, eth1...) INTLAN - IP da rede interna UNIVERSE - é 0.0.0.0/0 O script que lê informações em um arquivo e aplica em um comando não serve apenas para implementações em FIREWALL, podemos adaptar esta estrutura para muitas outras aplicações basta utilizarmos a criatividade. ******************************************** ****************************************************** Configurando uma rede local com acesso à Internet: Uma das principais características do sistema UNIX é o seu completo suporte à rede e com o Linux isto não seria diferente. O Conectiva Linux possui uma interface fácil, no ambiente X Window, para configurar uma rede tanto local quanto remota. Este tutorial aborda os seguintes tópicos (pelo motivo de um depender do outro): - Configuração do modem. - Configuração da placa de rede. - Configuração do acesso à Internet. - Configuração da rede local. - Configuração do IP Masquerading. Neste tutorial será abordada também a seguinte situação: o seu modem está em uma das quatro seriais padronizadas (cua0 à cua3 ou, mais recomendável, ttyS0 à ttyS3), com o endereço e a interrupção padrão (no DOS seria, por exemplo, COM4 IRQ3); a sua placa de rede possui barramento PCI ou ISA sendo compatível com NE2000; seu provedor utiliza a autenticação PAP e o protocolo PPP. Assim a configuração ocorrerá de forma incrívelmente simples. A rede local terá uma máquina servidora conectada à Internet, fornecendo às outras máquinas da rede, que são as máquinas cliente, o acesso a Internet também. O protocolo para que isso funcione é o TCP/IP. A rede foi montada com base nos endereços da Classe C (RFC 1597), usando os endereços IP 192.168.x.x. Este endereço é designado especialmente para Intranets. Servidor => 192.168.1.1 Clientes => 192.168.1.2, 192.168.1.3 etc. Network => 192.168.1.0 Netmask => 255.255.255.0 Broadcast => 192.168.1.255 O sistema operacional usado no servidor é o Conectiva Linux. Nos clientes pode-se usar o Conectiva Linux ou o Windows 95. Para que a rede funcione é preciso que o Kernel do Linux tenha suporte a certos recursos, para funcionar o IP Masquerade, a rede TCP/IP e os drivers da placa de rede. Na instalação inicial do Conectiva Linux, este suporte já existe, mas se você compilou um novo kernel para seu sistema, pode ser necessário recompilá-lo para reabilitar os recursos necessários. Para ativar os suportes no kernel entre no menu de configurações e ative os seguintes itens: Dê um "make menuconfig" e habilite essas opções (abaixo tem um exemplo do kernel 2.0.36, a versão 2.2.x possui algumas mudanças mas segue o mesmo esquema): Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Loadable module support ---> [*] Enable loadable module support [*] Set version information on all symbols for modules [*] Kernel daemon support (e.g. autoload of modules) General setup ---> [*] Networking support Networking options ---> [*] Network firewalls [*] Network aliasing [*] TCP/IP networking [*] IP: forwarding/gatewaying [*] IP: multicasting (recomendado) [*] IP: firewalling [*] IP: masquerading [*] IP: ipautofw masq support (recomendado) [*] IP: ICMP masquerading (recomendado) [*] IP: Always defragment (recomendado) Network device support ---> Dummy net driver support (recomendado) [*] Network device support PPP (point-to-point) support [*] Ethernet (10 or 100Mbit) [*] PCI Ethernet adapters (se sua placa for PCI) PCI NE2000 support (se sua placa for PCI) [*] Other ISA cards (se sua placa for ISA) NE2000/NE1000 ISA support (se sua placa for ISA) Character devices ---> <*> Standard/generic serial support Salve as configurações e recompile seu kernel. Depois você deve compilar e instalar os módulos. Consulte o tópico "Atualizando e ou compilando o kernel" para uma melhor explicação. Pelo cliente é possível navegar na Web, receber e enviar e-mails, dar Telnet, FTP, Ping, usar o ICQ e o RealPlayer. 1) Configurando o modem e a placa de rede no Conectiva Linux: 1.1) Configurando o Modem: Nos sistemas Linux, as portas seriais são denominadas de forma diferente em relação aos sistemas DOS/Windows. Enquanto que no DOS elas são tratadas como COM1 à COM4, no Linux as portas seriais são tratadas como dispositivos cua0 à cua3 (ou ttyS0 à ttyS3) respectivamente (/dev/cua0 à /dev/cua3). Através do "control-panel" no X Window entre em "Modem Configuration". Selecione a porta serial na qual seu modem está conectado e clique em "OK". Será criado o link "/dev/modem" para o seu modem device. 1.2) Configurando a placa de rede: Caso a sua placa seja ISA digite no console "modprobe ne io=0x300 irq=10" (substitua 0x300 e 10 pelos valores de I/O e IRQ corretos da sua placa de rede!). Então edite o arquivo /etc/conf.modules adicionando: alias eth0 ne options ne io=0x300 irq=10 Caso a sua placa seja PCI digite no console "modprobe ne2k-pci" e veja se a sua placa de rede foi detectada corretamente. Então edite o arquivo /etc/conf.modules adicionando: alias eth0 ne2k-pci Se você tiver problemas com o módulo ne2k-pci, use então o módulo ne. Para isso digite no console "modprobe ne" e anote os valores de I/O e IRQ da sua placa de rede. Então edite o arquivo /etc/conf.modules adicionando: alias eth0 ne options ne io=0x6000 irq=10 (substitua pelos valores corretos!) Se o comando modprobe não funcionar adequadamente execute o comando "depmod -a" e tente novamente. 2) Configurando o acesso à Internet no servidor com Conectiva Linux: Através do "control-panel" no X Window entre em "Network Configuration". 2.1)Na seção Interfaces: Clique em "Add" e selecione "PPP", clique em "OK". Então coloque: Phone Number: numero_do_provedor Ative "Use PAP authentication" (depende do provedor!) PPP login name: seu_login_do_provedor PPP password: seu_password_do_provedor Clique em "Customize", será aberta a janela "Edit PPP Interface". 2.1.1)Na seção Hardware: Deixe ativado apenas "Use hardware flow control and modem lines" e "Abort connection on well-known errors". A opção "Escape control characters" deve ficar desativada. Opcionalmente poderá deixar ativado também "Allow any user to (de)activate interface". Em "Line speed:" coloque a velocidade de seu modem. Para um modem com UART 16550 poderá ser colocado 115200. Em "Modem Port:" coloque a porta serial no qual seu modem está conectado. Se o modem já foi configurado no "control-panel" coloque "/dev/modem". Em "PPP Options:" deixe em branco. 2.1.2) Na seção Communication: Modem Init String: ATZ Modem Dial Command: ATDT ou ATDP Phone Number: número_do_telefone_do_provedor Não selecione "Debug connection". E o resto fica em branco. 2.1.3) Na seção Networking: Não deixe selecionada a opção "Activate interface at boot time". Selecione apenas "Set default route when making connection" e "Restart PPP when connection fails". Deixe os outros campos em branco exceto o campo "MRU (296-1500):" em que pode ser colocado o valor 1500 e nos campos "timeout" que pode colocar 1 nos dois para uma rediscagem rápida. 2.1.4) Na seção PAP coloque: Send username: seu_username_do_provedor O resto deixe como está. Agora na janela "Edit PPP Interface" clique em "Done" e depois em "Save" para salvar as configurações. 2.2) Na seção Names coloque: Hostname: nomedoservidor.dominio Domain: dominio.do.provedor Search for hostnames in additional domains: DEIXE EM BRANCO Nameservers: DNS.do.provedor (quantos existir e um por linha!) Clique em "Save" para salvar as configurações. 2.3) Efetuando a conexão: Para conectar ao provedor vá através do "control-panel" no X Window em "Network Configurator", e na seção "Interfaces" selecione "ppp0" e clique em "Activate". Para desconectar clique em "Deactivate". Os usuários deverão usar o programa "usernet" (dentro do X) para iniciar a conexão. Para conectar pelo console vá para o diretório "/etc/sysconfig/network-scripts" e digite: # ./ifup-ppp ifcfg-ppp0 & (para conectar) # ./ifdown-ppp ifcfg-ppp0 & (para desconectar) E os usuários irão utilizar os seguintes comandos no console: # /usr/sbin/usernetctl ifcfg-ppp0 up (para conectar) # /usr/sbin/usernetctl ifcfg-ppp0 down (para desconectar) Se você quiser saber o seu endereço IP na Internet use um dos seguintes comandos: # tail /var/log/messages ou # ifconfig 3) Configurando a rede local: 3.1) Configurando o servidor com Conectiva Linux: Através do "control-panel" no X Window entre em "Network Configuration". 3.1.1) Na seção Names coloque: Hostname: nomedoservidor.dominio Domain: dominio.do.provedor Search for hostnames in additional domains: DEIXE EM BRANCO Nameservers: DNS.do.provedor (quantos existir e um por linha!) 3.1.2) Na seção Hosts coloque: Clique em "Add" para adicionar cada linha abaixo. IP Name Nicknames 127.0.0.1 localhost 192.168.1.1 nomedoservidor.dominio nomedoservidor 192.168.1.2 nomedocliente1.dominio nomedocliente1 192.168.1.3 nomedocliente2.dominio nomedocliente2 ... 3.1.3) Na seção Interfaces coloque: Caso não tenha a interface "eth0" clique em "Add" e escolha "Ethernet". Se já tiver a interface "eth0" selecione-a e clique em "Edit", então coloque: IP: 192.168.1.1 Netmask: 255.255.255.0 Network: 192.168.1.0 Broadcast: 192.168.1.255 Ative o "Activate Interface at boot time". (recomendado) Ative o "Allow any user to (de)activate interface". (opcional) Em "Interface configuration protocol" coloque "none". Clique em "Done" e "Save". 3.1.4) Na seção Routing: Deixe tudo vazio! Clique em "Save" e "Quit". Fim! Se não quiser reiniciar a máquina para ativar a rede, vá na seção "Interfaces" selecione "eth0" e clique em "Activate". 3.1.5) Confirme a configuração nos seguintes arquivos: => /etc/hosts 127.0.0.1 localhost 192.168.1.1 nomedoservidor.dominio nomedoservidor 192.168.1.2 nomedocliente1.dominio nomedocliente1 192.168.1.3 nomedocliente2.dominio nomedocliente2 => /etc/resolv.conf search dominio.do.provedor nameserver DNS.do.provedor nameserver DNS.do.provedor (caso tenha mais de um!) => /etc/HOSTNAME nomedoservidor.dominio => /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4=no HOSTNAME=nomedoservidor.dominio GATEWAYDEV= GATEWAY= => /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 USERCTL=yes ONBOOT=yes BOOTPROTO=none BROADCAST=192.168.1.255 NETWORK=192.168.1.0 NETMASK=255.255.255.0 IPADDR=192.168.1.1 => /etc/host.conf order hosts,bind multi on Tudo confirmado!!! 3.2) Configurando o cliente com Conectiva Linux: Através do "control-panel" no X Window entre em "Network Configuration". 3.2.1) Na seção Names coloque: Hostname: nomedocliente.dominio Domain: dominio.do.provedor Search for hostnames in additional domains: DEIXE EM BRANCO Nameservers: DNS.do.provedor (quantos existir e um por linha!) 3.2.2) Na seção Hosts coloque: Clique em "Add" para adicionar cada linha abaixo. IP Name Nicknames 127.0.0.1 localhost localhost.localdomain 192.168.1.1 nomedoservidor.dominio nomedoservidor 192.168.1.2 nomedocliente1.dominio nomedocliente1 192.168.1.3 nomedocliente2.dominio nomedocliente2 ... 3.2.3) Na seção Interfaces coloque: Caso não tenha a interface "eth0" clique em "Add" e escolha "Ethernet". Se já tiver a interface "eth0" selecione-a e clique em "Edit", então coloque: IP: 192.168.1.2 (ou 192.168.1.3 etc.) Netmask: 255.255.255.0 Network: 192.168.1.0 Broadcast: 192.168.1.255 Ative o "Activate Interface at boot time". (recomendado) Ative o "Allow any user to (de)activate interface". (opcional) Em "Interface configuration protocol" coloque "none". 3.2.4) Na seção Routing: Nao selecione "Network Packet Forwarding (IPv4)". Default Gateway: 192.168.1.1 Default Gateway Device: eth0 Aperte "Add" e coloque: Device: eth0 Network: 192.168.1.0 Netmask: 255.255.255.0 Gateway: 192.168.1.1 Clique em "Done". Clique em "Save" e "Quit". Fim! Se não quiser reiniciar a máquina para ativar a rede, vá na seção "Interfaces" selecione "eth0" e clique em "Activate". 3.2.5) Confirme a configuração nos seguintes arquivos: => /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.1.1 nomedoservidor.dominio nomedoservidor 192.168.1.2 nomedocliente1.dominio nomedocliente1 192.168.1.3 nomedocliente2.dominio nomedocliente2 => /etc/resolv.conf search dominio.do.provedor nameserver DNS.do.provedor nameserver DNS.do.provedor (caso tenha mais de um!) => /etc/HOSTNAME nomedocliente.dominio => /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4=no HOSTNAME=nomedocliente.dominio GATEWAYDEV=eth0 GATEWAY=192.168.1.1 => /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 USERCTL=yes ONBOOT=yes BOOTPROTO=none BROADCAST=192.168.1.255 NETWORK=192.168.1.0 NETMASK=255.255.255.0 IPADDR=192.168.1.2 (ou 192.168.1.3 etc.) => /etc/host.conf order hosts,bind multi on Tudo confirmado!!! 3.3) Configurando o cliente com Windows 95: (Não entrarei em detalhes aqui!) Em "Iniciar/Configurações/Painel de Controle" entre em "Rede". Adicione a sua placa de rede e o protocolo TCP/IP. Selecione "TCP/IP -> Placaderede" e clique no botão "Propriedades". Na pasta "Endereço IP" selecione "Especificar um endereço IP:" e coloque: Endereço IP: 192.168.1.2 (ou 192.168.1.3 etc.) Máscara da sub-rede: 255.255.255.0 Na pasta "Gateway" adicione "192.168.1.1". Na pasta "Configuração DNS" selecione "Ativar DNS". E coloque: Host: nomedocliente Domínio: dominiodocliente Em "Ordem de pesquisa do servidor DNS" adicione o(s) DNS de seu provedor. Em "Ordem de pesquisa sufixo do domínio" adicione o domínio do seu provedor. As outras pastas deixe como estão. Clique em "OK" em todas as janelas e reinicialize o sistema. Você pode opcionalmente criar o arquivo "HOSTS" no diretório do Windows com o seguinte conteúdo: 127.0.0.1 localhost 192.168.1.1 nomedoservidor.dominio 192.168.1.2 nomedocliente1.dominio 192.168.1.3 nomedocliente2.dominio Veja o exemplo chamado HOSTS.SAM no diretório do Windows. Teste a sua conexão com o servidor da sua rede digitanto em "Iniciar/Executar..." o comando: ping 192.168.1.1 4) Ativando o IP Masquerade no servidor com Conectiva Linux: O IP Masquerade é o que faz todas as máquinas cliente acessarem a Internet quando o servidor estiver conectado. Se o seu Linux usa o kernel 2.0.x você usará o programa "Ipfwadm" e se o kernel for 2.2.x será usado então o programa "Ipchains". Primeiro verifique se o programa necessário está instalado em seu sistema. Caso não esteja instale-o a partir do seu disco do Conectiva. Ele está no diretório "/conectiva/RPMS". Agora você deverá executar os comandos abaixo, um de cada vez, no console: echo "1" > /proc/sys/net/ipv4/ip_forward /sbin/depmod -a /sbin/modprobe ip_masq_ftp.o /sbin/modprobe ip_masq_irc.o /sbin/modprobe ip_masq_raudio.o /sbin/modprobe ip_masq_cuseeme.o Para o kernel 2.0.x, que usa o ipfwadm, execute os comandos abaixo: /sbin/ipfwadm -F -f /sbin/ipfwadm -F -p deny /sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 Ou, se for o kernel 2.2.x, que usa o ipchains, execute os comandos abaixo: /sbin/ipchains -F forward /sbin/ipchains -P forward DENY /sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0 Esta é uma configuração bem genérica. Se você quiser bloquear alguns serviços ou algumas portas consulte a documentação sugerida abaixo. Adicione estas linhas no final do arquivo "/etc/rc.d/rc.local" para que o IP Masquerade seja ativado durante a inicialização do sistema. Você poderá, ao invés de adicionar no "/etc/rc.d/rc.local", criar um script com estas linhas para ativar o IP Masquerade quando for necessário. Para isto crie um arquivo com estas linhas colocando no inicio a seguinte linha: #!/bin/sh Depois use o seguinte comando para tornar o arquivo executável: # chmod +x arquivo Bastando então executar este arquivo para que seja ativado o IP Masquerade. Se depois você quiser desativar o IP Masquerade, execute os comandos abaixo: Para o kernel 2.0.x: /sbin/ipfwadm -F -d m -S 192.168.1.0/24 -D 0.0.0.0/0 Para o kernel 2.2.x: /sbin/ipchains -D forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0 E mais o comum para as duas versões de kernel: /sbin/rmmod ip_masq_ftp /sbin/rmmod ip_masq_irc /sbin/rmmod ip_masq_raudio /sbin/rmmod ip_masq_cuseeme echo "0" > /proc/sys/net/ipv4/ip_forward 5) Bibliografia: Linux IP Masquerade Resource Linux IP Masquerade Resource The Linux Manual Linux IP Masquerade mini HOWTO Setting Up IP Masquerade on RedHat Linux 5 IP Masquerade FAQ Ipfwadm Page Indyramp's IP Masquerading site RedHat PPP Setup Tips RedHat Dial-up Tip The Linux Network Administrators' Guide HOWTOs IP Masquerade mini HOWTO Ethernet HOWTO ISP Hookup HOWTO PPP HOWTO Intranet Server HOWTO Kernel HOWTO Modules Installation mini HOWTO ***************************************************************** ***************************************************************** *****************************************************************