헤드리스 원격 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.