전체 리눅스 서버를 소스 제어하에두기 (git) git을 사용하여 전체 Linux

git을 사용하여 전체 Linux 서버를 버전 제어하에 둘 생각입니다. 그 이유는 악의적 인 수정 / 루트킷을 탐지하는 가장 쉬운 방법 일 수 있기 때문입니다. 시스템의 무결성을 확인하려면 순진하게 필요하다고 생각하는 모든 것 : 매주 리눅스 파티션을 마운트하거나 구조 시스템을 사용하여 git 저장소가 여전히 뜨겁지 않은지 확인한 다음 git 상태를 발행하여 시스템의 변경 사항을 감지하십시오. .

디스크 공간의 명백한 낭비 외에도 다른 부작용이 있습니까?

완전히 미친 생각입니까?

적어도 / dev 및 / proc를 제외해야 할 가능성이 있기 때문에 루트킷을 검사하는 안전한 방법일까요?



답변

그것은 “나쁜 생각”(tm)입니다. 다른 모든 것 외에도 저장소는 모두 느리게 실행되며 모든 개정이 유지 될수록 악화됩니다.

꼭두각시 / cfengine / 요리사와 같은 중앙 집중식 관리를 시도하십시오. 그러면 예상대로 일을 유지하고 예기치 않은 변경 사항을 되돌릴 수 있습니다.

이를 iwatch와 결합하여 무단 파일 변경에 대한 이메일을 받으십시오.

사용자 지정 응용 프로그램을 롤아웃하는 데 필요한 경우 rpm / deb 파일과 더 결합하십시오.

rkhunter 또는 chkrootkit과 같은 것을 던져서 차기 위해 가십시오.

작업이 완료되었습니다.


답변

또 다른 대안은 tripwire 를 설정하는 것입니다. tripwire 는 시스템의 모든 중요한 파일을 스파이더 링하여 허용 할 수없는 것으로 정의한 방식으로 변경된 것을 결정하는 GPL 소프트웨어입니다. 암호로 강력한 체크섬에 이르기까지 inode 번호를 통해 mtime처럼 간단하게 변경을 정의 할 수 있습니다.

에서 변경된 파일 /var/run,에서 DHCP 클라이언트 파일의 변경 등에 대해 매일 밤 많은 보고서를받지 않으려면 설정 및 조정이 필요 /etc하지만 문제가 발생하면 문제가 발생할 수 있습니다. 정말 도움이되었습니다.

파일 속성 데이터베이스는 시스템에 알려지지 않은 키로 서명 되므로 데이터베이스 나 트립 와이어 바이너리를 악의적으로 변경 한 도구가 없다는 것을 확신 할 수 있습니다. 완전한 확실성을 위해 트립 와이어 도구 및 데이터베이스의 사본을 읽기 전용 매체에 구울 수 있습니다. 읽기 전용 매체는 서버에 마운트 할 수 있으며 완전한 포렌식 분석이 필요한 경우 디스크를 구운 후 모든 변경 사항을 확인하는 데 사용할 수 있습니다.

이 작업을 수행하려면 시스템을 프로덕션 환경에 배포하기 전에 트립 와이어를 설정하고 실행하는 것이 중요합니다. 그렇지 않으면 일부 악의적 인 사용자가 시스템을 감염시킬 기회가 없었 음을 완전히 확신 할 수 없습니다 트립 와이어되었습니다.


답변

나는 이것이 효과가 있다고 생각하지 않지만 실험적으로 / etc 폴더 로이 작업을 수행하면 어떻게되는지보고 싶습니다. 그것은 대부분의 구성 정보가 유지되는 곳입니다.


답변

@Sirex는 이미 매우 좋은 답변을 제공했지만 보안을 한 단계 더 발전 시키려면이를 예방하는 가장 좋은 방법은 먼저 예방과 탐지입니다.

/ filesystem이 읽기 전용으로 마운트 된 시스템을 설정하십시오. / tmp를 noexec, nodev 옵션으로 마운트 된 별도의 ramfs로 만드십시오. 시스템이 작동하려면 / var 만 읽기 / 쓰기로 마운트하면됩니다. 따라서 / var 아래에서 rw, noexec, nodev를 사용하여 fs를 마운트하고 / var / tmp에 대한 쓰기 권한을 제거하십시오 (afaik, 데몬에서는 거의 필요하지 않으며 구성 가능해야 함). 또한 커널의 보안 패치를 사용하여 사용자의 리소스 액세스를 추가로 제한하십시오 (예 : grsec). 가장 제한적인 규칙이있는 방화벽을 사용하십시오.

일부 배포판은 시스템 강화에 대한 광범위한 문서를 제공합니다. 예를 들면 다음과 같습니다.


답변

도구가 시스템에서 수행하는 변경 사항을 분석하는 것이 좋습니다.

  1. VM에 베어 리눅스 설치
  2. 루트 자식을 초기화
  3. 분석하려는 도구를 설치하십시오
  4. 시스템의 롤 변경 사항을 모두 확인하십시오.

… VM 삭제

.gitignore proc 등과 같이 파일에 많은 폴더를 추가해야합니다 .


답변

전체 파일 시스템의 특정 폴더를 버전 제어 상태로 유지하려는 경우 다음 방법이 효과적 일 수 있습니다.

먼저 /레벨 에서 Git 저장소를 작성하십시오 .

$ cd /
# git init

그런 다음 /programming//a/11018557/320594 기반)와 /.gitignore같이 특정 폴더 만 허용하는 목록을 만듭니다 ./path/to/versioned/config/folder/

/*
!/path/
/path/*
!/path/to/
/path/to/*
!/path/to/versioned/
/path/to/versioned/*
!/path/to/versioned/config/
/path/to/versioned/config/*
!/path/to/versioned/config/folder/
!/.gitignore

그런 다음 첫 번째 커밋을 만듭니다.

# git add -A
# git commit -m "Initial commit"

그런 다음 필요에 따라 버전 제어에서 원하는 추가 폴더를 추가하십시오.

추신:

이전 방법 외에도 / etc /를 버전 제어 상태로 유지해야하는 경우 특정 용도의 폴더에 대해보다 전문화 된 특정 폴더의 버전을 지정 하기 위해 etckeeper( https://etckeeper.branchable.com/ ) 을 사용하는 것이 좋습니다 ( 예 : 패키지 설치 후 자동 커밋)


답변