Todos os administradores de sistemas possuem vícios particulares. Cada um é individualizado e único em sua forma de trabalhar, mas há algumas diretivas que muitos seguem ou que contribuiriam para que estes fossem melhores administradores.
Este capítulo enfatizará alguns problemas que um administrador de sistemas Linux pode encontrar, e quais são as formas mais simples de resolver tais problemas no Conectiva Linux, além de mostrar algumas atividades importantes que devem ser executadas pelos administradores.
Uma das principais atividades de um administrador é consultar aos arquivos de registro, também chamados de logs. Estes arquivos contêm informações sobre desempenho e utilização do sistema, além de ser a melhor maneira de se descobrir como uma máquina está se comportando no dia-a-dia. Se algum erro está ocorrendo, os arquivos de registro irão descrevê-lo.
Muitos programas instalados no servidor (inclusive o kernel) produzem mensagens, alertas, avisos e registros dos eventos ocorridos no sistema. Estas mensagens são guardadas e separadas em arquivos distintos por um programa chamado syslog. Elas ficam guardadas no disco rígido de uma forma organizada, por nível de importância e também de origem.
Uma forma de evitar e solucionar problemas que ocorrem no sistema é verificar rotineiramente os arquivos de log, encontrados no diretório /var/log/ (no Conectiva Linux). Este arquivos informam a data, a hora, o usuário, o que aconteceu e demais informações relativas a um processo.
Esta verificação dos arquivos de log pode ser automatizada, e em caso de algum alerta ou aviso específico, o administrador do servidor deve ser informado por e-mail. O programa ideal para estas atividades que se repetem com uma certa freqüência de tempo é o cron; ele pode também agendar a tarefa de apagar arquivos de log que atingem um tamanho muito grande, ou apagar arquivos temporários antigos.
Estes assuntos foram amplamente discutidos no guia. No Capítulo 5, discutiu-se sobre os serviços de agendamento de tarefas e no Capítulo 11 sobre os arquivos de registro para a manutenção do sistema. Verifique estes capítulos e faça as devidas configurações se necessário.
Outro controle que se deve ter em mente é o controle sobre os programas instalados. Tudo aquilo que foi instalado, configurado, modificado, atualizado e removido do sistema deve ser gerenciado pelo administrador.
Deve-se guardar arquivos de configuração e estruturas de diretórios, anotar os serviços do sistema que precisam ser inicializados, fazer cópias e sempre atualizá-las em um lugar exclusivo para isto. Esta atividade é chamada de backup ou cópia de segurança. Assim, sempre que precisar atualizar ou trocar o sistema, tudo estará disponível, bastando fazer cópias desses dados para o seu local de origem. Uma outra utilidade do backup diz respeito às falhas no sistema: se o computador for danificado, seja na questão de software ou hardware, um backup à mão salvará o sistema.
Observe na seqüência abaixo um exemplo fictício de backup bastante simples.
Monte o diretório /home em uma partição separada.
Crie um diretório com o nome de /home/restaura.
Dentro deste diretório crie um outro diretório chamado /home/restaura/etc.
Copie do diretório /etc do sistema, todos os arquivos que você precisou modificar, para o diretório /home/restaura/etc.
Caso precise reinstalar o sistema, após a instalação, copie o conteúdo do diretório /home/restaura/etc para o /etc do sistema.
Reinicialize o sistema e verifique se suas configurações anteriores foram restauradas.
É importante verificar os programas que estão sendo inicializados juntamente com o sistema, e isto pode ser feito através do Linuxconf (verifique Capítulo 10 para mais detalhes). Isto é importante para verificar quais serviços são realmente essenciais e desabilitar quais são desnecessários, e também melhorar a segurança e a performance do sistema, bem como a utilização de memória.
Ao se formatar um disco ou partição, deve-se sempre fazer a verificação de blocos ruins, pois caso existam setores físicos danificados no disco, eles serão isolados, impedindo que dados sejam gravados nesta região do disco. Isto é uma forma de prevenção: se estes setores estiverem habilitados para gravação e dados forem armazenados ali, possivelmente serão perdidos.
Além disso, separe as partições de forma que você possa sempre ter uma ou mais livres, podendo usá-las para cópias de segurança, testes e futuras expansões. Também é importante separar os dados de usuários dos dados do sistema, pois caso o sistema seja substituído, será possível manter os dados dos usuários no novo sistema. Não havendo dados de usuários entre os dados do sistema, a tarefa de administração não será prejudicada em razão da desorganização dos arquivos.
É importante também utilizar sistemas de arquivos atualizados nos discos, pois sistemas mais novos contam com uma performance, administração e recursos superiores. Ferramentas para manutenção de sistemas de arquivos antigos não devem ser utilizadas em sistemas mais novos (mesmo porque existem ferramentas novas): elas podem prejudicar o nome dos arquivos e alterar as suas propriedades a ponto de o sistema não funcionar mais.
Um arquivo importante que deve ser lembrado durante a tarefa de montagem dos sistemas de arquivos existentes é o arquivo /etc/fstab. Assim, sempre que o sistema reinicializar, todos os diretórios contidos neste arquivo serão automaticamente montados. Programas que dependem de dados remotos para funcionar (montados de uma rede, por exemplo) não apresentarão problemas no funcionamento. Sempre que montagens forem efetuadas manualmente através do comando mount, você precisará indicar apenas o diretório ou o dispositivo a ser montado.
Além de verificar os blocos ruins dos discos no momento da formatação, também é recomendável fazer esta verificação periodicamente. Através do comando badblocks, é possível a criação de uma lista com os números dos blocos defeituosos que forem encontrados. Podemos, com isso, orientar o programa fsck a marcar estes blocos como defeituosos, para não serem usados futuramente na gravação de dados. Verifique os passos abaixo, que mostram como verificar os blocos defeituosos de um disquete que contém o sistema de arquivos ext3:
Insira um disquete no dispositivo e execute o seguinte comando:
# badblocks /dev/fd0 1440 > blocos-ruins |
Execute o comando fsck usando a lista de blocos ruins criada no arquivo blocos-ruins, da seguinte forma:
# fsck -t ext3 -l blocos-ruins /dev/fd0 |
Caso existam dados gravados em um bloco defeituoso, o programa tentará mover estes dados para um outro local. Se for um problema físico do disco, estes dados poderão estar corrompidos e sem possibilidade de recuperação.
Em um sistema de arquivos ext3, os dados de um arquivo são gravados de uma maneira que não fiquem fora de seqüência, ou muito distantes um dos outros. Isto evita a fragmentação de arquivos, que pode deixar o sistema de arquivos desorganizado e lento. Em outros sistemas de arquivos que não conseguem gravar de uma forma otimizada os dados, existem ferramentas para corrigir esta deficiência. É recomendável utilizar estas ferramentas periodicamente, caso você tenha de usar outros sistemas de arquivos, caso contrário opte em não usá-los.
Além da questão da integridade do sistema de arquivos, uma outra questão importante a ser abordada é o espaço de cada área de trabalho do usuário. Muitas vezes, esta área excede o limite esperado, atrapalhando tarefas de outros usuários. Para evitar isso, pode-se criar um sistema de quotas, o que configura uma área com um certo tamanho para cada um dos usuários.
Estes temas podem ser vistos com mais detalhes no Capítulo 4 e Capítulo 11.
Um sistema que contenha muitos usuários requer atenção dobrada. Usuários inexperientes, que tenham acesso a arquivos importantes, podem prejudicar o sistema. O primeiro passo para evitar isso é verificar a permissão de cada usuário do sistema, permitindo assim que cada um tenha a sua área, não tendo acesso a arquivos de outros usuários ou acesso a arquivos essenciais do sistema.
Além da configuração das permissões dos usuários, é importante verificar as permissões dos arquivos e serviços. Muitas vezes, arquivos importantes são deixados com permissões de leitura, escrita e execução, o que deixa de ser erro do usuário e passa a ser erro do administrador. Portanto, essa verificação de permissões de arquivos deve ser feita para evitar que danos futuros possam ser causados no sistema.
O sistema de permissões de usuários é explicado detalhadamente no Capítulo 3.
Atualmente, um bom administrador deve ter conhecimento do sistema em que trabalha, e sobretudo deve protegê-lo de possíveis ataques ao seu sistema. Em razão da expansão da indústria e da Internet, manter uma rede de computadores sem um sistema eficiente de proteção é um primeiro passo para evitar acessos indesejáveis. Lembre-se também de que o fato de o sistema estar configurado para oferecer uma boa proteção não implica necessariamente que o sistema esteja seguro, pois isto depende também de ações tomadas pela administração e pelos usuários, na verificação constante do sistema e das tentativas de violação da segurança do sistema.
Alguns procedimentos podem ser tomados para evitar que isto ocorra:
É um conjunto de componentes (hardware e software) que restringe o acessos entre as máquinas em uma rede local e a Internet, ou entre redes internas. Ele tem como função proteger a rede (ou um sistema) de quaisquer tentativas de violação por parte de pessoas não autorizadas, sendo que estas tentativas geralmente ocorrem através de conexões pela Internet. É o meio mais comum de se configurar a segurança em um sistema Linux.
Para verificar se alguns serviços são realmente necessários, como por exemplos serviços que utilizam rede (Gopher, Telnet, FTP). Isto faz com que portas de acesso à rede permaneçam abertas, sem utilização, deixando passagem para invasores. É importante verificar se os usuários estão utilizando estes serviços, e se não estiverem, "fechar" as portas abertas.
Outra questão é que um serviço só pode ser acessado por um usuário se este estiver autorizado pelas regras de filtragem. Caso o usuário deseje utilizar um novo serviço que não esteja cadastrado, terá de solicitar autorização para que possa utilizar este serviço. Na verdade, não é um serviço que é filtrado, mas, sim, a porta que ele utiliza.
É sempre recomendável ter as últimas versões dos pacotes de segurança em seu sistema; isso faz com que falhas detectadas em versões anteriores deixem de existir.
Procure também manter-se informado sobre as últimas novidades em termos de segurança em redes. Existem milhares de newsgroups e listas de discussão sobre o assunto. É bom também ter conhecimentos das falhas detectadas em sistemas e os métodos utilizados para contorná-las, bem como os meios utilizados por invasores para quebrar a segurança de redes.
Não basta apenas configurar um firewall para a rede e deixar que ele se encarregue do serviço de segurança da rede. É necessário monitoramento constante a fim de observar todo o tráfego de pacotes pelo sistema; com isso, determina-se se o sistema está funcionando corretamente e se houve tentativas de operações ilegais ou mesmo dados mal interpretados pelo sistema.
Os usuários comuns podem colaborar em muito na questão da segurança. Às vezes, por falta de conhecimento dos dispositivos de segurança, eles podem cometer algumas falhas primárias, que sem querer podem comprometer os esforços realizados. Um exemplo básico é a escolha de senhas para usuários; geralmente são escolhidas senhas simples e fáceis de serem identificadas, utilizando nomes, números como data de nascimento ou endereços, que são senhas de fácil identificação. A conscientização dos usuários pode ser uma atividade que pode melhorar os níveis de segurança do sistema.
A maioria dos problemas encontrados em um sistema são apenas conseqüências do verdadeiro motivo que os tornou aparentes. Outros porém podem ser isolados e resolvidos sem uma ordem lógica, mas através de uma escala de prioridades. A capacidade de saber o verdadeiro motivo de um problema e não apenas observar as suas conseqüências é o que torna o administrador de sistemas mais completo.
Antes de procurar problemas, reveja todo o planejamento da rede ou do sistema, procurando as possíveis falhas. Isso poderá auxiliar na procura do problema, de um modo mais específico.
Isole os problemas, verifique o sistema como um todo, estabeleça uma escala de prioridades, marque um dia e um horário para resolvê-los, simule a operação em outro computador e verifique quanto tempo será necessário, e por fim essencialmente, em qualquer mudança avise todos os usuários.
A comunidade Linux disponibiliza informação das mais diferentes formas. Existem milhares de sites com apostilas e informações de quase praticamente todos os tópicos. Além disso, o próprio sistema dispõe de algum material didático, como por exemplo páginas de manual e info. Estes são os principais canais de comunicação e documentação:
Projeto LDP-BR e Projeto LDP : dois links importantes, sendo que o primeiro trata do projeto LDP[1] em âmbito nacional, com documentação em português sobre os mais diversos assuntos. É um esforço para produzir ou traduzir documentação para a língua portuguesa. O segundo projeto engloba todo o esforço mundial, sendo que a documentação está em inglês. Se você tiver algum problema, vale a pena dar uma olhada nestas páginas.
Newsgroups: são canais de discussão de dúvidas sobre os mais diversos assuntos. Alguns newsgroups interessantes são: comp.os.linux, comp.os.linux.networking e comp.os.linux.security, todos em inglês.
Páginas de manual e Info: páginas sobre o comando relacionado. Basta digitar man seguido do nome do comando. Páginas Info são acionadas do mesmo modo, mas podem trazer mais informações e uma interface mais agradável.
[1] |
Linux Documentation Project. |