Ubuntu 15.10에서 vsftp + TLS 암호화 및 MySQL을 사용한 가상 호스팅
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- 우분투 15.10(Wily Werewolf)
- 우분투 12.10(Quantal Quetzal)
이 페이지에서
- 1 서문
- 2 vsftpd, MySQL 및 phpMyAdmin 설치
- 3 vsftpd용 MySQL 데이터베이스 생성
- 4 vsftpd 구성
- 5 TLS용 SSL 인증서 만들기
- 6 vsftpd에서 TLS 활성화\n
- 7 첫 번째 가상 사용자 생성
- 8 데이터베이스 관리
- 9 가상 머신 이미지
- SSH 로그인
- MySQL 로그인
Vsftpd는 가장 안전하고 빠른 Linux용 FTP 서버 중 하나입니다. 일반적으로 vsftpd는 시스템 사용자와 함께 작동하도록 구성됩니다. 이 문서는 실제 시스템 사용자 대신 MySQL 데이터베이스의 가상 사용자를 사용하는 vsftp 서버를 설치하는 방법을 설명합니다. 이것은 훨씬 더 성능이 좋으며 단일 시스템에서 수천 명의 ftp 사용자를 가질 수 있습니다.
MySQL 데이터베이스 관리를 위해 이 하우투에서도 설치될 phpMyAdmin과 같은 웹 기반 도구를 사용할 수 있습니다. phpMyAdmin은 편안한 그래픽 인터페이스로, 명령줄을 복잡하게 다룰 필요가 없습니다.
이 튜토리얼은 Ubuntu 15.10을 기반으로 합니다. 당신은 이미
이 하우투는 실용적인 가이드를 의미합니다. 그것은 이론적 배경을 다루지 않습니다. 그들은 웹의 다른 많은 문서에서 처리됩니다.
이 문서는 어떤 종류의 보증 없이 제공됩니다! 나는 이것이 그러한 시스템을 설정하는 유일한 방법이 아니라고 말하고 싶습니다. 이 목표를 달성하는 방법에는 여러 가지가 있지만 이것이 제가 취하는 방법입니다. 나는 이것이 당신에게 효과가 있을 것이라는 어떠한 보증도 하지 않습니다!
1 서문
이 자습서에서는 호스트 이름 server1.example.com을 IP 주소 192.168.1.100과 함께 사용합니다. 이러한 설정은 사용자에 따라 다를 수 있으므로 적절하게 교체해야 합니다.
루트 권한으로 이 튜토리얼의 모든 단계를 실행해야 하므로 이 튜토리얼의 모든 명령 앞에 sudo 문자열을 추가하거나 다음을 입력하여 지금 바로 루트가 될 수 있습니다.
sudo su
2 vsftpd, MySQL 및 phpMyAdmin 설치
Vsftpd에는 기본 제공 MySQL 지원이 없으므로 PAM을 사용하여 MySQL 데이터베이스에 대해 인증해야 합니다. 따라서 vsftpd, MySQL 및 phpMyAdmin 외에도 libpam-mysql을 설치합니다.
apt-get -y install vsftpd libpam-mysql mysql-server mysql-client phpmyadmin libpam-ldap
다음과 같은 질문을 받게 됩니다.
New password for the MySQL "root" user: <-- yourrootsqlpassword
Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
LDAP server Uniform Resource Identifier: <-- ENTER
Distinguished name of the search base: <-- ENTER
LDAP version to use: <-- 3
Make local root Database admin: <-- Yes
Does the LDAP database require login? <-- No
LDAP account for root: <-- ENTER
LDAP root account password: <-- ldaprootpw
Web server to configure automatically: <-- Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
Password of the database's administrative user: <-- Enter the MariaDB root password
MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.3 vsftpd용 MySQL 데이터베이스 생성
이제 vsftpd라는 데이터베이스와 vsftpd 데몬이 나중에 vsftpd 데이터베이스에 연결하는 데 사용할 vsftpd라는 MySQL 사용자를 만듭니다.
mysql --defaults-file=/etc/mysql/debian.cnf
CREATE DATABASE vsftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'ftpdpass';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';
FLUSH PRIVILEGES;문자열 ftpdpass를 MySQL 사용자 vsftpd에 사용하려는 암호로 바꿉니다. 여전히 MySQL 셸에서 필요한 데이터베이스 테이블을 만듭니다(예, 테이블이 하나만 있습니다!).
USE vsftpd;
CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (
`username`
)
);quit;
알다시피, 종료와 함께; 명령 우리는 MySQL 셸을 떠났고 Linux 셸로 돌아왔습니다.
BTW, (FTP 서버 시스템의 호스트 이름이 server1.example.com이라고 가정) http://server1.example.com/phpmyadmin/에서 phpMyAdmin에 액세스할 수 있습니다(server1.example 대신 IP 주소를 사용할 수도 있음). .com)을 열고 vsftpd 사용자로 로그인합니다. 그런 다음 데이터베이스를 볼 수 있습니다. 나중에 phpMyAdmin을 사용하여 vsftpd 서버를 관리할 수 있습니다.
4 vsftpd 구성
먼저 nogroup 그룹에 속하는 vsftpd(homedir /home/vsftpd 포함)라는 권한이 없는 사용자를 만듭니다. 이 사용자로 vsftpd를 실행하고 가상 사용자의 FTP 디렉토리는 /home/vsftpd 디렉토리(예: /home/vsftpd/user1, /home/vsftpd/user2 등)에 있습니다.
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
그런 다음 원본 /etc/vsftpd.conf 파일을 백업하고 직접 생성합니다.
cp /etc/vsftpd.conf /etc/vsftpd.conf_orig
cat /dev/null > /etc/vsftpd.conf
nano /etc/vsftpd.conf파일에는 다음 내용이 있어야 합니다.
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES nopriv_user=vsftpd chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/vsftpd.pem guest_enable=YES guest_username=vsftpd local_root=/home/vsftpd/$USER user_sub_token=$USER virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf
구성 옵션은 http://vsftpd.beasts.org/vsftpd_conf.html에 설명되어 있습니다. 가상 설정의 중요한 옵션은 chroot_local_user, guest_enable, guest_username, user_sub_token, local_root 및 virtual_use_local_privs입니다.
user_config_dir 옵션을 사용하면 전역 설정의 일부를 재정의하는 사용자별 구성 파일의 디렉터리를 지정할 수 있습니다. 이것은 완전히 선택 사항이며 이 기능을 사용하려는 경우 귀하에게 달려 있습니다. 그러나 지금 해당 디렉터리를 만들어야 합니다.
mkdir /etc/vsftpd_user_conf
이제 /etc/passwd 및 /etc/shadow 대신 MySQL 데이터베이스를 사용하여 가상 FTP 사용자를 인증하도록 PAM을 구성해야 합니다. vsftpd에 대한 PAM 구성은 /etc/pam.d/vsftpd에 있습니다. 원본 파일을 백업하고 다음과 같이 새 파일을 만듭니다.
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_orig
cat /dev/null > /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpdauth required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2 account required pam_mysql.so user=vsftpd passwd=ftpdpass host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
그런 다음 vsftpd를 다시 시작합니다.
service vsftpd restart
5 TLS용 SSL 인증서 생성
TLS를 사용하기 위해서는 SSL 인증서를 생성해야 합니다. /etc/ssl/private에 생성합니다. 디렉토리가 존재하지 않으면 지금 생성합니다::
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private그런 다음 다음과 같이 SSL 인증서를 생성할 수 있습니다.
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
국가 이름(2자리 코드) [AU]: <-- 국가 이름(예: "DE")을 입력하세요.
주 또는 도 이름(전체 이름) [Some-State]:<-- 국가 이름을 입력하세요. 시/도 이름.
지역 이름(예: 도시) []:<-- 도시를 입력하세요.
조직 이름(예: 회사) [Internet Widgits Pty Ltd]:<-- 조직 이름을 입력하세요( 예: 회사 이름).
조직 단위 이름(예: 섹션) []:<-- 조직 단위 이름(예: "IT 부서")을 입력합니다.
일반 이름(예: 귀하 name) []:<-- 시스템의 정규화된 도메인 이름을 입력합니다(예: "server1.example.com").
이메일 주소 []:<-- 이메일 주소를 입력합니다.6 vsftpd에서 TLS 활성화
vsftpd에서 TLS를 활성화하려면 /etc/vsftpd.conf...를 엽니다.
nano /etc/vsftpd.conf
... 그리고 다음 옵션을 추가합니다.
# Turn on SSL ssl_enable=YES # Allow anonymous users to use secured SSL connections allow_anon_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to # send and receive data on data connections. force_local_data_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to send the password. force_local_logins_ssl=YES # Permit TLS v1 protocol connections. TLS v1 connections are preferred ssl_tlsv1=YES # Permit SSL v2 protocol connections. TLS v1 connections are preferred ssl_sslv2=NO # permit SSL v3 protocol connections. TLS v1 connections are preferred ssl_sslv3=NO # Disable SSL session reuse (required by WinSCP) require_ssl_reuse=NO # Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla) ssl_ciphers=HIGH # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/private/vsftpd.pem [...]
force_local_logins_ssl=YES 및 force_local_data_ssl=YES를 사용하는 경우 TLS 연결만 허용됩니다(TLS 지원이 없는 이전 FTP 클라이언트를 사용하는 모든 사용자가 잠김). force_local_logins_ssl=NO 및 force_local_data_ssl=NO를 사용하면 FTP 클라이언트가 지원하는 항목에 따라 TLS 및 비 TLS 연결이 모두 허용됩니다.
나중에 vsftpd를 다시 시작합니다.
service vsftpd restart
그게 다야. 이제 FTP 클라이언트를 사용하여 연결을 시도할 수 있습니다. 그러나 TLS를 사용하도록 FTP 클라이언트를 구성해야 합니다.
7 첫 번째 가상 사용자 생성
데이터베이스를 채우려면 MySQL 셸을 사용할 수 있습니다.
mysql --defaults-file=/etc/mysql/debian.cnf
USE vsftpd;
이제 비밀 번호(MySQL의 PASSWORD 기능을 사용하여 암호화되어 저장됨)로 가상 사용자 testuser를 생성합니다.
INSERT INTO accounts (username, pass) VALUES('testuser', PASSWORD('secret'));
quit;testusers homedir은 /home/vsftpd/testuser입니다. 불행히도 vsftpd는 해당 디렉토리가 존재하지 않는 경우 자동으로 생성하지 않습니다. 따라서 지금 수동으로 생성하고 vsftpd 사용자와 nogroup 그룹이 소유하도록 합니다.
mkdir /home/vsftpd/testuser
chown vsftpd:nogroup /home/vsftpd/testuser
chmod a-w /home/vsftpd/testuser이제 워크 스테이션에서 FTP 클라이언트 프로그램(FileZilla 또는 FireFTP와 같은 것)을 열고 연결을 시도하십시오. 호스트 이름으로 server1.example.com(또는 시스템의 IP 주소)을 사용하고 사용자 이름은 testuser이고 비밀번호는 secret입니다.
8 데이터베이스 관리
대부분의 사람들에게는 MySQL에 대한 그래픽 프런트 엔드가 있으면 더 쉽습니다. 따라서 phpMyAdmin(이 예에서는 http://server1.example.com/phpmyadmin/ 아래)을 사용하여 vsftpd 데이터베이스를 관리할 수도 있습니다.
사용자를 생성하거나 수정할 때마다 MySQL의 PASSWORD 기능을 사용하여 해당 사용자 암호를 암호화해야 합니다. 또한, 새로운 가상 사용자를 생성할 때 이전 장의 마지막에 표시된 것처럼 쉘에 해당 사용자 homedir을 생성하는 것을 잊지 마십시오.
9 가상 머신 이미지
이 튜토리얼은 Howtoforge 구독자를 위해 OVA/OVF 형식의 가상 머신을 사용할 준비가 된 상태로 제공됩니다. VM 형식은 VMWare 및 Virtualbox 및 이 형식을 가져올 수 있는 기타 도구와 호환됩니다. 상단 오른쪽 메뉴에서 다운로드 링크를 찾을 수 있습니다. 파일 이름을 클릭하면 다운로드가 시작됩니다.
VM의 로그인 세부 정보는 다음과 같습니다.
SSH 로그인
사용자 이름: administrator
비밀번호: howtoforge관리자 사용자에게는 sudo 권한이 있습니다.
MySQL 로그인
사용자 이름: root
비밀번호: howtoforge최초 부팅 후 암호를 변경하십시오.
VM은 정적 IP 192.168.1.100에 대해 구성되며 IP는 /etc/network/interfaces 파일에서 변경할 수 있습니다.
10 링크
- vsftpd: http://vsftpd.beasts.org/
- 우분투: http://www.ubuntu.com/