강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

파일속성설정으로 리눅스파일 보안구현(chattr, lsattr) 1편

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

파일속성설정으로 리눅스파일 보안구현(chattr, lsattr)

 

 

파일보안을 위한 chattr 실무 개론

 

혹시 MS DOS시절의 attrib라는 프로그램을 기억하십니까?

 

도스에 있었던 이 프로그램은 파일의 속성을 설정/변경하는 것이였다.

 

, 특정파일에 대한 읽기만 허용한다든지 삭제를 못하게 한다든지하는 속성지정이 가능했었다.

 

리눅스에서는 이보다 더 강력한 chattr이라는 파일속성을 설정/변경할 수 있는 명령어가 있다.

 

즉 특정파일에 대해 삭제 및 변경, 추가등을 불가능하게 한다든지 추가는 되지만 삭제는 안되게 한다든지하는 설정이 chattr이라는 명령어로 가능하다.

 

이번 절에서 설명드릴 내용은 chattr이라는 명령어를 이용하여 리눅스서버의 중요한 파일들에 대한 속성을 지정하여 삭제 및 변경, 추가등을 불가능하게하는 방법과 그 효용에 대해서 자세히 언급해 보고자 한다.

 

필자는 주로 리눅스부팅에 관련된 파일들에 대해 변경 및 삭제, 추가를 못하게 설정해 두고 있다. 필자가 대상으로 하는 파일들은 /etc/rc.d/ 디렉토리에 존재하는 파일들 이다.

 

, /etc/rc.d/rc, /etc/rc.d/rc.local, /etc/rc.d/rc.sysinit 파일들을 그 대상으로 하고 있다. 

 

물론, 이 외에도 chattr을 이용하여 다른 중요한 파일들에 대한 속성지정은 얼마든지 가능하다. 단 이런 속성설정에 대한 제한사항을 염두에 두셔야 한다.

 

그리고 리눅스의 파일속성 설정내용은 일반 명령어로는 확인 할 수 없으며 반드시 lsattr로만 확인이 가능하다.

 

, 그럼 이제 chattr을 좀 더 보안적인 관점에서 얘기해 보도록 하겠다. 직접 실습을 하기 전에 가능한 imsi라는 테스트디렉토리를 만드신 후에 연습하실 파일을 imsi디렉토리로 복사하셔서 실습하기 바란다.

 

실무에 적용하기 전에 반드시 테스트를 하여 적용이 되는가를 확인해야 하니까요.

 

서버관리를 하다보면 root명령어로도 삭제되지 않는 경우를 경험해 보셨을 것이다.

 

, 다음과 같은 경우 분명히 root로 파일을 삭제 하였음에도 불구하고 삭제가 되지않는 경우가 있다.

 

 

[root@command root]# ls -l testfile

-rw-r--r--    1 root     root           12 Mar 30 01:56 testfile

[root@ command root]#

[root@ command root]# rm -f testfile

