우분투에서 AppArmor 사용하기

Ubuntu Apparmor Featured

우분투를 사용할 때 AppArmor에 대해 들어본 적이 있을 것입니다. 그러나 이 프로그램은 애플리케이션 메뉴에 표시되지 않으며 그래픽 형태로 나타나지 않기 때문에 일부 사용자들은 그 기능과 시스템에 중요한 이유를 잘 모를 수 있습니다. 요약하자면, AppArmor는 개별 프로그램을 특정 파일 및 권한 집합에 제한하는 보안 모듈로, 시스템에 피해를 주지 않도록 합니다.

Linux 시스템을 보호하기 위해 SELinux와 AppArmor의 차이를 배우십시오.

목차

  • AppArmor란 무엇인가?
  • AppArmor는 어떻게 작동하는가
  • AppArmor 상태 확인하기
  • 비활성화된 AppArmor 프로파일 찾기
  • AppArmor 프로파일 활성화 및 비활성화
  • AppArmor 프로파일의 모습
  • 응용 프로그램을 잠그기 위해 자신만의 프로파일 생성하기
  • AppArmor 중지 및 재시작
  • 자주 묻는 질문

AppArmor란 무엇인가?

AppArmor는 프로그램을 제한된 자원 집합으로 제한하는 강제 접근 제어(MAC) 시스템입니다. 이는 프로그램이 시스템 깊숙이 들어가 피해를 주지 않도록 파일, 속성 및 권한 집합에 대한 제약을 가합니다(허가가 주어지지 않는 한). Windows의 사용자 계정 제어(UAC) 모델이 사용자에게 제어를 제공하는 것과 달리, AppArmor는 접근 제어 속성을 프로그램 자체에 결합합니다.

AppArmor는 어떻게 작동하는가

AppArmor는 커널 레벨에서 작동하며(자신의 커널을 컴파일하는 경우 이 팁을 참조하세요) 처음 부팅할 때 로드됩니다. AppArmor는 프로파일을 통해 권한을 처리합니다: 프로그램이 할 수 있는 것과 할 수 없는 것을 결정하는 규칙 세트입니다.

프로파일은 두 가지 모드로 실행될 수 있습니다: 강제 적용 모드와 신고 모드. 강제 적용 모드는 프로파일에서 정의된 정책을 엄격하게 시행하고 정책 위반 시도를 보고합니다. 신고 모드는 정책 위반 시도를 보고만 하고 정책을 시행하지 않습니다. 대부분의 프로파일은 강제 적용 모드로 로드되지만, 제3자 프로파일이 신고 모드로 로드될 수도 있습니다.

AppArmor 상태 확인하기

우분투 7.04 이상을 사용하는 경우, AppArmor는 기본적으로 설치되어 있으며 컴퓨터를 부팅할 때 로드됩니다. AppArmor 상태를 확인하려면 터미널에 다음 명령을 입력하십시오:

sudo apparmor_status

아래 이미지는 당신이 보게 될 모습입니다.

Ubuntu Apparmor Sudo Status

내 시스템에서는 36개의 프로파일이 강제 적용 모드로 로드되어 있음을 볼 수 있습니다.

비활성화된 AppArmor 프로파일 찾기

AppArmor에는 여러 개의 미리 로드된 프로파일이 있으며, 그 중 일부는 기본적으로 비활성화되어 있습니다. “/etc/apparmor.d/disable” 폴더에서 이러한 프로파일을 확인할 수 있습니다. 최신 버전의 AppArmor에서는 rsyslogd 프로파일이 활성화되어 있지 않은 것을 알 수 있습니다.

Ubuntu Apparmor Disable Folder Usr Sbin Rsyslogd

이 프로파일은 기본적으로 비활성화되어 있으며, 사용자가 rsyslogd에 대해 구성 변경을 많이 하여 AppArmor와 호환되지 않는 경우가 많기 때문입니다.

: Webmin을 사용하여 우분투 머신을 원격으로 관리하는 방법을 배우십시오.

AppArmor 프로파일 활성화 및 비활성화

시스템에 여러 프로파일이 로드되어 있을 수 있지만, 각 프로파일은 개별적으로 활성화하거나 비활성화할 수 있습니다. 예를 들어, 이전에 언급한 rsyslogd 프로파일을 활성화할 수 있습니다. 방법은 다음과 같습니다.

터미널을 열고 다음을 입력하십시오:

sudo apt install apparmor-utils

이 명령은 이 튜토리얼의 후속 명령을 실행하는 데 필요한 도구를 설치합니다. 프로파일을 활성화하려면 다음을 입력하십시오:

sudo aa-enforce /etc/apparmor.d/usr.sbin.rsyslogd

다시 비활성화하려면:

sudoln-s/etc/apparmor.d/usr.sbin.rsyslogd /etc/apparmor.d/disable/  
sudo apparmor_parser -R/etc/apparmor.d/usr.sbin.rsyslogd

AppArmor 프로파일은 어떤 모습인가?

AppArmor 프로파일은 복잡한 소프트웨어처럼 들리지만, 실제로는 애플리케이션이 접근할 수 있는 폴더 및 디렉토리를 명시한 파일 경로가 있는 간단한 텍스트 파일입니다. “ /etc/apparmor.d” 폴더의 모든 프로파일을 두 번 클릭하여 텍스트 편집기에서 열 수 있습니다.

Rsyslogd 프로파일은 아래 이미지를 가집니다.

Ubuntu Apparmor Rsyslogd Profile Text View

