본문 바로가기
지식 공유/리눅스

Firewall과 함께 linux에서 보안으로 SELinux(Secure Enhanced Linux)를 사용할 수 있다.

by missio 2019. 7. 18.

안녕하세요 미씨오입니다. 

오늘은 SELINUX에 대해 배운내용을 공유해드립니다. 

 

도구는 미국 NSA(natioanl security agency)에서 개발한 모듈로써 Secure OS개념을 모토로 한다.

이제까지는 Linux 파일/폴더는 이들을 생성한 (일반)사용자의 소유가 되어서 이들이 임의적으로 보안설정 등을 함으로써(DAC-임의접근제어(Discretionary Access Control))전체 시스템에 보안적 위험성을 증가시켜왔다. 

 

이를 방지하고자 시스템 관리자가 모든 파일/폴더의 관한 권한을 가지고  중앙에서 일괄적으로 정책파일을 만들어서 관리하게 함으로써('강제접근제어(MAC(Mandatory Access Contol)') 상대적으로 파일/폴더에 관한 일반사용자의 권한을 축소시킴 root 권한을 역할별로(role 기반)분리해서 특정 서비스와 실행의 권한을 줄임으로써 (최소 권한(minimal privilege)) 해당 서비스에 침해가 있을 피해가 최소한으로 되게 한다.

('역할기반 접근제어:RBAC(Role Base Access Control)').

 

SELINUX는 파일/디렉터리, 장치(blcok device)등 시스템 자원(resouces :CPU, RAM ,FILE, FOLDER/DIRECTORY, USER, GROUP....)에 대해서 type 이라는 라벨(label)을 붙여서 구별하고(TE(Type Enforcement)) 있는데, 특히 프로세스에 붙인 레이블을 도메인(domain:부모 프로세스 PPID여러 자식 프로세스들(PIDs))으로 부른다.

TE 구조에서는 취약점이 있는 프로세스를 통해서 해킹이 발생해도 해당 프로세스의 실행권한만 빼앗길 뿐 나머지 전체적인 실행에는 영향을 끼치지 않는다. PPID의 권한이 '도메인 전이(domain transfer)'를 통해서 PID에게 이전되는 구조이다. (fault-tolearance한 구조로 만들어서 fail-safe하게 한다.)

 

SELINUXEngorcing(활성화, 위반 시 접근거부하고 로그에 기록함), Permissive(위반 시 경고메세지를 보내지만 로그에 기록하지 않고 연결한다), Disableed(비활성화, 위반을 감지하지 못한다.) 모드 세 가지로 나눈다.

 

파일/프로세스, 유저에게는 security context라는 보안식별 레이블이 붙는데 명령어에 -Z 옵션을 ls -lZ /root/install.log식으로 해주면 된다보통은 시스템 패키지를 설치하면 적절한 보안이 제공되는데, 일반적인 사용에서 벗어난 사용을 프로세스가 해당파일/디렉터리에 접속할 없는 경우도 생긴다. 이럴 때에는 해당 파일의 보안 Security context 변경해줘야 접속할 있게 된다.

 

● 기존에 접속이 잘되는 파일의 context 복사해서 해당 파일의 컨텍스트로 만들어 주면 된다. 

 chcon --reference=잘되는 파일의_경로 접속이 되는 파일의_경로 식으로 )

 

ex) chcon --reference=/var/www/html/index.html /etc/passwd 식으로 해두면 /etc/passwd 파일도 웹에서 볼 수 있다.

 

● 보안때문에 안열릴수도 있으므로 chcon(웹에서 보이는 파일의 속성으로 변경해서 옮겨주면됨)으로 설정을 해준다.

 위치가 변경되면 보안설정이 바뀔 수 있다.

 

파일/디렉터리를 복사/이동하게 되면 이동되는 곳의 속성을 부여받게 되어져 있다.

(상속:inherit). cp --preserve=all A B 해서 AB 복사해야 A 원래대로의 속성을 가지게 된다.

(그렇지 않으면 B 속성을 상속받게 되어서 바뀌게 것이다.) 

역시 압축을 때에도 star 명령어에 -xattr -H=exustar -c -f=A B식으로 해줘야 압축할 원래 파일 A 속성이 B 속성으로 변하지 않게 된다.

 

SELINUX에서는 보안컨텍스트를 가지고 있고 확인하는 방법은 ls -Z 명령어를 입력하면 된다리눅스에서보면 아파치는 pid이지만 web상에서는 아파치가 ppid 된다. PID 오류가나도 PPID 작동에는 문제가 없다.

 

Fail-safe : 시스템에 오류가있어도 시스템은 정상정으로 돌아가야한다. 

fault-tolerance : 오류가 있어도 시스템이 지속되어야 한다.

 

'지식 공유 > 리눅스' 카테고리의 다른 글

centos 7 이상 mysql 설치 및 초기 설정 방법  (0) 2019.08.01
리눅스 nfs mount mount nobody 이슈  (0) 2019.07.31
IPtables란?  (0) 2019.07.22
쉘 스크립트란?  (0) 2019.07.19
리눅스 서버 보안 사항  (0) 2019.07.17