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

FTP접속시 상위디렉토리 접근 제한하기

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

FTP접속시 상위디렉토리 접근 제한하기




































제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 박성수















FTP접속시 상위디렉토리 접근 제한하기 (Proftpd에서)


FTP서버를 운영하다 보면 본의아니게 일반사용자들에게 서버내의 모든 파일들을 모두 보여주고 있는 경우가 있었을 것입니다.  서버내부의 파일들을 일반사용자들이 볼 수 있다는 것은 보통심각한 일이 아닙니다. 예를 들어 다음의 경우를 보십시오.


일반사용자의 상위디렉토리 접근허용시 상황


다음의 예는 일반사용자로 접속하여 서버의 /etc/passwd파일을 볼 수 있는 예를 보인 것입니다. 물론 /etc/passwd파일을 자기의 PC로 가져가서 볼 수도 있습니다.

PIC2DF.gif

일반 계정을 가지고 있다면 퍼미션이 허용하는 범위에서는 서버내부의 어떤파일들이든 확인이 가능하게 되는 것이죠. 서버관리자의 입장에서는 좀 곤란하지 않을까요? 따라서 이번 절에서는 FTP보안을 위해서 일반사용자들은 자기의 홈디렉토리의 상위디렉토리는 전혀 볼 수 없도록하는 방법에 대해서 설명하도록 하겠습니다.


우선, 다음과 같은 예를 보도록 하겠습니다.

FTP사이트로 접속을 한 후에 pwd라는 명령어(ftp의 pwd명령어)를 해보면 현재 디렉토리위치가 나옵니다. 이렇게 나오는 것은 앞의 예처럼 상위디렉토리로 이동이 가능하다는 것을 의미합니다. 

PIC2E0.gif

그리고 다음의 예는 ws_ftp로 접속을 한 예입니다. 앞의 경우와 마찬가지로 현재 디렉토리위치가/home/sskim 처럼 표시가 되고 있는 A부분을 보십시오. 이렇게 표시가 된다면 모두 맨 첫번째 예처럼 퍼미션이 허용되는 모든 디렉토리의 내용의 열람과 파일을 가져올 수 있게 됩니다.

PIC2E1.gif



그리고 FTP데몬(proftpd와 wu_ftpd)을 설치하고 나면 기본적으로 이런 것들이 가능하도록 설정되어 있습니다. 즉 FTP의 기본설정이 이를 허용한다는 것이지요. 우리는 보안을 위해서 기본설정을수정하여 이런 일들이 불가능하도록 설정해 보겠습니다.


일반사용자의 상위디렉토리 제한 설정하기


이제 proftpd에서 상위디렉토리 접근을 제한하는 설정방법에 대해서 알아보도록 하겠습니다.

  여기서는 proftpd의 환경설정파일인proftpd.conf 파일에 대해서 알아보도록 하겠습니다. 앞서 설명을 드렸듯이 proftpd의 기본 설치위치는 /usr/local/proftpd이며 환경파일인 proftpd.conf파일이 위치하는 곳은 /usr/local/proftpd/etc/proftpd.conf 입니다. 따라서 vi나 편집기등으로 이 파일을 열어서 다음과 같은 설정을 해주시면 됩니다.

PIC2E2.gif


위의 설정은 일반사용자들이 ftp로 접근을 했을 경우에 자기의 홈디렉토리 밖으로 접근하는 것을 막는 기능을 합니다. 즉 상위디렉토리로 접근을 못하게 되는 것이죠. 이 설정은 기본설정이 아니므로 추가로 설정을 해주셔야합니다.

PIC2E3.gif

그런 다음 위의 예처럼 현재 실행중인 proftpd를 확인한 후에 그 데몬을 죽이고(kill) 아래 예와 같이 다시 실행을 해 주십시오.

PIC2E4.gif


변경한 설정을 적용하기 위해서 재시작을 해준 것이지요.만약 여러분들이 proftpd를 xinetd모드에서 운영을 하고 계시다면 xinetd를 재시작 해주시면 됩니다. 이미 설명을 드렸지만 xinetd를 재시작하시려면 "/etc/rc.d/init.d/xinetd restart"라고하시면 됩니다.


그런 다음 다시 ws_ftp로 ftp접속을 한 것입니다. 다음의 그림에서 A라고 표시된 부분을 보십시오.

PIC2E5.gif


앞에서 보았던 부분과는 다르게 현재 위치가 sskim이라는 사용자의 홈디렉토리이지만 위치표시가 "/"로 되어 있음을 확인하실 수 있을 것입니다. 이 의미는 현재 위치가 최상위이므로 현재 디렉토리 이상으로는 접근이 불가능하다라는 의미입니다.

그리고 이번에는 ws_ftp가 아닌 쉘에서 접속을 한 예를 보십시오.

PIC2E6.gif

접속을 한 후에 "pwd"라고 한 결과 현재 디렉토리위치가 루트( "/")라고 표시가 되고 있습니다. 즉 위의 경우와 마찬가지로 현재의 위치(/home/sskim)가 최상위임을 나타내고 있다는 의미입니다.


