Limpe com segurança um servidor Linux remoto sem cabeça

18

Estou prestes a encerrar meu relacionamento com meu provedor de hospedagem por muitos anos, mas gostaria de limpar a caixa com segurança antes de fazê-lo. Este é um servidor dedicado executando o Debian em uma única unidade EXT3 e, embora eu tenha acesso root, não consigo inicializar mídia alternativa, pois ela não tem cabeça em um rack em algum lugar.

Não preciso de vários passes, mas gostaria de limpar o espaço livre, se possível. Basicamente, gostaria de ir embora e garantir que não deixo nenhum dos meus dados pessoais para trás. Estou preocupado que a caixa possa falhar antes de terminar de limpar / sincronizar o sistema de arquivos se eu apenas executarsrm -R -s /

notpeter
fonte
imho, use o dd (na parte inferior)
Some Linux Nerd

Respostas:

4

Consegui fazer todo o processo rm -rf --no-preserve-root /sem o primeiro travamento do sistema e sem deixar nada na unidade.

Fahad Sadah
fonte
Corri o srm nos meus diretórios de dados e depois rm -rf --no-preserve-root /via SSH para limpar o restante. Lançou alguns erros em / dev e depois foi concluído; Eu não sabia o que fazer no prompt do bash. Sem a / bin / ls ou / sbin / shutdown, não consegui confirmar o sucesso. Era anticlimático; Eu estava mentalmente preparado para travar, não um kernel de zumbi e uma sessão sshd.
notpeter
7
Isso não é seguro. Os dados não são limpos e a remoção de exclusão ainda é possível. Melhor ao ddlongo do disco.
QRIS
10

O instalador do CentOS (anaconda) enviado com as imagens PXE inclui um servidor VNC, para que você possa alterar sua configuração do grub para inicializar o instalador do CentOS, passando as respostas às perguntas do instalador pré-estágio 2 na linha do grub, reinicialize e depois o VNC para o instalador.

Agora, se minha memória me servir corretamente, dentro desse instalador, você poderá cair em um shell, no qual poderá acessar e destruir o disco.

