제6장 Server Administration
3. ProFTPd 설치하기
3.1. ProFTPd 설치하기
아래와 같이 설치할 수 있습니다.
# emerge sync
# emerge proftpd -pv
# emerge proftpd
|
3.2. ProFTPd 설정파일
설정파일은 /etc/proftpd에 위치하고 있습니다. proftpd를 시작하기 전에 proftpd.conf 를 설정해야합니다. proftpd 패키지는 이미 설정되어있는 proftpd.conf.distrib 와 proftpd.conf.sample을 가지고 있는데 특별히 설정을 하지 않고도 이 파일들만으로도 시작을 할 수 있습니다. 여기서는 sample 설정파일을 proftpd.conf 로 복사하여 사용하도록 하겠습니다.
# cd /etc/proftpd
# cp proftpd.conf.sample proftpd.conf
# vim proftpd.conf
|
3.3. Standalone or via inetd/xinetd
proftpd를 시작하는 방법은 두가지가 있는데 standalone 데몬으로 독립적 서버로 동작하게 하거나 inetd 나 xinetd를 거치는 방법이 있습니다. 일반적으로 Standalone방식은 트래픽이 심한 사이트에 적합니다.
standalone
다음 라인을 편집하여 standalone방식으로 데몬을 구동할 수 있습니다.
디폴트 런레벨에서 구동되도록 하고 세션을 실행하도록 합니다.
# rc-update add proftpd default
# /etc/init.d/proftpd start
|
xinetd
다음 라인을 편집하여 inetd/xinetd을 통하여 구동할 수 있습니다.
만약 xinetd이 인스톨이 되어있다면 일반적으로 /etc/xinetd.d/proftpd위치에 설치가 될 것입니다.
# vi /etc/xinted.d/proftpd
service proftpd
{
...
#Allow access from the local network (ie, 192.168.0.0/24)
only_from = 192.168.0.0/24
#And from two remote locations
only_from = 10.1.1.2 sampleconfig.com
...
}
|
3.4. iptables/firewall
만약 방화벽이 구성되어있다면 반드시 21번 포트를 열어줘야 할 것입니다. iptables를 사용한다면 /var/lib/iptables/rules-save 에 다음라인같이 넣어주기 바랍니다.
[0:0] -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
|
3.5. Annonymous FTP 만들기
일반적으로 익명 사용자에게 FTP를 열어주는 것은 상당한 위험을 감수하게 만드는 일입니다. 하지만
데이터 배포나 정보 공유 공간을 위해서 익명 FTP를 많이 사용되고 있습니다. 여기서 필자는 하나의 ftpgroup(GID 5500)을 사용하여 모든 사용자는 'DefaultRoot ~/' 지시자를 사용하여서 자신의 디렉토리안에서만 FTP를 사용할 수 있게하고 ftpuser(UID 5500)메인 계정과 익명 사용자를 위한 ftpguest (UID 5501)을 생성하도록 하겠다.
아래와 같이 계정과 그룹 생성을 생성합니다.
# groupadd -g 5500 ftpgroup
# adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
|
아래와 같이 Guest 계정을 생성합니다.
# adduser -u 5501 -s /bin/false -d /bin/null -c "proftpd guest" -g ftpgroup ftpguest
|
Guest 계정역시 추가를 하였는데 이는 이계정을 통해서 파일을 전송할 수 있게 하기 위함입니다.
다음으로 공유를 위해 디렉토리의 권한을 설정한다.
# chmod 755 From_folder
# chmod 731 To_folder
|
3.6. MySQL을 이용한 가상 계정 사용하기
만일 복수의 ftp 사이트들을 운영한다면 MySQL을 사용하여 운영이 가능하다. 그러기 위해서는 USE플래그를 설정(USE="mysql")하거나 make.conf나 /etc/portage/package.use파일을 편집하여 mysql을추가한 다음에 proftpd를 설치하면 됩니다. mysql을 사용가능으로 컴파일을 하게되면 /etc/proftpd/ proftpd.conf 에 다음 라인을 추가하여 사용할 수 있습니다.
# vi /etc/proftpd/proftpd.conf
... 생략
# Password type
SQLAuthTypes Plaintext
# Authentication type
SQLAuthenticate users*
# DB 접속정보. 형식: 데이터베이스 이름@서버주소 유저네임 유저패스워드
SQLConnectInfo ftp@localhost ftp PASSWORD
# Default UID/GID. Change to suit needs.
SQLDefaultUID 5000
SQLDefaultGID 5000
# Mininum UID/GID. Change to suit needs.
SQLMinUserUID 1000
SQLMinUserGID 1000
# Database query. Format: ** defined below **
SQLUserInfo ftp username password uid gid ftpdir homedir
# Jail users in ftpdir
DefaultRoot ~
... 생략
|
다음은 사용자 계정을 위한 MySQL 테이블에 대한 설명입니다.
ftp => 데이터베이스 테이블과 사용자 정보
username => 사용자 이름
password => 사용자 암호
uid => ftp디렉토리의 UID
gid => ftp디렉토리의 GID
ftpdir => 사용자가 로그인하게될 디렉토리 . this is the full, and absolute, path to directory user will log into
homedir
|
MySQL에 접속하여 데이터베이스 생성 및 proftpd가 접속할 계정을 만듭니다.
# mysql -uroot -p mysql
Password : 암호 [엔터]
sql> CREATE DATABASE ftp;
sql> GRANT select,insert,update,delete,create,drop ON ftp.*
TO proftpd@localhost IDENTIFIED BY 'proftpd0525';
sql> quit
|
다음 쿼리문을 사용하여 테이블을 생성한다.
sql> CREATE TABLE ftp (
user_id int(11) NOT NULL auto_increment,
username varchar(100) DEFAULT '' NOT NULL,
password varchar(50) DEFAULT '' NOT NULL,
uid int(5) DEFAULT '5000' NOT NULL,
gid int(5) DEFAULT '5000' NOT NULL,
ftpdir varchar(255) DEFAULT '' NOT NULL,
homedir varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (user_id),
UNIQUE (username)
);
|
|