Gentoo의 강화 된 프로필이 다른 배포판 (예 : Debian, RHEL, Arch … ). 모르는 사람들을 위해 Gentoo hardened는 특정 강화 GCC 옵션 (pie, ssp, relro, …) 및 기타 몇 가지 사항 (grsec / selinux …)을 사용하여 시스템 전체에 시스템을 구축 할 수 있도록합니다.

예를 들어, 저는 Arch Linux가 GCC 강화 플래그로 모든 바이너리를 빌드하지 않는다는 것을 알고 있습니다. 그래서 보안에 대한 우려를 암시합니까?

OpenVPN이 PIE없이 빌드된다는 것을 알고 있습니다. 이것은 OpenVPN에 대한 익스플로잇이 발견되면 아치 설치가 Gentoo 설치보다 덜 안전 할 수 있다는 것을 의미합니까?

TL; DR : 다른 배포판에 비해 Gentoo Hardened를 사용하는 것이 진정한 이점입니까? 바이너리 보안 용어?

답변

모두 소스에 있습니다! 강화 된 젠투는 강화 된 프로필의 배포판입니다.

하지만 컴파일할만한 가치가 있습니까? 리눅스 포럼에서 큰 질문입니다.

보안 측면에서 젠투 강화 프로필을 살펴 보겠습니다.

일부 보안을 추가하는 동안 너무 적어서 대부분의 경우 그럴 가치가 없습니다. 모든 사람이 동일한 바이너리를 갖고 있고 공격자가 특정 코드 조각이로드 될 수있는 위치를 추측 할 필요가 없지만 소스 배포판을 실행하여 주소 공간이 이미 매우 고유하기 때문에 바이너리 배포판에서 더 많은 보안을 제공합니다. 공격자가 익스플로잇에 대한 주소를 추측하려고 할 때 약간의 보안을 제공합니다. 잘못된 추측을하면 프로세스가 중단 될 수 있으며 새 주소에 다시로드됩니다. 공격자가이를 통과 할 수있는 귀중한 데이터가 있습니까? 그렇게하는 것이 번거 롭습니까? 그렇다면 강화 된 프로필을 사용해야하지만, 물리적 보안 및 디스크 암호화가 더 중요합니다. 그만한 가치가 있다면 도둑질하는 것이 더 쉬울 것입니다.

데스크톱에서 사용하려는 경우 강화 된 데스크톱 프로필이 없으므로 그 자체만으로는 다소 어려워집니다.

또 다른 이유는 액세스 제어에 대해 매우 세밀한 제어를 제공하지만 매우 제한적인 SELinux ( “강화 된 프로필이 필요하지 않음)와 같은 것을 사용하려는 경우입니다. 사용자가 많고 민감한 데이터에 대한 액세스 수준이 다른 대규모 네트워크에서만 가치가 있다고 생각합니다.

몇 가지 SELinux 기능이 필요했지만 SELinux를 수행하기 위해 특이한 방식으로 AppArmor를 사용하기로했습니다. 너무 많은 문제입니다. AppArmor가 실제로하는 모든 작업은 프로세스 격리 또는 샌드 박싱을 제공하는 것입니다. 공격자가 익스플로잇을 통해 액세스 권한을 얻는 경우 악용 된 서비스가 액세스 할 수있는 파일에만 액세스 할 수 있습니다. 저는이를 catch all 프로필과 함께 사용합니다. 모든 세계 쓰기 가능 및 홈 디렉토리에서 실행을 방지하고 ssh / pgp 키, 키링 등에 대한 액세스를 방지합니다. 이것은 서버와 데스크톱에서 잘 작동하며 너무 제한적이지 않습니다. 개발을 위해 홈 디렉토리에서 코드를 실행해야하는 경우 다음을 수행 할 수 있습니다. sudo를 통해 무제한 셸을 시작합니다. 지갑을 연 상태에서 랩톱을 잠금 해제 상태로 둘 수 있으며 (kwallet pam 모듈을 사용합니다) ssh 키 또는 암호와 같은 것을 얻기가 정말 어려울 것입니다 (kwallet 용 패치도 있으므로 암호가 필요합니다 ord to show saved passwords),하지만 필요한 프로그램은 암호에 액세스 할 수 있습니다.