Copie os arquivos vmlinuz e initrd do diretório PXE na distribuição do CentOS ( http://mirror.centos.org/centos/5/os/i386/images/pxeboot/ ) para / boot e modifique sua configuração do grub:

padrão 0
intervalo 5
título CentOS
raiz (hd0,0)
kernel /boot/vmlinuz.cent.pxe vnc vncpassword = PASSWORD ip sem cabeçalho = máscara de rede IP = 255.255.255.0 gateway = GATEWAYIP dns = 8.8.8.8 ksdevice = eth0 method = http: //mirror.centos.org/centos/5/os / i386 / lang = pt_BR keymap = us
initrd /boot/initrd.img.cent.pxe

Aliás, qualquer empresa de hospedagem decente deve estar preparada para destruir seus discos para você.

Stephen Nelson-Smith
fonte
3
Eles não são uma 'empresa de hospedagem decente', portanto, minha necessidade de sair e limpar meus discos.
notpeter 12/07/10
Não usei esse método, mas usar o GRUB para inicializar uma imagem de resgate mínima pré-configurada para ativar o vnc (ou mesmo apenas o SSH) é totalmente factível. Se você errar, é possível que você tenha um sistema que requer intervenção manual para inicializar corretamente novamente, provavelmente vale a pena testar primeiro em uma VM.
notpeter 19/07/10
1
Uma palavra na ordem em que as coisas são apagadas pode ser útil. Limpando primeiro todas as partições, exceto a que contém /boot, você poderá reiniciar caso a máquina seja reiniciada no meio do processo. Se /bootacontecer de estar na /partição, é possível excluir todos os arquivos fora /boote limpar o espaço livre antes de finalmente limpar a partição inteira. Isso minimizaria a quantidade de dados restantes no disco, caso eles fossem reinicializados depois que você limpasse tanto, que não seria mais capaz de inicializá-lo.
kasperd
7

Antes de destruir o sistema operacional, você pode remover qualquer coisa sensível e zerofill (usando dd se = / dev / zero de = justabigfile).

E acredito que a maioria dos sistemas sobreviverá a um dd em um sistema em execução por tempo suficiente para substituir o disco inteiro. Não há caminho de volta, se não, é claro.

Joris
fonte
4
Se você excluir todos os arquivos com os quais você se preocupa antes de fazer isso, desative sua partição swap, limpe a partição swap (usando wipe ou dd), as opções acima devem ser bastante seguras. Você precisará fazer isso como root para ultrapassar os 5% reservados para root e talvez não limpe todos os nomes de arquivos, mas os dados devem ter desaparecido.
Slartibartfast
6

Minha solução envolve uma abordagem de várias etapas, fazendo algumas das opções acima, mas também envolvendo um chroot no ram que deve permitir que o dd conclua a limpeza completa do disco.

Primeiro, exclua todos os seus dados confidenciais, deixando os arquivos necessários para a execução do sistema operacional. Em seguida, faça isso (não em um script, execute um comando por vez):

mkdir /root/tmpfs/
mount -t tmpfs tmpfs /root/tmpfs/
debootstrap --variant=buildd --arch amd64 precise /root/tmpfs/
mkdir /root/tmpfs/mainroot
mount --bind / /root/tmpfs/mainroot
mount --bind /dev /root/tmpfs/dev
chroot /root/tmpfs/

# fill mainroot partition to wipe previously deleted data files
dd if=/dev/zero of=/mainroot/root/bigfile; rm /mainroot/root/bigfile
# now clobber the entire partition, probably won't be able to stay connected to ssh after starting this
# obviously change '/dev/md1' to the device that needs cleared
nohup dd if=/dev/zero of=/dev/md1 >/dev/null 2>&1

Eu deveria cuidar disso!

moparisthebest
fonte
1

Você pode simplesmente ddsubstituir a partição / disco inteiro em um servidor em execução sem preocupações. Nós o usamos muito no trabalho (quando o cliente não quer pagar pela destruição segura do disco físico).

Na verdade, você limpa os dados sem que o sistema de arquivos montado saiba disso, para que o sistema de arquivos comece a surtar à medida que seus metadados estiverem sendo perdidos, e o próprio sistema operacional começará a "colapsar". No entanto, o que já está no cache ainda funciona. Assim, você pode monitorar o progresso via console remoto ou KVM (não tente por via ssh). O sistema é mantido em execução mesmo após a ddconclusão, mas nenhum comando funcionará e todos os daemons provavelmente já estão mortos.

Eu uso esses comandos: dd if=/dev/zero of=/dev/sda bs=1M & e depois kill -HUP %1para monitorar o progresso (o dd imprimirá a velocidade atual e a quantidade de dados gravados). Definir o tamanho do bloco ( bs) é muito importante para obter a velocidade de gravação seq do HDD dd.

Cada vez que ddconsegui limpar o disco até o final, pude emitir o killcomando (shell interno) até o final. Se você tiver uma invasão de software, poderá limpar o mdpróprio dispositivo ou cada dispositivo componente individualmente.

Marki555
fonte
Meu colega de trabalho fez isso e o xwindows falhou ao falhar; deve ser exatamente o que o solicitante precisa.
Some Linux Nerd
1

O protocolo ATA possui um comando "exclusão segura", que, como o nome indica, deve limpar com segurança todo o disco rígido.

Veja o artigo wiki do Kernel para detalhes, mas observe os avisos no topo:

https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase

Vladimir Panteleev
fonte
Atualização de 2018: usei isso com êxito em várias ocasiões para limpar os servidores remotamente, mesmo quando eles estão executando o sistema de arquivos que está sendo limpo. Como o programa apenas emite um comando ATA e aguarda uma resposta, nenhum código precisa ser executado na CPU durante o processo de limpeza.
Vladimir Panteleev 18/01/19
0

Você pode tentar escrever dados aleatórios no seu disco como este:

dd if=/dev/urandom of=/dev/sda

É mais seguro do que usar / dev / zero porque grava dados aleatórios, mas também é MUITO mais lento.

Kedare
fonte
Como alguém que não conhece melhor, por que as pessoas estão votando contra isso? Isso não é uma boa prática?
Canadian Luke REINSTATE MONICA
@CanadianLuke A questão é apagar com segurança um servidor já em execução. Você não pode gravar em uma unidade montada como esta, para que não funcione.
longneck
@longneck Obrigado. Por alguma razão, pensei que o root pudesse fazer isso ... Embora nunca tenha tentado, vou aceitar sua palavra. Obrigado por explicar, porém
canadense Luke REINSTATE MONICA
@ Longneck ya você pode, acrescentou o comentário acima, mas eu tinha um colega de trabalho realmente paranóico fazer isso. Na verdade, você pode desconectar completamente o disco rígido e o linux continuará executando tudo na memória sem nada além de várias mensagens de erro do aplicativo.
Some Linux Nerd
0

O que você escolher, entre em outro provedor e teste.

Obtenha uma instância semelhante na AWS (ou gcloud ou ...) e tente lá, mantendo o disco e anexando-o a outra instância como armazenamento adicional e verificando-o. dd se = sdb | hd

Quase todo o seu material sensível deve estar em

/home
/opt
/var
/etc
/usr

São os arquivos de configuração com senhas incorporadas que incomodam a maioria das pessoas. Se você souber o que são, pesquise em todo o sistema de arquivos para removê-los.

O rm excluirá os arquivos, mas um editor hexadecimal ainda lerá o disco. Então zero depois. Dê uma olhada no fragmento. Você deve ter um log dos seus arquivos de configuração e onde eles estão para fins de recuperação de desastres, certo? Não se esqueça dos arquivos crontab se você tiver senhas, digamos.

A instalação do CentOS ou qualquer solução ramdisk é boa. O kernel estará na memória, você precisa de dd e algum conteúdo da lixeira. Mas se você reiniciar no modo de recuperação, poderá não ter rede ou SSH e se desligar.

O NB Kedare tem uma boa ideia e, se você estiver executando o ram na sua próxima reinicialização (ramdisk), isso é possível, é muito difícil recuperar as gravações / dev / zero para começar, para que ele realmente não agregue valor, a menos que sua vida seja depende disso?

mckenzm
fonte