강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

proftpd 지시자(Directive) 설정1

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

proftpd 지시자(Directive) 설정1

 

앞에서 언급한 바와 같이 proftpd의 지시자는 아파치의 지시자와 매우 유사한데, 설정 파일 역시 httpd.conf처럼 설정 내용을 proftpd.conf 파일에서 모두 제공하고 있다.

 

 

 

 

제공되는 기능만큼 많은 지시자를 제공하고 있는데, 이 중 꼭 알고 있어야 할 유용한 기능에 대해 알아보도록 하자.

 

* RootLogin off

 

telnet과 마찬가지로 root 계정으로 직접 ftp를 접속하는 것은 보안상 거부되어 있지만 경우에 따라 또는 실수로 root로 로그인하는 것이 허용되어 있는 경우가 있다.

 

 

 

 

이러한 경우 보안상 매우 심각한 문제를 유발할 수 있으므로 root 로그인은 허용하지 않도록 하여야 한다.

 

 

 

 

이를 위해서 RootLoginoff로 설정하면 된다.

 

* IP 대역 접속 제한


   

앞에서 언급한 바와 같이 proftpd는 아파치와 비슷한 방식의 설정파일 형식을 제공하고 있는데, 역시 비슷한 방법으로 IP 또는 IP 대역에 대한 접속 제한을 설정할 수 있다.

 

 

 

 

이는 아파치와 마찬가지로 <Limit LOGIN>을 이용하면 되는데, 여기에서 주의하여야 할 것은 아파치와 정반대의 개념이라는 것이다.

 

 

 

 

, 아파치에서는 Order에서 뒤쪽에 오는 것이 더 우선이고, 기본 값이지만 proftpd에서는 Order에서 앞에 오는 것이 더 우선이고 기본값이라는 것이다.

 

 

 

 

이렇게 설정한 이유는 비록 아파치와 반대이기는 해도 이것이 논리적으로 맞는 것이라고 판단했기 때문이다.

 

 

 

 

 

 

아래와 같이 설정할 경우 deny가 우선이므로 192.168.1. 대역에서 접근 시도를 하면 아이디/암호를 정확히 입력해도 로그인 거부 메시지와 함께 접속이 끊기게 되고, 이외의 IP는 접근이 허용된다.

 

 

 

 

 

 

<Limit LOGIN>

Order deny,allow

Deny from 192.168.1.

Allow from all

</Limit>

 

- 접근 거부 시 클라이언트쪽 메시지

 

421 Service not available, remote server has closed connection

 

- 접근 거부 시 서버쪽 로그메시지

 

Sep 10 18:25:56 server proftpd[27921]: server.com (211.47.65.10[211.47.65.10]) - Connection from 211.47.65.10 [211.47.65.10] denied.

 

IP 대역의 경우 아래와 같은 설정 모두 192.168.1 대역에서의 접속은 거부된다.

 

 

 

 

 

<Limit LOGIN>

Order deny,allow

Deny from 192.168.1.

Allow from all

</Limit>

 

<Limit LOGIN>

Order deny,allow

Deny from 192.168.1.0/24

Allow from all

</Limit>



그러나 아래의 255.255.255.0과 같이 netmask를 사용 시에는 에러가 나게 된다.


 

<Limit LOGIN>

Order deny,allow

Deny from 192.168.1.0/255.255.255.0

Allow from all

</Limit>

 

- Fatal: Deny: bad ACL definition: '192.168.1.0': Invalid argument on line 40 of '/etc/proftpd.conf'

 

같은 방법으로 아래와 같이 설정하면 user1, test1 유저와 normal이라는 그룹에 속한 유저로는 FTP 접속이 가능하지만 이외의 유저는 암호를 정확히 입력해도 접속이 거부된다.


 

<Limit LOGIN>

AllowUser user1

AllowUser test2

AllowGroup normal

DenyAll

</Limit>

 

 


* 디렉토리 접근제한

 

Userftp login을 한 경우 자신의 홈 디렉토리 이하에만 접근 가능할 뿐 상위 디렉토리로는 이동하지 못하도록 chroot()를 설정할 수 있다.

 

 

 

 

만약 특정 유저에 대해서 이 제한을 해제하려면 다음과 같이 not의 의미인 !를 사용하여 해당 그룹을 지정하면 된다.

 

 

 

 

