
우리는 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/kernel
BR