본문 바로가기

Linux/보안

시스템 보안 - Immutable Bit 설정


Immutable Bit 설정 - chattr & lsattr (파일 속성 설정)
- 리눅스 사용시 중요한 파일들을 관리자라도 실수로 삭제하는 것을 방지하기 위해 immutable bit 속성을 부여해준다.


1. man chattr & man lsattr

 
# man chattr

이름 : chattr - 리눅스 개정판 확장 화일시스템 상의 화일 속성 변경

개요 : chattr [ -RV ] [ -v 버전 ] [ 모드 ] 화일들...

설명 : chattr 은 개정판 확장 화일시스템의 화일 속성을 변경한다.
         심볼릭 모드의 형식은 +-=[Sacdisu] 이다.
         ‘+’   연산자는 주어진 속성을 현재 화일의 속성에 추가한다. 
         ‘-’ 연산자는 속성을 제거한다.
         ‘=’ 연산자는 화일이 갖는 속성을 오로지주어진 속성만 갖도록 설정한다.

       ‘Sacdisu’  라는 문자들은 화일에 대한 속성을 나타낸다. 
       동시적 갱신 (S), 추가만 지원(a), 압축상태(c), 면역상태 (i), 덤프 안함 (d), 안 전 한   지움(s), 지울 수 없음 (u).

옵션
  -R     디렉토리와 그 이하 모든 내용의 속성을 회귀적으로 변환시킨다.
  -V     변화된 속성에 대하여 자세히 출력한다.
  -v     버전 화일에 버전을 설정한다.

속성
  ‘a’    속성을 지닌 화일은 쓰기시에 오로지 추가모드로만 열 수 있다.
  ‘c’    속 성을 지닌 화일은 커널에 의해 디스크 상에 압축 상태로 저장된다.
         화일로부터 읽기 작업을 하면 압축이 풀린 자료가 반환된다. 쓰기 작업은 디스크 상에 저장하기 전에 자동으로 압축된다.
  ‘d’    속성을 지닌 화일은 dump(8) 명령 수행시 백업되지 않는다.
  ‘i’     속성을 가진 화일은 수정할 수 없다: 지울 수도 이름을 변경할 수도 그리고링크도 가할 수 없으며 어떤 자료도 써질 수 없다. 
         오로지 수퍼유저 만이 다시 이 속성을 설정하거나 지울 수 있다.
  ‘s’    속성을 가진 화일이 지워질 때는 일단 블럭들이 모두 0 으로 되고 다시 디스크상에 씌여진다.
  ‘S’    속성을 가진 화일이 수정될 때는 그 변화가 디스크 상에 동기 화 된 다. 이것은 마치 ‘sync’ 마운트 옵션을 몇몇 화일에게 부여한 것과 같다.
  ‘u’    속성을 가진 화일이 지워지면 그 내용이 저장된다. 사용자는 다시 복구 할 수있다. - ext2, ext3 파일시스템내에서 아직 복구는 할 수 없다.

버그와 제한 사항
       ext2  화일시스템 0.5a 까지는 커널에 의해 ‘c’와 ‘u’ 속성이 제대로 지켜지지않고 있다.
       이러한 속성들은 다음 버전의 ext2 화일 시스템에서 구현될 것이다.

AVAILABILITY
       chattr 은 ftp.ibp.fr 또는 tsx-11.mit.edu 에서 익명  ftp를 통하여  /pub/linux/packages/ext2fs 디렉토리에서 구할 수 있다.

# man lsattr


영문 man 페이지 보기
- 영문 man 페이지를 보면 더 자세히 알 수 있음

# export LANG=C - 터미널 창을 닫고 새로 열면 원상복구 된다.
# man chattr
# man lsattr




2. Immutable Bit 설정 - chattr & lsattr

 
[root@server3 ~]# lsattr /etc/passwd
------------- /etc/passwd
[root@server3 ~]# chattr +i /etc/passwd  - /etc/passwd 파일을 삭제 및 추가, 수정이 불가능하게 한다.(+i 옵션)
[root@server3 ~]# lsattr /etc/passwd
- chattr 옵션이 적용된 파일의 속성을 확인할 수 있다. 
----i-------- /etc/passwd
[root@server3 ~]# rm -rf /etc/passwd

rm: cannot remove `/etc/passwd': 명령이 허용되지 않음
[root@server3 ~]# chattr -i /etc/passwd
- chattr 옵션 적용을 해제한다.


[root@server3 ~]# lsattr /etc/passwd
------------- /etc/passwd
[root@server3 ~]# chattr +a /var/log/messages - 기존 파일의 내용을 삭제 및 수정은 할 수 없고 새로운 내용만 추가 할 수 있다.(+a 옵션)
[root@server3 ~]# lsattr /var/log/messages
-----a------- /var/log/messages
[root@server3 ~]# rm -rf /var/log/messages
rm: cannot remove `/var/log/messages': 명령이 허용되지 않음
[root@server3 ~]# chattr -a /etc/passwd - chattr 옵션 적용을 해제한다.