1. ProFTPd 의 모든 설정은 이 파일에서 하게 됨.
– proftpd.conf 설정예.
–
proftpd.conf 파일의 전체적인 구성을 보면 모든 ftp 서비스에 대한 설정을 하는 Global 설정 부분이 있으며 그
다음에 anonymous 접근에 관한 설정이 있고 그 다음에 가상 ftp 호스트를 설정하는 부분이 있음. proftpd.conf
파일 설정시에 주의해야 할 것은 설정 지시자와 설정내용 사이에는 반드시 [TAB] 키로 띄워야 함.
– ServerName 지시자
ServerName “pchero21.com;s ftp service”
: ServerName 는 ftp 서버의 이름을 설정함. 대부분 ftp 사이트의 도메인명을 입력하거나 아니면 서비스명등을 입력하게 됨.
– ServerType 지시자
ServerType standalone
:
ServerType 설정에서는 ftp 서버데몬을 xinetd 모드로 할 것인가 아니면 standalone 모드로 운영을 할
것인가에 대한 설정을 하는 것임. 위의 설정을 standalone 모드로 운영할 경우의 설정이며 만약 xinetd 모드로 운영할
경우에는 다음과 같이 설정하면 됨.
ServerType inetd
– DefaultServer 지시자
DefaultServer on
:
한대의 리눅스서버에서 여러 개의 ftp 서비스를 가상 ftp 서버로 설정하여 운용할 경우에 기본적으로 운용할 서버설정을 하는
것임. 하나의 proftpd 를 이용하여 여러 개의 가상 ftp 서버를 운용할 경우에 기본서버로 응답하게 하려면 on 을
설정하고 기본서버로 응답하지 않게 하려면 off 로 설정하면 됨.
– DefaultRoot 지시자
DefaultRoot ~ !wheel
: DefaultRoot 지시자는 ftp 사용자들이 자기의 홈디렉토리 상위로 이동하지 못하도록 설정하는 지시자임.
위의 설정은 wheel 그룹에 등록된 사용자들을 제외한 나머지 모든 사용자들에게 대한 자기자신의 홈디렉토리를 최상위 디렉토리로
인식하도록 함. 따라서 wheel 그룹에 등록된 사용자들을 제외한 나머지 모든 ftp 사용자들은 자기 자신의 홈디렉토리
상위디렉토리로 이동할 수 없음. 참고로 서버관리자는 대부분 wheel 그룹에 등록해서 사용함. 따라서 관리자에 속하는 사용자들을
wheel 그룹에 등록해 두고 이 설정을 사용한다면 관리자들은 제한없이 상위 디렉토리로 이동이 가능하면서 일반사용자들은 자기의
홈디렉토리를 벗어나지 못하므로 효율적인 설정이 됨.
– Port 지시자
Port 8021
:
ftp 서비스의 기본 사용포트를 지정한 것임. /etc/services 파일에 ftp 서비스의 포트설정이 되어 있어야만 정상적인
ftp 서비스가 가능함. 이 설정은 ftp 가 standalone 모드로 운영이 될 경우에만 유효한 것으로 만약 ftp 를
xinetd 환경에서 서비스를 한다면 /etc/xinetd.d/proftpd 파일에서 사용포트를 지정해 주면 됨.
– Umask 지시자
Umask 022 022
: Umask 설정은 ftp 로 접속한 사용자들이 파일 업로드시에 생성되는 파일퍼미션과 디렉토리퍼미션을 설정하는 것임.
022 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 644 가 되며 생성되는 디렉토리의 퍼미션은 755 가 됨.
002 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 664 가 되며 생성되는 디렉토리의 퍼미션은 775 가 됨.
007 로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 660 이 되며 생성되는 디렉토리의 퍼미션은 770 이 됨.
070 으로 설정을 하였을 경우에는 업로드되는 파일의 퍼미션은 604 가 되며 생성되는 디렉토리의 퍼미션은 705 가 됨.
Umask 의 설정을 파일과 디렉토리의 보안정책을 어떤식으로 가져갈 것인가에 따라서 달리 설정하면 됨.
– MaxInstance 지시자
MaxInstance 30
:
ftp 서비스 요청이 있을 경우에 ProFTPd 는 자식프로세스를 생성하여 개별 ftp 서비스 요구에 응답을 하게 됨. 이때
생성될 수 있는 ftp 자식프로세스의 최대수를 지정해 둔 것임. 즉, 동시에 서비스가능한 ftp접속수라고 이해 하면 됨. 또한
이 설정은 ProFTPd 서버 실행을 standalone 으로 했을 때에만 적용이 되는 것임. xinetd 로 서비스될 경우에는
적용되지 않음. 그리고 ftp 보안이라는 관점에서 이 설정이 갖는 중요한 의미는 DoS (Denal of Service)
공격방어를 어느정도 할 수 있다는 것임. DoS 공격은 수많은 서비스요구를 동시다발적으로 하여 ftp 서비스를 다운시키는
공격임. 여기서 설정된 기본 30개 이상의 ProFTPd 의 자식프로세스가 생성되지 않으므로 30개 넘게 요구가 있을 경우에는
DoS 공격이라고 판단하여 응답을 하지 않게 됨.
– User, Group 지시자
User proftpd
Group nogroup
:
ProFTPd 의 실행시에 여기서 설정된 계정 (User) 과 그룹 (Group) 으로 실행이 됨. 어떤 이름으로 해도
상관없으나 반드시 실제 존재하는 계정으로 설정이 되어야 함. 즉 /etc/passwd 내에 존재하는 실제 계정 중 하나로 설정이
되어 있어야 한다는 것임. 다만 주의해야 할 것은 시스템에 특별한 권한이 있는 계정으로 설정을 해서는 안됨. 또한 앞서 소스를
컴파일하여 설치한 후에 proftpd 의 초기 실행시에 에러가 발생했던 것은 여기서 설정하는 Group 지시자 값이
nogroup으로 설정되어 있었기 때문임.
– RootLogin 지시자
RootLogin off
:
이 설정은 시스템의 root 계정으로 ProFTPd 접속을 혀용할 것인가를 설정하는 것임. 위의 설정이 off 로 되어있는
것처럼 ProFTPd 의 초기 설정에는 root 계정으로 ftp 접속이 되지 않음. 만약 root 계정으로 ftp 접속을
허용하려면 on 으로 설정하면 됨. 하지만 서버 보안을 위해서 가능한 기본설정인 off 로 해두고 root 원격접속은 막아두는
것이 현명한 것임.
– RateReadBPS 지시자, RateWriteBPS 지시자
: RateReadBPS
지시자는 파일을 서버에서 클라이언트로 다운로드할 때의 사용가능 대력포글 설정해 둔 것이며, RateWriteBPS 는 파일을
클라이언트에서 서버로 업로드 할 경우에 사용가능한 대역폭을 설정해 둔 것임. BPS 는 bit per second 의 약어로서
초당 전송가능한 bit 수를 의미함. 이 설정을 융통성있게 설정하면 ftp 를 효율적으로 운용할 수 있음. 즉 한명의 ftp
사용자가 모든 대역폭을 모두 차지하는 것을 방지할 수 있으며, 또한 ftp 서비스가 서버의 모든 네트웍 대역폭을 차지함으로
인하여 서버의 또 다른 서비스 (ex. www, email 등) 의 장애를 예방할 수 있음.
– RateReadFreeBytes 지시자, RateWriteFreeBytes 지시자
: RateReadFreeBytes 지시자는 대역폭의 제한없이 download 를 허용할 bytes 수를 지정한다. RateWriteFreeBytes 지시자는 대역폭의 제한없이 upload 를 허용할 bytes 수를 지정한다.
– DisplayLogin 지시자
DisplayLogin welcome.msg
: 이 설정은 ftp 접속시에 보여줄 메시지 파일을 설정한 것임. 위의 설정 예에 의하면 ftp 서버로 접속하였을 경우에 welcome.msg 라는 파일을 보여주게 된다는 것임.
– DisplayFirstChdir 지시자
DisplayFirstChdir .message
:
앞서 설명한 DisplayLogin 이라는 지시자가 ftp 접속시에 보여주는 메시지내용을 설정한 것이라면 이
DisplayFirstChdir 은 ftp 접속 후에 특정 디렉토리로 이동하였을 경우에 그 디렉토리의 안내문을 보여주기 위한
설정파일임. 즉, ftp 접속후에 특정 디렉토리로 이동하게 되면 이동한 그 디렉토리내에 존재하는 .message 파일의 내용을
자동으로 보여주게 됨.
– <Direcroty> ~ </Direcroty> 지시자
<Direcroty /*>
AllowOverwrite on
</Direcrtory>
:
이 디렉토리지시자는 개별디렉토리 이하에서의 설정을 할 수 있는 부분임. 이 설정은 주로 개별 사용자들의 ftp 디렉토리를 별도로
설정할 경우에 상둉하는 것임. 중요한 것은 이 설정에서 * 를 사용할 수 있다는 것이며, 또한 앞서 설정한 내용과 중복될
경우에는 여기서 설정한 개별 디렉토리내용이 지정한 디렉토리 내에서는 우선한다는 것임.
– <Anonymous ~ftp> ~ </Anonymous> 지시자
: 이 설정은 anonymous ftp 에 대한 설정을 한 것임. Anonymous 접속시에 여기서 설정한 내용의 적용을 받는다는 의미가 됨.
– <Limit> ~ </Limit> 지시자
: 이 설정이 위치하는 디렉토리내에서 사용할 수 있는 ftp 명령어들의 제약을 하기 위한 것임.
– MaxLoginAttempts 지시자
: 동일한 클라이언트에서 ftp서버로 접속시도할 수 있는 최대허용횟수를 제한함.
– RequireValidShell 지시자
:
이 지시자는 ftp 접속시에 쉘 (shell) 을 요구할 것인가 말것인가를 결정하는 지시자. 즉, 이 값이 on 으로 되어있다면
/etc/passwd 파일내에 설정된 각 사용자의 쉘종류가 유효한 쉘 사용자만 접속이 가능하게 됨. 반대로 이 값이 off 로
설정되어있다면 /etc/passwd 파일내에 설정된 각 사용자의 쉘종류가 유효하지 않은 쉘사용자라도 ftp 접속은 가능하게 됨.