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). 가장 제한적인 규칙이있는 방화벽을 사용하십시오.
일부 배포판은 시스템 강화에 대한 광범위한 문서를 제공합니다. 예를 들면 다음과 같습니다.
답변
도구가 시스템에서 수행하는 변경 사항을 분석하는 것이 좋습니다.
- VM에 베어 리눅스 설치
- 루트 자식을 초기화
- 분석하려는 도구를 설치하십시오
- 시스템의 롤 변경 사항을 모두 확인하십시오.
… 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/ ) 을 사용하는 것이 좋습니다 ( 예 : 패키지 설치 후 자동 커밋)