그러나 그것이 굳게 만드는 이유는 무엇입니까? 이러한 항목 중 일부도 살펴 보겠습니다.

  • PaX는 스택 및 힙 오버플로로부터 우리를 보호하는 커널 패치입니다. PaX는 메모리의 임의 메모리 위치를 사용하는 ASLR (주소 공간 레이아웃 임의 화)을 사용하여이를 수행합니다. 각 쉘 코드는 코드 실행을 위해 그 안에 포함 된 주소로 점프하는 주소를 사용해야하며, 메모리의 버퍼 주소가 무작위 화되기 때문에 달성하기가 훨씬 더 어렵습니다. PaX는 프로그램에서 사용하는 데이터를 실행 불가능한 메모리 영역에 보관함으로써 추가적인 보호 계층을 추가합니다. 즉, 공격자가 메모리에 쓸 수있는 코드를 실행할 수 없습니다. PaX를 사용하려면 강화 된 소스와 같은 PaX 지원 커널을 사용해야합니다.
  • PIE / PIC (위치 독립적 코드) : 일반적으로 실행 파일에는 고정 된 기본 주소가 있습니다. 로드됩니다. 또한 실행 파일 내의 함수 주소를 계산하기 위해 RVA에 추가되는 주소이기도합니다. 실행 파일이 PIE 지원으로 컴파일 된 경우 메모리의 어느 곳에서나로드 될 수 있지만 PIE 지원없이 컴파일 된 경우 고정 주소에서로드되어야합니다. PaX를 사용하여 ASLR을 활용하려면 PIE를 활성화해야합니다.
  • RELRO (재배치 읽기 전용) : 실행 파일을 실행할 때로드 된 프로그램은 다음과 같은 일부 섹션에 기록해야합니다. 애플리케이션이 시작된 후 쓰기 가능으로 표시 할 필요가 없습니다. 이러한 섹션은 .ctors, .dtors, .jcr, .dynamic 및 .got [4]입니다.해당 섹션을 읽기 전용으로 표시하면 공격자는 GOT 테이블의 항목 덮어 쓰기와 같이 코드 실행을 시도 할 때 사용될 수있는 특정 공격을 사용할 수 없습니다.
  • SSP ( 스택 스매싱 보호기)는 사용자 모드에서 사용됩니다. 스택에 카나리아를 배치하여 스택 오버플로를 방지합니다. 공격자가 스택의 반환 EIP 주소를 오버플로하려면 임의로 선택한 카나리아도 오버플로해야합니다. 이 경우 시스템은 카나리아가 덮어 써 졌음을 감지 할 수 있으며,이 경우 애플리케이션이 종료되어 공격자가 메모리의 임의 위치로 이동하여 코드를 실행할 수 없습니다.
  • RBAC (역할 기반 액세스 제어) : RBAC는 나중에 설명 할 RSBAC와 동일하지 않습니다. RBAC는 SELinux, Grsecurity 등에서 사용할 수있는 액세스 제어입니다. 기본적으로 파일 작성자는 파일을 완전히 제어하고 RBAC는 루트 사용자가 파일을 만든 사람에 관계없이 강제로 파일을 제어하도록합니다. 그것. 따라서 시스템의 모든 사용자는 시스템 관리자가 설정 한 RBAC 규칙을 따라야합니다.

또한 다음과 같은 액세스 제어 시스템을 사용하여 프로세스와 프로세스 간의 액세스를 제어 할 수 있습니다. 사물. 일반적으로 액세스 제어 시스템 중 하나만 한 번에 사용할 수 있으므로 아래에 설명 된 시스템 중 하나를 선택해야합니다. 액세스 제어 시스템에는 다음이 포함됩니다.

  • SELinux (보안 강화 Linux)
  • AppArmor (애플리케이션 아머)
  • Grsecurity는 다음과 같은 다양한 패치를 포함합니다. 커널에 적용하여 전체 시스템의 보안을 강화할 수 있습니다. 커널에서 Grsecurity를 활성화하려면 강화 소스 인 Grsecurity 활성화 커널을 사용해야합니다.
  • RSBAC (규칙 집합 기반 액세스 제어) : rsbac-sources 커널을 사용해야합니다. rsbac 지원으로 커널을 빌드합니다.

모든 것이 앞서 언급 한 큰 문제로 귀결됩니까? 컴파일할만한 가치가 있습니까? 실제로 어떻게 또는 무엇을 확보하고 있으며 그 노력의 가치가 있습니까? 아니면 눈으로보고 싶지 않은 것을 진정으로 확보 할 수 있습니까?

댓글

  • 좋아요, 모든 것을 명확히 해주셔서 감사합니다. 이러한 보안 시행 기술. 그래서 내가 당신의 요점을 이해한다면, 이러한 항목은 시스템의 보안을 향상시키는 데 매우 유용합니다. 하지만 " 컴파일 할 가치가 있습니까? "라고 묻습니다. 그렇다면 일부 주요 배포판에서 기본적으로 활성화되지 않는 이유는 무엇입니까? 데스크탑의 PaX가 일부 바이너리 (자바 또는 파이어 폭스에 대해 들었음)를 깨뜨릴 수 있다는 것을 읽었습니다. 그게 유일한 이유인가요?
  • 많은 배포판에서 PaX와 grsecurity가 기본값이 아닌 이유는 정치와 자아 때문입니다. 두 개발자 모두 Linux 커널 개발 팀과 강하게 충돌하는 성격을 가지고 있습니다. 또한, 그들은 패치를 업스트림으로 받아 들일 수있는 덩어리로 나누는 데 시간을 할애하지 않고 대신 더 많은 보안 기능을 개발하는 데 시간을 사용합니다.
  • 또한 grsecurity가 액세스 제어 시스템이 아닙니다. Spender (grsecurity의 창시자)는 사람들이 액세스 제어 시스템이라고 부르고 SELinux와 비교할 때 매우 짜증이납니다. : P Grsecurity는 버그 클래스를 제거하여 커널 보안을 향상시키는 커널 패치의 조합입니다. RBAC 액세스 제어 시스템은 나머지에 비해 중요하지 않습니다. Grsecurity '의 보안 기능은 매우 광범위하여 단일 게시물에 넣을 수있는 것보다 훨씬 더 많은 공간을 차지합니다. grsecurity.net에서 꽤 포괄적 인 목록을 확인하세요.
  • 보안을 추가하는 동안 ' 아주 적어서 ' 대부분의 경우 그만한 가치가 없습니다 – 어, 이것은 완전히 잘못된 것입니다. 그리고 보안은 실제로 주소를 숨기는 것과는 전혀 관련이 없습니다. '이 답변이 찬성 된 것에 놀랐습니다 .

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다