헤드리스 원격 Linux 서버를 안전하게 초기화


18

몇 년 동안 호스팅 제공 업체와의 관계를 종료하려고하지만 상자를 안전하게 닦고 싶습니다. 이 서버는 단일 EXT3 드라이브에서 데비안을 실행하는 전용 서버이며 루트 액세스 권한이 있지만 랙에 헤드가 없기 때문에 대체 미디어를 부팅 할 수 없습니다.

여러 패스가 필요하지 않지만 가능한 경우 여유 공간을 지우고 싶습니다. 기본적으로 나는 걸어서 개인 데이터를 남기지 않기를 원합니다. 방금 실행하면 파일 시스템 지우기 / 동기화를 완료하기 전에 상자가 중단 될까 걱정됩니다.srm -R -s /


imho, dd를 사용하십시오 (하단)
— 일부 Linux Nerd

답변:


4

rm -rf --no-preserve-root /시스템이 먼저 충돌하지 않고 드라이브에 아무것도 남지 않고 성공적으로 완료되었습니다 .


데이터 디렉토리에서 srm을 실행 한 다음 rm -rf --no-preserve-root /SSH를 통해 나머지를 정리했습니다. / dev에서 몇 가지 오류가 발생하여 완료되었습니다. 나는 bash 프롬프트에서 무엇을 해야할지 몰랐다. / bin / ls 또는 / sbin / shutdown이 없으면 성공을 확인할 수 없습니다. Twas anticlimactic; 좀비 커널과 sshd 세션이 아니라 충돌하기 위해 정신적으로 준비했습니다.
— notpeter

7
이것은 안전하지 않습니다. 데이터가 지워지지 않고 삭제가 여전히 가능합니다. 더 나은 dd대신 디스크 이상.
— qris

10

PXE 이미지와 함께 제공되는 CentOS 설치 프로그램 (anaconda)에는 VNC 서버가 포함되어 있으므로 grub 구성을 변경하여 CentOS 설치 프로그램을 부팅하고 grub 라인의 2 단계 설치 프로그램 질문에 대한 답변을 grub 라인에 전달하고 재부팅 한 다음 VNC를 수행 할 수 있습니다 설치 프로그램에.

이제 메모리가 제대로 작동하면 해당 설치 프로그램에서 디스크에 액세스하여 디스크에 액세스하여 디스크를 파괴 할 수 있습니다.

