안녕하세요 미씨오입니다.
오늘은 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하게 한다.)
SELINUX는 Engorcing(활성화, 위반 시 접근거부하고 로그에 기록함), 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 해서 A를 B로 복사해야 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 |