리눅스보안강좌#4 : 파일 속성(attribute) 변경 방법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,134 조회
- 0 추천
- 목록
본문
파일 속성(attribute) 변경 방법
윈도우에는 ‘읽기전용파일’이라고 해서 시스템에서 중요한 역할을 하면서 별로 변경될 일이 없는 파일들이 있다.
이러한 파일에는 읽기전용(read only) 속성(attribute)을 걸어 놓아 실수로 삭제되거나 변경되는 것을 예방할 수 있는데, 리눅스에서도 이러한 개념을 제공하고 있다.
사실상 예전 DOS 시절부터 읽기전용 속성의 개념은 있어왔으며 Windows 2000등 진보된 다른 시스템에서도 이 기능을 여전히 제공하고 있는데, 리눅스에서는 chattr이라는 명령어를 제공하여 보다 다양한 기능을 이용할 수 있다.
chattr은 “change attribute”의 약자로서 말 그대로 파일의 속성을 변경한다는 의미이다.
이 속성은 파일 시스템 차원에서 제어를 하는 것이기 때문에 소유권이나 퍼미션과는 관계없이 별도로 작동하며 사용 방법은 다음과 같다.
chattr +-= [ASacdisu] filename 또는 directory
여기에서 각각 ‘+’ : 지정한 옵션을 추가한다는 의미
‘–’ : 지정한 옵션을 삭제한다는 의미
‘=’ : 지정된 옵션을 초기화하여 설정한다는 의미이다.
몇 가지 제공되는 옵션이 있는데, 가장 대표적인 몇 가지만 알아보도록 하자.
A : 파일에 대한 atime 즉 접근시간(Access time)속성을 변경할 수 있다.
a : append(추가)만이 가능하다.
i : 가장 많이 사용되는 것으로 immutable의 의미로 파일의 추가, 변경, 삭제등이 불가능하 다.
대부분 우리가 알고 있는 파일의 속성은 “ls -la”로 확인해 볼 수 있는 내용 즉 파일크기, 파일이름, 소유권, 마지막 변경 일자 등이지만 실제로는 파일을 마지막으로 읽은 시각(접근한 시각)등도 시스템 내부에서는 계속 업데이트 된다.
. 따라서 하루에 10만 명이 접속하는 어떤 유명한 웹 사이트의 index.html은 유저들이 사이트를 방문할 때마다 이 파일을 매번 읽게 되므로 하루에 10만 번 접근시각 정보를 업데이트 하게 되어 Disk I/O가 상당히 발생하게 될 것이다.
따라서 이 속성(A)을 추가하면 접근시각은 업데이트 하지 않게 되어 불필요한 Disk I/O를 줄이게 되며 따라서 이 속성은 보안보다는 성능 튜닝과 더욱 관계가 있다고 할 수 있다.
atime 속성은 아래와 같이 ‘stat filename’으로 확인 가능하다.
[user @www public_html]$ stat index.html File: "index.html" Size: 974 Filetype: Regular File Mode: (0644/-rw-r--r--) Uid: ( 687/ user) Gid: ( 687/ user) Device: 8,33 Inode: 3637753 Links: 1 Access: Sat Feb 2 10:11:46 2004(00169.00:54:18) Modify: Sat Oct 27 20:02:33 2003(00266.15:03:31) Change: Mon Jan 7 09:57:25 2004(00195.01:08:39) |
위의 결과를 보면 Access:라는 부분이 있는데, 이 부분이 바로 파일에 대한 접근시각을 나타낸다. 그리고 대문자 A가 접근시각(Access time)에 대한 정보를 나타내는 것이라면 소문자 a는 append의 의미로 파일에 대한 ‘추가’만이 가능하도록 한 설정이다.
즉, 이 속성을 설정해 두면 파일에 추가만이 가능하고 내용의 일부 삭제나 변경 등을 절대 할 수 없게 된다.
. 매번 로깅 정보가 추가되는 로그파일등에 이 속성을 설정해 두면 오직 추가만이 가능할 뿐 어느 누구도 삭제할 수 없으므로 로그파일등의 보안에 매우 적합할 것이다.
마지막으로 가장 많이 사용되는 i 속성은 immutable의 의미로 어떠한 삭제나 추가, 변경 등을 할 수 없게 된다.
. 실제로 그러한지 확인해 보도록 하자. 여기에서 lsattr이라는 생소한 명령어를 사용하게 되는데 이 명령어를 이용하면 파일의 속성을 확인해 볼 수 있다.
[root@www /root]# touch test [root@www /root]# chattr +i test |
chattr 명령어를 이용하여 test 파일에 i속성을 추가하였다.
[root@www /root]# lsattr test ----i--- test |
lsattr로 확인해 보니 i 속성이 추가된 것을 알 수 있다.
[root@www /root]# rm test rm: remove write-protected file `test'? y rm: cannot unlink `test': Operation not permitted |
i 속성이 설정되어 있어 root가 파일을 삭제하려 하여도 삭제할 수 없다.
[root@www /root]# chattr -i test |
이번에는 i 속성을 해제하였다.
[root@www /root]# lsattr test -------- test |
다시 lsattr로 확인해 보니 속성이 해제되었음을 알 수 있다.
[root@www /root]# rm test rm: remove `test'? y [root@www /root]# |
아무런 속성이 없으므로 정상적으로 삭제되었다.
chattr은 Remy Card라는 ext2 파일시스템 개발자가 개발하였으며 이 명령어는 ext2나 ext3 파일시스템에서만 제대로 작동한다. |
따라서 위와 같이 chattr를 이용하여 변경되지 말아야 할 중요한 파일에 대해 이 속성을 설정해 두면 유용할 것이다.
이를테면 계정을 추가, 삭제 변경하거나 암호를 변경할 일이 없다면 /etc/passwd나 /etc/shadow 파일에 속성을 걸면 될 것이고, 중요한 데몬의 설정 파일에도 설정할 수 있을 것이다.
또한 이를 악용하여 공격자가 시스템에 침입한 후 백도어를 삭제할 수 없도록 백도어 파일에 설정해 두는 경우도 자주 있는데, 실제로 해킹당한 시스템에서 chattr과 관련되어 어떻게 사용되는지 살펴보자.
9장 보안프로그램 활용에서 살펴볼 루트킷 탐지 프로그램인 chkrootkit을 실행하여, 변조된 시스템 파일을 찾아 원본 파일로 대체하기 위해 다음과 같이 실행하였다. 여기에서 현재 디렉토리에 있는 ifconfig는 원본 파일이고 /sbin/ifconfig는 공격자에 의해 변조된 파일이다.
# mv ifconfig /sbin/ifconfig mv: overwrite `/sbin/ifconfig', overriding mode 0755? y mv: cannot move `ifconfig' to `/sbin/ifconfig': Operation not permitted |
원본 파일로 대체하려고 하였으나 에러가 나면서 파일을 변경할 수 없는 것을 확인하였다.
# lsattr /sbin/ifconfig suSiadAc------ /sbin/ifconfig |
lsattr을 실행하니 해당 파일에 여러 속성이 설정되어 있는 것을 알 수 있다.
# chattr -suSiadAc /sbin/ifconfig |
chattr 실행시 -를 이용하여 이 모드를 모두 해제하였다.
# mv ifconfig /sbin/ifconfig mv: overwrite `/sbin/ifconfig'? y # |
이후 다시 mv를 시도하니 정상적으로 파일이 변경되었다.
이렇듯 백도어 파일을 찾아도 삭제하지 못하도록 이 속성을 설정해 두는 경우가 자주 있으니 혹 해킹을 당했다면 lsattr /bin/* 등으로 디렉토리 내 속성이 변경된 파일이 있는지를 찾아보기 바란다.
강사 : 홍석범부매니저 소속: 라쿠텐
관련자료
-
이전
-
다음