Como configurar um servidor de terminal no Linux usando Ubuntu 9.10 e FreeNX
Visão geral
A computação centrada em desktop está deixando espaço para o retorno de arquiteturas com thin clients e estações remotas. Este tutorial mostra como usar o FreeNX para acessar um desktop Ubuntu 9.10 remotamente, mantendo boa qualidade visual e baixo uso de banda. Por padrão, o FreeNX usa SSH, o que cifra o tráfego.
Definições rápidas
- FreeNX: implementação open source do NX Server da NoMachine.
- Thin client: dispositivo cliente com pouca CPU/armazenamento que usa recursos de um servidor remoto.
- SSH: protocolo seguro para acesso remoto (porta padrão 22).
Importante: Ubuntu 9.10 (Karmic Koala) é uma versão antiga; este guia preserva as instruções originais, mas considere atualizar para uma versão suportada em produção.
Por que usar FreeNX
- Menor uso de banda em relação a VNC tradicional.
- Boa responsividade e qualidade gráfica.
- Tráfego cifrado por SSH.
- Pode reduzir custos de hardware e facilitar a administração.
Quando evita usar FreeNX
- Se você precisa de suporte oficial para versões modernas do Ubuntu, prefira soluções ativamente mantidas (x2go, RDP com xrdp, NoMachine proprietária).
- Em ambientes com requisitos muito altos de latência determinística (algumas aplicações gráficas em tempo real), pode ser insuficiente.
TL;DR técnico
- Instale Ubuntu 9.10. 2. Instale openssh-server, fail2ban e firehol. 3. Configure IP estático em /etc/network/interfaces. 4. Configure e inicie FireHOL, deixando apenas SSH (22) aberto. 5. Instale FreeNX via PPA. 6. Configure clientes NoMachine com a chave do servidor (se gerada).
1. Sistema operacional
Instale o Ubuntu 9.10 seguindo um guia de instalação padrão (por exemplo, HowToForge — passos básicos de desktop). Os passos 1–3 sugeridos nesse tipo de guia já bastam para iniciar.
Nota: se estiver usando outra distribuição ou versão do Ubuntu, adapte os comandos do gerenciador de pacotes (aptitude/apt) e paths conforme necessário.
2. Pré-requisitos
Abra um terminal: Aplicativos -> Acessórios -> Terminal, e torne-se root:
sudo su -l
Instale pacotes necessários:
aptitude update && aptitude install openssh-server fail2ban firehol
Verifique o SSH:
ssh 127.0.0.1
Você verá o fingerprint RSA e a pergunta se deseja continuar. Anote o fingerprint e pressione Ctrl-C para sair. Isso confirma que o daemon SSH responde.
3. Rede e IP estático
Como servidor remoto, recomendo um IP estático. Você pode usar um IP reservado pelo DHCP (atribuição estática no servidor DHCP) ou configurar diretamente em /etc/network/interfaces.
Verifique as configurações atuais:
ifconfig eth0
cat /etc/resolv.conf
route
Pegue: endereço IP atual, broadcast, máscara, servidores DNS e Gateway. Escolha um IP livre na mesma subrede (fora do pool DHCP) para evitar conflitos.
Edite a configuração de rede:
nano /etc/network/interfaces
Se encontrar:
iface eth0 inet dhcp
Altere para:
iface eth0 inet static
Adicione (substitua pelos seus valores):
address 192.168.1.253
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Salve (Ctrl-O) e saia (Ctrl-X). Reinicie a rede:
/etc/init.d/networking restart
Abra o Firefox e confirme acesso à internet antes de prosseguir.
Nota sobre DNS: o tutorial original recomenda os DNS públicos do Google (8.8.8.8, 8.8.4.4). Eles são simples de usar, mas em ambiente corporativo use DNS interno quando necessário.
4. Firewall com FireHOL
Ative o FireHOL editando:
nano /etc/default/firehol
Mude:
START_FIREHOL=NO
para:
START_FIREHOL=YES
Atualize a lista de IPs reservados:
get-iana
Edite a configuração principal:
nano /etc/firehol/firehol
No fim do arquivo, adicione a regra mínima para aceitar SSH:
server ssh accept
Inicie o FireHOL:
firehol start
Saída esperada:
Activating new firewall (47 rules): OK
Veja as regras geradas:
iptables --list
Sugestão de política recomendada (exemplo): bloquear tudo de entrada exceto SSH e permitir todas as conexões de saída. Ajuste conforme sua política de segurança.
5. Proteção contra força bruta com Fail2ban
Fail2ban monitora logs e bloqueia IPs que tentam senhas repetidas. Instale já feito (veja Pré-requisitos). Configuração mínima:
Crie um arquivo local:
nano /etc/fail2ban/jail.local
Conteúdo de exemplo:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
Reinicie o fail2ban:
/etc/init.d/fail2ban restart
Verifique status:
fail2ban-client status sshd
6. Hardening básico do SSH
Edite o arquivo de configuração do SSH:
nano /etc/ssh/sshd_config
Sugestões práticas (comente linhas originais e adicione estas):
PermitRootLogin no
PasswordAuthentication yes # idealmente use key-based auth e desative depois
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
MaxAuthTries 4
AllowUsers seu_usuario outro_usuario # restrinja a lista de usuários que podem logar via SSH
Após alterações:
/etc/init.d/ssh restart
Recomendação: para produção, migre para autenticação por chave pública e desative PasswordAuthentication.
7. Instalar FreeNX
Adicione o PPA e instale FreeNX:
add-apt-repository ppa:freenx-team
aptitude update
aptitude install freenx
/usr/lib/nx/nxsetup --install
O script nxsetup instala e configura os componentes do servidor NX.
Geração de chaves do NX
O FreeNX usa chaves para autenticar sessões. Você pode gerar chaves personalizadas. Se fizer isso, guarde a chave com segurança e importe-a nos clientes. Em redes internas controladas isso é aceitável; para servidores expostos na internet, gere chaves próprias e distribua-as de forma segura.
8. Instalar o cliente NoMachine (NX Client)
No cliente (Windows, macOS, Linux), baixe o cliente NoMachine: http://www.nomachine.com/download.php
Abra o assistente de conexão e configure:
- Nome da sessão: escolha algo descritivo.
- Endereço do servidor: IP estático configurado anteriormente.
- Velocidade da ligação: escolha LAN se estiver numa rede local.
- Ambiente gráfico: mude para GNOME se o servidor usar GNOME.
Se você gerou chaves, marque para abrir a configuração avançada e importe a chave no campo Key.
Ao primeiro acesso, aceite a impressão digital RSA do servidor (compare com o fingerprint anotado no início). Se essa impressão digital mudar inesperadamente, trate como sinal de alerta.
9. Gerenciamento de usuários
Adicione contas locais via:
System -> Administration -> Users and Groups
Para cada usuário, ajuste shells, permissões e grupo. Em ambientes corporativos, prefira integração com LDAP/Active Directory quando possível.
10. Encaminhamento de porta e acesso externo
Para acesso externo, faça port forwarding da porta 22 no seu roteador para o IP do servidor. Em ambientes profissionais, prefira colocar o servidor atrás de um bastion host ou VPN. Se expuser SSH ao público, gere chaves e fortaleça o SSH conforme indicado.
11. Testes e critérios de aceitação
Critérios básicos para considerar o servidor pronto:
- Conexão SSH local responde e autentica.
- FireHOL está ativo e apenas porta 22 está aberta externamente.
- Fail2ban bloqueia tentativas repetidas de login.
- FreeNX responde e aceita conexões do cliente NoMachine.
- A impressão digital RSA vista no cliente corresponde ao fingerprint anotado localmente.
Casos de teste breves
- Teste de conexão local: ssh 127.0.0.1 deve exibir fingerprint.
- Teste remoto LAN: conectar cliente NoMachine na rede local.
- Teste de firewall: executar nmap/port scan a partir da rede para confirmar apenas 22 aberto.
12. Playbook rápido (SOP) — tarefas mínimas para instalar um servidor NX
- Instalar Ubuntu 9.10. 2. Atualizar repositórios: aptitude update. 3. Instalar openssh-server, fail2ban, firehol. 4. Configurar IP estático. 5. Ativar e configurar FireHOL. 6. Ajustar sshd_config e reiniciar ssh. 7. Instalar freenx e executar /usr/lib/nx/nxsetup –install. 8. Gerar e distribuir chaves se necessário. 9. Testar com cliente NoMachine.
13. Checklist por função
Administrador de sistema
- IP estático ou reserva DHCP configurada
- SSH hardening aplicado
- FireHOL ativo com regras mínimas
- Fail2ban ativo
- FreeNX instalado e testado
Usuário final
- Cliente NoMachine instalado
- Importada chave do servidor (quando aplicável)
- Teste de conexão concluído
Segurança / Auditoria
- Logs do auth.log encaminhados para SIEM ou arquivo central
- Políticas de senha aplicadas
- Backup das chaves e configuração do servidor salvo em cofre seguro
14. Troubleshooting comum
Problema: não conecta via NoMachine
- Verifique se o servidor responde em SSH: ssh usuário@ip
- Confirme que FireHOL permite conexões na porta 22: iptables –list
- Cheque fail2ban se o IP do cliente foi banido: fail2ban-client status sshd
- Compare fingerprints SSH: se diferirem, não conecte até investigar
Problema: firewall não inicia
- Veja logs do FireHOL em /var/log/syslog
- Teste regras iptables manualmente para identificar conflito de política
Problema: sessão NX lenta
- Ajuste a qualidade da sessão no cliente (reduzir resolução/cores)
- Verifique consumo de CPU/memória no servidor
- Confirme latência de rede com ping/traceroute
15. Alternativas e comparação rápida
- VNC: simples, mas mais uso de banda e sem cifragem nativa
- RDP/xrdp: bom para integração com Windows; comportamento gráfico pode variar
- x2go: alternativa moderna ao NX, ativa e compatível com SSH; boa opção para substituição
Escolha quando preferir x2go: se precisar de solução mantida ativamente e suporte para versões novas do Ubuntu.
16. Fluxo de decisão (Mermaid)
graph TD
A[Preciso de acesso remoto ao desktop] --> B{Ambiente atualizado?}
B -- Sim --> C[Considere x2go ou NoMachine oficial]
B -- Não --> D[FreeNX pode ser viável para Ubuntu 9.10]
D --> E{Necessidade de baixa latência gráfica?}
E -- Sim --> F[Teste localmente antes de implantação]
E -- Não --> G[Proceda com instalação FreeNX]
17. Segurança adicional e mitigação de riscos
- Escalonamento de privilégios: remova contas desnecessárias e defina sudo com parcimônia.
- Backup de chaves: armazene chaves Nx e certificados em cofre (por exemplo, hardware security module ou cofre digital).
- Monitoramento: centralize logs e alerte para mudanças de fingerprint SSH.
- Atualizações: mesmo sendo uma versão antiga, mantenha pacotes atualizados dentro do que for possível.
18. Privacidade e conformidade
Dados trafegam cifrados via SSH, o que reduz risco de exposição em trânsito. Entretanto:
- Se dados pessoais estiverem no servidor, verifique requisitos locais de proteção de dados (por exemplo, legislação de proteção de dados aplicável).
- Mantenha políticas claras sobre retenção de logs e acesso remoto.
19. Migração e compatibilidade
- Ubuntu 9.10 está fora do ciclo de suporte. Para requisitos de segurança e compatibilidade, planeje migrar para uma LTS suportada.
- Ao migrar, verifique a disponibilidade de pacotes FreeNX ou prefira x2go/NoMachine com suporte moderno.
20. Modelos e snippets úteis
Exemplo de /etc/network/interfaces (modelo):
auto eth0
iface eth0 inet static
address 192.168.1.253
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
Exemplo mínimo de /etc/fail2ban/jail.local (snippet já mostrado acima).
Exemplo de linha para /etc/firehol/firehol:
interface any world
policy drop
server ssh accept
client all accept
Ajuste conforme sua topologia.
21. Aceitação e verificação final
Antes de considerar o serviço pronto para uso, valide:
- Autenticação por SSH funciona com chaves e/ou senha conforme política
- Logs de acesso e falhas são coletados e revisados
- Clientes conseguem criar sessões, e aplicações críticas funcionam corretamente
22. Recursos adicionais
- Documentação oficial do FreeNX
- FireHOL
- Fail2ban
- NoMachine
Resumo final
Este guia explica como configurar um servidor de terminal com FreeNX em Ubuntu 9.10: instalação do sistema e pacotes necessários, configuração de rede estática, ativação do FireHOL e Fail2ban, instalação e teste do FreeNX, bem como recomendações de segurança e listas de verificação. Mesmo mantendo a compatibilidade com a versão do tutorial original, priorize migração para versões suportadas para produção.
Importante: siga políticas de segurança de sua organização antes de expor serviços a redes públicas.