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 연결 수립.

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

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

FreeBSD 에서 유저를 생성하기 위하여 pw 명령어를 사용 합니다.

참고페이지: https://www.freebsd.org/doc/handbook/users-synopsis.html 

 

pw 명령어의 사용예

root@bsd11:~ # pw user add test -g wheel -m

– 유저명 test 를 만들고 구룹을 관리자구룹으로 지정 홈디렉토리 생성

일반적인 pw 이용

root@bsd11:~ # pw user add test -m

– 유저명 test 를 만들고 홈디렉토리 생성

root@bsd11:~ # passwd test

– test 유저의 비밀번호 생성

root@bsd11:~ # pw user del test -r

– test 유저 삭제및 홈디렉토리 까지 삭제

 

 

 

FreeBSD Network

linux 의 경우 /etc/sysconfig/network-scripts/ifcfg-ethX 및 /etc/network/interfaces 파일을 변경 하여 셋팅 합니다.
FreeBSD 의 경우 /etc/rc.conf 설정으로 변경 할수 있습니다.

/etc/rc.conf 로 변경 할수 있는것들

1. hostname
2. network ip 정보
3. Daemon 의 enable / Disable

등을 변경 할수 있습니다.

 

root@bsd11:~ # cat /etc/rc.conf
sendmail_enable=”NONE”
hostname=”bsd11″
keymap=”us.iso.kbd”
ifconfig_em0=”DHCP”
sshd_enable=”YES”
ntpd_enable=”YES”
# Set dumpdev to “AUTO” to enable crash dumps, “NO” to disable
dumpdev=”AUTO”
root@bsd11:~ #

 

IP 정보의 경우 알고 계신것처럼 DHCP 및 Static 으로 설정 하여 사용할수 있습니다.

DHCP 설정의 경우 아래와 같이 설정 합니다.

ifconfig_em0=”DHCP”

Static 의 경우 defaultrouter 설정도 필요 합니다.

ifconfig_em0=”inet 192.168.8.30 netmask 255.255.255.0″
defaultrouter=”192.168.8.1″

 

라우팅 정보의 경우 netstat -r 로 확인 하실수 있습니다.

root@bsd11:~ # netstat -r
Routing tables

Internet:
Destination Gateway Flags Netif Expire
default 192.168.8.2 UGS em0
localhost link#2 UH lo0
192.168.8.0/24 link#1 U em0
192.168.8.138 link#1 UHS lo0

Internet6:
Destination Gateway Flags Netif Expire
::/96 localhost UGRS lo0
localhost link#2 UH lo0
::ffff:0.0.0.0/96 localhost UGRS lo0
fe80::/10 localhost UGRS lo0
fe80::%lo0/64 link#2 U lo0
fe80::1%lo0 link#2 UHS lo0
ff02::/16 localhost UGRS lo0
root@bsd11:~ #

FreeBSD 최초 설치후 Ports Collection 업데이트

CVS 의 경우 더이상 FreeBSD.org  에서 사용을 하지 않습니다.

자세한 내용은 아래 사이트에서 확인 가능 합니다.

https://wiki.freebsd.org/CvsIsDeprecated

 

1) ports update
참고 페이지 ( https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html )

 

최초실행시

root@bsd11:~ # portsnap fetch
root@bsd11:~ # portsnap extract
root@bsd11:~ # portsnap fetch update

 

차후실행시

root@bsd11:~ # portsnap fetch
root@bsd11:~ # portsnap update
root@bsd11:~ # portsnap fetch update

 

커스터마이징의 경우 ports 설치를 추천하고 타 패키지를 설치 하지 않고 단순 패키지 설치시는 pkg 명령어를 추천 합니다.

root@bsd11:~ # pkg
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y

참고페이지:https://www.freebsd.org/doc/handbook/pkgng-intro.html

 

 

freebsd update (Applying Security Patches)

root@bsd11:~ # freebsd-update fetch
root@bsd11:~ # freebsd-update install

참고페이지: https://www.freebsd.org/doc/handbook/updating-upgrading-freebsdupdate.html

 

ports install 시 주요 옵션

ports 검색
1)
# whereis Package_name
2)
# cd /usr/ports
# make search name=lsof
or
#make quicksearch name=lsof

FreeBSD에서 Ports로 설치시 기본값으로 설치
# make -DBATCH install

다른 방법으로는 의존성 패키지의 옵션들을 미리 설정
# make config-recursive install

설정값 삭제 
# make rmconfig

의존성 패키지의 모든 설정값 삭제
# make rmconfig-recursive

ports 검색 관련 참고페이지:https://www.freebsd.org/doc/handbook/ports-finding-applications.html

FreeBSD 11.1 설치

테스트 환경 :

vmware : cpu 1core

memory : 1G

hdd : 20G

  1. dvd image 를 이용하여 부팅을 합니다.(1번을 선택하여 설치를 진행 합니다)

 

 

2. Install 을 선택 합니다.  

 

 

3.  keymap 을 설정 합니다. (United States of America ISO-8859-1 을 선택 합니다)

 

 

4. keymap Selection 에서 Continue with us.iso.kbd keymap 을 선택 하여 설치를 계속 진행 합니다. 

 

 

5. Set Hostname (차후에 /etc/rc.conf 수정을 통하여 hostname 를 변경 할수 있습니다.) bsd11 을 입력 합니다. 

 

 

6. Distribution Select (추가 설치 패키지 선택에서는 doc 및 src 를 추가 합니다.)

 

 

7. Partitioning (파티션 작업 진행) Auto (UFS)를 선택 합니다.  

 

 

8. Partition (Entire Disk 를 선택 합니다.)

 

 

9. Partition Scheme (MBR 을 선택 합니다.) / BSD 나 GPT 를 선택 하여도 됩니다.

 

 

10. Partition Editor (Finish 를 선택하여 다음을 세팅 합니다.)

 

 

11. Confirmation (Commit 을 선택 하면 설치를 진행 합니다.)

 

 

12. Fetching Distribution 

 

 

13. Archive Extraction

 

 

14. 설치가 끝나면 세팅을 진행 합니다. Root 패스워드 입력 

 

 

15. Network Configuration (네트워크 설정) OK 를 눌러 다음을 설정합니다.

 

 

16. Network Configureation ( IPv4 사용유무 Yes를 선택 합니다.)

 

 

17. Network Configureation ( DHCP 사용유무 Yes를 선택 합니다. ) 차후 /etc/rc.conf 에서 수정이 가능 합니다.

 

 

18. Network Configureation ( IPv6 사용유무 No를 선택 합니다. )

 

 

19. Time Zone Selector ( Asia 를 선택 합니다.)

 

 

20. Countries in Asia (Korea, Republic of 를 선택 합니다.)

 

 

21. Time & Date ( 시간과 날짜 설정) 

 

 

22. Time & Date ( 시간과 날짜 설정) 

 

 

23. System Configuration (시스템 설정) 차후 /etc/rc.conf 를 수정하여 변경 할수 있습니다.

 

 

24. System Hardening ( Disable Sendmail service 를 선택 합니다.) 11 버전부터는 일부 서비스를 설치시 Disable 할수 있습니다.

 

 

25. Add User Accounts (추가유저 생성 No 선택 ) 차후 pw 명령어를 이용하여 유저를 생성 합니다. 

 

 

26. Final Configuration (Exit 를 선택하여 설치를 종료 합니다.)

 

 

27. Complete (FreeBSD 11.1 의 설치가 완료 되었습니다. Reboot 를 선택합니다.)