FTP-----mysql検証に基づく仮想ユーザーの構築
前言:
前回のブログでは、ファイル認証に基づくftpサービスを実現しましたが、ユーザーデータの管理が悪いとか、明文で保存するのが安全ではないとか、多くの問題がありました.ユーザーデータを他のサーバに単独で保存することはできません.そこで今回はユーザーデータをmysqlに入れ、pamモジュールでmysqlにユーザーデータを探して認証を実現します.主体の過程は前編とあまり違いません~では、~を始めましょう.
本文:
今回、私たちの環境はcentos 6です.centos 7のpam_のためです.mysqlモジュールは自分で手動でコンパイルしなければならないのでcentos 6を先に使用しますが、両者の違いも大きくなく、pam_をコンパイルします.mysqlモジュールも難しくありません.従来のルールでは、最初に使用するプログラムをインストールします.
今回もシステムのftpユーザーを仮想ユーザーとしてログインしたguestを使用しています.もちろん、自分で新しいユーザーを作成することもできますが、ここではプレゼンテーションをしません~centos 7で覚えておいてください.ユーザーのホームディレクトリは、ユーザーに書く権限がありませんよ.では、まずmysqlで認証に必要なデータベースとテーブルを作成し、mysqlサービスを開始します.
はい~検証用のデータベースはこちらで作成済みで、ftpサーバの構成を開始します.前のブログとあまり違いません.主に異なるpamモジュールを使用しています.ここではpam_を使用しています.mysql.soモジュール、まずftpのプロファイルを修正して、修正したプロファイルだけをリストします.
次にpamモジュールに必要な構成を作成し、/etc/pam.dディレクトリの下に新しいファイルvsftpdを作成する.mysql
やはり古いルールで、selinuxが閉じているかどうか、iptablesがftpサービスを放行しているかどうかをチェックします.問題がなければ、データベースの2つのアカウントでログインできます.どのユーザーがデータをアップロードする機能が必要かは、前のブログを参照して、個別のユーザープロファイルを作成し、匿名アップロード機能をオンにすることができます.特に注意しなければならないのは、ftpユーザーに/var/ftp/pubに書き込み権限を持たせることができ、aclでも直接すべての権限を開放することができ、あるいはftpの所有者であるディレクトリuploadを構築してユーザーftpにファイルをアップロードさせることができることです.
前回のブログでは、ファイル認証に基づくftpサービスを実現しましたが、ユーザーデータの管理が悪いとか、明文で保存するのが安全ではないとか、多くの問題がありました.ユーザーデータを他のサーバに単独で保存することはできません.そこで今回はユーザーデータをmysqlに入れ、pamモジュールでmysqlにユーザーデータを探して認証を実現します.主体の過程は前編とあまり違いません~では、~を始めましょう.
本文:
今回、私たちの環境はcentos 6です.centos 7のpam_のためです.mysqlモジュールは自分で手動でコンパイルしなければならないのでcentos 6を先に使用しますが、両者の違いも大きくなく、pam_をコンパイルします.mysqlモジュールも難しくありません.従来のルールでは、最初に使用するプログラムをインストールします.
yum install vsftpd mysql-server pam_mysql
今回もシステムのftpユーザーを仮想ユーザーとしてログインしたguestを使用しています.もちろん、自分で新しいユーザーを作成することもできますが、ここではプレゼンテーションをしません~centos 7で覚えておいてください.ユーザーのホームディレクトリは、ユーザーに書く権限がありませんよ.では、まずmysqlで認証に必要なデータベースとテーブルを作成し、mysqlサービスを開始します.
#service mysqld start
#mysql # mysql
#mysql>CREATE DATABASE vsftpd; # vsftpd
mysql> GRANT SELECT ON vsftpd.* TO vsftpd@localhost IDENTIFIED BY '1234'; # mysql vsftpd , , 1234, mysqld vsftpd , host localhost, mysql ~
mysql>FLUSH PRIVILEGES;
mysql>USE vsftpd; # , ~~
mysql>CREATE TABLE users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50)
BINARY NOT NULL,password CHAR(48) BINARY NOT NULL); # users , id , , ,name 50 , ,password , , 48 , 48
mysql> INSERT INTO users(name,password) values(‘xiaofengfeng',password('1234'));
mysql> INSERT INTO users(name,password) values(‘xiaofengfeng2',password('1234'));
# , 1234
はい~検証用のデータベースはこちらで作成済みで、ftpサーバの構成を開始します.前のブログとあまり違いません.主に異なるpamモジュールを使用しています.ここではpam_を使用しています.mysql.soモジュール、まずftpのプロファイルを修正して、修正したプロファイルだけをリストします.
#/etc/vsftpd/vsftpd.conf
anonymous_enable=NO #
guest_enable=YES
guest_username=ftp # ftp
pam_service_name=vsftpd.mysql #pam /etc/pam.d
次にpamモジュールに必要な構成を作成し、/etc/pam.dディレクトリの下に新しいファイルvsftpdを作成する.mysql
#/etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=1234 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
# pam_mysql.so , vsftpd 1234 mysql host localhost, ip , vsftpd users name , password , musql password() , 2 mysql password() , crypt 2
やはり古いルールで、selinuxが閉じているかどうか、iptablesがftpサービスを放行しているかどうかをチェックします.問題がなければ、データベースの2つのアカウントでログインできます.どのユーザーがデータをアップロードする機能が必要かは、前のブログを参照して、個別のユーザープロファイルを作成し、匿名アップロード機能をオンにすることができます.特に注意しなければならないのは、ftpユーザーに/var/ftp/pubに書き込み権限を持たせることができ、aclでも直接すべての権限を開放することができ、あるいはftpの所有者であるディレクトリuploadを構築してユーザーftpにファイルをアップロードさせることができることです.