응용 프로그램을 잠그기 위해 자신만의 프로파일 생성하기

우분투는 사용자를 보호하는 데 꽤 좋은 역할을 하지만, 우분투에서 보호되지 않는 사용자 정의 애플리케이션을 제한하고 싶다면 AppArmor 프로파일을 생성하여 애플리케이션을 잠글 수 있습니다. 이는 백그라운드에서 실행 중인 애플리케이션이 있는 서버에서 특히 유용합니다.

참고: 자신만의 프로파일을 생성하기 전에 기존 AppArmor 프로파일 라이브러리를 살펴보고 해당 애플리케이션의 프로파일이 있는지 확인하는 것이 좋습니다. 또한 추가 프로파일 목록을 얻기 위해 apparmor-profiles를 설치할 수 있습니다.

프로파일 생성을 시작하려면 다음 명령을 실행하십시오:

sudo aa-genprof /path/to/application

/path/to/application은 프로파일링할 애플리케이션의 파일 경로입니다. 기본 애플리케이션 폴더는 “/usr/bin”이지만, 애플리케이션 및 설치 방법에 따라 “/snap/bin”과 다를 수 있습니다.

Ubuntu Apparmor Aa Genprof Snap Bin Krita

터미널을 실행한 상태에서 프로파일을 만들 애플리케이션을 시작하십시오. 이 예에서는 Krita를 사용하고 있습니다. 애플리케이션을 정상적으로 사용하십시오.

애플리케이션에서 수행한 모든 작업에 대해 터미널로 다시 돌아가 Shift + S를 눌러 변경 사항을 스캔하게 하세요.

Ubuntu Apparmor Aa Genprof Shift S

여기에서 애플리케이션이 접근하는 경로와 행동의 심각성을 볼 수 있습니다. “Allow (A)” 또는 “Deny (D)” 중 하나를 선택하십시오.

이 작업을 애플리케이션에서 수행한 나머지 작업에 대해서 계속 진행하십시오. 최상의 결과를 얻으려면 프로파일링을 시작하기 전에 수행할 행동 목록을 계획하는 것이 좋습니다.

마지막으로, 작업이 끝나면 Shift + F를 눌러 프로파일링을 완료하고 Shift + S를 눌러 프로파일을 저장하십시오.

생성되면 프로파일은 “/etc/apparmor.d” 폴더에 저장되고 강제 적용 모드로 로드됩니다.

프로파일 수정하기

새로 생성한 프로파일을 수정하려면 다음 명령을 사용하십시오:

sudo aa-logprof /etc/apparmor.d/

이 경우, `는 이전에aa-genprof` 명령을 사용할 때 생성된 새로운 프로파일의 이름이어야 합니다. AppArmor는 로그 항목을 검사하고 프로파일을 수정할 수 있도록 해줍니다. ## AppArmor 중지 및 재시작 어떤 이유로 AppArmor를 중지해야 하는 경우, 다음 명령으로 쉽게 할 수 있습니다: sudo service apparmor stop 이 명령어를 통해 중지되었는지 상태를 확인할 수 있습니다: systemctl status apparmor Ubuntu Apparmor Disabled 다시 AppArmor를 시작하려면: sudo service apparmor restart 상태를 다시 확인하면 AppArmor가 실행 중이라는 것을 나타내는 초록색 등이 보일 것입니다. Ubuntu Apparmor Enabled 자신의 서버를 운영하고 있다면, 리눅스 서버를 안전하게 하는 팁을 확인하세요. ## 자주 묻는 질문 ### 왜 AppArmor는 기본적으로 rsyslog를 비활성화하나요? rsyslog는 시스템 로깅을 처리하는 설정 가능한 소프트웨어로, 로그 메시지를 수신하고 변환하며 다양한 목적지로 전달하는 기능을 포함합니다. 이 AppArmor 프로파일인 “usr.sbin.rsyslogd”는 포함되어 있지만 기본적으로 비활성화되어 있습니다. Canonical 엔지니어 Jamie Strandboge에 따르면, 이는 rsyslog가 매우 구성 가능하기 때문에 프로파일이 항상 제대로 작동하지 않을 수 있기 때문입니다. ### AppArmor 버전 2와 3의 차이는 무엇인가요? AppArmor 3.x는 AppArmor의 최신 버전으로 2020년 10월 1일에 출시되었으며, 주요 확장을 포함합니다. AppArmor 2.x는 2007년경 출시된 매우 오래된 버전입니다. 2.x 시리즈에 대한 적극적인 개발은 더 이상 진행되지 않는 것으로 보입니다. 최신 버전인 2.13.6은 2020년 12월에 출시되었으며, AppArmor 2.14는 개발 웹사이트에서 “취소됨”으로 나열되어 있습니다. AppArmor 3.0.7은 2022년 8월 9일에 출시되었습니다. ### AppArmor가 있으면 여전히 바이러스 백신이 필요한가요? 예, AppArmor가 실행 중일지라도 여전히 바이러스 백신 프로그램이 필요합니다. 두 가지는 완전히 다른 작업을 수행하며 서로를 보완합니다. 리눅스 시스템은 악성코드 제작자에 의해 덜 표적이 되지만, 우분투에 바이러스 백신을 갖추는 것은 좋습니다. 이진 블롭이란 무엇이며, 왜 보안 위험인가요? 그 대답을 배우고 Linux-Libre가 일반 Linux보다 더 나은 보호를 제공할 수 있는 방법을 알아보세요. 모든 스크린샷은 Brandon Li가 촬영했습니다.