rm: cannot unlink `testfile': Operation not permitted

[root@ command root]#

 

위의 testfile root로 삭제하려고 하였으나 보시는 바와 같이 “Operation not permitted”라는 메시지와 함께 삭제되지 않았습니다. 

 

여러분들께서도 위와 같은 황당한 경험을 한번쯤은 해보셨으리라 생각한다. 

 

왜그럴까요.

 

이 파일에는 삭제되지 못하도록 하는 파일속성이 설정되어있기 때문이다.

 

가끔씩 해킹을 당한 서버내에 이런 파일들이 존재하는 경우가 흔히 있다.

 

이런 경우에 chattr lsattr명령어로 해당 파일에 설정되어있는 파일의 속성을 확인해 보시고 올바른 속성으로 수정하면 삭제할 수 있다.

 

, 이런 파일의 속성을 설정하고 제거할 수 있는 명령어가 chattr이며 파일에 설정되어있는 속성을 확인하는 명령어가 lsattr이다.

 

어떤분들께서는 좀 황당하게 생각할 수도 있을 것이다. 

 

파일의 퍼미션(permission)에 대한 이해와 설정방법만 해도 복잡해 죽겠는데, 뭔 속성이라는 것이 있어서 이렇게 힘들게 하나라고 말이다.

 

하지만, 분명히 말씀드리지만 현명하고 똑똑하고 유능한 서버관리자가 되려면 파일의 퍼미션외에도 속성에 대해서 정확하게 알아두셔야 한다.

 

필자가 지금 괜히 공포분위기 조성하는 것이 아니라 사실이기 때문에 힘주어 강조하고 있는 것이다. 

 

따라서 이번절의 설명을 잘 읽고 이해하셔서 여러분들의 서버관리 행로에 일취월장의 보탬이 되기를 바란다.

 

이쯤에서 잔소리는 각설하고 한마디로 요약하자면 chattr명령어는 앞서 설명드린바와 같이 파일과 디렉토리의 속성을 지정하는 명령어이다.

 

, 리눅스에서는 chattr이라는 명령어로 파일과 디렉토리의 속성을 지정할 수 있다.  

 

여기서 말하는 속성은 파일의 퍼미션(permission)과는 다른 것으로 다음과 같은 것들이 있다.

 

특정파일에 대해 삭제 및 변경, 추가등을 불가능하게 한다든지, 추가는 되지만 삭제는 안되게한다든지하는 설정이 가능하다.  

 

쉽게 말씀드리면, 퍼미션(permission) ls명령어로 확인할 수 있는 것으로 파일의 읽기(read), 쓰기(write), 실행(execution)에 관한 표시를 하지만, 속성은 lsattr로 확인할 수 있으며 파일의 변경과 접근,실행등의 권한을 설정해둔 것이다.


chattr 사용법  : # chattr [-RV] [-v 설정버전] [+-=설정모드] 대상파일들

lsattr 사용법  : # lsattr [-RVadv] [대상파일들]

 

 

chattr에서 사용하는 [설정모드]는 다음과 같습니다

 

 

 + : 지정한 속성을 부여한다.  +기호가 사용되면 지정한 속성을 부여한다는 의미이다.
 - :
지정한 속성을 제거한다.  -기호가 사용되면 부여된 속성을 제거한다는 의미이다.
 = :
원래 파일이 가지고 있던 그 속성만을 유지하게 한다.

그리고 chattr에서의 -RVv옵션에 대한 설명은 다음과 같습니다.

-R  :  서브디렉토리이하까지 그 속성을 변경할 수 있다.

-V  :  자세한 출력모드를 제공한다.

-v  version : 지정된 파일에 버전을 설정할 수 있다.

 

 

또한 chattr명령어에서 무엇보다 중요한 것은 각 속성을 정확하게 이해하는 것이다.

 

, chattr로 설정할 수 있는 파일(디렉토리)의 속성에는 다음과 같은 것들이 있다. 

 

아래 각 속성의 의미를 정확하게 이해하시고 여러분들께서 관리하는 리눅스서버의 파일보안을 위하여 chattr로 설정(+)하시거나 또는 제거(-)하실 수 있다.

 

아래 속성의 의미를 파악하신 후에 이어지는 실제 사용예들을 보기 바란다.

 

 

a 속성
해당 파일을 추가만 할 수 있다. 당연히 root만이 속성변경이 가능하다. 파일보안을 위해 주로 사용하는 속성이다.

 

이 속성은 /var/log/messages와 같은 로그파일에 적용하면 효과적이다.


c
속성
이 속성이 설정된 파일은 커널에 의해 디스크상에 자동적으로 압축된 상태로 저장이 되어 있다.

 

파일을 읽을 경우에는 압축을 해제한 상태로 되돌려주며 쓰기시에는 디스크에 저장하기 전에 파일을 압축한다.

 

d 속성
이 속성이 설정된 파일은 dump로 백업이 되지않다.

 

i 속성
이 속성이 지정되어 있다면 해당파일의 변경, 삭제, 이름변경뿐 아니라 파일추가및 링크파일도 만들 수 없게 된다.

 

변경추가가 거의 없는 부팅관련 파일들에 설정하면 부팅이 되지않는 문제로 인한 시스템장애를 줄일 수 있다.

 

또한 a 속성과 함께 필자가 주로 사용하는 속성이기도 한다.

 

s 속성
이 속성이 설정된 파일은 파일삭제가 될 경우에 해당블럭이 모두 0으로 되어 버리고 디스크에 다시 쓰기가 발생한다

 

S 속성
이 속성이 설정된 파일은 변경이 될 경우에 디스크동기화가 일어나는 효과를 그대로 누릴 수 있다

 

u 속성
이 속성을 가진 파일이 삭제가 되었을 경우에는 그 내용이 저장이 되며 삭제되기 전의 데이터로 복구가 가능해진다.

 

따라서 chattr로 파일과 디렉토리의 속성을 지정하는 주된 이유는 허가되지않은 사용자가 파일의 변경을 못하게하는 설정을 하여 파일보안을 하기위한 것이다.

 

여기서 주의 하실 것은 a, i, j속성을 root만 설정할 수 있다. 일반사용자의 자기소유파일이라도 이 속성은 설정할 수 없다.

 

만약 일반사용자가 자기소유파일에 이 속성을 부여하려한다면 “chattr: Operation not permitted while setting flags on 파일명과 같은 에러메시지가 출력되면서 설정되지 않다.

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,017 명
  • 현재 강좌수 :  35,690 개
  • 현재 접속자 :  238 명