서투른 관리자로부터 원격 *nix 설치를 방어하는 권장 방법은 무엇입니까?

서투른 관리자로부터 원격 *nix 설치를 방어하는 권장 방법은 무엇입니까?

가끔(종종 꽤 오랫동안) Linux 시스템을 완전히 망가뜨리는 명령을 실행하는 데 어려움을 겪을 때가 있습니다.

가장 최근에는 실수로 루트 파티션을 다시 마운트한 다음(방금 포맷한 새 USB 드라이브인 줄 알고) 재귀적으로 해당 파티션을 나 자신에게 할당했습니다(다시 한번 USB 드라이브에 대한 사용자 액세스 권한을 나에게 부여하려고 시도했습니다). ). (진행중) 자신이 무슨 짓을 했는지 깨닫자마자 중단했는데, 피해가 컸어요. 많은 핵심 프로그램이 더 이상 루트 소유가 아니므로 시스템은 본질적으로 좀비 상태가 되었습니다. 일부 사용자 기능(ssh, rsync)은 여전히 ​​작동했지만 관리 수준 기능은 완전히 잠겨 있었습니다. 마운트, 마운트 해제, 화면 세션에 다시 연결, 재부팅 등을 수행할 수 없습니다.

기계가 나와 함께 여기 거실에 있었다면 기계를 "수리"(재설치)하는 것이 아주 쉬웠을 것입니다. 하지만 그렇지 않습니다. 내 동생 집에 있어요. 그는 수리/재설치 과정을 안내하는 데 별로 관심이 없으며 그 점을 이해합니다. 그래서 저는 며칠 후에 제가 입은 피해를 복구할 예정입니다. (그리고 관리에 방해가 되지 않는 무언가를 설치하길 바랍니다.)

나는 질문을 하기 위해 모든 것을 말합니다: 관리자의 허술함을 방지하기 위해 설치를 강화하는 권장 방법은 무엇입니까?

고려되지 않았거나 고려되어 빠르게 삭제된 사항:

  1. 어리석은 명령을 실행하지 않도록 관리자를 강화하십시오. 좋은 생각이지만 작동하지 않습니다. 왜냐하면 인간으로서 나는 때때로 나중에 나쁜 생각임을 깨달은 일을 할 것이기 때문입니다. 내가 하려는 것은 미리 내 자신을 뛰어 넘는 생각을 하는 것이므로 내가 어리석은 짓을 하면 기계가 거절하고 "아 젠장! 그건 정말 나빴을 수도 있었어(TM)! 그러지 말자"라고 깨닫게 될 것입니다. 다시."

내가 고려한 것들:

  1. 루트 파티션을 읽기 전용으로 마운트합니다. 변경 사항으로부터 루트를 보호합니다. 이는 쓰기 가능한 부분이 있을 것으로 예상되지만 그렇지 않은 경우 부정적인 영향을 미칠 수 있습니다. 또한 파티션이 읽기-쓰기로 다른 곳에 다시 마운트되는 것을 반드시 보호할 필요는 없습니다.
  2. 위에 통합형 쓰기 가능 레이어가 있는 일종의 압축된 읽기 전용 루트 이미지를 사용하면 실제로 루트에 변경 사항이 적용되지 않으며 재부팅하면 문제가 해결됩니다. 변경 사항이 필요하지 않으면 괜찮습니다/좋습니다. 루트로 만들어지면 /etc가 다른 곳의 영구 파일에서 다시 로드/채워질 수 있습니다.
  3. 일반(매일, 어쩌면) 스냅샷과 함께 btrfs를 사용하면 오류가 발생한 경우 복구가 더 쉬워집니다. 직접적인 사용자 개입이 필요하기 때문에 여전히 차선책일 수 있으며 다른 사람에게 안내할 수 있을지 모르겠습니다. 죄송합니다. 롤백하는 변경 사항입니다.
  4. 보다 일반적인 배포판 대신 안정성/예측 가능성/보안을 염두에 두고 보다 "실제"/"내장형" Linux/BSD 배포판을 사용하십시오.