CentOS 배포판 ( http://mirror.centos.org/centos/5/os/i386/images/pxeboot/ ) 의 PXE 디렉토리에서 vmlinuz 및 initrd 파일 을 / boot로 복사하고 grub 구성을 수정하십시오.

기본 0
타임 아웃 5
제목 CentOS
루트 (hd0,0)
커널 /boot/vmlinuz.cent.pxe vnc vncpassword = 암호 headless ip = IP netmask = 255.255.255.0 gateway = GATEWAYIP dns = 8.8.8.8 ksdevice = eth0 method = http : //mirror.centos.org/centos/5/os / i386 / lang = en_US 키맵 = us
initrd /boot/initrd.img.cent.pxe

또한 괜찮은 호스팅 회사는 디스크를 파괴 할 준비가되어 있어야합니다.


3
그들은 '괜찮은 호스팅 회사'가 아니기 때문에 디스크를 떠나고 닦을 필요가 있습니다.
— notpeter

이 방법을 사용하지는 않았지만 GRUB을 사용하여 vnc (또는 SSH 만 가능)를 위해 사전 구성된 최소 복구 이미지를 부팅하는 것은 완전히 가능합니다. 혼란 스러우면 다시 부팅하기 위해 수동 개입이 필요한 시스템이 남아있을 가능성이 있으므로 VM에서 먼저 테스트 해 볼 가치가 있습니다.
— notpeter

1
물건을 닦는 순서에 관한 단어가 유용 할 수 있습니다. 를 포함하는 파티션을 제외한 모든 파티션을 먼저 삭제 /boot하면 프로세스 도중에 시스템이 재부팅 된 경우 다시 시작할 수 있습니다. 파티션 /boot에있는 경우 /, /boot마지막으로 전체 파티션을 삭제하기 전에 외부의 모든 파일을 삭제 하고 여유 공간을 지울 수 있습니다. 이렇게하면 디스크를 너무 많이 지운 후에 다시 부팅하여 더 이상 부팅 할 수없는 경우 디스크에 남아있는 데이터의 양이 최소화됩니다.
— kasperd

7

OS를 파괴하기 전에 민감하고 0으로 채워진 것을 제거 할 수 있습니다 (dd if = / dev / zero of = justabigfile 사용).

그리고 대부분의 시스템은 전체 디스크를 덮어 쓰기에 충분할 정도로 오래 동안 실행중인 시스템에서 살아남을 것이라고 생각합니다. 물론 그렇지 않으면 돌아갈 방법이 없습니다.


4
이 작업을 수행하기 전에 걱정하는 모든 파일을 삭제하고 스왑 파티션을 스왑하고 스왑 파티션을 지우십시오 (wipe 또는 dd 사용). 위의 내용은 매우 안전합니다. 루트로 예약 된 5 %를 초과하려면 루트로 수행해야하며 모든 파일 이름을 지우지는 않지만 데이터는 없어야합니다.
— Slartibartfast 1

6

내 솔루션에는 위 단계 중 일부를 수행하는 다단계 접근 방법이 포함되어 있지만 dd가 디스크를 완전히 지우는 것을 허용 해야하는 램에 chroot가 포함되어 있습니다.

먼저 민감한 데이터를 모두 삭제하고 운영 체제를 실행하는 데 필요한 파일을 남겨 두십시오. 그런 다음 스크립트를 작성하지 말고 한 번에 하나의 명령 만 수행하십시오.

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

처리해야합니다!


1

dd걱정없이 실행중인 서버의 전체 파티션 / 디스크를 덮어 쓰는 데 사용할 수 있습니다 . 우리는 직장에서 많이 사용합니다 (고객이 안전한 물리적 디스크 폐기 비용을 지불하고 싶지 않은 경우).

실제로 마운트 된 파일 시스템을 모르는 상태에서 데이터를 지우면 메타 데이터가 손실 될 때 파일 시스템이 놀라기 시작하고 OS 자체가 "축소"하기 시작합니다. 그러나 이미 캐시에있는 것은 여전히 ​​작동합니다. 따라서 원격 콘솔 또는 KVM을 통해 진행 상황을 모니터링 할 수 있습니다 (ssh를 통해 시도하지 않음). 시스템이 dd완료된 후에도 계속 실행 되지만 명령이 작동하지 않고 모든 데몬이 이미 종료되었을 수 있습니다.

나는 다음 명령을 사용합니다 : dd if=/dev/zero of=/dev/sda bs=1M & 그리고 kill -HUP %1진행 상황을 모니터하기 위해 (dd는 현재 속도와 쓰여진 데이터의 양을 출력합니다) 로 bsHDD 크기 쓰기 속도를 달성하려면 블록 크기 ( )를 설정하는 것이 매우 중요합니다 dd.

매번 dd디스크를 끝까지 닦을 수 있었고 끝까지 kill명령 (쉘 내장) 을 실행할 수있었습니다 . 소프트웨어 RAID가있는 경우 md장치 자체 또는 각 구성 요소 장치를 개별적으로 지울 수 있습니다 .


내 동료 가이 작업을 수행했으며 xwindows가 충돌하지 못했습니다. 요청자가 필요로하는 것이어야합니다.
— 일부 Linux Nerd

1

ATA 프로토콜에는 "보안 지우기"명령이 있으며, 이름에서 알 수 있듯이 전체 HDD를 안전하게 지워야합니다.

자세한 내용은 커널 위키 기사를 참조하십시오. 맨 위에있는 경고에 유의하십시오.

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


2018 업데이트 : 닦아내는 파일 시스템에서 실행되는 경우에도 서버를 원격으로 지우는 데 여러 번 성공적으로 사용했습니다. 프로그램은 단지 ATA 명령을 실행하고 응답을 기다릴 수 있으므로 와이프 프로세스 중에 CPU에서 코드를 실행할 필요가 없습니다.
— Vladimir Panteleev 님

0

다음과 같이 디스크에 임의의 데이터를 쓰려고 시도 할 수 있습니다.

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

임의의 데이터를 쓰기 때문에 / dev / zero를 사용하는 것보다 안전하지만 속도가 느립니다.


더 잘 모르는 사람으로서 왜 사람들이 이것을 투표하지 않습니까? 이것은 좋은 습관이 아닙니까?
— Canadian Luke REINSTATE MONICA

@CanadianLuke 문제는 이미 실행중인 서버를 안전하게 지우는 것입니다. 이와 같은 마운트 된 드라이브에는 쓸 수 없으므로 작동하지 않습니다.
— longneck

@longneck 감사합니다. 어떤 이유로, 나는 루트가 그렇게 할 수 있다고 생각했다 ... 나는 시도한 적이 없지만, 나는 당신의 말을 받아 들일 것이다. 설명해 주셔서 감사합니다
— Canadian Luke REINSTATE MONICA

@ longneck 나중에 가능합니다. 위에 의견을 추가했지만 실제로 편집증 동료가했습니다. 실제로 하드 드라이브의 플러그를 완전히 뽑을 수 있으며 Linux는 응용 프로그램 오류 메시지 이상없이 메모리의 모든 것을 계속 실행합니다.
— 일부 Linux Nerd

0

무엇을하든 다른 공급자에게 가서 테스트하십시오.

AWS (또는 gcloud 또는 ...)에서 유사한 인스턴스를 가져 와서 디스크를 유지 한 다음 추가 스토리지로 다른 인스턴스에 연결하고 스캔하여 시도하십시오. dd if = sdb | HD

민감한 자료는 모두

/home
/opt
/var
/etc
/usr

대부분의 사람들을 괴롭히는 암호가 포함 된 구성 파일입니다. 이들이 무엇인지 아는 경우 전체 파일 시스템을 검색하여 근절하십시오.

rm은 파일을 삭제하지만 16 진 편집기는 여전히 디스크를 읽습니다. 이후에는 제로입니다. 조각을 살펴보십시오. 구성 파일의 로그와 DR 목적을위한 위치가 있어야합니다. 예를 들어 암호가 있으면 crontab 파일을 잊지 마십시오.

CentOS 설치 또는 램 디스크 솔루션은 소리입니다. 커널은 메모리에 있으며 dd와 bin 내용이 필요합니다. 그러나 복구 모드에서 재부팅하면 네트워킹이나 SSH가 없을 수 있으며 차단됩니다.

NB Kedare는 좋은 생각을 가지고 있으며 다음 재부팅 (ramdisk)에서 램에서 실행하는 경우 가능합니다 ./dev/zero 쓰기에서 복구하기가 매우 어려워서 인생이 아니라면 실제로 가치를 추가하지 않습니다. 그것에 의존?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.