아래의 경우 system이라는 그룹에 속한 유저에 대해서만 상위 디렉토리로의 이동을 허가하고 다른 유저는 모두 거부한다는 설정이다.

 

 

 

 

 

 

DefaultRoot ~ !system

 

 

* 전송 파일의 크기(사이즈) 제한

 


특정 사이즈 이상의 파일에 대해 업로드 또는 다운로드를 제한하고자 할 경우 별도의 지시자를 이용할 수 있다.

 

 

 

 

이 기능은 MaxRetrieveFileSize(다운로드시)MaxStoreFileSize(업로드시) 지시자를 이용하여 제공하는데, 1.2.7rc1 이후 버전에서만 지원한다.

 

 

 

 

파일 크기를 제한하는 기준은 byte 단위로서 Gb, Mb, Kb, B를 숫자 뒤에 설정하여 사용할 수 있는데, 만약 파일 전송 시 이 제한에 걸릴 경우 클라이언트에게는

“426 Transfer aborted. Operation not permitted” 메시지가 나게 되고 전송이 제한된다.

 

 

 

 

아래는 서버에서 데몬을 debug 모드로 실행했을 때 다운로드 사이즈가 제한될 경우 출력되는 메시지인데 여기에서 192.168.3.2는 클라이언트의 IP이다.



www.server.com (192.168.3.2[192.168.3.2]) - MaxRetrieveFileSize (1028674 bytes) in effect for all

www.server.com (192.168.3.2[192.168.3.2]) - MaxRetrieveFileSize (1028674 bytes) reached: aborting transfer of '/home/test/large_file.tgz'

 

 

* 버전정보 숨기기

 

설정 변경 없이 기본적으로 proftpd 데몬을 설치하였을 경우 FTP 접속을 하면 현재 작동하고 있는 데몬의 버전 정보가 출력되므로 공격자는 이 버전의 취약점을 근거로 공격(해킹) 등을 시도할 수 있으므로 가급적 클라이언트에게 보이는 버전 정보를 숨기는 것이 좋다.

 

 

 

 

이는 ServerIdent라는 지시자를 이용하여 가능한데, 아래와 같이 On으로 설정하게 되면 지정한 문자열이 출력된다.

 

ServerIdent On "Welcome to FTP-SERVER"로 설정시

 

# ftp www.server.com

Connected to www.server.com.

220 Welcome to FTP-SERVER

Name (server:root):

 

또는 “ServerIdent Off”와 같이 설정해도 된다.

 

 

 

 

 

 

 

 

* FTP 접속 전 경고 메시지 출력 설정하기

 

만약 ftp 접속 시도시 공지나 경고 메시지를 보여주고자 할 경우에는 DisplayConnect 지시자를 이용할 수 있다.

 

 

 

 

아래와 같이 설정할 경우 접속 시도를 하게 되면 /etc/warning.txt 파일에 있는 경고 메시지를 출력하게 된다.

 

 

 

 

 

DisplayConnect /etc/warning.txt

 

만약 /etc/warning.txt 파일에 인증된 사용자만 접속 가능합니다.”와 같이 설정할 경우 다음과 같이 보이게 된다.

 

# ftp localhost

Connected to server (127.0.0.1).

220-인증된 사용자만 접속 가능합니다.

220 www.server.com FTP server ready

Name (server:root):




 

* FTP접속 후 메시지 출력 설정하기

 

또한 정상적으로 로그인 후 메시지를 보여주고자 한다면 다음과 같이 DisplayLogin을 사용하면 된다.


 

DisplayLogin /etc/welcome.msg

 

아울러 접속했을 때 각 유저별로 환영 메시지를 보여주려면 아래와 같이 사용할 수도 있다.



AccessGrantMsg " %u 님의 접속을 환영합니다."

 

이때 ftp 접속을 하면 아래와 같이 보이게 된다.

 

 

 

 

 

Name : test

331 Password required for test.

Password:

230 test 님의 접속을 환영합니다.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

 

같은 방법으로 거부되었을 때 보여줄 메시지는 아래와 같이 설정할 수 있다.

 

AccessDenyMsg "%u님의 접근이 거부되었습니다."

 

 

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  196 명