Hardened Gentoo

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Hardened Gentoo and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎русский • ‎中文(中国大陆)‎
Resources

보안 강화 젠투(Gentoo Hardened)는 잘 알려진 젠투 리눅스 설치 결과 위에 여러가지 추가 보안 서비스를 제공하는 프로젝트입니다. 각각의 서비스를 따로 선택할 수 있지만, 강화 젠투에서는 PaX, grSecurity, SELinux, TPE 등을 지원하는 툴체인에서 위험성을 덜어주는 여러가지 옵션을 활성화 합니다.

인터넷망에 직접 연결된 서버를 쓰든 유연한 워크스테이션을 쓰든, 여러가지 위험성을 다룰때 최신 보안 패치를 자동으로 단순히 적용하기보단 시스템을 더욱 견고하게 하고 싶어할 것입니다. 시스템의 견고화는 공격이나 기타 위험에 대해 추가적인 대항조치를 취할 뿐만 아니라, 시스템에 취하는 여러 행동을 일반적으로 조합함을 의미합니다.

보안 강화 젠투에는 젠투 시스템을 더욱 견고하게 구축하도록 도와주는 여러가지 활성 프로젝트가 있습니다:

  • 위치 독립 실행(PIE), 스택 스매싱 보호, 컴파일 타임 버퍼 검사 등의 툴체인(컴파일러, 링커, 등...)의 몇가지 옵션을 활성화합니다.
  • 주소 공간 임의 배치, 비 실행 메모리 같은 추가 보호 조치를 지원하는 PaX 확장을 리눅스 커널에서 활성화합니다.
  • 추가 chroot 제한, 추가 감사, 프로세스 등...의 기능을 포함한 grSecurity 확장을 리눅스 커널에서 활성화합니다.
  • 표준 리눅스 권한 제한 기능을 대폭 향상한 필수 접근 제어 시스템을 제공하는 SELinux 확장을 리눅스 커널에서 활성화합니다.
  • 부당한 방법으로 변경된 시스템을 회복하는 무결성 검정 구조와 같은 Integrity 관련 기술을 활성화합니다.

물론 이들 확장을 관리하는데 필요한 사용자 영역 유틸리티도 포함됩니다.

강화 프로파일로 전환

강화(hardened) 프로파일을 선택해서 꾸러미 관리자가 강화 방식으로 동작하게 하십시오.

root #eselect profile list
root #eselect profile set [number of hardened profile]
root #source /etc/profile

강화 프로파일을 선택하면 각각의 꾸러미 관리 설정(마스크, USE 플래그 등)이 시스템의 기본이 됩니다. 이를 통해 툴체인을 비롯한 많은 패키지에 적용됩니다. 툴체인은 프로그램을 빌드하고 컴파일하는데 사용하며 GNU 컴파일러 모음(GCC), binutils(linker 등), 그리고 GNU C라이브러리(glibc)를 포함합니다. 툴 체인을 다시 이머지하면 새 기본 설정을 툴체인에 적용하게 되며, 이 동작은 앞으로 꾸러미 컴파일을 강화 방식으로 허용합니다.

root #emerge --oneshot gcc
root #emerge --oneshot binutils virtual/libc

GCC를 다시 빌드하는 위 명령을 통해, 컴파일러는 강화된 프로그램을 컴파일하는데 사용할 수 있습니다. GCC에 대해 강화 옵션을 선택했는지 확인하십시오.

root #gcc-config -l
[1] i686-pc-linux-gnu-4.5.3 *
[2] i686-pc-linux-gnu-4.5.3-hardenednopie
[3] i686-pc-linux-gnu-4.5.3-hardenednopiessp
[4] i686-pc-linux-gnu-4.5.3-hardenednossp
[5] i686-pc-linux-gnu-4.5.3-vanilla

위의 출력 예시에서와 같이, 강화 GCC 프로파일은 접미어가 없습니다. PIE나 SSP를 비활성화 하려면, 관련있는 hardenedno(pie|ssp) 또는 둘 다 적용하는 경우 hardenednopiessp를 선택하십시오. vanilla 프로파일은 물론 강화 방식을 비활성화 합니다. 따라서 새 프로파일 설정의 소스는 다음과 같습니다:

root #source /etc/profile

"미리 연결한" 패키지를 사용한다면 강화 프로파일과 호환되지 않으므로 제거하십시오:

root #emerge --depclean prelink

이제 새로 강화한 툴체인으로 모든 패키지를 다시 설치할 수 있습니다:

root #emerge --emptytree --verbose @world

강화 커널 소스를 설치하여, 커널이 강화된 방식(특히 PaX를 사용하여)으로 *실행중인 시스템을 관리*하도록 할 수 있습니다:

root #emerge --ask hardened-sources

이제 이제 소스를 설정하고 컴파일 한 다음 부트 관리자(예: GRUB)에 새 커널을 추가하십시오.

요령

보안 강화 젠투/Grsecurity chroot

CONFIG_GRKERNSEC_CHROOT를 활성화 한 복사 환경에 chroot를 적용하려 한다면 cd grub을 사용하고 root(cd) kernel(cd) initr(cd) 설정을 (cd)에서 (hdx,y)로 바꾸어야 합니다.

이제 grub 환경을 설치할 수 있습니다.

패키지별 강화 설정

경고
이 방법은 젠투에서 지원하지 않습니다.

각 패키지당 GCC 프로파일을 바꾸면 문제가 될 수 있습니다. 이런 문제를 막기 위해 package.env를 사용하여 패키지당 C(XX)FLAGS를 설정합니다. /etc/portage/env/nossp 파일을 만들고 다음을 추가합니다:

파일 /etc/portage/env/nosspSSP 비활성화
CFLAGS="${CFLAGS} -fno-stack-protector"
CXXFLAGS="${CXXFLAGS} -fno-stack-protector"

PIE를 비활성화 하려면, /etc/portage/env/nopie를 만들고 여기에 내용을 추가하십시오:

파일 /etc/portage/env/nopiePIE 비활성화
CFLAGS="${CFLAGS} -no-pie"
CXXFLAGS="${CXXFLAGS} -no-pie"
LDFLAGS="${LDFLAGS} -no-pie"
참고
GCC 4.x 버전에서는 -no-pie 옵션 대신 -nopie 옵션을 활용합니다.

마지막으로 /etc/portage/package.env와 관련된 /etc/portage/env/<filename>에 비활성화 하려는 PIE나 SSP를 추가하십시오. 예를 들어 sys-libs/zlib는 다음처럼 작성합니다:

파일 /etc/portage/package.envsys-libs/zlib에 대해 PIE 비활성화
sys-libs/zlib nopie

추가 참조

더 많은 정보는 다음 자료를 확인하십시오:

외부 자료