Inicialização remota do Thinstation para ambiente Windows Terminal Service Fábio Fernando Pereira Curso de Especialização em Redes e Segurança de Sistemas Pontifícia Universidade Católica do Paraná Curitiba, 9 de Novembro de 2009 Resumo Este artigo é um estudo de caso que descreve a construção de um ambiente de inicialização remota do sistema operacional Thinstation, que já foi implementado em uma rede corporativa. Esta solução providencia que as estações clientes se tornem aptas a conectar os servidores Windows Terminal Service de forma simples e mais prática que o processo anterior, que consistia na instalação do sistema operacional e aplicativos localmente no HD do computador. O TFTP e DHCP são os serviços de rede necessários para prover as configurações e cópias das imagens de inicialização para cada cliente via PXE ou Etherboot, tornando dispensável o uso do HD. A configuração e personalização da imagem do Thinstation antes e após o processo de compilação, também serão abordadas com mais detalhes. 1 Introdução Assim como a Internet as redes locais ou LANs por volta de duas décadas vem crescendo de forma explosiva, seja nas escolas, universidades, comércios, empresas, escritórios e nos mais variados segmentos e aspectos de negócio [6]. Junto com a demanda, surge à necessidade da contratação de mão de obra técnica para manutenção, formatação, instalação de sistemas operacionais e aplicativos, assim como as suas devidas configurações dos computadores que estão na LAN. Para minimizar esses efeitos apareceram várias soluções que hoje são muito utilizadas, como exemplo poderíamos citar o Citrix ICA, Windows Terminal Services, VNC, NoMachine NX [1]. O ambiente que motivou a elaboração deste trabalho constitui-se basicamente de uma LAN, que disponha de diversos tipos e modelos de computadores, desde antigos aos mais atuais, assim como os computadores enxutos ou thin client, que já vem com baixa capacidade de processamento, memória e armazenamento, apresentando um bom custo e benefício para ambiente onde se trabalha, principalmente com acesso a terminais gráficos que disponibilizam uma área de trabalho completa com as mais variadas aplicações como é o caso do Windows Terminal Server ou simplesmente WTS. O tempo perdido com as configurações e reinstalação dos sistemas operacionais nas estações cliente de WTS, muitas vezes causado por alguma falha no HD, que dependendo do problema era preciso substituir por um novo. Como todo processo pesado gerado pelas aplicações fica centralizado no servidor, deixando a cargo do cliente apenas a reprodução da tela gráfica, não necessitava-se de sistemas operacionais pesados e cheios de aplicativos. Pensando-se neste cenário foi adotado o Thinstatios, por ser uma distribuição Linux enxuta, com facilidades de instalação, configuração e com suporte aos principais protocolos de conectividade a terminais citados anteriormente como padrão em seu escopo. Por ser um sistema operacional pequeno, ele é próprio para ser carregado e configurado via rede, através de métodos de inicialização (boot) remoto direto para memória RAM do computador dispensando o uso de HD (estações de trabalho conhecida como diskless) [1]. Mas antes de começar a descrever a implementação deste sistema, para melhor compreensão vamos rever os conceitos dos serviços de rede que devem estar ativos para que o sistema funcione conforme o esperado. 2 TFTP O primeiro e obrigatório serviço que deve estar ativo na rede é o Trivial File Transfer Protocol ou TFTP, é ele que disponibilizará os arquivos de imagem e de configuração do Thinstation para cada estação cliente conectada a LAN. O TFTP é parecido com o FTP mais de forma bem mais simples, o FTP é um protocolo de transferência de arquivos mais geral na família TCP/IP, conforme Comer (2006, p. 307) comenta sobre a complexidade deste protocolo para algumas aplicações, “[...] o FTP exige que clientes e servidores gerenciem várias conexões TCP concorrentes, algo que pode ser difícil ou impossível em computadores embutidos, que não tem sistema operacional sofisticado”. O TFTP é menor e serve para transferência de arquivos simples que não necessitem de autenticação para tal operação. A exemplificar a importância deste protocolo continua Comer , “[...] os fabricantes de sistemas embutidos podem codificar o TFTP na memória de leitura (ROM) e usá-lo para obter uma imagem de memória inicial quando a máquina é ligada. O programa na ROM é chamado de bootstrap do sistema. A vantagem de usar o TFTP é que ele permite que o código de bootstrapping use os mesmos protocolos TCP/IP subjacentes que o sistema operacional, uma vez iniciada a execução” [2]. 3 DHCP O Dynamic Host Configuration Protocolo ou simplesmente DHCP é um sucessor do BOOTP, que deve estar ativo na rede para facilitar as configurações de rede e automatizar o processo de inicialização de cada host [2]. Em uma rede TCP/IP todos os computadores devem possuir um endereço IP distintos. Caso não exista o DHCP ativo na rede, todas as configurações da rede devem ser configuradas manualmente em cada estação, tomando sempre o cuidado de não repetir um endereço IP que esteja em uso por outra estação [3]. Idealizando quando utilizar o DHCP, Ferreira (2003, p. 349) comenta que “em uma rede pequena isso é fácil de ser feito, mas em grandes redes isso se torna uma tarefa muito trabalhosa e bastante sujeita a falhas. Para evitar esse problema, foi criado o DHCP, que tem como função principal fornecer um endereço IP dinamicamente a um computador no momento de sua conexão à rede. O servidor DHCP verifica qual o endereço IP disponível numa tabela cadastrada previamente dentro deste e informa ao solicitante esse endereço tornando-o indisponível para outras solicitações” [3]. O DHCP trabalha sobre o UDP para transferir mensagens, que além de conter as configurações da rede como o IP, máscara de rede, endereço de um roteador, endereço de DNS e o mais interessante entre outras opções é a possibilidade de indicar o servidor que responderá a requisições e o nome do arquivo de boot. O cliente, então, usa um protocolo de transferência padrão como o TFTP, para obter a imagem [2]. 4 Ambiente da implantação A implementação e testes do sistema de boot remoto com o Thinstation, se deu em um ambiente empresarial de 180 estações de trabalho, na rede onde todos os usuários acessam o Windows Terminal Service. A conversão das máquinas para o sistema descrito aqui está sendo gradual, conforme se julgue necessário. Atualmente conta com 40 estações rodando o Thinstation no ambiente de produção. As soluções adotadas para implementar este sistema foram um servidor TFTP rodando no GNU/Linux CentOS e o servidor DHCP foi utilizado o mesmo que já estava rodando no Windows 2003 Server, apenas foram necessárias algumas modificações nas configurações que serão melhor detalhados na seqüência. 5 Instalando e configurando o TFTP A instalação e configuração do serviço TFTP, além da preparação e compilação da imagem para boot remoto foram todas realizadas em cima do CentOS 5.2. A instalação do CentOS foi de forma padrão, sem a necessidade de alguma eventual modificação em seu procedimento de instalação. Depois de concluir a instalação do sistema operacional e com o computador já conectado a internet, basta digitar o comando yum install -y tftp-server para instalar os pacotes necessários. Figura 1: Fim do processo de instalação dos pacotes 5.1 Xinetd Com é possível notar na figura 1, no final do processo é instalado como dependência do tftp-server o pacote xinetd. O xinetd é usado para um melhor controle e disparo do serviço TFTP apenas quando for requisitado [5]. Na figura 2, segue o script que é criado automaticamente dentro do diretório /etc/xinetd.d quando os pacotes são instalados. O básico a ser observado neste arquivo é a opção “disable” que deve estar com o valor “no” para que o serviço fique ativo quando o xinetd for iniciado e a opção “server_args” indica a raiz do serviço TFTP [5]. Figura 2: Arquivo que configura e habilita o serviço TFTP Vale também lembrar que as configurações dos serviços a serem carregados pelo CentOS na inicialização, podem ser feitos através da aplicação ntsysv. Quando for habilitado a opção tftp é necessário lembrar também de ativar a opção xinetd para que o serviço fique realmente ativo. Figura 3: Habilita os serviços na inicialização do CentOS 6 Preparando o Thinstation Após fazer o download do arquivo Thinstation-2.2.2.tar.gz do site, que até o momento da escrita deste artigo é a última versão estável disponível [1], basta descompactar o pacote para dar início a personalização da imagem que ficará disponível na raiz do TFTP. A fim de manter os mesmos ícones de acesso aos servidores de WTS que já estavam padronizados neste ambiente corporativo, foram editados os seguintes scripts de configuração dentro dos diretórios Thinstation-2.2.2/packages/rdesktop/etc/cmd/desktop.window e Thinstation2.2.2/packages/rdesktop/etc/cmd/rdesktop.global para inserir as opções de -f para tela cheia, u para adição de usuário e -p para a senha quando necessário e a opção –d para adição do domínio, que nos testes realizados não funcionou e precisou ser removido da configuração, fazendo com que o usuário tome o cuidado de escolher o domínio na hora de fazer o logon no WTS. O script Thinstation-2.2.2/packages/xtdesk/etc/xtdesk.functions que continha na sua lógica várias estruturas condicionais para a construção de um ícone flexível, permitia acesso a qualquer servidor de WTS disponível na LAN, desde que o usuário preenchesse com o IP certo, o que era inviável. Com base neste script, surgiu um script novo e de forma mais simples com a adição de novos ícones pré-configurados na área de trabalho (basta apenas dois click com o mouse para o Terminal Server escolhido abrir), ficando da seguinte forma: #!/bin/sh #Functions xtdesk_icons () { let x=75 let y=40 echo "table Icon">$HOME/.xtdesktop/WTS.lnk echo " Type: Program">>$HOME/.xtdesktop/WTS.lnk echo " Caption: WTS">>$HOME/.xtdesktop/WTS.lnk echo " Command: pkg 192.168.1.2">>$HOME/.xtdesktop/WTS.lnk fullscreen rdesktop echo " Icon: /usr/icons/rdesktop_32x32.xpm">>$HOME/.xtdesktop/WTS.lnk echo " X: 132">>$HOME/.xtdesktop/WTS.lnk echo " Y: $y">>$HOME/.xtdesktop/WTS.lnk echo "end">>$HOME/.xtdesktop/WTS.lnk echo "y=$y; x=$x" > /tmp/entry … } O restante do código foi omitido por ser extenso e repetitivo. A cada ícone adicionado na área de trabalho, basta alterar o nome do arquivo WTS.lnk e as instruções depois das opção Caption e Command, o restante do código repete-se conforme o trecho acima. As imagens de fundo da inicialização e do desktop podem ser alteradas respectivamente dentro dos diretórios Thinstation-2.2.2/utils/tools/boot e Thinstation-2.2.2/packages/desktop/etc. Figura 4: Ícones para Acesso ao WTS Dentro do arquivo passwd, conforme a figura 5, contém os usuários e senhas cadastradas no Thinstation. O importante nesse ponto é fazer a alteração da senha do usuário root para uma do seu conhecimento, bastando apenas alterar o segundo campo dentro do arquivo ou a palavra “pleasechangeme” para outra qualquer. A utilidade dessa mudança além da segurança, fica evidente quando mais tarde for necessário administrar as estações remotamente via SSH. Figura 5: Alterando a senha do root Antes de inicializar a compilação e geração das imagens de inicialização do sistema, deve-se verificar quais serão os módulos de drivers e programas que serão adicionados ou removidos, deve-se habilitar apenas o que for realmente útil e necessário, lembrando que as otimizações anteriores levam em conta a utilização do Icewm como gerenciador de janelas que deve estar habilitado no arquivo build.conf, todas as configurações presentes no arquivo estão comentadas tornando o arquivo auto explicativo. Feito as devidas otimizações basta digitar ./built dentro do Thinstation-2.2.2 para iniciar o processo de compilação da imagem. Quando terminado o processo copiar todos os arquivos de Thinstation-2.2.2/bootimagens/pxe/ para a raiz do servidor TFTP. Para que as máquinas possam carregar com as configurações padrões ou de forma personalizada para cada computador, deve-se modificar se necessário nessa mesma ordem o arquivo thinstation.conf.sample e alterar o nome para thinstation.conf.network e thinstation.conf.<MAC>. A opção <MAC> do último arquivo deve ser alterada para o endereço MAC da interface de rede do cliente que se deseja obter alguma configuração exclusiva ou diferentes do arquivos padrão, estes arquivos também devem estar presentes na raiz do servidor TFTP. 7 Configurando o DHCP As configurações do servidor DHCP são simples e rápidas de realizar. Depois de configurado e ativado o servidor no Windows 2003 Server, bastou apenas adicionar duas opções a mais em seu escopo para que os clientes encontrem a imagem do Thinstation na inicialização. Conforme a figura 6, na opção 067 do escopo deve ser adicionado o nome do arquivo de inicialização no campo valor da seqüência, que no caso é o pxelinux.0, e a opção 066 deve ser ativada passando como valor o IP do servidor TFTP. Figura 6: Configurações do Servido DHCP 8 Carregando o Thinstation Para os computadores clientes é necessário que apenas estejam prontos para receber as instruções do DHCP e ter condições de carregar o arquivo de inicialização via TFTP. A melhor forma de obter as configurações de rede e carregar o arquivo de inicialização é habilitar a opção PXE (Preboot eXecution Environment) e fazer inicialização via rede, caso a interface de rede não tenha suporte a PXE as outras opções de inicialização seriam através de um disquete, CD, HD, Flash-disk com o carregamento de um pequeno software que condiciona o cliente para a inicialização remota, método conhecido como Etherboot [1]. 9 Considerações finais Algum tempo depois da implantação foi notória as vantagens do uso do Thinstation em comparação ao método antes utilizado, de formatação, instalação e configuração do sistema operacional no HD dos computadores clientes. O uso do Thinstation dispensou também a necessidade de HDs nas estações clientes, apresentou melhor facilidade na administração e respostas mais rápidas na necessidade de alguma eventual manutenção ou algum outro ajuste nas configurações, pois passaram a serem feitas todas de forma centralizadas apenas modificando alguns parâmetros no script de inicialização no próprio servidor e podendo também acessar as estações através do SSH. Na questão da segurança houve melhoras por se tratar de um sistema operacional enxuto e otimizado para promover acesso ao WTS, desmotivando o usuário a fazer alguma modificação não autorizada ou até uso de aplicativos sem o conhecimento da equipe de TI, que antes sempre poderia acabar passando despercebido com a instalação dos inchados sistemas operacionais cheios de aplicações e recursos desnecessários ao ambiente, deveriam ser removidos ou protegidos via regras de políticas de segurança nos sistemas. Apesar das melhorias já citadas com relação a utilização do Thinstation na rede corporativa, em algumas situações se torna inviável a sua utilização em todas os computadores da rede, devido a necessidade de rodar e instalar algumas aplicações e hardwares específicos. Bibliografia [1] Pagina oficial do projeto Thinstation. Disponível em : http://www.thinstation.org/ [2] Comer, Douglas E. Interligação de redes com TCP/IP - Volume 1 - 5 a ed. Rio de Janeiro: Editora Elsevier, 2006. [3] Ferreira, Rubem E. Linux Guia do Administrador do Sistema. São Paulo: Editora Novatec, 2003. [4] CREATING A THIN-CLIENT FOR THE WINDOWS ENVIRONMENT USING "THINSTATION". Disponível em: http://thinstation.sourceforge.net/docs/HowTo-NetBoo t.txt [5] Equipe Mandriva. Administração de Redes Linux I – Apostila Oficial de formação Mandriva Linux. Conectiva S.A. 2005, p. 151-161. [6] Comer, Douglas E. Redes de Computadores e Internet – 4 a ed. Porto Alegre: Bookman, 2007.