따라서 일반사용자는 상위디렉토리 이상으로는 접근이 불가능하게 되는 것이죠.



일반사용자는 제한하고 관리자계정은 이동가능하도록 설정하기


이렇게 설정을 해두면 한가지 문제점이 있습니다. 즉, 관리자ID(root가 아닌 관리자계정)으로 ftp접속을 했을 경우에도 상위 디렉토리로의 이동이 불가능하게 된다는 것입니다. 따라서 이번에는 관리자에 소속된 특별 그룹(wheel)만은 상위 디렉토리로의 이동이 가능하도록 하게 일반계정은 앞의 설정을 적용하여 상위디렉토리로 이동하지 못하도록 설정하도록 해 보겠습니다.


이 설정을 위한 예를 들기 위하여 다음과 같이 가정하도록 하겠습니다.


- 관리자 그룹 : wheel

- 관리자 계정 : sskim

- 일반사용자 계정 : sonts


이런 계정들에게 다음과 같이 설정을 하려고 합니다 .


- 관리자그룹에 소속된 계정은 모두 제약없이 상위디렉토리 이동이 가능함.

- sskim이라는 계정은 wheel그룹에 소속되어 있으므로 당연이 이동 가능함.

- wheel그룹에 소속되지않은 일반계정(예 sonts)은 상위디렉토리 이동이 제한됨.


자, 그럼 이런 설정을 해겠습니다.

먼저 proftpd의 설정파일인 proftpd.conf파일을 설정을 다음과 같이 변경하도록 하십시오.


PIC2E7.gif

앞서와 마찬가지로 초기 설치시에는 "DefaultRoot"설정항목이 없으므로 만들어 주셔야합니다. 그리고 앞에서 설정했던과 여기서 설정한 것의 차이점은 ~뒤에 "!wheel"이 추가되어 있다는 것입니다. 이 설정의 의미는 ~은 일반사용자들의 홈디렉토리를 ftp root디렉토리로 인식하게 하지만 wheel그룹에 소속된 사용자들에게는 이 설정은 적용하지않겠다.(!)라는 의미입니다.


그리고 관리자계정으로 사용할 계정(예, sskim)을 다음과 같이 /etc/group파일의 wheel그룹에 등록을 해주시면 됩니다.

PIC2E8.gif


/etc/group파일을 보시면 여러 개의 그룹이 존재하며 그 중에서 wheel그룹이라는 것이 존재합니다. 그 그룹의 맨 뒤에 콤마(,)를 찍고서 관리자 계정으로 추가할 계정명을 입력해 주시면 됩니다.

PIC2E9.gif


물론, 굳이 wheel그룹을 관리자 그룹으로 사용해야하는 것은 아닙니다. 다른 그룹을 관리자 그룹으로 사용하고자 한다면 이미 존재하는 그룹을 사용하셔도 되고, 아니면 새로운 그룹을 만들어서 사용하셔도 상관없습니다. 여기서 wheel그룹을 예로 든 이유는 리눅스의 관리자그룹이 기본적으로 wheel로 되어있기 때문에 예로 든 것 뿐입니다. 필자의 개인적인 견해로는 wheel그룹 보다는 다른 새로운 그룹을 하나 만들어서 관리자그룹으로 사용하시는 것이 좋을 것 같습니다.


자, 그럼 이제 관리자 그룹의 계정(sskim)으로 ftp접속을 해보겠습니다.

PIC2EA.gif

위의 예는 관리자그룹(wheel) 소속인 sskim의 계정으로 ftp접속을 한 예입니다. sskim으로 접속을 한 후에는 /etc로 이동을 하였습니다. 따라서 관리자그룹(wheel)에 소속되어 있는 계정으로는 상위디렉토리로의 이동에 있어 아무런 제약이 없음을 확인하였습니다.


이번에는 일반 사용자계정인 sonts라는 계정으로 ftp접속을 해보겠습니다.

PIC2EB.gif

sonts라는 일반사용자계정으로 접속한 후에 /etc로 이동하려고 하면 "No such file or directory"라는 550이라는 메시지가 나오면서 접근이 불가능하게 됩니다.


이상의 예와 같이 서버를 설정한다면 일반사용자계정과 관리자계정을 구분하여 서버접근을 할 수가 있습니다.


여기서 중요한 것은 어떠한 경우라도 일반계정사용자에게는 상위디렉토리로 이동할 수 있는 권한을 주어서는 안된다라는 것입니다. 서버관리에 있어 보안은 아무리 강조해도 지나침이 없을 것입니다.


이상으로 ftp접속시에 일반사용자의 상위디렉토리이동을 제한하는 방법, 그리고 관리자그룹 계정으로는 상위디렉토리로 이동할 수 있도록 설정하는 방법에 대해서 proftpd를 예로 들어 설명하였습니다. "서버보안 말로만 하지말고 실천합시다."



관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  119 명