![]() |
Bastion Host
| Linux in Brazil Documentação original e de qualidade em bom português |
Gabriel Armbrust Araujo
gabriel.araujo@ic.unicamp.br
www.dcc.unicamp.br/~pub/seg/
Nota do editor: Muito do exposto neste artigo se aplica apenas a uma classe muito específica de computadores: os próprios bastion hosts. Alguns dos conceitos são genéricos, outros são específicos. Muitas das dicas de segurança expostas a seguir podem ser usadas em qualquer servidor ou estação de trabalho, mas espera-se que o leitor tenha o discernimento de verificar quais as idéias que se aplicam ao seu caso, e quais devem ser deixadas apenas para bastion hosts - para não acabar removendo o suid bit de todos os executáveis e depois acabar descobrindo que não consegue mais usar o comando ping...
Este documento tem como objetivo auxiliar na configuração de uma máquina
Linux que deve prover algum tipo de serviço na internet priorizando a segurança
da mesma. Esse tipo de sistema costuma ser chamado de Bastion Host. Apesar do
enfoque ser Linux, outros UNIX podem ser configurados seguindo os principais
conceitos. Também estamos considerando que o bastion será instalado em uma
rede DMZ.
DMZ (De-Militarized Zone) é o nome dado a uma topologia de rede situada
entre uma rede protegida e uma externa considerada por muitos especialistas um
ótimo esquema de segurança. Nosso ambiente se caracteriza por: ambiente externo
(internet), ambiente interno e uma subrede conhecida por abrigar máquinas que
provém algum tipo de serviço para a internet. Essas máquinas são geralmente
apelidadas de Bastion Host. O motivo de tal apelido é que elas estão expostas
e serão alvo de possíveis atacantes. O intuito desse documento é prover maior
segurança a essas máquinas.
O Dicionário American Heritage Dictionary define um bastion como:
1. A projecting part of a rampart or other fortification. 2. A
well-fortified position or area. 3. Something regarded as a defensive
stronghold.
Definição do dicionário Português Michaelis:
1 Parte saliente de uma fortificação, com forma de um pentágono irregular, com
duas faces formando um ângulo saliente dianteiro, enquanto outras duas,
mais curtas, formam flancos reentrantes, que protegem as obras
adjacentes. 2 O mesmo que baluarte.
De acordo com Marcus J. Ranum, Presidente e CEO da Network Flight
Recorder (vide texto):
"Bastions são partes extremamente fortificadas de um castelo
medieval. São áreas de ponto crítico em defesa, geralmente tendo forte
muralhas, espaço extra para tropas e ocasionalmente possui tubos de óleo
quente para desencorajar os atacantes. Um bastion host é um sistema
identificado por administradores de firewall como um ponto crítico na
segurança de uma rede. Geralmente, bastion hosts necessitam de um cuidado
extra, com auditorias regulares e podem ter software modificado."
<Parenteses>
Sobre Marcus J. Ranum ( http://pubweb.nfr.net/~mjr/ )
Marcus J. Ranum, Presidente e CEO of Network Flight Recorder, Inc. é
autor de vários livros sobre produtos de internet firewalls, incluindo o
DEC SEAL, TIS Gauntlet e TIS Internet Firewall Toolkit. Marcus vem lidando
com sistemas UNIX e segurança em redes mais de 13 anos, inclusive configurou
e manteve whitehouse.gov durante o primeiro ano de vida do site. Marcus é
participante e palestrante assíduo de conferências envolvendo tópicos em
segurança.
<fim>
A eficiência de um Bastion Host na maioria dos casos pode ser
mensurada respondendo 2 perguntas:
1-) Como um Bastion Host protege a si mesmo contra um ataque?
2-) Como um Bastion Host protege a rede contra um ataque?
Vamos começar criando uma metodologia. O que seria? São os
princípios e procedimentos que iremos utilizar ao construir nosso Bastion
Host.
Iremos utilizar um conceito paranóico. O que nós não conhecemos
pode nos machucar e o que nós achamos que conhecemos, não podemos confiar
totalmente.
Seguindo nossos princípios, é necessário uma organização antes de
colocar a mão na massa. O grupo ou indivíduo responsável pela segurança
deveria pensar nos seguintes aspectos:
1-) Segurança Social - não adiantaria nada configurar a máquina mais
segura do planeta se alguem pudesse caminhar até a sala aonde ficam os
bastions e alterar alguma coisa. É inevitável que as pessoas que tenham
acesso à máquina sejam de extrema confiança e que o local em si seja
restrito a elas.
2-) Manter configuração simples - não mais que dois serviços deveriam
rodar em um bastion. Por mais que o firewall externo da DMZ seja completo
ainda temos diversos bugs que frequentemente aparecem nas aplicações dos
serviços. Rodar diversos daemons aumenta a probabilidade de bugs a serem
explorados em certa máquina.
3-) "What we control, we can trust" - Essa política se aplica muito bem no
caso de bastion hosts. É essencial que se conheça as configurações do
sistema, de serviços, como supostamente devem funcionar. Caso algo de
estranho ocorra com o sistema, será mais fácil identificar se é algum tipo
de erro ou se nosso bastion foi realmente invadido - ouch!
4-) Estar preparado quando nosso bastion for invadido. (adiante)
Antes de mais nada, seguindo nosso modelo paranóico, vamos supor
que a instalação está sendo feita por uma mídia (CD). Certifique-se:
- A mídia realmente é original. A maioria das distribuições provém
um checksum gerado pela função hash de cifragem MD5, aonde pode-se gerar a sua
própria e comparar a string. Instalar um sistema com algum tipo de
backdoor é construir uma muralha com uma escada... :-)
Nos exemplos desse texto, foi utilizado Red Hat Linux versão 7.0 -
a de mais fácil acesso pra mim. No entanto, ela tem como objetivo ser geral para
todas as distribuições. Iremos instalar todos os pacotes e iniciar nosso sistema
com a configuração default que a distribuição propõem. Depois, vamos passo-a-passo
configura-la de modo que:
- Aplicar todos os patches/bug fixes disponibilizados pela
distribuição;
- Certificar que os serviços que iremos ativar são o último release;
- Ativar e configurar corretamente o que iremos usar;
- Desativar o que não iremos utilizar;
Após terminar a instalação, uma visão geral da situação que nosso
sistema se encontra:
PID TTY STAT TIME COMMAND
1 ? S 0:05 init
2 ? SW 0:00 [kflushd]
3 ? SW 0:00 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:00 [kswapd]
6 ? SW< 0:00 [mdrecoveryd]
48 ? SW 0:00 [khubd]
338 ? S 0:00 syslogd -m 0
348 ? S 0:00 klogd
363 ? S 0:00 portmap
379 ? SW 0:00 [lockd]
380 ? SW 0:00 [rpciod]
390 ? S 0:00 rpc.statd
405 ? S 0:00 /usr/sbin/apmd
513 ? S 0:00 identd -e -o
514 ? S 0:00 identd -e -o
515 ? S 0:00 identd -e -o
516 ? S 0:00 identd -e -o
528 ? S 0:00 /usr/sbin/atd
559 ? S 0:00 xinetd -reuse -pidfile /var/run/xinetd.pid
576 ? S 0:00 /usr/sbin/sshd
597 ? S 0:00 lpd Waiting
645 ? S 0:00 sendmail: accepting connections
661 ? S 0:00 gpm -t ps/2
822 ? S 0:00 crond
907 ? S 0:00 xfs -droppriv -daemon
922 ? S 0:00 anacron
940 ? S 0:00 rhnsd --interval 30
956 tty1 S 0:00 login -- root
957 tty2 S 0:00 /sbin/mingetty tty2
958 tty3 S 0:00 /sbin/mingetty tty3
959 tty4 S 0:00 /sbin/mingetty tty4
960 tty5 S 0:00 /sbin/mingetty tty5
961 tty6 S 0:00 /sbin/mingetty tty6
964 tty1 S 0:00 -bash
992 tty1 R 0:00 ps ax
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:515 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:79 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:513 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:113 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:1024 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
Obviamente está longe de ser segura. Muitos processos que não iremos
utilizar estão executando e o sistema está escutando em diversas portas.
O primeiro passo é tornar a máquina menos vulnerável a um atacante
que tenha acesso ao sistema fisicamente. Iremos setar um password no
arquivo lilo.conf . Assim , tentar especificar opções no prompt do lilo
requer uma senha.
O segundo passo é prevenir que um atacante boot nosso sistema com
as teclas crtl+atl+del. Isso pode ser feito deletando a seguinte linha do
arquivo /etc/inittab.
# Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now
(Nota do editor: claro que a maior parte dos possíveis atacantes com
acesso físico suficiente para pressionar ctrl+alt+del no console também
poderiam simplesmente reinicializar a máquina fisicamente, pela chave
liga/desliga ou puxando o cabo de força, e aí dando boot normalmente ou por
um disquete. A solução definitiva para este problema, como o autor já
apontou em outra parte do texto, é restringir o acesso físico ao console).
Segurança de usuários e grupos
Talvez na tentativa de tornar a vida dos Administradores mais
fácil, a maioria das distribuições de Linux já define um conjunto de
contas de usuários e grupos. No nosso caso, isso pode ser um alvo para um
ninho de atacantes.
Antes de mais nada, vasculhe os arquivos /etc/passwd e /etc/shadow
e delete os usuários que não serão utilizados no sistema.
Evite que contas de usuários não possuam senha. O seguinte comando
perl denuncia as contas sem senha.
[root@darkstar]# perl -F: -ane 'print if not $F[1];' /etc/shadowgames::11459:0:99999:7:::
Temos de fazer o mesmo com o arquivo /etc/group .
Nota: Cuidado ao deletar usuários ou grupos que têm arquivos associados aos
mesmos.
Não é necessário dizer que todas as senhas de contas de usuários deveriam
ter um cuidado especial. Pelo menos com 8 caracteres e que não sejam alguma
palavra de dicionário. Alguns programas, como o Crack, uma ferramenta desenvolvida
por Alec D.E. Muffett possui algumas técnicas de quebra de senhas. (ftp.cert.org)
Além disso, vamos forçar os usuários a mudarem de senha em um período
de tempo que deve ser estipulado em /etc/login.defs .
Quando deveríamos mudar a senha?
- Pelo menos a cada 3 meses;
- Toda vez que algum empregado do sistema saia do mesmo;
- Toda vez que haja suspeita do sistema estar comprometido;
Iremos criar uma segunda conta com UID 0. Pode parecer estranho , mas
uma grande maioria dos atacantes menos habilidosos (script kiddies) podem ser
descobertos dessa maneira. Portanto, utilizaremos a nova conta com UID 0 que
chamaremos de admin para as tarefas normais de administração do root.
Logins e ações com o usuário root serão um sinal de alerta de que algo está
pode estar errado.
Em /etc/passwd e /etc/shadow, respectivamente:
admin:x:0:0:admin:/home/admin:/bin/bash admin:$1$LLjA1aTW$FSjjsJS/SAhshas:11459:0:99999:7:::
Programas que executam setuid, especialmente aqueles com setuid de
root, são um grave problema de segurança. Os programas com SETUID distribuidos
são 'teoricamente' seguros; no entanto, várias vulnerabilidades ja foram
descobertas no passado e com certeza serão descobertos novos problemas no futuro.
A maneira mais fácil de se evitar esse tipo de problema é minimizar
o número de programas com setuid. Pense duas vezes antes de instalar um
programa que precisa executar com setuid em um bastion host.
Vamos vasculhar o sistema procurando programas que contenham
setuid de root - os mais problemáticos.
[root@darkstar]# find / -user root -perm -4000\
-exec ls -las {} \; > setuidfiles
Como podemos perceber, a grande maioria dos arquivos não serão utilizados.
Portanto podemos retirar o setuid ou mudar as permissões para que somente root
tenha acesso a elas. Portanto, iremos retirar o setuid de todos os arquivos e
depois manualmente adicionar aqueles que iremos usar.
[root@darkstar]# for I in `cat setuidfiles`;do chmod u-s $I;done
Periodicamente, o serviço CRON executa comandos agendados pelos usuários.
Normalmente, todos os usuários podem submeter arquivos crontab (cron table).
Isso pode ser restringido nos arquivos cron.allow e cron.deny . É importante
edita-los para mantermos um controle de quem está agendando comandos e quais
são eles. O ideal seria permitir somente as contas root e admin criar contrab
files,para administração de logs, eventos de segurança, etc. No entanto, a
política e necessidade de cada site pode variar.
O serviço inetd gerencia outros serviços, sendo que muitos são um
ponto crítico de segurança, como rlogin e rsh, portanto merece uma maior atenção.
Atualmente as máquinas em geral podem trabalhar com 2 variantes:
- inetd (Internet services daemon) ou
- xinetd (extended Internet services daemon)
O intuito do texto não é apontar as diferenças dos dois serviços, mas ajudar
na configuração de ambas.
Consulta o arquivo /etc/inetd.conf . Somente comente as linhas dos serviços
que não deseja utilizar.
Não mais utiliza o arquivo /etc/inetd.conf para definir os serviços. Agora
o diretório /etc/xinetd.d contém uma série de arquivos destinados a definir as
caracteristicas de cada serviço. (cat /etc/xinetd.d/* | grep disable)
Diversos daemons são inicializados pelos scripts de boot localizados
em /etc/rc.d/ . No entanto, muitos deles não iremos utilizar, e como ja foi
dito, não é nada prudente rodar aplicativos que podem ser futuramente explorados.
Em diversas distribuições o usuário pode utilizar ferramentas que auxiliam na
configuração dos daemons a serem inicializados (como o linuxconf, YaST, ...).
Para cobrir de uma forma mais geral, vamos deletar os links simbólicos dentro
do diretório /etc/rc.d/rcX.d/ - onde X é o RunLevel. Caso futuramente seja
necessário algum serviço, podemos resolver de 2 maneiras: criando nossos próprios
scripts ou criando novamente os links. Se você deseja manter a ordem estabelecida
pela distribuição:
[root@darkstar]# ls /etc/rc.d/rc3.d/ > ~/rc3Backup
Considerando que não iremos rodar routed em nosso bastion:
[root@darkstar]# rm /etc/rc.d/rc3.d/K55routed
E fazemos o mesmo para o resto.
Caso futuramente ocorra necessidade de um script de boot de um serviço
qualquer, digamos o sendmail, faríamos:
[root@darkstar]# ln -s /etc/rc.d/SendmailScript /etc/rc.d/rc3.d/S58Sendmail
É bom lembrar que a ordem especificada no número (no exemplo acima 58)
é de extrema importância. Caso algum script esteja com uma ordem incoerente,
erros irão aparecer.
Depois da limpeza, o combo ps ax & netstat -nat mostra que nosso sistema
está muito melhor do que antes:
PID TTY STAT TIME COMMAND
1 ? S 0:05 init
2 ? SW 0:00 [kflushd]
3 ? SW 0:00 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:00 [kswapd]
6 ? SW< 0:00 [mdrecoveryd]
48 ? SW 0:00 [khubd]
334 ? S 0:00 syslogd -m 0
344 ? S 0:00 klogd
370 ? S 0:00 /usr/sbin/atd
385 ? S 0:00 xinetd -reuse -pidfile /var/run/xinetd.pid
426 ? S 0:00 crond
452 tty1 S 0:00 login -- root
453 tty2 S 0:00 /sbin/mingetty tty2
454 tty3 S 0:00 /sbin/mingetty tty3
460 tty1 S 0:00 -bash
768 tty1 R 0:00 ps ax
Syslog é um serviço responsável por gravar em arquivos diversas informações
geradas pelo kernel e outros programas. Bem configurado, ele pode ser uma poderosa
ferramenta para nos alertar contra intrusos. No entanto, o ideal seria que existisse
outro bastion host responsável em ser um centro de logs, ja que, uma vez que o atacante
tome controle de nosso bastion (isso *pode* acontecer e é melhor estar preparado..)
ele terá privilégios para deletar qualquer log que considere alarmante. Portanto,
caso nosso bastion caia, ainda teríamos um último grito de alerta em outra máquina
indicando o perigo.
O arquivo de configuração é /etc/syslog.conf . Daremos 1 exemplo de
arquivo de configuração para um bastion client syslog.
#Bastion client - scream out our last hope :-) #
# Emergências - avise todos logados no sistema
*.emerg;user.none *
# Enviar mensagens importantes ao nosso bastion log center
*warning;lpr,local1.none @logcenterbastion daemon,auth.info @logcenterbastion
# Enviar informações locais ao nosso bastion log center
local2.info;local0,local7.debug @logcenterbastion
# Manter possíveis erros de empresora local lpr.debug /var/adm/lpd-errs
# sudo info para local 2 - manter local local2.info /var/adm/sudolog
# mensagens do kernel - locais kern.info /var/adm/kern.log
Uma nova opção de sistema de logs é syslog-new generation. Ele é um
sistema aperfeiçoado que, além de ordenar mensagens baseados no par
prioridade/serviço , também é possível filtar com expressões regulares. Portanto,
conseguimos maior pode na admistração de logs, evitando lixo e considerando
somente as mensagens realmente importantes.
http://www.balabit.hu/en/products/syslog-ng/
Um sistema em produção deve montar somente as partições /var
e /tmp write-read, sempre recebendo arquivos gerados por daemons. Deixando
as demais partições read-only impossibilita a alteração de arquivos, instalação
de root kits, worms e trojans.
Editando o arquivo /etc/fstab :
LABEL=/1 / ext2 auto,ro,nouser 1 1 LABEL=/home /home ext2 auto,ro,nouser 1 2 LABEL=/tmp /tmp ext2 defaults,nosuid,noexec 1 2 LABEL=/usr /usr ext2 auto,ro,suid,exec,nouser 1 2 LABEL=/var /var ext2 defaults,nosuid 1 2 /dev/hda5 swap swap defaults 0 0
As alterações do arquivo devem se adequar as partições do seu sistema.
Após todas as devidas instalações e configurações é necessário que o
sistema possua compiladores? Essa é uma discussão delicada. Um atacante que conseguisse
uma conta de um usuário não privilegiado poderia utilizar algum furo de aplicativo
para eventualmente compilar algum exploit e conseguir uma shell de root. No entanto,
além da maioria dos "root kits" (texto adiante) conter somente binários, os bastions
em geral necessitam de constante upgrade. A cada nova versão ou patch fix seria
necessário instalar os compiladores para realizar o serviço. Ainda assim, o atacante
poderia ele mesmo instala-los, caso precisasse. Portanto, estamos na dúvida entre maior
comodidade ou segurança total.
No caso, pode-se seguir 2 passos:
- setar os modos dos compiladores e interpretadores somente para root; ou
- remover todos os compiladores e interpretadores e quando precisarmos de
upgrade, compile externamente e depois faça o transporte;
O protocolo utilizado na internet TCP/IP foi codificado para ser dinâmico
e tolerante a falhas. No entanto, na época os desenvolvedores não tinham idéia
do crescimento da internet e que o problema de segurança seria tão grave. A pilha
TCP/IP possui algumas deficências como: incapaz de autenticação, não garante
integridade e privacidade dos dados. Portanto, icmp redirects, source routing,
entre outros, costumam ser "honrados". Ambos foram ( e continuam ) utilizados
largamente para desferir ataques contra sites.
Essa seção tem como objetivo tentar cobrir os parâmetros mais famosos,
que geralmente se encontram em /proc/sys/net/ipv4/ .(linux)
Desativar Ip forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward
- Não há motivos para transmitir pacotes entre interfaces.
O default é desabilitado.
Desativar icmp redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
- Impedimos que um atacante possa maliciosamente alterar alguma rota
Desativar source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
- Utilizado em diversos ataques, isso possibilita que o atacante
determine o "caminho" que seu pacote vai percorrer (roteadores) até
seu destino. Junto com spoof, isso se torna muito perigoso.
Bogus response
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
- Proteção contra responses bogus
Syn flood
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
- Proteção contra ataques de syn flood (inicio da conexão TCP).
Tenta conter ataques de DoS.
Outro ponto crítico é: não utilizar de forma alguma RPC (remote procedure
call), utilizado por exemplo pelo NFS, em seu sistema! Esse protoloco utiliza
uma forma dinâmica de alocação de portas, sendo portanto muito difícil de adequar
às regras de firewall. Além disso, tomar extremo cuidado com os pacotes UDP.
Eles não tem garantem de forma alguma a origem genuína do pacote, sendo um grave
ponto de segurança. Algumas exceções são os serviços de DNS, NTP e syslog.
Muitas das vezes, nossos atacantes serão pessoas jovens, com ego elevado,
cheia de más intenções, mas que na verdade não possuem muito conhecimento real além
de executar algumas receitas de bolo fabricadas por terceiros. Mais conhecidos
como "Root kits", esses programas além de possuirem exploits para uma ou outra versão
de um serviço qualquer, também levam scanners e trojans.
O inconveniente é que muitos deles possuem características próprias que
diferem um aos outros e seria realmente muito desgastante ter conhecimento de
todos para vereficar se existe algum trojan em uma máquina.
Como exemplo, os componentes do pacote l1on.tar.gz - Worm Lion
addlen cui220 gpm install ps rpc.statd syslogd bnc cui221 ifconfig mingetty pstree slice2 tcpd bnc.conf fix in.rlogind netstat pt07 synscan
Um conjunto de scripts chamado chkrootkit (http://www.chkrootkit.org/)
foi criado no intuito de denunciar a existência de diversos rootkits, interfaces
em modo promíscuo, logs recentemente deletados entre outros.
Tripwire é um sistema de checagem de integridade que compara as propriedades
de arquivos e diretórios com informações geradas à priori. Qualquer mudança nesses
arquivos é flagrada e logada, incluindo aqueles que foram adicionados ou deletados.
Snort é um sistema de detecção de intrusos que realiza análise de tráfego
de pacotes na tentativa de acusar scans, probes e alguns ataques como buffer
overflow, CGI, SMB probes, tentativas de OS fingerprinting, etc. Ele trabalha
com vários plugins de alerta e log para: syslog, arquivos de texto ASCII, UNIX
sockets, mensagens winpopup para clientes windows usando smbclient, banco de
dados (Mysql/PostgreSQL/Oracle/ODBC) ou XML.
O que fazer se seu site foi invadido? A primeira atitude é manter a
calma. Não entre em pânico. Frequentemente, quando o administrador descobre
uma invasão, ja se passou tempo suficiente para que o atacante tenha feito
boa parte do que pretendia. Em outras palavras, é necessário pensar cuidadosamente
em uma estratégia para definir suas ações a partir desse ponto e principalmente
não alertar o atacante sobre sua descoberta até que todas ações de limpeza
sejam efetuadas. É nessa hora que os logs e backups fazem a diferença e mostram-se
essenciais. Vale a pena lembrar que boa parte dos ataques são *internos*.
Seja cuidadoso com quem você irá comunicar sobre o incidente.
Nove passos que podem auxiliar nesse momento:
1-) Não entre em pânico. A diferença entre atitudes desesperadas e atitudes
racionais, além de mais segura e eficaz, poupa bastante tempo.
2-) Decida quem deve saber do incidente. Contate um grupo seleto para auxiliar
na tarefa.
3-) Verifique logs e backups. Tente definir aonde o falha ocorreu. Faça backup
de outros bastions.
4-) Determine o dano causado pelo atacante e como repara-lo. (se possível)
5-) Desconecte a máquina. Se necessário e apropriado, desconecte a máquina.
Boas dicas e sugestões de onde seu sistema pode ter sido comprometido
pode ser encontrado no FAQ que ISS possui:
http://xforce.iss.net/security_library/faqs/compromise.php
6-) Crie um plano para restaurar o sistema.
7-) Comunique as pessoas envolvidas sobre o incidente, quais foram os danos
causados e o que se pretende fazer para sanar o problema e não deixa-lo
acontecer novamente. Seja honesto com o grupo.
8-) Execute o plano.
9-) Se o atacante era realmente alguem de fora, comunique as autoridades.
Envie um email para cert@cert.org ou visite a página http://www.cert.org
que contém informações sobre os procedimentos.
www.dcc.unicamp.br/~pub/seg/
Building bastion host:
http://www.securityportal.com/topnews/solaris_hardening20000523.html,
http://people.hp.se/stevesk/bastion11.html
Bastille Linux:
http://bastille-linux.sourceforge.net/
Marcus Ranum's HP:
http://pubweb.nfr.net/~mjr/
Livros:
Unix System Administration Handbook - Evi N.,Garth S.,Scott S.,Trent R. H.
Pratical UNIX and Internet Security - Sesbastopol: O'Reilly & Associates. 1996
PDF sobre segurança de redes - Professor Paulo Lício:
http://www.dcc.unicamp.br/~paulo/cursos/seg/
Problema de DoS:
http://grc.com/dos/grcdos.htm
Syslog-ng:
http://www.balabit.hu/products/syslog-ng/
Tripwire:
http://www.sourceforge.net/projects/tripwire/
Snort:
http://www.snort.org
Cert:
http://www.cert.org
Crack:
ftp.cert.org