Issuu on Google+

Serviços de rede

TUTORIAL

OpenSolaris, parte 16 Conheça alguns dos serviços de rede do OpenSolaris. por Alexandre Borges

E

m muitas versões de Unix, os serviços de rede sempre foram gerenciados no arquivo /etc/ inetd.conf (ou /etc/inet/inetd.conf) e com o Solaris (versão anteriores a versão 10), isto também ocorre. Basicamente, todas as vezes que era necessário habilitar ou desabilitar um serviço de rede sempre tínhamos o trabalho de editar o arquivo inetd. conf, descomentar a linha e forçar com que o serviço responsável (inetd) fizesse uma releitura do seu arquivo inetd.conf usando o comando pkill -HUP inetd. No OpenSolaris isto não

é mais um procedimento obrigatório, pois todos os serviços de rede foram migrados para o mecanismo SMF (Service Management Facility), porém todo o gerenciamento dos mesmos foi delegado para o serviço inetd que faz todo o trabalho em segundo plano e atua também como um restarter destes. Isto pode ser constatado usando o comando mostrado na listagem 1. Aliás, ao ler a saída de um comando svcs -a | more, é fácil comprovar que muitos serviços de rede estão ali listados como o próprio telnet, ftp, rlogin etc., e mais: eles não estão mais presentes no arquivo /etc/inet/inetd.conf. AliListagem 1: Comando svcs ás, lá não há mais serviço # svcs -l telnet algum e todos eles (com fmri svc:/network/telnet:default suas respectivas propriedaname Telnet server enabled true des) foram migrados para o state online SMF. Lembrando o leitor: next_state none state_time Mon Apr 26 11:42:57 2010 as propriedades do SMF firestarter svc:/network/inetd:default cam dentro do repositório

Listagem 2: Comando inetadm # inetadm ENABLED disabled disabled disabled disabled disabled disabled disabled enabled enabled enabled disabled disabled disabled

66

STATE disabled disabled disabled disabled disabled online disabled online online online disabled disabled disabled

FMRI svc:/application/x11/xvnc-inetd:default svc:/network/rexec:default svc:/network/ftp:default svc:/network/login:rlogin svc:/network/talk:default svc:/network/nfs/rquota:default svc:/network/rpc/spray:default svc:/network/rpc/smserver:default svc:/network/security/ktkt_warn:default svc:/network/telnet:default svc:/network/finger:default svc:/network/shell:default svc:/network/shell:kshell

central do SMF que, além das propriedades de cada serviço, também armazena o status de cada um deles. Falaremos deste repositório um pouco mais à frente.

O comando inetadm

Com o objetivo de simplificar a vida do administrador, o OpenSolaris permite que todos os serviços de rede sejam gerenciados utilizando os comandos svcs e svcadm. Contudo também oferece uma outra ferramenta de gerenciamento dedicada para esta finalidade: o comando inetadm. Este comando é específico para a administração somente de serviços de rede e tem flexibilidade maior do que o svcadm. O comando inetadm, de fato facilita a visualização destes serviços de rede, conforme você pode ver na listagem 2. O leitor pode confirmar que a saída deste comando é bem resumida, (lembrando que a listagem foi reduzida para exemplificação) mostrando basicamente o nome do serviço, se ele está habilitado ou não para ser iniciado nas próximas reinicializações da máquina e qual seu status neste momento. Utilizando como exemplo o serviço telnet, vamos trabalhar com ele um pouco mais, listando mais detalhes deste serviço (listagem 3). Esta saída realça as propriedades do serviço telnet que, em outras versões mais antigas do Solaris, não eram nem um pouco fáceis de verificar e

http://www.linuxmagazine.com.br


OpenSolaris | TUTORIAL

Listagem 3: Detalhes

Listagem 4: Saída do comando inetadm

# inetadm -l telnet SCOPE NAME=VALUE name="telnet" endpoint_type="stream" proto="tcp6" isrpc=FALSE wait=FALSE exec="/usr/sbin/in.telnetd" user="root" default bind_addr="" default bind_fail_max=-1 default bind_fail_interval=-1 default max_con_rate=-1 default max_copies=-1 default con_rate_offline=-1 default failrate_cnt=40 default failrate_interval=60 default inherit_env=TRUE default tcp_trace=FALSE default tcp_wrappers=FALSE default connection_backlog=10

# inetadm enabled disabled disabled disabled enabled

muitos sequer tinham conhecimento da sua existência. A desativação de qualquer serviço de rede através do comando inetadm é bem direta:

online disabled disabled disabled online

svc:/network/telnet:default svc:/network/finger:default svc:/network/shell:default svc:/network/shell:kshell svc:/network/linux/tcp6:default

para o SMF, mais especificamente para dentro do repositório. Vamos inserir, como exemplo, um serviço chamado linux no final do arquivo inetd.conf e este será encarregado de iniciar um shell na porta 9999 da máquina local quando solicitado: # vi /etc/inet/inetd.conf linuxstreamtcp6nowaitroot/sbin/sh /sbin/sh -a

Feito isso, precisamos associar uma porta ao mesmo serviço linux no final do arquivo /etc/services: linux 9999/tcp

# inetadm -d telnet

Para ativar novamente o serviço telnet: # inetadm -e telnet

Se for desejável alterar qualquer propriedade como, por exemplo, a propriedade tcp_trace que força que o logging no uso do servidor telnet para o daemon syslogd, como a seguir:

O mais difícil já está feito. Agora vamos forçar a migração das configurações do arquivo inetd.conf para dentro do repositório usando o comando inetconv. Se tudo foi realizado da forma correa, o leitor observará o seguinte resultado: linux -> /var/svc/manifest /network/linux-tcp6.xml Importing linux-tcp6.xml ...Done

# inetadm -m telnet tcp_trace=true

Neste caso foi alterada a propriedade tcp_trace do serviço telnet. Se quisermos alterar a propriedade tcp_trace de todos os serviços de rede, fazemos: # inetadm -M tcp_trace=true

Quer dizer que com todo este gerenciamento facilitado através do comando inetadm então o arquivo inetd. conf está definitivamente aposentado? A resposta é não. Ainda é possível incluir serviços dentro do arquivo e depois migrar estas configurações

Linux Magazine #69 | Agosto de 2010

Pronto. O serviço de rede linux que criamos deverá aparecer no final

da saída do comando inetadm conforme exemplificado na listagem 4. A forma mais direta de testar é executando o serviço telnet na porta 9999 e digitando qualquer comando sempre seguido por “;” (ponto e vírgula): root@opensolaris:/# telnet localhost 9999 Trying 127.0.0.1... Connected to opensolaris. Escape character is '^]'. ls; core Desktop Documents Downloads Public

Certamente esta é uma maneira bem rudimentar de criar um backdoor na porta 9999.

Conclusão desta série

À partir desta edição da Linux Magazine, farei uma pausa na série de tutoriais OpenSolaris, devido ao início da produção de dois livros sobre o assunto. Agradeço aos leitores que me acompanharam até aqui, e logo voltarei com novidades. Até breve!  n

Sobre o autor Alexandre Borges (alex_sun@terra.com.br, twitter: @ale_sp_brazil) é Especialista Sênior em Solaris, OpenSolaris e Linux. Trabalha com desenvolvimento, segurança, administração e performance desses sistemas operacionais, atuando como instrutor e consultor. É pesquisador de novas tecnologias e assuntos relacionados ao kernel.

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3726

67


Linux Magazine - Tutorial - 69 - OpenSuse