LINUX NEWBIE ADMINISTRATOR GUIDE
ver. 0.154 2001-09-02 by Stan, Peter and Marrei Klimas

A última versão deste guia está disponível em http://sunsite.dk/linux-newbie.
Copyright (c) <1999,2000,2001> by Peter and Stan Klimas. Sua resposta, comentários, correções, e melhorias são apreciados. Envie-os para linux_nag@canada.com Este material pode ser distribuído somente sob os termos e condições estabelecidas pela Open Publication License, v1.0, 8 ou posterior http://opencontent.org/openpub/ com as modificações estabelecidas em lnag_licence.html.





Parte 4.5: FAQ do Administrador Novato em Linux- Rede


Conteúdo:
4.5 Rede
   4.5.1 Seria proveitoso configurar minha rede doméstica?
   4.5.2 Como configurar minha rede doméstica?
   4.5.3 Eu tenho problemas ao configurar minha conexão dial-out
   4.5.4 Como navegar na Internet a partir de meu computador em rede sem um modem?
   4.5.5 Como uso o Samba?
   4.5.6 Sendmail
   4.5.7 Servidor Web simples (rodando o Apache)
   4.5.8 Servidor ftp simples
   4.5.9 Como alguém pode ter acesso a meu computador a partir do mundo externo quando eu estou na internet usando um conexão via telefone?
   4.5.10 Como o meu computador em casa pode ser hackeado?


4.5 Definindo uma rede

4.5.1 Seria proveitoso configurar minha rede doméstica?

Isto é uma excelente idéia. Permitirá que você use as maquinas que estão encostadas por que não tem poder de computação suficiente para rodarem sozinhas. Os benefícios incluem o compartilhamento de discos, zipdrives, CDROMs, modem, impressoras, até placas de som, execução de programas remotos(em modo texto ou gráfico), navegar na Internet em todos os computadores ao mesmo tempo usando apenas uma conexão telefônica. Se você perder o controle de sua maquina você pode também remotamente encerra-la e dai evitar possíveis problemas -- veja a resposta sobre encerramento do sistema (shutting down) para maiores detalhes.

4.5.2 Como configurar minha rede doméstica?

