O/S : CentOS 7.x
ftp 프로그램은 여러가지 존재한다 vsftpd / proftpd / pure-ftpd 이중에서 가장 편하게 설치할 수 있는 vsftpd를 설치해 보자
1. 프로그램 설치
1 |
[root@xinet ~]# yum -y install vsftpd |
2. vsftpd.conf 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf ############################## 기본 설정 ############################## ## VsFTP 데몬을 background로 실행할 것인지 설정 합니다. (기본값 = NO) ## => VsFTP 데몬은 기본적으로 inetd 모드로 동작이 됩니다. 따라서 독립모드(standalone)로 ## 데몬을 운영하실 거라면 이 옵션과 listen 옵션을 모두 YES로 켜주셔야 됩니다. ## 반대로 VsFTP 데몬을 inetd 모드로 운영하시려면 이 옵션과 listen 옵션을 비활성화 하시면 됩니다. ## 일반적으로 FTP 데몬은 많은 접속이 있을 경우에 standalone 모드로 운영하는것이 좋으며, ## 많은 접속이 없는 경우에는 inetd 모드로 운영하는것이 시스템 자원효율에 좋습니다. background=YES # ## background 옵션과 같이 사용되며, 이 옵션은 listen_port에서 들어오는 요청에 대해서 ## 데몬이 요청을 받아드릴지에 대해 설정합니다. (기본값 = NO) ## => 만약 데몬을 독립모드(standalone)로 운영하실 거라면 background 옵션과 같이 이 옵션도 ## 함께 활성화 시켜야 됩니다. listen=YES # ## listen 옵션과 동일하지만, IPv6에서 운영할 때 사용 합니다. (기본값 = NO) ## => 일반적으로 IPv6는 사용하지 않으므로 비활성화 하시면 됩니다. listen_ipv6=NO # ## VsFTPd가 구동될 서버의 유저를 설정합니다. (기본값 = nobody) #nopriv_user=ftpsecure # ## FTP 서버에 접속할 수 있는 클라이언트의 최대수를 제한하는 옵션 입니다. (기본값 = 0) ## => 기본값인 0으로 설정하면 제한을 두지 않습니다. max_clients=100 # ## IP당 접속할 수 있는 최대수를 제한하는 옵션 입니다. (기본값 = 0) ## => 기본값인 0으로 설정하면 제한을 두지 않습니다. max_per_ip=30 # ## 계정 사용자의 최대전송률을 지정합니다. (기본값 = 0) ## => 업/다운로드의 속도를 제한할때 사용하며, 단위는 bps 입니다. local_max_rate=0 ## 서버의 FTP 데몬시간을 서버의 표준시간으로 고정할지 설정합니다. (기본값 = NO) ## => 만약 이 옵션을 비활성화 하게되면 표준시각(GMT)를 보여주므로, 한국의 경우 9시간의 오차가 발생합니다. use_localtime=YES # # ############################## 접속 설정 ############################## ## 익명 사용자의 접속에 대한 설정을 합니다. (기본값 = YES) anonymous_enable=NO # ## 계정 사용자의 접속에 대한 설정을 합니다. (기본값 = NO) local_enable=YES # ## 사용자에게 STOR(저장),DELE(삭제),RNFR(이름변경),RNTO(이름변경),MKD(디렉토리생성),RMD(디렉토리삭제), ## APE(이어올리기), SITE(umask,chmod)등의 권한을 허용할지 설정합니다. (기본값 = NO) ## => 이 옵션이 비활성화되어 있으면 사용자는 FTP 서버에 데이터를 쓸 수 없습니다. write_enable=YES # ## 파일 생성 umask 값을 지정합니다. (기본값 = 077) ## => umask는 "max permission-umask=create permission" 의 공식을 가지고 있습니다. ## 디렉토리의 기본값은 0777이며, 파일의 기본값은 0666 입니다. ## 따라서 일반적인 시스템의 파일생성 퍼미션인 644를 생성하려면 022로 해야 됩니다. ## 디렉토리: 0777-022=0755, 파일: 0666-022=0644 local_umask=022 # # ## 명시된 사용자만 로그인을 허용할 때 사용하는 옵션입니다. (기본값 = NO) ### => userlist_deny 옵션이 비활성화 된 상태에서만 작동합니다. userlist_enable=NO # ## 명시된 사용자가 로그인을 할 수 없도록 제한하는 옵션 입니다. (기본값 = YES) ### => userlist_enable 옵션이 비활성화 된 상태에서만 작동하며, 서로 반대되는 개념 입니다. userlist_deny=YES # ## 명시된 사용자를 읽어올 파일을 지정합니다. (기본값 = /etc/vsftpd.user_list) #userlist_file=/etc/vsftpd.user_list # # ############################## 로그 설정 ############################## ## 파일의 송/수신 결과를 xferlog_file 옵션으로 지정된 로그파일에 기록합니다. (기본값 = NO) xferlog_enable=YES # ## 액티브모드(Active Mode) 데이터 전송 포트인 20번을 사용할 것인지 설정 합니다. (기본값 = NO) connect_from_port_20=YES # ## xferlog_enable 옵션을 활성화했을 경우에 로그를 기록할 파일을 지정합니다. ## (기본값 = /var/log/vsftpd.log) xferlog_file=/var/log/vsftpd.log # ## 로그를 기록할 때 표준 xferlog 포맷으로 저장할 것인지를 설정합니다. (기본값 = NO) xferlog_std_format=NO # # ############################ 대기시간 설정 ############################ ## ## 액티브 모드(Active Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. (기본값 = 60/초) ## => 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다. connect_timeout=60 # ## 패시브 모드(Passive Mode)를 사용하는 클라이언트의 접속 허용시간을 설정합니다. (기본값 = 60/초) ## => 클라이언트의 요청패킷(SYN Packet)을 받은뒤, 지정된 시간내에 접속이 안될경우 종료합니다. accept_timeout=60 # ## 접속 대기시간을 설정합니다. (기본값 = 300/Secs) ## => FTP에 접속한 뒤 아무런 작동도 안할 때 지정된 시간이후 접속이 종료되도록 합니다. idle_session_timeout=300 # ## 데이터 전송 대기시간을 설정합니다. (기본값 = 300/Secs) ### => FTP 서버로부터 데이터를 업/다운로드를 한 뒤 아무런 작동도 안할때 접속이 종료되도록 합니다. data_connection_timeout=300 # # ############################# 메시지 설정 ############################# ## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지 파일을 설정합니다. (기본값 = none) ##banner_file=/etc/vsftpd/welcome.msg # ## 사용자가 FTP 서버에 접속했을 때 보여줄 환영 메시지를 설정합니다. (기본값 = none) ftpd_banner=Welcome to vsftpd server # ## 디렉토리의 메시지 파일을 사용자에게 보여줄 것인지 설정합니다. (기본값 = NO) dirmessage_enable=NO # ## 메시지 파일을 지정 합니다. (기본값 = .message) ### => dirmessage_enable 옵션을 허용했을 경우에 메시지를 읽어올 파일을 지정합니다. #message_file=.message # ## async ABOR 명령어를 사용할 수 있도록 설정합니다. (기본값 = NO) ## => 일부 FTP 클라이언트에서 파일전송을 취소했을 경우, 취소되지 않은 상태로 있는 경우가 ## 생길 수 있는데 그것을 방지하기 위해 사용할 수 있습니다. ## 그러나 보안상 좋지 않기 때문에, 비활성화 하시는것이 좋습니다. async_abor_enable=NO # ## 아스키모드(ASCII Mode) 전송 허용에 대해서 설정합니다. (기본값 = NO) ### => 이 옵션은 악의적인 사용자에 의해서 시스템의 자원이 고갈될 수 있으므로 주의해야 됩니다. ascii_download_enable=YES ascii_upload_enable=YES # ## 로그인 거부 리스트 사용에 대한 설정을 합니다. (기본값 = NO) #deny_email_enable=YES ## 로그인 거부 파일을 지정합니다. (기본값 = /etc/vsftpd.banned_emails) #banned_email_file=/etc/vsftpd/banned_emails # # ############################## 보안 설정 ############################## # ## 모든 계정 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO) ## => FTP 사용자가 시스템에 접근할 수 있으면 위험하므로 반드시 활성화 하는것이 좋습니다. chroot_local_user=YES # ## 명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수 없도록 설정합니다. (기본값 = NO) ## => 이 옵션은 chroot_local_user 옵션이 비활성화되어 있어야 사용할 수 있습니다. ## => 전체 적용이 아니라 일부 사용자만 제한할때 편하지만, 개별 적용은 보안상 좋지 않습니다. #chroot_list_enable=YES # ## 사용자의 홈상위 디렉토리를 설정한 파일을 지정합니다. (기본값 = /etc/vsftpd.chroot_list) ## => chroot_list_enable 옵션을 활성화했을 경우에 리스트를 읽어올 파일을 지정합니다. #chroot_list_file=/etc/vsftpd/chroot_list # ## ls -R 명령을 허용할 것인지를 설정하는 옵션 입니다. (기본값 = NO) ## => 만약 하위디렉토리나 파일이 매우 많은 상위디렉토리에서 이 옵션을 활성화하게 되면 ## 시스템 자원의 낭비가 심하므로, 비활성화 하시는것이 좋습니다. ls_recurse_enable=NO # ## PAM 사용자 인증을 할 때 사용될 인증파일을 지정합니다. (기본값 = ftp) ## => VsFTPd를 RPM으로 설치하게 되면 일반적으로 vsftpd로 인증파일이 생성됩니다. pam_service_name=vsftpd ## TCP wrappers에 의해서 FTP 접속을 제어 할 것인지 설정합니다. (기본값 = NO) ### => 이 옵션을 활성화하면 /etc/hosts.allow와 /etc/hosts.deny에 의해서 제어할 수 있습니다. ### 그러나 이 옵션을 사용하려면 vsftpd 소스중 builddefs.h 파일에서 설정을 변경해야 됩니다. ### 변경전 -> #undef VSF_BUILD_TCPWRAPPERS ### 변경후 -> #define VSF_BUILD_TCPWRAPPERS ### 참고: LTN에서 제공하는 vsftpd는 이미 패치되어 있습니다 tcp_wrappers=YES # # ###### pass mode ############################################################################ pasv_enable=YES pasv_min_port=50001 pasv_max_port=50005 allow_writeable_chroot=YES |
vsftpd.conf 파일 다운로드 —> vsftpd 파일명 변경해서 사용
3. 부팅시에 해당 데몬이 올라올수 있도록 시스템에 등록
1 2 |
[root@localhost ]# systemctl daemon-reload [root@localhost ~]# systemctl enable vsftpd.service |
4. 서비스 시작
1 2 3 4 5 |
[root@localhost noarch]# systemctl start vsftpd [root@xinet ~]# ps -ef | grep vsftpd root 27556 1 0 11:08 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 28282 20501 0 11:20 pts/0 00:00:00 grep --color=auto vsftpd |