현재로서는 옵션 4를 사용하여 내가 사용했던 전체 데비안 설치보다 다소 제한된 시스템을 설치할 가능성이 높습니다. 하지만 단순한 파일 서버 및 토렌트 클라이언트로서 잘 작동해야 하며, 원격 시스템으로서 제 자신으로부터 시스템을 방어하는 것은 꽤 큰 자산입니다.

답변1

가혹한 진실은 그 무엇도 당신의 어리석음으로부터 당신을 보호할 수 없다는 것입니다. DWIM(내 말대로) 인터페이스가 없습니다. 컴퓨터는 의도적인 것과 우연한 것의 차이를 구분할 수 없습니다. 잘못된 명령을 아무리 많이 추상화해도 모든 것이 파괴될 수 있습니다.

간단한 대답은속도를 늦추고 지금 하고 있는 일에 주의를 기울이세요.

답변2

가상 머신에서 설치를 실행하십시오. 알려진 양호한 상태의 스냅샷을 찍습니다. 위험한 일을 하기 전에 스냅샷을 찍어보세요. 호스트 환경에서는 거의 아무것도 하지 않습니다. 망했다면 호스트 환경에 접속해서 스냅샷을 복원해 보세요.

답변3

발에 총을 쏘는 것을 방해하는 것은 없습니다. 루트 파티션이 USB 스틱이라고 "생각"했습니다. 중요한 시스템을 일회용 VM으로 쉽게 착각할 수 있습니다.(우리 모두에게 발생)

중요한 것은 컴퓨터가 제공하는 서비스를 중복되게 만드는 것입니다.

이 경우 두 개의 별도 파티션에 두 개의 Linux 버전을 설치할 수 있습니다. 형제에게 다른 것으로 부팅하라고 지시할 수 있습니다.(그냥 아이디어입니다)

백업을 수행하고 복원 전략을 세우는 것에서 가장 중요한 것은 무엇입니까?

이 경우 형제 PC에 대한 책임은 귀하에게 있으므로 가능한 모든 데이터를 연속적으로 백업하고 여러 복사본을 보관해야 합니다.

SSH 서버와 비밀번호가 설정된 부팅용 USB Linux 드라이브를 형제에게 제공할 수도 있습니다. 그리고 PC가 USB에서 부팅되도록 설정합니다. 그런 다음 긴급 상황이 발생하면 USB 스틱을 삽입하고 PC를 다시 시작하라고 요청하세요.

답변4

루트 사용자로 작업을 수행하지 마십시오. 일반 계정으로 루트 작업을 수행할 수 있도록 sudo를 설정하되 비밀번호를 사용하세요. 이것은 당신이 실제로 무엇을 하고 있는지 확인할 수 있는 마지막 기회를 제공합니다.

그러나 루트로 실행하는 경우 대화형 사용을 강제하는 일반 명령에 대한 별칭을 설정하십시오. 예를 들어 제거하기 전에 프롬프트를 alias rm="rm -i"표시합니다 rm. -f정말로 원한다면 (의식적인 결정) rm *로 명시적으로 무시할 수 있습니다 rm -f *.

USB에 FS가 무엇인지 말하지 않았습니다. 일반적으로 VFAT입니다. 모든 파일이 이미 특정 사용자가 소유한 것처럼 보이도록 옵션을 사용하여 마운트할 수 있습니다. 그러면 실제로 달릴 필요가 없으므로 chown -r ...실수할 가능성이 사라집니다.

높은 권한으로 실행 중임을 알리기 위해 루트 셸 프롬프트를 빨간색으로 표시합니다.

일반적으로 비밀번호 프롬프트 등과 같은 장애물로 인해 루트 권한으로 작업을 수행하기가 어렵습니다.

이제 문제를 해결한 후에는 이와 유사한 다른 시스템에 액세스하여 findSUID/SGID 프로그램을 표시할 수 있습니다. 그런 다음 손상된 디스크를 chmod명령을 사용하여 해당 디스크와 일치시키십시오.

관련 정보