FTPサーバー
centos7でFTPサーバーを構築する
FTP:ファイル転送プロトコル、動作モード[クライアント/サーバー]、FTPサービスポート番号:tcp / 21、tcp / 20
FTPアクティブモード:クライアントは任意のポートN(N> 1024)からFTPサーバーのポート21コマンドポートに接続し、クライアントはポートN + 1でリッスンを開始し、FTPコマンド「ポートN +1」をFTPサーバーに送信します。 FTPサーバーは、データポート(20)を使用して、クライアントが指定したデータポート(N + 1)に接続します。
FTPパッシブモード:クライアントは任意のポートN(N> 1024)からFTPサーバーのポート21コマンドポートに接続し、クライアントはポートN + 1でリッスンを開始し、クライアントはPASVコマンドを送信し、サーバーは任意のポートを開きます( P> 1024)、PORTPコマンドをクライアントに送信します。クライアントは、ローカルポートN + 1からサーバーのポートPへの接続を開始して、データを送信します。
企業の実際の環境では、FTPクライアントとFTPサーバーの両方がファイアウォールに対して開かれている場合、FTPはアクティブモードで動作する必要があるため、FTPサーバーのファイアウォールルールでポート20と21のみを開く必要があります。
1.FTPサーバーの概要
FTP(ファイル転送プロトコル):ファイル転送プロトコルはクライアント/サーバーシステムです。FTPを使用するユーザーは、ログインする前に認証を受ける必要があります。FTPサーバーのユーザーは3つのカテゴリに分類できます。
システムユーザー:システムのユーザー。Linuxは通常、物理ユーザーを制限しないため、物理ユーザーはファイルシステム全体で作業できます。しかし、彼らは通常、FTPを介してリモートでシステムにアクセスすることを望んでいません。
仮想ユーザー:FTPモードでのみシステムを使用でき、シェルを使用してシステムに直接ログインできないユーザー、つまり仮想ユーザー。サーバーにアクセスするときは認証が必要です。ほとんどのFTPユーザーはそのようなユーザーです。
匿名ユーザー:パブリックサーバーに匿名ユーザーアクセスを提供できます。ユーザー名:匿名。ただし、匿名ユーザーを使用する場合は、同時に接続するユーザーの数が制限される、アクセスされるファイルの数が制限される、ファイルをアップロードできない、許可される命令が少なくなる、設定が非表示になるなど、権限を低くして、できるだけ制限する必要があります。ユーザーが同時にログインできる接続の最大数など。
2.FTPサーバーのインストール
1.デフォルトのyumソースを使用してvsftpdパッケージをインストールします
#yum install vsftpd ftp
2.サービスを開始し、自動的に開始するように設定します
vsftpdのサービス名:vsftpd.service
#systemctl start vsftpd.service 启动服务
#systemctl enable vsftpd.service 开机自启
3.ファイアウォールとselinuxメカニズムを設定します
#firewall-cmd --permanent --zone=public --add-service=ftp
#firewall-cmd --reload
#systemctl stop firewalld
#setenforce 0
4.ftpサーバーにアクセスします
Linuxシステムでアクセスするにはftpコマンドを使用します
WindowsクライアントでFTPサーバーにアクセスする
3、ftpにアクセスするための匿名ユーザーを設定します
1.匿名ユーザーがFTP関連のナレッジポイントにアクセスする
(1)デフォルトでは、匿名ユーザーとシステムユーザーはftpへのアクセスが許可されています。アクセスされるデフォルトのディレクトリは/ var / ftpです。
アクセステスト(ユーザー名:匿名パスワードは空です)
(2)ftpの構成ファイルは/etc/vsftpd/vsftpd.confです。
ftpにアクセスするための匿名ユーザーを設定します。
anonymous_enable=YES
(3)ftpにログインするときにパスワードを入力しないように匿名ユーザーを設定します。
no_anon_password=YES
ftpd_banner= welcome to our home! //设置提示内容
(4)ファイルをアップロード、作成、および削除する匿名ユーザーを設定します。
anon_upload_enable=YES 匿名用户上传权限
anon_mkdir_write_enable=YES 匿名用户新建文件夹的权限
anon_other_write_enable=yes 匿名用户删除和修改文件的权限
(5)ファイルのアクセス許可を設定する
chmod 777 pub 不推荐使用
setfacl -m u:ftp:rwx pub 推荐使用
(6)匿名ユーザーが新しいファイルをアップロードまたは作成するためのアクセス許可を設定します
umask値:新しいファイルまたはフォルダーを作成するときのデフォルトのアクセス許可umask値の表現方法を決定します:0022
ローカルユーザーとしてvsftpを使用している場合は、構成ファイルのlocal_umaskの値を変更する必要があります。
仮想ユーザーとしてvsftpを使用している場合は、構成ファイルのanon_umaskの値を変更する必要があります。
umask = 022の場合、新しく作成されたディレクトリ権限は755、ファイル権限は644です
。umask= 077の場合、新しく作成されたディレクトリ権限は700、ファイル権限は600です。
(7)この設定では、システムユーザーはログインできず、匿名ユーザーのみがログインできます。
anonymous_enable=YES
local_enable=no
(8)匿名ユーザーがFTPにアクセスするためのデフォルトディレクトリを設定します
anon_root=/var/ftp
anon_root=/var/public
注:vsftpサーバーディレクトリでデフォルトの匿名ユーザーを変更するには、anon_rootではなく他の1つのアカウントの既存のホームディレクトリに変更するか、匿名ユーザーにftpサーバーへのアクセスを許可できません。
第4に、FTPサーバーにアクセスするようにシステムユーザーを構成します
1.FTP関連の知識へのシステムユーザーアクセス
(1)システムユーザーはデフォルトでメインディレクトリにアクセスし、アップロード、ダウンロード、作成、および削除する権限を持ち、システム内の他のディレクトリに切り替えることもできます。
匿名ユーザーアクセスをオフにし、システムユーザーのみにアクセスを許可する
anonymous_enable=no 关闭匿名用户访问
local_enable=yes 允许系统用户访问
local_umask=022
(2)システムユーザーが自分のホームディレクトリにのみアクセスでき、すべての権限を持ち、システム内の他のディレクトリに切り替えることができないように設定します。
chroot_local_user=YES 控制用户访问路径访问自己的主目录,不能切换到其他目录
allow_writeable_chroot=YES 允许写入
ftpd_banner= welcome to our home!
max_clients=30 设置最大连接数
idle_session_timeout=600 设置超时时间
(3)指定したディレクトリにアクセスするようにシステムユーザーを設定します。システム内の他のディレクトリへの切り替えは許可されておらず、アップロード、ダウンロード、作成、および削除する権限があります。
local_root=/mnt/public/ 设置系统用户访问ftp的默认目录
write_enable=YES 允许写入
chroot_local_user=YES 控制用户访问路径访问指定目录,不能切换到其他目录
allow_writeable_chroot=YES 允许写入
/ mnt / public /ディレクトリの下のファイル権限を変更します
2.ローカルユーザーに基づくアクセス制御
デフォルトでは、ftpサーバー内のすべてのシステムユーザーがftpにアクセスできます。指定されたシステムユーザーのみにアクセスを制限するにはどうすればよいですか。システムユーザーに関連する2つの構成ファイルがvsftpで提供されています。
/ etc / vsftpd / ftpusersは、ログインが禁止されているftpユーザーのリスト(ブラックリスト)を提供します。このファイルに含まれるユーザーは、ユーザーが/ etc / vfsftpd / user_listに表示されているかどうかに関係なく、vsftpdサーバーにログインすることを禁止されます。
/ etc / vsftpd / user_listは、ログインを許可されているftpユーザー(ホワイトリスト)のリストを提供します。このファイルに含まれているユーザーは、ログインが禁止されている場合や、ログインが許可されている場合があります。
具体的な決定は、メイン構成ファイルvsftpd.confで行われます。
userlist_enable = YESの場合、user_listファイルが有効になります。
userlist_deny = YESの場合、リスト内のアカウントのみがログインを禁止されます。
userlist_deny = NOの場合、リスト内のユーザーはログインできます。
その中で、ftpusersファイルの優先度はuser_listファイルよりも高くなります。つまり、ユーザーが2つのファイルに同時に存在する場合、ftpへのアクセスは拒否されます。
例:ftpuserユーザーにのみftpへのアクセスを許可すると、次の設定を行うことができます。
#vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES #启用userlist用户列表(系统默认设置)
userlist_deny=NO #只允许列表中的用户登录
#vim/etc/vsftpd/user_list
サービスを再起動してクライアントでテストした後、現時点ではftpuserユーザーのみがftpにアクセスできます。
5、FTPにアクセスするように仮想ユーザーを構成します
1.Vsftpd仮想ユーザーに必要なソフトウェアと認証モジュールをインストールします
#yum install pam* libdb-utils libdb* --skip-broken -y
2.一時仮想ユーザーファイル/etc/vsftpd/ftpusers.txtを作成します。ユーザー名とパスワードの形式は次のとおりです。
Techftpユーザー名
123456パスワード
netftp
123456
admftp
123456
markftp
123456
3. Vsftpd仮想ユーザーデータベース認証ファイルを生成し、権限を600に設定します
#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db
#chmod 600 /etc/vsftpd/vsftp_login.db
4. PAM認証ファイルを構成します:vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vsftp_login
account required pam_userdb.so db=/etc/vsftpd/vsftp_login
5.仮想ユーザーマッピング用のシステムユーザーを作成します
#useradd -s /sbin/nologin ftpuser
6.構成ファイルを変更します:#vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
pam_service_name=vsftpd.vu
guest_enable=YES 开启系统虚拟用户访问
guest_username=ftpuser 指定系统虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf 指定虚拟用户的配置文件目录
virtual_use_local_privs=YES 允许虚拟用户访问
7.仮想ユーザー用のプライベート仮想ディレクトリと独立した構成ファイルをそれぞれ作成します
#mkdir /home/ftpuser/techftp
#mkdir /etc/vsftpd/vsftpd_user_conf
#vim techftp
local_root=/home/ftpuser/techftp 默认访问的目录
write_enable=YES 允许写入
anon_world_readable_only=YES 允许浏览
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#mkdir /home/ftpuser/netftp
#vim netftp
local_root=/home/ftpuser/netftp
write_enable=YES
virtual_use_local_privs=NO #不具有可登录用户的权限
anon_world_readable_only=YES #可浏览目录
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
6、Vsftpdログ管理
1. Vsftpソフトウェアによって構築されたFTPサーバーのログファイルの構成は、/ etc /vsftpd.confにあります。
xferlog_enable = YES FTPサーバーをオンにして、アップロードとダウンロードをログに記録します
xferlog_std_format = YESログ形式
xferlog_file =パスはログファイルを指定します
デフォルトは次のとおりです:/ var / log / xferlog
2.ログファイルの出力形式は次のとおりです。
(1)現在の時刻(現地時間)、形式は次のとおりです。DDDMMM dd hh:mm:ss YYYY
(2)送信時間:ファイルの送信に使用された時間(秒単位)
(3)リモートホスト名/ IP:
(4)ファイルサイズ:転送されたファイルのサイズ(バイト単位)
(5)ファイル名:パスを含む転送ファイル名
(6)送信タイプ:a-ASCIIでの送信、b-バイナリファイルでの送信
(7)特別扱いマーク:
_:特別な扱いはありません
c:ファイルは圧縮されています
u:ファイルは非圧縮形式です
T:ファイルはtar形式です
(8)送信方向:oFTPサーバーからクライアントへの転送; iクライアントからFTPサーバーへの転送
(9)アクセスモード:匿名ユーザー; gゲストユーザー; rシステム内のユーザー
(10)ユーザー名
(11)サービス名:通常はFTP
(12)認証方法:0なし; 1RFC931認証
(13)認証済みユーザーID:*を使用する場合、テストはIDを取得できないことを意味します
(14)完了ステータス:i送信は完了していません。cは送信が完了したことを意味します。