[ftp-server] FreeBSD pure-ftpd 설치

FreeBSD pure-ftpd 설치 및 VirtualUser 설정 방법 입니다.

pure-ftpd 설치의 경우 ports collection 을 이용 합니다.

 

pure-ftpd ports 확인

root@bsd11:~ # whereis pure-ftpd
pure-ftpd: /usr/ports/ftp/pure-ftpd
root@bsd11:~ #

 

pure-ftpd 설치

root@bsd11:~ # cd /usr/ports/ftp/pure-ftpd/ && make install clean

 

  1. OK 를 눌러 설치를 진행 합니다.

추가적인 부분도 OK 눌러 설치 하시면 됩니다. ( TLS/UTF8 부분이 체크 되어 있는지 확인 합니다.)

설치 완료 메시지

 

설정

예전의 경우 rehash 를 해줘야 Daemon 을 사용 할수 있었는데 요즘은 잘 모르겠네요.

rehash 를 실행합니다.

(rehash 는 csh / tcsh 이 path 디렉토리를 바이너리로 다시 스캔하게 위하여 실행 합니다. 꼭 필요한것은 아니지만 예전에는 Daemon 구동이 안되는 경우도 있었습니다.

rehash 를 하지않고 예전 5 Version 6 Version 의 경우는 리부팅후에 설정을 진행 했었습니다.)

root@bsd11:/usr/ports/ftp/pure-ftpd # rehash
root@bsd11:/usr/ports/ftp/pure-ftpd #

rehash 참고페이지: https://www.cyberciti.biz/faq/freebsd-shell-doesnt-recognize-newly-installed-programs/

ports 설치후 설정 디렉토리는 대부분 /usr/local/etc 에 위치 하고 있습니다.

/usr/local/etc/ 디렉토리로 이동후 pure-ftpd.conf.sample 파일을 카피 합니다.

root@bsd11:~ # cd /usr/local/etc
root@bsd11:/usr/local/etc # cp pure-ftpd.conf.sample pure-ftpd.conf

 

pure-ftpd.conf 파일 설정

root@bsd11:/usr/local/etc # vi pure-ftpd.conf

 

  1. PureDB 위치 변경 (default 의 경우 PureDB /etc/pureftpd.pdb 로 되어 있습니다.)PureDB /usr/local/etc/pureftpd.pdb
  2. CreateHomeDir 주석 제거 (일반 유저의 경우 홈디렉토리의 ftp 사용을 가능하게 합니다.)CreateHomeDir yesPAMAuthentication yes
  3. FXP 설정AllowUserFXP yes
  4. 로그설정 AltLog 주석을 제거 합니다. AltLog stats:/var/log/pureftpd.log

 

pure-ftpd 에서 사용할 디렉토리및 가상 사용자 설정

root@bsd11:~ # mkdir -p /home/vftp
root@bsd11:~ # pw user add vftp -s /sbin/nologin -w no -d /home/vftp -c "virtual pure virtual ftp users" -m

 

가상사용자 추가시

root@bsd11:~ # pure-pw useradd test -u vftp -g vftp -d /home/vftp
Password:
Enter it again:
root@bsd11:~ #

사용자 생성후 puredb update

root@bsd11:~ # pure-pw mkdb

 

IP allow 설정의 경우 다음과 같이 설정합니다.

root@bsd11:~ # pure-pw useradd test -u vftp -g vftp -d /home/vftp
root@bsd11:~ # pure-pw usermod test1 -r 192.168.0.2/24 -m

user 정보 확인

root@bsd11:~ # pure-pw show test1

Login              : test1
Password           : $argon2id$v=19$m=65536,t=2,p=1$enIz2/8XAQ85vZ1C48hWRg$MJ07yP2/3BNdDlkjQwdvFjJgtYeofT7ZpjmyptbwFWo
UID                : 1001 (vftp)
GID                : 1001 (vftp)
Directory          : /home/vftp/./
Full name          :
Download bandwidth : 0 Kb (unlimited)
Upload   bandwidth : 0 Kb (unlimited)
Max files          : 0 (unlimited)
Max size           : 0 Mb (unlimited)
Ratio              : 0:0 (unlimited:unlimited)
Allowed local  IPs :
Denied  local  IPs :
Allowed client IPs : 192.168.0.2/24
Denied  client IPs :
Time restrictions  : 0000-0000 (unlimited)
Max sim sessions   : 0 (unlimited)

root@bsd11:~ #

 

pure-ftpd 로그 설정

root@bsd11:~ # cd /var/log/
root@bsd11:/var/log # touch pure-ftpd.log
root@bsd11:/var/log # chmod 650 pure-ftpd.log

syslog.conf 설정

root@bsd11:/var/log # vi /etc/syslog.conf
#ftp.info                                       /var/log/xferlog
ftp.*                                           /var/log/pure-ftpd.log

logrotate 설정 (/etc/newsyslog.conf )

ftp 사용이 많은 서버

날짜로 rotation 매일 0시에 rotation , 최근 10개 보관

root@bsd11:/var/log # vi /etc/newsyslog.conf
/var/log/xferlog                        600  7     100  *     JC
/var/log/pure-ftpd.log                  640  10    *    @T00  Z

ftp 사용이 적은 서버

root@bsd11:/var/log # vi /etc/newsyslog.conf
/var/log/xferlog                        600  7     100  *     JC
/var/log/pure-ftpd.log                  640  10    200  *     Z

 

rc.conf 수정

root@bsd11:/var/log # vi /etc/rc.conf
pureftpd_enable="YES"

 

pure-ftpd start

oot@bsd11:/var/log # /usr/local/etc/rc.d/pure-ftpd start
Starting pureftpd.
oot@bsd11:/var/log #

syslog 재시작

root@bsd11:/var/log # /etc/rc.d/syslogd restart
Stopping syslogd.
Starting syslogd.
root@bsd11:/var/log #

 

Ftp Client 접속 확인

상태: 192.168.8.138:21에 연결…

상태: 연결 수립, 환영 메시지를 기다림…

상태: 보안되지 않은 서버입니다.

TLS를 통한 FTP를 지원하지 않습니다.

상태: 로그인상태: 디렉터리 목록 조회…

상태: “/” 디렉터리 목록 조회 성공

 

SSL/TLS 적용 :

pure-ftpd.conf 설정 변경

root@bsd11:~ # vi /usr/local/etc/pure-ftpd.conf

 TLS                          2

openssl 작업

root@bsd11:~ # mkdir -p /etc/ssl/private
root@bsd11:~ # openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Generating a 2048 bit RSA private key
.........+++
......+++
writing new private key to '/etc/ssl/private/pure-ftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KO
State or Province Name (full name) [Some-State]:Seoul
Locality Name (eg, city) []:city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test
Organizational Unit Name (eg, section) []:virtualftp
Common Name (e.g. server FQDN or YOUR name) []:test-server
Email Address []:test@gmail.com
root@bsd11:~ # chmod 600 /etc/ssl/private/*.pem

pure-ftpd 재시작

root@bsd11:~ # /usr/local/etc/rc.d/pure-ftpd restart

연결 테스트

 

연결 메시지

상태: 192.168.8.138:21에 연결…

상태: 192.168.8.138:21에 연결…

상태: 연결 수립, 환영 메시지를 기다림…

상태: TLS 초기화…상태: 인증서 검증…

상태: TLS 연결 수립.

상태: 로그인상태: 디렉터리 목록 조회…

상태: “/” 디렉터리 목록 조회 성공

댓글 남기기