As diversas distribuições do
GNU/Linux diferem bastante em relação a quais serviços de rede são habilitados como parte da instalação inicial padrão. É comum, por exemplo, usuários iniciantes que estão instalando o Linux pela primeira vez optarem por uma instalação "full" ou mesmo selecionarem todos os pacotes de softwares de rede para serem instalados. Cada serviço de rede instalado introduz no sistema um ponto de vulnerabilidade, visto que qualquer serviço de rede ativo representa uma porta de comunicação com o mundo exterior.
Portanto, cabe ao administrador definir quais serviços são realmente necessários ao sistema e desabilitar aqueles que não são absolutamente necessários. Isso ajuda a reduzir os pontos de vulnerabilidade. Para verificar os serviços de rede ativos, existem algumas possibilidades. Uma delas é verificar todos os processos correntes e tentar identificar os serviços de rede:
# ps aux
Outra maneira é verificando portas do sistema que estão abertas. Para esse fim, podemos utilizar uma poderosa ferramenta para verificação de rede: o "nmap" (port-scanner):
# nmap -sS 127.0.0.1
A saída do "nmap" será algo do tipo:
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-04-21 22:38 BRT
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1670 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
111/tcp open rpcbind
716/tcp open unknown
842/tcp open unknown
2049/tcp open nfs
3306/tcp open mysql
Nmap finished: 1 IP address (1 host up) scanned in 0.144 seconds
Através dessa saída, é possível verificar quais as portas estão abertas em nosso sistema e a partir disso, julgarmos o que é necessário continuar aberto e o que deve ser fechado ou filtrado.
Controle dos serviços de rede
Alguns serviços de rede oferecem a opção de serem executados como "daemons" ou através do "inetd". É recomendável executar um serviço no modo "daemon" se este for um serviço solicitado freqüentemente (tais como servidores web, proxy, etc), ou através do "inetd", caso contrário (tais como servidores de ftp, ssh, etc).
Serviços de rede que rodam como "daemons", geralmente são iniciados no momento do boot (pelos scripts de inicialização presentes em /etc/init.d) e permanecem o tempo todo na memória aguardando que alguém se conecte a ele. Serviços executados como "daemons" aparecem no sistema como um processo qualquer e podem ser verificados facilmente utilizando-se o comando "ps".
Serviços iniciados pelo "inetd" são carregados na memória somente no momento em que são solicitados. A configuração de quais serviços podem ser carregados pelo "inetd" e seus parâmetros é feita através do arquivo /etc/inetd.conf. O "inetd" lê as configurações deste arquivo e permanece na memória, aguardando a conexão dos clientes.
inetd.conf
O arquivo inetd.conf possui uma sintaxe simples, em que cada linha descreve um serviço que se deseja oferecer. A sintaxe é a seguinte:
<nome_serviço> <tipo_soquete> <proto> <opção> <usuário> <caminho_servidor> <argumentos>
Em que:
- "serviço" é o serviço que se deseja oferecer
- "tipo_soquete" é o tipo do soquete que este item utilizará (geralmente stream para serviços baseados em TCP ou dgram para serviços baseados em UDP)
- "protocolo" é o tipo de protocolo de transporte utilizado (geralmente TCP ou UDP)
- "opção" indica se o serviço de rede libera o soquete após ele ser iniciado (nowait) ou se o "inetd" deve aguardar e assumir que qualquer servidor já em execução pegará a nova requisição de conexão (wait).
- "usuário" define o dono do "daemon" de rede
- "caminho_servidor" é o caminho para o programa servidor atual que será executado.
- "argumentos" são argumentos da linha de comando que se deseje passar para o daemon servidor quando for iniciado.