지니워의 일상다반사

리눅스 서버 보안 설정 chattr, lsattr에 대해 알아보자. 본문

본격 SE업무이야기/보안철저!

리눅스 서버 보안 설정 chattr, lsattr에 대해 알아보자.

지니워 2013. 8. 20. 18:06

세상에는 리눅스 서버를 다루는 많은 SE들이 있다. 다른 직업도 마찬가지겠지만 SE간의 실력차를 가늠할 수 있는 몇 가지가 있다. 물론 SE마다 그 기준이 차이가 있겠지만 실력차를 평가할 수 있는 스킬 중 하나가 '서버보안'이라는 부분에 대해서는 대부분 동의할 것이다. 그만큼 보안은 SE에게 중요한 것이며 보안을 빼고서 SE를 논할 수 없다고 할 수 있을 정도로 중요하다. 특히, 요즘엔 DDos나 해킹, 웹쉘(WebShell)등의 서버를 위협하는 공격수단이 날로 발전하고 있기 때문에 보안의 중요성은 점점 더 커지고 있다.


물론 원칙적으로 보안은 '보안관리자' 혹은 '보안전문가'가 담당하는 것이 맞다. 하지만 현업에 종사하면서 '보안관리자'나 '보안전문가'를 만나본 적이 없다.


'보안담당자는 상상속의 인물이 아닐까?'

하는 생각이 들 정도로 그들을 직접 만나본 적은 없다. 아...얼마전에 직접 만나지는 못했지만 DDos 및 해킹때문에 한국인터넷진흥원(이하 KISA)의 보안담당자와 전화통화와 이메일을 주고 받은 적이 있다. 서버쪽 로그를 제공하고 그 로그에 대한 분석 및 컨설팅을 받았는데 크게 건질 건 없었던 기억이...음음 암튼, 현업은 이론처럼 진행되지 않는 경우가 태반이기 때문에 보통 SE가 서버의 보안을 담당한다. 어찌보면 당연한 것이지 않을까?자기 서버에 대해 가장 잘 알고 있는 사람이 바로 SE이기 때문에 외부공격에 대한 대응도 가장 빠르게 할 수 있다.(chattr를 이용해서 주요 파일들을 잠궈둔다던가, 혹은 backup용으로 mount해둔 디스크를 unmount해서 rm으로부터 data를 지킨다던가 등등...)물론 업무가 늘어나는 건 가슴아픈 일이지만 말이다.


이번에는 현업에서 써먹을만한 보안관리법에 대해 적어볼까 한다. 많은 것들이 있겠지만 오늘 이야기할 것은 바로 chattr과 lsattr이다.



1. 이들은 누구인가?

 - 인터넷이나 서적을 찾아보면 자세한 설명이 나온다. 자세하다 못해 장황한 설명까지 곁들여져 있는 것도 있는데 간단히 이야기 하면 파일이나 폴더의 속성을 정해주는 것이다. 그렇다면 속성은 무엇인가?속성은 권한과 다른 성격을 띄고 있는데 예를 들어 x라는 파일이 있다면 이 파일은 지우기가 안되게 한다던가 자동으로 압축이 되게 한다던가 혹은 파일의 변경, 이름변경등을 되지 않게 막는 것등이 바로 속성이라고 할 수 있다. 이는 파일에 대한 권한을 주는 것과는 엄연히 다르다.


2. 각 명령어들의 역할은?

 - chattr은 속성 설정. lsattr은 설정 확인.

 - 보통 chattr +i 파일명(디렉토리명) 혹은 chattr +a 파일명(디렉토리명)명령이 많이 쓰인다. i는 파일에 대한 수정, 삭제, 이름변경등을 모두 막는 옵션이고 a는 파일 삭제 방지 및 수정을 하게 되면 파일이 계속 추가되도록 하는 옵션이다. 예를 들어 111.txt라는 파일안의 내용을 vi편집기를 이용해 내용을 추가하거나 삭제하면 111.txt~, 111.txz등의 파일이 생성되는 것이다. 두가지 옵션 모두 파일을 삭제하기 위해 rm 명령어를 실행하면


rm: cannot remove `111.txt': Operation not permitted


와 같은 메세지를 뱉어내면서 파일의 삭제를 막는다. 위 명령은 root권한으로 실행해도 마찬가지이다. 간단하지만 아주 강력한 보안 수단이라고 할 수 있겠다.


각 파일의 속성에 대한 정의를 알아보기 위해 사용하는 명령어가 바로 lsattr이다. 사용법은 간단하다.


lsattr 111.txt

이렇게 치면


-----a-------e- 111.txt


이런식으로 결과가 나온다. 저기 보이는 e는 ext4 포맷을 ext3 포맷으로 변형시켜 주는 것이라고 한다. 크게 상관 없으니 패스.


3. 어떻게 활용할까?

 - 보통 서버는 IDC센터에 있고 ssh를 이용해 원격으로 서버에 접속을 하는 경우가 많다. 이 경우 거리상의 제약으로 인해 서버의 세팅은 IDC센터에서 하게 되는데 IDC센터에서 서버세팅을 완료한 후 SE에게 연락하여 서버세팅이 완료되었다고 알려주는데 그 잠깐의 시간동안 서버가 해킹을 당할수가 있다면 믿을 수 있겠는가? 하지만 이런 일이 실제로 발생하고 있다. 비록 짧은 시간이긴 하지만 서버가 무방비인 상태로 노출되어 있고 각종 프로그램들이 보안이 취약한 서버들을 찾고 있으므로 무방비 상태의 서버는 해커들에게 금방 노출된다. 해커들이 제일 먼저 하는 것은 자신들이 설치한 해킹툴이 돌아가고 있는 것을 감지하는 것을 막기 위해 ps파일을 변조하는 것인데, 서버를 재설치 할때 IDC측에 ps파일에 대해 chattr +i /bin/ps을 실행해달라고 하면 해킹툴이 설치되었다고 하더라도 ps -aux를 통해 그 존재를 확인 할 수 있기에 훌륭하게 해킹을 감지하는 수단으로 활용 할 수 있다. 다른 여러가지 활용법들도 있겠지만 그건 각자 알아서 찾아보자.



오늘 포스팅은 여기까지.

Comments