Hardware. Seu hardware deve ser configurado adequadamente. Sua placa de rede deve ser configurada durante a instalação inicial do RedHat. Se você acrescentou uma placa de rede posteriormente as chances são que ela seja autodetectada e configurada durante a inicialização subsequente (pelo kudzu).  Se ela não foi detectada, você pode definir os parâmetros de sua placa de rede agora. Se você tem mais que uma placa de rede em seu computador, você também precisará reconhecer a segunda placa manualmente por que o Linux somente irá autodetectar somente uma placa.
Sob o Linux a maioria dos drivers para placas de rede são implementados como módulos. Assim a definição de uma placa manualmente envolve a carga do modulo apropriado com seus parâmetros. Você não precisa recompilar o kernel e nem reinicializar a maquina(a menos que você tenha uma placa muito incomum). Para determinar qual(is) modulo(s) e parâmetros você precisa, você deve consultar a documentação que vem com o código fonte do kernel.:
less /usr/src/linux-2.4/Documentation/networking/net-modules.txt
Se necessário você listar todos os módulos disponíveis para o seu kernel usando o seguinte:
modprobe -l | more
Se você precisar de mais ajuda, veja o Guia do Administrador de Rede Linux(arquivo /usr/share/doc/LDP/nag em seu sistema ou tente http://metalab.unc.edu/mdw/index.html#guide).  Este excelente guia é conhecido como nag.
Existem varias maneiras de se carregar um modulo no kernel. Para uma placa de rede, a maneira mais simples é executar como root o comando netconf e especificar o nome do modulo ali.  Outra alternativa é abrir um terminal e executar "su" (para se tornar root) e então executar /usr/bin/kernelcfg
Na maioria dos casos, você não tem que especificar os parâmetros (IRQ e endereço) para o seu modulo--o modulo deverá saber quais são eles. Entretanto, os parâmetros foram um problema na minha configuração de duas placas de rede em um computador - - você deve se certificar que não há conflitos de hardware.  Uma fonte comum de problemas é que as placas querem se configurar em IRQ 5, o qual é ocupado pela SoundBlaster, ou IRQ 3 o qual fica em conflito com sua segunda porta serial (COM2, cua1, ttyS1). A inspeção dos arquivos /proc/interrupts, /proc/ioport e lendo as mensagens de inicialização do sistema pode ajudar.
Por exemplo, minha placa WD8013 (a mesma SMC Elite e SMC Elite de acordo com o guia nag) roda usando o IRQ 10 (definido através de um jumper na placa e eu especifiquei este IRQ na definição do modulo do kernel), no endereço de I/O 0x300 e usa o modulo "WD".  Minha placa "SMC EtherEZ" (sem definição de jumper na placa) usa o IRQ 9, endereço de I/O 0x240 e usa o modulo "SMC EtherEZ". Por favor, não se esqueça de especificar o "0x" inicial ao especificar o endereço de I/O - - ele informa que o endereço está sendo especificado em hexadecimal caso contrario o número seria tratado como decimal.
Depois que o módulo é carregado, você pode examinar o arquivo /proc/modules para ver se o módulo está mesmo carregado(ou execute lsmod como root).  O arquivo de configuração dos módulos é /etc/modules.conf porisso se você encontrar dificuldades(por exemplo, eu tive dificuldades de remover os módulos carregados por engano), simplesmente edite este arquivo manualmente, por exemplo, usando pico.
Rede.  Depois de definir a placa de rede e conectar os cabos, configure a rede executando(como root):
netconf
Este programa tem instruções de uso!  netconf pode também ser executado sob uma interface gráfica, mas eu não tentei fazer isto. Se você precisa compreender melhor como a rede funciona, você pode ler o Guia anteriormente mencionado, o nag. Pode também ler este material de ajuda : http://ieee.uow.edu.au/~mjp16/wylug-netlinux/notes.html.
Ele também contem exemplos muito claros de como montar uma pequena rede para escritório que como a nossa rede doméstica tem conexão ao mundo externamente por períodos de tempo limitados.
Como e o que informar em netconf depende de sua rede. Você certamente irá preencher "Basic Host Information"(informação básica do host para habilitar a primeira interface ethernet, eth00,  preencha o nome, aliases, e o numero IP de seu computador local) e o "Information About Other Hosts" (Informações a respeitos de outros hosts, nomes, aliases, e endereços IP de outros computadores em sua rede doméstica). Estas informações vão para os arquivos : /etc/hosts e /etc/sysconfig/network, assim você pode inspecionar estes arquivos e ajusta-los manualmente.
Quando configurar a rede, não se importe com o "driver loopback"o qual tem o endereço IP 127.0.0.1.  Ele está sempre ali - - é o endereço IP através do qual o computador conversa consigo mesmo.
Se você não tem um endereço IP (como será o caso tipicamente para uma rede doméstica sem conexão permanente ao mundo externo), você pode inventar um. Não é de muita importância qual numero ele é desde que quando se conectar ao mundo externo através de seu modem, você receberá um endereço IP dinamicamente alocado(uma maquina pode ter muitos endereços IP ao mesmo tempo). O endereço IP que você inventou deve estar formalmente correto e a mascara de rede deve casar com a classe da rede(classe A, B, ou C)   Veja o capítulo sobre endereços IP no guia nag já mencionado (/usr/doc/LPD/nag em seu sistema, ou se você não o tem, baixe-o de http://metalab.unc.edu/mdw/index.html#guide.
Para uma rede doméstica, você pode inventar um endereço classe C(até 254 maquinas na rede, a menor) o qual tem os primeiros três dígitos entre 192 e 223. Os últimos 3 dígitos identificam a maquina em sua rede classe C e devem estar entre 1 e 254(não use 0, ele significa “a rede inteira” ou 255 que é o endereço de broadcast). Os dois conjuntos do meio do endereço IP pode ser qualquer coisa entre 0 e 255. Dai que 223.223.223.255 é a primeira maquina na rede de classe C 223.223.223.0(o último 0 significa a rede inteira), com o endereço de broadcast 223.223.223.255. A mascara de rede para uma classe C é sempre 255.255.255.0 (a menos que você subdivida sua rede em subredes menores, o que não é discutido aqui).
Mais do que inventar um número IP, poderia ser melhor/mais seguro usar um dos números reservados para redes privadas. Para mim, o numero IP trabalha muito bem.
Tipicamente, a primeira maquina em uma rede é aquela na qual se espera que ela tenha a conexão com o mundo externo(por que ela foi conectada primeiro, mas não há nenhum padrão para isto). Assim, eu preenchi o campo GATEWAY com xxx.xxx.xxx.1 (minha primeira maquina) em todas as máquinas, exceto para a maquina xxx.xxx.xxx.1, onde eu deixei este campo em branco.  Na realidade, embora eu tenha deixado em branco este campo, netconf insere o gateway 0.0.0.0 no arquivo /etc/sysconf.  Isto foi uma fonte de mensagens que incomodaram durante a carga da placa de rede na inicialização do sistema. Para fugir disto, eu editei /etc/sysconfig/network e deixei-o com o seguinte:
GATWAYDEV=
GATEWAY=
[Você não quer um gateway em sua interface ethernet nesta máquina se ela não o leva ao mundo externo. A interface ppp nesta primeira máquina será estabelecida como sendo o gateway default uma vez que você se conecta usando seu modem, por exemplo, usando kppp.]
O nome de um computador é algo inteiramente arbitrário - - o usuário principal normalmente escolhe uma palavra curta da qual gosta. O nome de domínio da rede doméstica é algo também inteiramente arbitrário, a menos que você tenha uma conexão permanente em cujo caso o nome de domínio é registrado para você. Tente inventar algo que não exista ainda - - pode facilitar sua vida caso venha a ter uma conexão permanente.
Tal como para o servidor DNS(também chamado de "named"), o RedHat 5.2 e 6.0 vem com o DNS preinstalado como “cache-somente” tornando-se fácil de configura-lo. Você pode também optar por não usar DNS de forma alguma - - se o DNS está procurando por um servidor externo e não pode encontra-lo, ele pode provocar algumas longas pausas(pode parecer que a máquina fica travada por alguns minutos).  Para usar um DNS local, o serviço "named" deve estar habilitado - - verifique isto rodando setup. Para definir como “cache-somente”, preencha os campos apropriados em netconf.  Por exemplo, informei "nameserver 1" para minha primeira máquina em todos os computadores (Eu informei o endereço de loopback 127.0.0.1 na máquina xxx.xxx.xxx.1, e o endereço xxx.xxx.xxx.1 nas outras maquinas).
Nenhuma rota para outras redes e hosts foram requeridos em minha rede, porque eu não tenho outras redes locais. Assim, eu deixei em branco este campo.
Alem de definir o hardware corretamente e preencher as informações solicitadas por netconf em cada computador, como descrito, acima, não precisei de fazer mais nada no RedHat standard para fazer minha rede funcionar.
Reeinicie todos os computadores um a um em qualquer ordem(isto não é necessário, mas não custa nada) e observe as mensagens de boot(se elas correrem muito rápido na tela, use <Shift><PgUp> para ver as linhas que já passaram, ou use dmesg  a partir da linha de comando para ve-las mais tarde). Você configurou suas placas corretamente? Use o comando route (como root) para verificar se a interface eth0 interface está rodando. Use o comando ping para testar as conexões entre suas maquinas individuais.  Tente fazer telnet para o seu próprio computador para ver se a interface loopback (lo) está funcionando:
telnet nome_da_maquina_onde_você_está
Depois de conseguir fazer login você pode sair da sessão telnet com o comando
exit
Finalmente, tente fazer telnet para um outro computador em sua rede:
telnet nome-de-uma-maquina-remota
Se isto funcionar em todas as maquinas, sua interface de rede eth0 está OK.
Depois de configurar o seu ppp e se conectar ao seu provedor Internet, você terá uma outra interface (ppp0) e então será capaz de fazer telnet para qualquer outra maquina no mundo.

4.5.3 Eu tenho problemas para configurar minha conexão ppp.

GUI.  Se eu fosse você, eu instalaria kde e usaria kppp. (Se você não tem o kde instalado, procure aqui para obter informações sobre como instala-lo.)  O kppp é realmente fácil de se configurar e usar. Para definir sua conexão ppp rode kppp(ele está no menu "K"-"Internet, ou você pode roda-lo a partir do xterm executando o comando kppp), pressione o botão "setup", crie uma conta, e preencha as informações requeridas: número do telefone, protocolo de autenticação, e o domínio de seu provedor de acesso a Internet e o endereço IP do servidor DNS de seu provedor. Todas estas informações poderão lhe ser passadas por seu provedor.
A seguir, eu criei um dispositivo chamado /dev/modem, na verdade, um link simbólico ao dispositivo /dev/ttyS1 (como root)
ln -s /dev/ttyS1 /dev/modem
ttyS1 funciona se se seu modem estiver na porta que o DOS chama de COM2. Use ttyS0 para COM1 e ttyS2 para COM3. O modem não discará de maneira alguma se você escolher uma porta errada.
Finalmente, eu tentei rodar o kppp mas ocorria uma mensagem de erro falando sobre um "lock".  Tive que me assegurar que a opção não estivesse no arquivo /etc/ppp/options editando-o (como root):
pico /etc/ppp/options
e deletei a palavra "lock", e então salvei o arquivo. Este problema não existe em versões mais recentes do kppp.
Depois destes simples passos, o kppp pode conectar o meu provedor de acesso a Internet sem nenhum problema no RedHat 5.2.
O RedHat 6.0 requereu um passo adicional: estabelecer o "suid" ("substituição do user id") de forma que "kppp" rodasse com o user id efetivo do root (por que ele precisa ter acesso direto ao hardware). Sem isto, o kppp reclama que ele não foi propriamente configurado e não pode criar o arquivo de trava(“lock file”)".  Isto tem de ser feito como root:
cd /usr/bin/
chmod a+s kppp
Resolução de problemas. Se seu modem se recusa a discar na porta que você tem certeza que foi escolhida corretamente, talvez o modem não esteja definido corretamente(ou talvez seja um a "winmodem"? Então jogue-o fora e compre um modem apropriado).  Em um caso, eu tive que rodar o setup kppp, editar "modem commands" e informar ATZ1 como o string de inicialização (ao invés do ATZ default para um modem padrão compatível com o padrão Hayes).
Se sua linha de telefone requer discagem por pulso (ao invés da discagem padrão por tom), você pode modificar os comandos de discagem do modem de ATDT" (="ATantion Dial Touchtone") to "ATDP" (="ATantion Dial Pulse"). Estes comandos funcionam com qualquer modem compatível com o padrão Hayes.
Se seu modem disca corretamente e você é capaz de se conectar, mas a autenticação falha, talvez o seu provedor de acesso use um protocolo de autenticação diferente. Ligue para ele e pergunte qual o protocolo de autenticação que ele usa. Ou tente pap, ou baseado-em-terminal, ou chap(no seu setup kppp) até que você encontre um protocolo que funcione com o seu provedor.
Em um caso eu tive problema com a confiabilidade de se estabelecer uma conexão(o erro dizia respeito a : "time-out for the pppd startup", e a conexão somente se estabelecia depois de algumas tentativas). O problema foi solucionado mudando a opção de "flow control(controle de fluxo)" (no setup kppp sob "device ou dispositivo") de "CRTSCTS" para XON/XOFF.   (CRTSCTS é o fluxo de controle recomendado na maioria dos casos.)
A performance (velocidade) e a confiabilidade da conexão com meu kppp foi muito melhorada depois que fiz o upgrade de RH5.2 para RH6.0.  Se você tiver problemas deste tipo, talvez seja hora de fazer um upgrade.
Se você continua a ter problemas na definição de seu ppp, você pode tentar rodar o minicom para ver se você consegue fazer o seu modem funcionar ali. minicom é algo parecido com PROCOMM para Linux. Ele deve estar presente em seu sistema se você o selecionou durante a definição inicial de seu RedHat. Eis um email de um newsgroup comp.os.linux.help que explica como iniciar o ppp manualmente usando minicom (editado por questões de espaço):
From:  mark <balthazaar@one.net.au>  Subject: Re: problema pppd com kppp
BachuZ wrote:
>>Também, como experiência, tente usar minicom para se conectar ao seu provedor, execute ppp manualmente - - isto pode testar scripts com erros  >como você o faria?
Fácil!! Se seu provedor não permite um logon manual então você terá problemas. Cada provedor que usei permite, porisso, .   1. Execute minicom.  2. disque para o seu provedor .  3. Faça o login.  4. Assim que seu ISP iniciar PPP, saia do minicom com ALT-Q (ou qualquer que seja a seqüência correspondente a sair sem resetar 'quit without reset').  5. Inicie o pppd, por exemplo,:
pppd -d -detach /dev/modem  115200 &
OK, PPP estará rodando.  Tente fazer um ping para o seu provedor ou qualquer outro endereço IP conhecido. Isto testa se tudo está OK. Por falar nisto, tudo isto está no PPP-HOWTO.  Se você conseguir rodar o PPP desta forma, então você tem um problema no seu script. Se o PPP não funciona, você tem problemas de configuração do PPP.
 
Linha de comando. Se você quiser rodar o seu ppp a partir da linha de comando, rode netconf (como root) para configurar sua primeira interface ppp(ppp0).  A informação que você deve fornecer é similar a que você forneceria usando kppp(dê uma olhada acima!): o dispositivo correto para a porta do modem, strings de inicialização e discagem, o numero do telefone de seu provedor de acesso, o protocolo correto de autenticação(fornecendo o nome para login e a password no campo adequado). Em versões mais antigas, o utilitário netconf não oferecia um campo onde pudesse informar o endereço IP do servidor DNS do meu provedor de acesso, porisso eu editava o arquivo /etc/ppp/pap-secrets (Eu uso o protocolo de autenticação PAP) e adicionei os dois endereços IP de servidores DNS ao fim da linha criada por netconf de forma que ficasse de forma parecida a:
# added by linuxconf
meu-nome-de-login ppp0 minha-senha 111.111.111.111 222.222.222.222
Ao terminar a definição, eu poderia rodar minha interface ppp0 usando o comando (como root, a menos que tivesse especificado em netconf que usuários normais pudessem rodar a interface):
ifup ppp0
e para desativar a interface ppp eu usaria
ifdown ppp0
A configuração do ppp na linha de comando não foi mais difícil na minha maquina do que rodar kppp e a conexão é mais confiável para mim. Existem vários scripts para linha de comando para iniciar/parar o ppp, mas eles aparentemente não são tão simples de configurar e usar, e muitos novatos parecem ter problemas com eles.
Se esta minimalista definição de ppp não funcionar com você, eis alguns links úteis:
Roderick A. Anderson < raanders@altoplanos.net > escreveu:
Eu tenho uma página web para configurar diald para funcionar com o Linux RedHat 5.x que funciona sempre para mim. Ela está em http://home.altoplanos.net/~raanders/diald.html
 
Bill Unruh < unruh@physics.ubc.ca > escreveu:
Eu queria chamar sua atenção para a página http://axion.physics.ubc.ca/ppp-linux.html para instruções detalhadas em como definir o ppp. Isto é especialmente para casos nos quais o lado remoto usa (talvez sem que o provedor diga isto a você) PAP ou CHAP. Enquanto que o kppp é muito útil, eis aqui um conjunto de situações onde ele pode falhar.

4.5.4 Como navegar na rede a partir de meu computador em rede sem um modem?

Um outro computador em sua rede deve ter um modem(ou uma outra conexão a Internet). Defina o mascaramento IP. Desta forma, todos os pedidos que saem de sua rede para o seu provedor de acesso aparecem como originados de um único computador, e seu provedor de acesso os deixará passar.
No REDHAT 5.2, o mascaramento simples requeria apenas um comando (no computador com o modem):
/sbin/ipfwadm -F -p m
Isto define o mascaramento como a política padrão de propagação de pacotes de seu firewall IP, e portanto é inseguro mas provavelmente ok para um usuário domestico. (O perigo é que se alguém “hackear” o seu computador, ele poderá usa-lo como um propagador anônimo para esconder sua identidade. Qualquer coisa que este hacker venha a fazer, você tomará a culpa. O hacker poderá até mesmo definir sua rede para receber de volta os pacotes da Internet confirmando então totalmente você como o agente de onde partiram os ataques maliciosos.) Para mais informações, por favor, verifique o arquivo /usr/doc/HOWTO/mini/IP-Masquerade. Uma definição mais segura é mostrada aqui:
ipfwadm  -F -p deny
ipfwadm  -F -a m -S 192.168.1.1/32 -D 0.0.0.0/0
ipfwadm  -F -a m -S 192.168.1.3/32 -D 0.0.0.0/0
ipfwadm  -F -a m -S 192.168.2.0/24 -D 0.0.0.0/0
Isto define uma política padrão para "deny"(negar) e explicitamente mascara duas máquinas com endereços IP 192.168.1.1 e 192.168.1.3. Ele também mascara qualquer maquina da rede 192.168.2.0. O numero /32 significa redes ponto a ponto (isto que dizer "máquina-a-máquina), a opção /24 identifica uma rede classe C. O -D 0.0.0.0/0 identifica a rota default que as maquinas a serem mascaradas usam para sair para a Internet.
No REDHAT 6.0 o nome do comando é ipfwadm-wrapper (ao invés de ipfwadm) e eu tenho que usar o segundo, método mais seguro (definir o mascaramento como a política padrão parece não funcionar mais em meu sistema). Com novos kernels (2.0.34 e posteriores) a propagação é desabilitada por default e deve ser ativada usando:
echo "1" > /proc/sys/net/ipv4/ip_forward
Na realidade, ipfwadm-wrapper é uma interface porque ela me permite usar as velhas regras de definição de políticas de firewall usando o novo código de firewall do kernel. Fazendo alguma coisa como o que se segue pode funcionar melhor para você:
ipchains -P forward DENY
ipchains -A forward -s 192.168.1.0/24 -j MASQ
Se você quer que estes comandos sejam sempre executados ao iniciar o seu sistema, adicione-os ao final do arquivo /etc/rc.d/rc.local . Este arquivo é algo parecido como o AUTOEXEC.BAT do DOS. Como sempre, é recomendado ler a página de manual e outras documentações para ver o que o comando faz e quais são as outras opções:
less /usr/doc/HOWTO/mini/IP-Masquerade
man ipfwadm
man ipchains
No REDHAT 7.1 (KERNEL 2.4.x) o firewall pode ser definido usando o novo comando iptables. Você pode ainda usar o velho ipchains, desde que você não rode iptables ao mesmo tempo. Assim, use ntsysv para se assegurar que ipchains esteja habilitado e que iptables esteja desabilitado.

4.5.5 Como usar o Samba?

Samba (smb)é usado para redes Linux-MS Windows. É um programa que faz com que uma máquina Linux possa ser um servidor MS Windows NT, e dai permitir que seus computadores baseados em MS Windows 3.1/95/98 conectem-se a rede. Samba não somente substitui o WinNT--ele é aclamado por fazer um trabalho melhor que o WinNT!
Uma das três máquinas em minha casa é uma maquina dual-boot Linux/Win95. Eu configurei a minha rede de forma que se eu iniciar no Win95, uma outra máquina Linux age como um servidor Samba. Desta forma, a máquina Win95 terá acesso a impressora da rede, diretórios compartilhados pelo Linux, pode fazer telnet, navegar pela Internet através de um modem no Linux, etc/ Eu posso também ter acesso aos arquivos em máquinas Win95 remotas a partir dos computadores Linux.
É necessário configurar o Samba somente em uma máquina Linux.
Primeiro, eu rodo setup  como root, escolho "System Services(Serviços do Sistema)" (RH6.0) ou "ntsysv" (RH5.2)  a partir do menu, e me asseguro que o serviço "smb" esteja habilitado. (O programa setup pode dar mais informações se você pressionar F1. No caso de você ficar curioso para que servem os vários serviços.)  Se o smb não estiver listado aqui, talvez você não o tenha instalado durante a definição inicial do RedHat.  Você pode colocar o CDROM do RedHat no drive, montar o CD, e executar o utilitário de instalação glint (RH5.2) ou o gnorpm (RH6.0) (como root) e acrescentar o Samba ao seu sistema.
A segunda parte é configurar o Samba. Isto é relativamente simples por que a configuracao dp Samba é feita através de um único arquivo bem documentado: /etc/smb.config . A configuração mínima inclui a especificação do nome do grupo de trabalho. Note que se você não suprir a informação "host allow", todos os hosts estarão com permissão o que pode ser ok em se tratando de uma rede doméstica. As outras opções no exemplo /etc/smb.conf que vem com seu CD RedHat CD pode requerer ajustes para se adequar as necessidades particulares, mas elas não tem que ser alteradas para se conseguir que uma maquina Windows se conecte ao meu servidor Samba.
Verifique se as opções
domain master = yes
domain logons = yes
estão habilitadas em /etc/smb.conf. Você provavelmente as desejará.
Sob o RH6.0, você pode também fazer uma configuração básica do samba usando (como root):
netconf
O terceiro passo é configurar sua máquina MS Windows 95 (ou outra qualquer) para trabalhar em rede. Isto é feito exatamente como se você estivesse se conectanddo a um servidor WinNT.  Certifique-se de habilitar a rede("client for Microsoft Network(cliente para redes Microsoft)") e preencha o nome do grupo de trabalho. Para fazer o login na rede ao iniciar a maquina MS Windows, use o seu código de login no Linux e sua password. Para ver se funcionou, clique no ícone "Network Neighborhood(Ambiente de Rede)"--seu servidor Linux deverá estar listado ali, e sob ele você deverá ver os diretórios compartillhados e impressoras que você escolheu como compartilhados no arquivo /etc/smb.conf.
Se você não pode ve-los ou usar os diretórios públicos, assegure-se que você os criou e definiu as permissões corretas de leitura/escrita para todos os usuários.
MS Windows 95b e posteriores (95c, 98, e Nts mais novos) podem usar criptografia de password..  Isto fará com que seus logins a partir da maquina Windows falhem, e você pode precisar habilitar esta opção no arquivo /etc/smb.conf:
encrypt passwords = yes
No servidor Linux, você iniciar, parar e verificar o status do servidor Samba usando estes comandos(como root):
samba start
samba status
samba restart
samba stop
Você precisa reiniciar o samba depois de alterar o arquivo /etc/smb.conf.
Você pode navegar na rede usando seu Netscape for Windows se você está conectado ao seu computador Linux através do Samba e a maquina Linux está no momento conectada a internet. Para fazer isto, o mascaramento IP deve estar definido na maquina Linux com o modem (descrito aqui) e você deve habilitar a resolução de nomes dns no samba no arquivo /etc/smb.conf :
dns proxy = yes
e então dizer ao Windows para habilitar o servidor dns, especifique o nome e o endereço IP do servidor de nomes(em Painel de Controle - TCP/IP).
Você pode também montar um diretório remoto Windows no seu sistema de arquivos Linux. Veja aqui para ver.
O que foi descrito acima é apenas um mínimo sobre a configuração do Samba. Você pode conseguir mais informações a partir de:
man samba; man smb.conf; man smbclient; man smbmount
less /usr/doc/HOWTO/SMB-HOWTO   (sob RH5.2)
documentation in /usr/doc/samba-2.0.3/doc  (sob RH6.0)
http://www.sfu.ca/~yzhang/linux/samba/  (samba minihowto)
http://www.germanynet.de/teilnehmer/101,69082/samba.html
e também estudando o arquivo /etc/smb.conf .

4.5.6  Sendmail

O Sendmail é o sistema padrão de transporte de correio na Internet e é o padrão também no Linux RedHat (O Mandrake usa o PostFix). Como usuário, você não usa o sendmail diretamente - - ele é o engenho subjacente que gerência o correio em sua máquina atuando em segundo plano. Para ler/enviar correio em modo texto, você pode usar o pine ou o elm(escolha um e fique com ele - - pode ser inconveniente gerenciar duas caixas de correio separadamente). No KDE, você pode escolher para uso o “cliente de correio” disponível no menu K. Para se comunicar com o mundo externo através de sua conexão dialup, você provavelmente usaria o mailer Mozilla que está embutido no seu Netscape e o qual se comunica diretamente com a sua caixa de correio no seu provedor de acesso..
O Sendmail é muito flexível e robusto, mas também notoriamente difícil de gerenciar se você precisa customiza-lo para suas necessidades específicas. Por sorte, Red Hat (5.2 ou 6.x) vem com o sendmail que roda independentemente(embora com algumas limitações).
Em meu sistema doméstico(definição padrão do Red Hat), posso enviar correios para outro usuário na mesma máquina sem problemas(por exemplo, usando o pine). Posso enviar correio localmente ou para qualquer outro lugar no mundo a partir de qualquer software de correio desde que esteja conectado ao meu provedor de acesso a Internet através do modem (mascaramento IP habilitado).  Mas quando eu não estou conectado, o correio enviado fica na fila e aguarda que uma conexão a Internet esteja presente, mesmo que o correio deva ser enviado para um outro computador na minha rede doméstica.(um problema menor).  Ele é enviado uma vez que esteja conectado.  (Isto acontece por que sendmail fica tentando fazer uma pesquisa por nome DNS e isto não está disponível em meu sistema -O DNS padrão do RedHat é do tipo cache-only.)  Se você quer evitar isto no RH6.x, você pode usar netconf (como root) e especificar que o sendmail não deve usar DNS de maneira alguma (O Linuxconf que acompanha o RH5.2 não oferece a você esta opção).  Eu não uso DNS.
Sob o RedHat 6.x, você pode usar netconf para configurar outras opções do sendmail (como root).  Eu informei o nome de provedor de acesso Internet e os nomes de outras máquina em minha rede doméstica em "mail deliver system"-"relay to hosts". Também adicionei os nomes de minhas maquina da rede doméstica em "relay for by name".
Você deve estar consciente da limitação de sua simples configuração que surge se você envia correio a partir de sua rede doméstica (por exemplo, usando o pine), para o mundo além de sua rede Se você inventou um endereço IP e o nome de seu domínio não é registrado, não há nenhuma chance que você receba uma resposta.  Ao seu email é dado um endereço de resposta no formato : "nome-do-usuario@nome-do-domínio". Isto é o problema por que seu nome de domínio não existe, de acordo com qualquer servidor DNS no mundo externo.  Para contornar isto, você usa o cliente de correio do Netscape para se comunicar com o mundo além de sua rede doméstica. O Netscape usará as definições que você informou no menu "edit_preferences" para se comunicar diretamente com a sua caixa de correio no seu provedor(a qual reside em um servidor registrado de seu provedor de acesso) e dai ignora seu sistema de correio baseado em sua rede doméstica não registrada.  Uma outra possibilidade é especificar o endereço correto no campo "reply to". Se você o fizer no Netscape, você pode definir seu NetscapeMail para usar o seu computador local Linux como o servidor de correio, e desta forma será capaz de envia e-mail de seu NetscapeMail também para os computadores de sua rede doméstica (não somente para o mundo externo).  A opção "reply-to" pode também ser estabelecida na configuração do cliente de correio KDE se você usar o agente de correio KDE  No pine você poderá também especificar o endereço “reply-to-address” no "setup-configure",  "customized-hdrs" com alguma coisa como :
Reply-to:  joe@joe_net.net
onde "joe@joe_net.net" é seu endereço OK de email.
Se você quer buscar seus correios de sua caixa de correio baseada em seu provedor de acesso sem a ajuda do Netscape, você pode pensar então em usar o fetchmail (veja man fetchmail).

4.5.7 Um servidor web simples (rodando o Apache)

Estabelecer um servidor web simples(Apache) foi extremamente simples sob o RedHat 6.0.  Antes de mais nada tive que me certificar que o pacote rpm do Apache fosse instalado na minha instalação do RedHat.  Se você não fez isto coloque o seu CD do RedHat em seu, monte-o, e instale o pacote apache-*.rpm (ao invés do "*" o nome pode conter o número da versão e a plataforma). Se eu sei o que quero instalar, é simples faze-lo(como root):
cd /mnt/cdrom/RedHat/RPMS
rpm -ivh apache*.rpm
A seguir, eu rodo "setup" (como root) e me asseguro que o daemon httpd daemon (sob "system services(serviços do sistema") esteja habilitado.  [Um daemon é um programa que fica parado em segundo plano(background) e acorda quando ele é necessário. No caso do httpd, ele acorda quando alguém chama seu servidor http.]
Agora, o httpd será executado automaticamente a cada vez que eu iniciar o sistema(boot). Eu posso também inicia-lo manualmente usando (como root):
/etc/rc.d/init.d/httpd start
e para-lo usando:
/etc/rc.d/init.d/httpd stop
Eu devo ter antes o diretório /home/httpd (verifique se ele existe), e sob ele, o subdiretório html--este é o diretório raiz” para pessoas que acessem o meu computador.( "o diretório raiz deles" significa que eles não serão capazes de terem acesso a qualquer diretório acima do diretório /home/httpd/html/ em meu sistema.  Por padrão, este diretório contem alguns arquivos html e o manual que a instalação do apache coloca ali.  Desta forma eu posso me conectar ao meu servidor web a partir de qualquer máquina em minha rede doméstica. Por exemplo, eu poderia digitar no campo Location do Netscape:
http://nome-do-meu-servidor-web
e ser capaz de navegar pelo manual do apache.
Para colocar meu próprio conteúdo em meu servidor web, eu jogo os arquivos de exemplo do apache para qualquer lugar, e copio meus arquivos html (aqueles que quero tornar públicos) no diretório /home/httpd/html/ (não se esqueça de incluir o arquivo index.html , esta é a página que aparece primeiro quando alguém se conecta ao seu servidor).
Os arquivos de configuração e de logs do apache estão no diretório /etc/html/ se você quiser ve-los ou customiza-los. O arquivo de log pode ser visualizado em tempo real usando o comando (como root):
tail -f /etc/httpd/logs/access_log
[O comando tail normalmente mostra o fim(tail, em inglês, cauda) de um arquivo texto. Com a opção "-f", "tail" se mantém mostrado o fim do arquivo de log a medida que ele cresce - tornando realmente fácil monitorar o arquivo de log e ver quem se esta' se conectando ao seu servidor.]
Para uma definição em modo gráfico de seu servidor Apache, tente isto (no X-window, como root, se você instalou o "Comanche" a partir do CD do RedHat):
comanche

4.5.8 Um simples servidor ftp

Com versões mais antigas que minha distribuição RedHat Linux (RH<7.1),  a definição de um servidor ftp podia não ser tão simples - - ela funcionava de forma independente. Isto acontecer por que o serviço é habilitado por default com um dos serviços padrão (como o telnet e o gopher), no arquivo /etc/inetd.conf. Eis a parte relevante de meu arquivo /etc/inted.conf:
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  in.ftpd -l -a
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
gopher  stream  tcp     nowait  root    /usr/sbin/tcpd  gn
A segunda parte da definicacao do meu servidor ftp é o arquivo /etc/passwd o qual define a conta de acesso ftp:
ftp:*:14:50:FTP User:/home/ftp:
O ":" é um separador de campo. O primeiro campo é nome do account(usuário) "ftp", o "*" no segundo campo indica que a password está desabilitada (ninguém pode fazer login usando o nome de usuário “ftp”), a identificação do usuário é 14, a identificação do grupo 50, "FTP User" é um comentário, o diretório do usuário é /home/ftp, o último campo está vazio(para usuários normais, ele especifica o nome do shell do usuário).
Pelo fato desta definição já vir feita em meu RedHat,  qualquer pessoa pode fazer ftp para meu computador e ou fazer login como um usuário (uma password será solicitada e ele será dirigido para o seu diretório), ou fazer login como "anonymous" e dar o endereço de email como password). Qualquer usuário pode informar no campo Location no Netscape algo como se segue:
ftp://nome-de-meu-computador
e se conectar automaticamente (O Netscape cuidará de enviar o login "anonymous" e o endereço de email como password).
Os usuários de ftp "anonymous" são direcionados para o diretório /home/ftp ,  o qual aparece como sendo o diretório raiz para eles(eles não podem ter acesso a a qualquer diretório acima deste diretório raiz). Eu coloco os arquivos que quero servir no diretório /home/ftp/pub .
O diretório /home/ftp/bin contem os comandos que os usuários ftp remotos serão capazes de executar. Em meu sistema estes comandos são : compress, cpio, gzip, ls, sh, tar, zcat; todos com permissões de execução-somente (111).
O diretório /home/ftp/etc contem os arquivos de definição necessários para que o conta anonymous funcione (passwd, group, ld.so.cache). O diretório /home/ftp/lib contem as bibliotecas(eu imagino que estas bibliotecas são usadas pelos comandos que os usuários ftp anonymous podem executar).
Red Hat 7.1 usa xinetd no lugar do velho inetd, e a maioria dos serviços de rede estão desabilitados por default. Se você não pode fazer telnet para você mesmo ou outro serviço de rede que você precise esteja desabilitado, você deve inspecionar os arquivos no diretório /etc/xinetd.d, e editar o arquivo com o nome do serviço, de forma que ele contenha:
disable = no .

4.5.9 Como alguém de fora pode ter acesso ao meu computador quando estou na Internet via conexão telefônica?

A única dificuldade é que seu endereço IP é dinamicamente alocado para você pelo seu provedor a partir dos endereços que ele tem disponíveis, e portanto o seu endereço IP não é o mesmo a cada vez que você se conecta(a não ser que você tenha feito um acordo com seu provedor).  Para fazer telnet, ftp, ou ter acesso as suas paginas web(servidas pelo seu servidor apache) do mundo de fora alguém tem que sabe seu endereço IP corrente. Para saber qual é o meu endereço IP corrente, eu uso este comando de configuração de interface o qual quando é executado sem nenhum parâmetro mostra informações de todas as interfaces de rede ativas presentes na maquina:
/sbin/ifconfig
Em minha maquina ele mostra três parágrafos de informação: eth0(a primeira interface ethernet de rede que se liga aos outros computadores em minha rede doméstica), lo (a interface loopback-somente, aquela com 127.0.0.1, ela deve estar presente em cada máquina), e ppp0 (a primeira interface de protocolo ponto a ponto).  Meu endereço corrente, que me foi atribuído pelo meu provedor, é mostrado no cabeçalho ppp0.  (Sua maquina Linux pode ter múltiplos endereços atribuídos ao mesmo tempo, assim se você tiver um endereço estático que você usa em sua rede doméstica, ele ainda é valido mas visível somente dentro de sua rede doméstica)
Uma vez que eu saiba qual é o endereço IP eu posso envia-lo através do ICQ ou email para um amigo que pode então, por exemplo, fazer telnet em meu computador (ele deve ter uma conta em minha máquina) e rodar um programa em minha maquina linux, ou informar http://meu-endereço-ip no browser para navegar em minhas paginas, etc. Se o amigo tem Xwindows em sua máquina local, ele pode até rodar programas gráficos em meu servidor e direcionar a saída gráfica para o vídeo no computador dele.
Eu posso escrever um pequeno script que automaticamente notificará meu amigo quando eu estiver conectado a Internet e informar o nome deste script no kppp-setup-account-edit-dial-"execute program upon connect".  Eis o meu script que me notifica no serviço quando alguém em minha casa está online. (Eu digitei o texto em um arquivo texto e tornei o arquivo executável usando chmod o+x nome_do_arquivo) :
#!/bin/bash
sleep 15
/sbin/ifconfig | mail -s notificação meu_endereço_de_email
A primeira linha do script diz ao computador para interpretar este arquivo texto como um script do shell bash.  A segunda linha faz com que o script aguarde 15 segundos(justamente para ter certeza que o email não seja enviado antes que a conexão ppp esteja plenamente estabelecida).  A terceira linha executa o comando ifconfig cuja saída é canalizada para o utilitário mail que o envia para meu endereço ip sob o assunto "notificação".
Uma maneira mais flexível de se ter acesso ao seu computador em casa remotamente é configura-lo como um servidor dial-up (ao contrario a conexão que você usa quando você se conecta ao seu provedor).  Se alguém tem uma receita simples de como fazer isto, por favor, mande-a.
Para resumir, diferente do MS Windows 3.x/95/98 o qual restringe severamente o trafego para seu computador, o Linux é bastante orientado para rede e é fácil de se fazer todas as espécies de conexões de rede tanto para fora como para dentro de seu computador. As poderosas características de trabalho em rede são geralmente consideradas uma força do Linux mas, do ponto de vista de um novato, elas podem ser um problema (veja a próxima questão).

4.5.10 Meu computador doméstico pode ser “hackeado”?

Infelizmente, isto é perfeitamente possível e as tentativas de se faze-lo são muito comuns. Cada vez que você se encontra conectado ao seu provedor você está correndo risco. Leia a resposta anterior se você gostaria de saber como isto é possível. Obviamente, o risco é muito maior se você tem uma conexão permanente com a Internet([por exemplo, uma conexão adsl, ou uma conexão a cabo), e é menor se suas conexões são mais transientes(como é o caso típico da pouca duração das conexões feitas via modem e linha telefônica).
O perigo real é que o intruso seja capaz de fazer login em sua máquina em alguma conta e possa encontrar alguma outra falha de segurança e conseguir acesso de root. Isto é particularmente possível, se você é realmente um novato e sua maquina não esteja orientada quanto a segurança(você está em casa, não está ? - - e então você pensa: quem poderia se preocupar com segurança,).
Para se proteger, nunca deixe um estranho se conectar ao seu computador. Use passwords longas que contenham números e letras para todas as contas em seu computador.  Troque as passwords ocasionalmente.  A melhor maneira de forçar as políticas de segurança para todos os usuários de seu computador é rodar o linuxconf como root e sob "password and account policies" trocar o comprimento mínimo da password para 6 ou mais caracteres, o número mínimo de caracteres não alfabéticos para 1 ou 2,  o número de dias depois do qual a password deve ser trocado para 90 ou menos, e definir uma advertência a respeito de expiração da password para algo como 7 dias antes da expiração  Verifique aqui por mais informação a respeito de passwords fracas. Absolutamente NUNCA crie uma conta sem password, ou com uma password absurdamente fraca. Não trabalhe como root de forma habitual--se você executar programas com furos de segurança conhecidos, alguém pode encontrar uma maneira de “hackear” sua máquina.
É também uma excelente idéia ocasionalmente dar uma olhada nos arquivos que contem um registro de todos os logins feitos em seu computador: /var/log/secure (a log mais recente) /var/log/secure.1 (a mais antiga) /var/log/secure.2 (ainda mais antiga), etc.  Existem também outros arquivos de log úteis no diretório /var/log que você pode examinar, cheque-os de tempos em tempos. O sinal mais típico de advertência é um “scanning”(varredura) das portas de seu computador: existem entradas repetidas de pedidos de conexão a partir do mesmo número IP para sua porta de telnet, ftp e outras - - alguém tentou aprender mais a respeito de seu sistema.
Se você nunca usa conexões remotas para seu Linux em casa, você pode restringir os direitos de uso de telnet, ftp, etc... (todas as conexões estão listadas no arquivo /etc/inetd.conf) para as maquinas em sua rede doméstica. O acesso é controlado por dois arquivos:/etc/hosts.allow e /etc/hosts.deny .   Estes arquivos de controle de acesso trabalham da seguinte forma: Quando uma conexão externa é solicitada, o arquivo /etc/host.allow é pesquisado primeiro e se o nome da máquina de onde a solicitação de conexão foi feita existe, o acesso é permitido(independente de qualquer entrada no arquivo /etc/host.deny ).  Caso contrario, o arquivo /etc/host.deny é pesquisado e se o nome da mesma maquina existe, a conexão é encerrada. Se o nome da maquina não existe, a permissão é dada.  Como um exemplo, você pode negar acesso telnet e ftp ao seu servidor domestico a qualquer máquina do mundo externo a sua rede inserindo a seguinte entrada no arquivo /etc/hosts.deny :
in.telnetd, in.ftpd: ALL EXCEPT LOCAL, .nome-do-seu-domínio
Para mais informações, cheque o o excelente "Linux Network Administrator Guide" o qual certamente está presente em seu CD de distribuição RedHat  Eu imprimi este livro e o encapei.
B. Staehle (um guru Linux modemo) me escreveu para aconselhar a não instalar servidors de rede de forma alguma. “ Se seus serviços de rede não estão propriamente configurados, você pode ter seu computador destruído por algum script malicioso. Um novato nunca deve permitir serviços (ftp, telnet, www) para o mundo. Se você “deve” instala-los”, assegure-se de somente permitir conexões de sistemas que você controla. O arquivo /etc/hosts.deny deve conter
ALL: ALL
e /etc/hosts.allow deve conter somente
ALL: 127.0.0.1
para permitir conexões somente a partir do host especificado. Não use nomes de hosts! " <fim do conselho de Bill>
Verdade, meu arquivo /etc/host.deny está exatamente como aconselhado acima (ALL: ALL), mas meu arquivo /etc/hosts.allow permite que 2 computadores extras possam se conectar aos meus serviços de rede (os 2 números IP no exemplo são falsos):
ALL:  127.0.0.1, 100.200.0.255, 100.200.69.1
Para verificar quais serviços seu computador oferece ao mundo externo, você pode usar uma ferramenta baseada em web. Vá até http://www.sdesign.com/securitytest/ e clique em "scan me now".
Eis aqui alguns outros lugares que você poderá usar para que sua maquina seja “scanneada”:: http://crypto.yashy.com/   http://davidovv2.homestead.com/freetoolsservices.html  http://privacy.net/   http://scan.sygatetech.com/   http://security1.norton.com/us/intro.asp    http://suicide.netfarmers.net/    http://trojanscanner.com/cgi-bin/nph-portscanner    http://www.doshelp.com/dostest.htm    http://www.dslreports.com/secureme/   http://www.dslreports.com    http://www.earthlink.net/freescan/    http://www.grc.com   http://www.hackerwhacker.com/
http://www.nessus.org     http://www.netcop.com/newscan/fullscan.html     http://www.privacyscan.org    http://www.sdesign.com/cgi-bin/fwtest.cgi    http://www.sdesign.com/securitytest/index.html   http://www.securityspace.com/     http://www.vulnerabilities.org/nmapemail.html
Por razoes de segurança não é uma boa idéia anunciar a versão do sistema operacional que você usa. Eu substitui o conteúdo do arquivo /etc/issue e /etc/issue.net os quais mostravam em meu computador:
Red Hat Linux release 6.2 (Zoot)
Kernel 2.2.14-5.0 on an i586
pelo seguinte conteúdo
WARNING: THIS IS A PRIVATE NETWORK (ADERTENCIA: ESTA É UMA REDE PRIVADA
UNAUTHORIZED USE IS PROHIBITED AND ALL ACTIVITIES ARE LOGGED
(ACESSO NAO AUTORIZADO É PROIBIDO E TODAS AS ATIVIDADES SÃO REGISTRADAS)
IBM S/390 LINUX
Isto mistura uma brincadeira com um pouquinho mais de segurança (espero).
O conteúdo dos arquivos /etc/issue e /etc/issue.net são recriados a cada inicialização da maquina (quando o arquivo script /etc/rc.local é rodado). Assim, para fazer com que as mudanças sejam permanentes, eu posso fazer com que estes arquivos fiquem disponíveis para leitura-somente para todos os usuários (como root):
chmod a=r /etc/issue*
Ao invés do último comando, eu poderia editar (como root) o script /etc/rc.d/rc.local e comentar as 5 linhas com ###  de forma que a parte relevante fique:
# Isto regravará /etc/issue a cada boot. Assim, faça aqui quaisquer mudanças
# que você queira fazer em /etc/issue ou você as perderá quando você reiniciar a maquina
### echo "" > /etc/issue
### echo "$R" >> /etc/issue
### echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue
### cp -f /etc/issue /etc/issue.net
### echo >> /etc/issue
Uma outra boa medida de segurança é desabilitar o ping. Ping é como uma resposta a um sonar que seu computador envia de volta quando consultado por outro computador. Ele é útil para definir e depurar , para verificar se sua maquina está disponível em rede. Ele também pode ser usado para verificar sua maquina e/ou ataca-la inundando-a com pedidos de ping(“ping da morte. Para desabilitar a resposta de minha maquina ao pings vindos do mundo externo, eu uso mascaramento IP. Eu peguei e modifiquei os seguintes comandos e explicações de http://www.securityfocus.com/focus/linux/articles/linux-securing2.html:
ipchains -A input -p icmp --icmp-type echo-request -i ppp0 -j REJECT -l
         (1) (2)    (3)           (4)                 (5)     (6)    (7)
Os flags do ipchains são abaixo explicados:
      1. (A)crescenta uma nova regra.
      2. A cadeia onde a regra será aplicada, neste caso, a regra se aplicará a pacotes de entrada (input).
      3. (P)rotocolo onde será aplicada a regra. Neste caso ele é icmp.
      4. tipo de ICMP , neste caso todos os pedidos de icmp serão bloqueados. "ICMP echo" significa ping.
      5. Nome da interface Neste caso, é sobre a primeira conexão por telefone, ppp0.
      6. Alvo, ou o que realmente deve ser feito com o pacote em questão.
      7. Registre todos os pacotes que casem com os critérios desta regra no arquivo de log do sistema.
O mascaramento IP masquarading foi descrito em mais detalhes no capítulo sobre mascaramento neste guia.

Ir para a Parte: 5 - Atalhos e comandos Linux