Unix 기반 운영 체제에서 커널 모듈 설치를 비활성화하는 방법은 무엇입니까?

Unix 기반 운영 체제에서 커널 모듈 설치를 비활성화하는 방법은 무엇입니까?

우리는 Linux 커널 루트킷 시대에 살고 있으므로 Linux에서 사용자나 작업 또는 명령이 추가 모듈을 운영 체제 커널에 로드하지 못하도록 비활성화할 수 있는 방법이 있습니까? 커널 공간을 잠그는 형태.

첨부된:

컴파일러 도구와 일부 강화 기능을 제거할 수 있다는 것을 알고 있지만 커널 공간과 여기에 사용되는 중요한 파일 및 디렉터리에 대한 추가 보호가 필요합니다.

우리가 삭제할 수 있다는 걸 알아요모듈 삽입도구가 들어있습니다/sbin/insmod, 그러나 누군가가 이를 운영 체제에 다시 복사하여 다시 사용할 수 있습니다.

답변1

다음은 수행할 수 있는 몇 가지 작업입니다.

시스템이 재부팅될 때까지 커널 모듈이 로드되지 않도록 방지

그냥 실행echo 1 > /proc/sys/kernel/modules_disabled

이후에는 커널이 실행되는 동안 새 모듈을 로드할 수 없습니다. 이 설정은 재부팅하지 않고는 0으로 재설정할 수 없습니다.

이렇게 하면 시작 시 모듈을 로드할 수 있지만 로드된 후에 필요한 모든 모듈을 잠글 수 있습니다.

신뢰할 수 있는 모듈만 먼저 로드되는지 확인하세요.

이러한 방법을 사용하면 두 가지 장점을 모두 누릴 수 있습니다.

시스템에 UEFI 펌웨어가 있고 보안 부팅이 활성화된 경우 부트로더가 서명되지 않은 커널 코드의 실행을 허용해서는 안 된다는 것이 실제로 보안 부팅 인증 요구 사항입니다. 보안 부팅을 지원하는 대부분의 배포판은 커널 모듈 서명(커널 컴파일 옵션 CONFIG_MODULE_SIG=y및 )을 사용하여 CONFIG_MODULE_SIG_FORCE=y이를 커널 모듈로 확장 합니다.

또는 자체 커널을 컴파일하는 경우 CONFIG_SECURITY_LOADPIN모든 커널 모듈이 단일 파일 시스템에서 나와야 한다는 요구 사항을 추가하는 커널 컴파일 옵션을 활성화할 수 있습니다. 이는 사용자가 쓸 수 있는 모든 디렉터리와 임시 디렉터리를 분리하여 파일 시스템을 분리했거나 사용 중 잠겨 있을 때 루트 파일 시스템을 읽기 전용으로 설정한 경우에 유용할 수 있습니다.

물론 하드코어 옵션도 있습니다...

필요한 모든 드라이버가 내장되어 있는 맞춤형 커널을 구축하고 모듈 기능을 완전히 비활성화하세요.

이는 구식이지만 하드웨어 구성이 매우 안정적인 경우에도 적용할 수 있습니다.

답변2

"modules_disabled"-LKM을 완전히 비활성화할 수는 없습니다. 실제로 이를 비활성화할 수 있지만 일부 사용자가 시스템에 대한 루트 액세스 권한을 갖고 있는 경우 이 마법은 작동하지 않습니다. 결정은 다음과 같습니다: 자신의 Linux 커널 프로젝트를 컴파일해야 하며 "로드 가능한 모듈 지원 활성화" 메뉴에서 "modules_disabled"를 완전히 비활성화해야 합니다. https://github.com/nu11secur1ty/Linux_hardening_and_security/tree/master/Kernel-sec-modules_by_nu11secur1ty/linux-5.1.1/kernelBR

관련 정보