Alibaba Cloud LinuxはFTPサービスを構築します(Windows / Linux匿名アクセス)


環境の説明:
サーバービルド:Alibaba Cloud Centos7
vsftpdバージョン:vsftpd-3.0.2-27.el7.x86_64
アクセステスト:windows7

1.FTPサーバーをインストールします

ftpサーバーインストールパッケージをインストールします
。yum-
yinstallvsftpdvsftpdがインストールされているかどうかを確認し
ますrpm-qa vsftpd

2.構成ファイルの説明

/etc/vsftpd/vsftpd.conf //メイン構成ファイル、構成項目が多すぎるため、補足のためにブログ投稿の下に置いてください
/ etc / vsftpd / ftpusers
このファイルのユーザーはftpサービスにアクセスできないことに注意してください。このファイルは構成アイテムの影響を受けません。常に有効であり、一般的なブラックリストです。
このファイルには、FTPへのアクセスが禁止されているユーザーのリストが格納されます。通常、管理者は、セキュリティ上の理由から、アカウントのアップロードやアカウントのアップロードを防ぐために、スーパー権限を持つ一部のアカウント(rootなど)にFTPへのログインを許可しません。 FTPから危険な場所にあるファイルをダウンロードしてシステムに影響を与える損傷を引き起こす

/ etc / vsftpd / user_list
簡単に言えば:ftpusersとuser_listは何の関係もありません。ftpusersファイルは常に有効です。user_listは/etc/vsftpd/vsftpd.confファイルのuserlist_enableとuserlist_denyの2つの構成に依存します。

user_listは、有効または無効にすることができます。有効な場合は、ブラックリストまたはホワイトリストにすることができます。

userlist_enableとuserlist_denyの2つの構成について:1。userlist_enableとuserlist_deny
の2つのオプションは、すべてのローカルユーザー(ftpusersのユーザーを除く)とuser_listファイルに表示されるユーザーとuser_listファイルに表示されないユーザーに対して組み合わされます。クラスユーザーコレクション。
2. userlist_enable = YESの場合のみ:userlist_denyアイテムの構成が有効な場合、user_listファイルが使用されます。NOの場合、userlist_denyアイテムの値が無効であっても、すべてのローカルユーザー( ftpusers))
FTP3にログインできます。userlist_enable= YESの場合、userlist_deny = YES:user_listはブラックリストです。つまり、リストに表示されているすべてのユーザーはログインを拒否されます
。4。userlist_enable = YESの場合、userlist_deny = NO:user_listはホワイトリスト、つまり、リストに表示されているユーザーのみがログインを許可されます(user_list以外のユーザーはログインを拒否されます)。さらに、ホワイトリストを使用した後、匿名ユーザーはログインできなくなることに注意する必要があります。ログインします!user_listに明示的に行を追加しない限り:anonymous

3.構成ファイル(/etc/vsftpd/vsftpd.conf)を変更します

エラーIDの解決:
  500 ##ファイルシステムのアクセス許可が大きすぎます
  530 ##ユーザー認証に失敗しました
  550 ##サービス自体が開いていません
  553 ##ローカルファイルシステムのアクセス許可が小さすぎます

  
vimvsftpd.conf //構成ファイルを開きます
#Anonymousユーザー部分
anonymous_enable = YES#匿名ユーザーのログインを許可
no_anon_password = YES#匿名ユーザーのログイン時にパスワード(パスワード)を要求しない
anon_umask = 022#匿名ユーザーがファイルを作成するためのアクセス許可マスクを設定します。これは、ディレクトリが作成されたことを意味します。匿名ユーザーによる権限は022以外です。つまり、匿名ユーザーによって作成されたディレクトリには755の権限があります
anon_upload_enable = YES#匿名ダウンロードを許可します
anon_mkdir_write_enable = YES#ファイルの匿名作成を許可します
anon_world_読み取り可能_only = NO#YESの場合、他のユーザーファイルはダウンロードを許可するために読み取り権限を持っている必要があり、ファイルのみダウンロードは誰もがftpで読み取り権限を持っている場合はダウンロードできません。ダウンロードが許可される前に、他の人だけが読み取り権限を持っています。いいえの場合、ftpユーザーがファイル、ダウンロードはダウンロード可能
anon_other_write_enable = YES#匿名ユーザーがファイルとフォルダーにアクセスできるようにする
anon_max_rate = 102400の削除と名前変更#匿名ユーザーの最大伝送速度、単位はByts / s
anon_root = / var / ftp#設定匿名ユーザーがログインするディレクトリ。指定しない場合、デフォルトは/ var / ftpディレクトリです


#ローカルユーザー部分local_enable = YES#ローカルユーザーがftpサーバーにログインできるようにする
local_umask = 022#サーバー上でローカルユーザーが作成したファイルのアクセス許可マスクを設定します。つまり、ローカルユーザーが作成したディレクトリには022以外のアクセス許可があります。 、つまり、ローカルユーザー作成されたディレクトリには755のアクセス許可があります


#グローバル部分write_enable = YES#ユーザーがサーバーへの書き込み操作を実行できるようにする
xferlog_enable = YES#ファイルのアップロード/ダウンロード時にログを記録する(ログ機能を有効にする)
connect_from_port_20 = YES#標準の20ポートを使用してftpに接続します(20ポートを使用するかどうか)データを転送するには(アクティブモードを使用するかどうか))
xferlog_std_format = YES#標準ファイルログを使用(標準形式)
listen = NO#ipv4モニタリングをオフにする
listen_ipv6 = YES#ipv6モニタリングをオンにする

pam_service_name = vsftpd#pamモジュールを使用して制御します。vsftpdファイルは/etc/pam.dディレクトリにあります(PAMで使用される名前を定義します。デフォルトはvsftpdです)
userlist_enable = YES#userlist_deny構成アイテムとuser_listをアクティブ化することを意味しますfile
userlist_deny = yes#リストに表示されるすべてのユーザーはログインを拒否されます
tcp_wrappers = YES#tcp_wrappers管理サポートを
オンにしますpasv_promiscuous = yes#PASVモードのセキュリティチェックをオフにします
#pasv_enable = NO#pasvモードを許可します

anonymous_enable=YES
no_anon_password=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_world_readable_only=NO
anon_other_write_enable=YES
#dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
anon_max_rate=102400

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_promiscuous=yes

#pasv_enable=NO
#ftpd_banner=Welcome to my FTP server.

4.FTPサービスを開始します

systemctl start vsftpd#FTPサービスを開始します。サービス
コマンドを再起動します
。systemctlrestartvsftpd#FTPサービスを再起動します(構成ファイルを変更した後にvsftpdを再起動するように注意してください。再起動しないと、構成が有効になりません)。

5.ファイアウォールポリシー、SeLinuxポリシーを変更し、ルートディレクトリ属性を変更します

これはテストなので、firewalldを直接閉じ、SeLinuxをDisabledに設定します
systemctl stop Firewalld
cat / etc / selinux / config
ここに画像の説明を挿入
ルートディレクトリの属性変更します:
chown -R ftp:ftp / var / ftp
chmod 777 / var / ftp / pub

6.アクセステスト

注:ftpサーバーはAlibaba Cloud上に構築されているため、Alibaba Cloudサーバーのバックグラウンドでセキュリティグループのルールを構成し、ポート21
ここに画像の説明を挿入
開いてwindows7システムにアクセスする必要があり
ます。1。次のように入力します。ftpシステムリソースマネージャーの上部にある:// xxxxxx(ドメイン名またはIP)
ここに画像の説明を挿入
は、pubディレクトリをクリックしてフォルダーを作成または削除したり、ファイルをアップロードまたはコピーしたりできるようになりました。

2.ブラウザからアクセスします。
注:Alibaba Cloudサーバーのバックエンドでセキュリティグループを設定する必要があります。ルール:ポート1204〜65535を開きます。サーバーのセキュリティを可能な限り確保するために、次のように入力します。承認オブジェクト内の独自のローカルIP。Windowsを所有している場合内部ネットワークに配置され、対応する外部ネットワークのIP
ここに画像の説明を挿入
アクセスインターフェイスに次のように入力します。ここではFirefoxを使用しています
ここに画像の説明を挿入
。linuxanonymousaccessは次のとおりです
。linuxaccessftpサービスはftpクライアントをインストールする必要があります
yum-y install ftp
ここに画像の説明を挿入

アクセステストは成功です!

7.発生した問題を解決します

1.次の図に示すような問題は、Windowsアクセステスト中に発生します。
ここに画像の説明を挿入
解決策:ネットワーク共有センターを開く>>インターネットオプション>>詳細>>「パッシブFTPを使用する(ファイアウォールとDSLモデムの互換性のため)」オプションを削除します(前面を取り外します√)
ここに画像の説明を挿入
2。エラー:425セキュリティ:IP接続が正しくありません。次の図に示すように:
ここに画像の説明を挿入
理由:FTPクライアントとサーバーが接続中にIPアドレスを変更しました。
解決策:
vim
/etc/vsftpd/vsftpd.conf構成ファイルに追加します:pasv_promiscuous = YESで
vsftpdサービス再起動します:systemctl restart vsftpd
ここに画像の説明を挿入
pasv_promiscuousオプションパラメーターの説明:
このオプションを有効にすると、PASVモードでのセキュリティチェックが無効になります。このチェックにより、データ接続と制御接続が同じIPアドレスからのものであることが確認されます。このオプションを慎重にオンにしてください。このオプションの唯一の合理的な使用法は、安全なトンネルソリューションで構成される組織に存在することです。デフォルト値はNOです。
妥当な使用法は次のとおりです。一部のセキュリティトンネル構成環境では、FXPをより適切にサポートします(有効にするだけです)。

8./etc/vsftpd/vsftpd.conf構成ファイルのパラメーターの説明

デフォルトでは、匿名ユーザーがすべてのアップロードとダウンロードをアップロードおよびダウンロードします。使用されるユーザーはftpユーザーの権限です。ファイルをアップロードするには、ftpユーザーに書き込み権限が必要であり、ダウンロードするには、ftpユーザーに読み取り権限が必要です。したがって、一般的にこの場合、ftpユーザーがファイルへの読み取り権限を持っている場合、彼はファイルへのダウンロード権限を持っています

パラメータ 説明
anonymous_enable = YES 匿名ユーザーを有効にする(匿名ユーザーにログインを許可する)
no_anon_password = YES 匿名ユーザーがログインするときにパスワードを要求しないでください
anon_upload_enable = yes / no (ディレクトリではなく)ファイルへの匿名ユーザーのアップロード許可を制御する
anon_world_written_only = yes / no ファイルへの匿名ユーザーのダウンロード権限を制御します。注:ファイルには、ファイル所有者、ファイルグループ、およびファイルの他のユーザーの3つの権限があります。Anon_world_読み取り可能_onlyは、YESの場合、ファイルには読み取り権限が必要です。ダウンロードが許可されます。ファイルの所有者がftpで読み取り権限がある場合にのみ、ダウンロードできません。ダウンロードを許可する前に、他のユーザーも読み取り権限を持っている必要があります。いいえの場合、ファイルは次のようにダウンロードできます。 ftpユーザーが読み取り権限を持っている限り
anon_mkdir_write_enable = yes / no フォルダを作成するための匿名ユーザーの権限を制御する
anon_other_write_enable = yes / no 匿名ユーザーによるファイルとフォルダーの削除と名前の変更を制御します注:匿名ユーザーはユーザーnobodyを使用してダウンロードするため、対応するOの場所にダウンロードする権限が必要です。匿名ユーザーが権限をアップロードおよび削除できるようにする場合は、設定する必要があります
anon_root =(パス) 匿名ユーザーがログインするディレクトリを設定します。指定しない場合、デフォルトは/ var / ftpディレクトリであり、local_rootパラメータは、ログイン後にローカルユーザーが配置されるディレクトリを指定するために使用されます。
anon_max_rate = 102400 匿名ユーザーの最大伝送速度、単位はByts / s
anon_umask = 022 匿名ユーザーがファイルを作成するためのアクセス許可マスクを設定します。つまり、匿名ユーザーが作成したディレクトリには022以外のアクセス許可があります。つまり、匿名ユーザーが作成したディレクトリには755のアクセス許可があります。
chown_uploads = YES 匿名ユーザーがアップロードしたファイルの所有者を変更します。匿名でアップロードされたすべてのファイルのユーザーはchown_usernameに変更され、chown_usernameと一緒に使用されます。
chown_username =誰でも 匿名アップロードファイルのユーザー名
local_root = / var / ftp ローカルユーザーがログインするディレクトリを設定します。この項目はデフォルトの設定ファイルには設定されていません。このとき、ユーザーがFTPサーバーにログインすると、ユーザーのいるディレクトリがユーザーのホームディレクトリになり、rootユーザーの場合は/ rootディレクトリになります。 。
local_enable = YES ローカルユーザーがftpサーバーにログインできるようにする
local_umask = 022 サーバー上でローカルユーザーによって作成されたファイルのアクセス許可マスクを設定します。つまり、ローカルユーザーによって作成されたディレクトリには022以外のアクセス許可があります。つまり、ローカルユーザーによって作成されたディレクトリには755のアクセス許可があります。
local_max_rate = 102400 ローカルユーザーの最大伝送速度。単位はByts / sです。
userlist_enable = YES userlist_deny構成アイテムとuser_listファイルがアクティブ化されていることを示します
userlist_deny = yes リストに表示されているすべてのユーザーは、ftpへのアクセスを拒否されます
chroot_local_user = YES 自分のディレクトリ内のすべてのローカルユーザーを制限し、すべてのローカルユーザーを直接制限します
chroot_list_enable = YES chroot_list_file設定項目で指定したユーザーリストファイルを有効にするように設定します。ファイル内のユーザー名は1行に1つです。この機能を有効にすると、chroot_list_fileにリストされているすべてのユーザーがルートディレクトリを変更できなくなります。デフォルト値はyesです。
chroot_list_file = / etc / vsftpd / chroot_list 自分のディレクトリにロックされているユーザーのリストファイルを指定して、制限付きユーザーリストファイルを指定します
user_config_dir =(パス) ユーザーごとに異なるアクセス許可を取得するために、ユーザーのアクセスディレクトリを指定します。次に例を示します。1。パラメータ:user_config_dir = / etc / vsftpd / userconfig 2. userconfigディレクトリを作成します(そうでない場合):mkdir / etc / vsftpd / userconfig 3。ユーザー名ユーザーftpadminなどの構成ファイルを作成します。vim/ etc / vsftpd / userconfig / ftpadmin 4.編集状態に入った後、次のように入力します。local_root= / home / ftpupload
write_enable = YES グローバル構成、書き込みを許可するかどうか(匿名ユーザーかローカルユーザーか、アップロード権限を有効にする場合は、このパラメーターを構成します)
ftpd_banner = FTPサーバーへようこそ ウェルカムメッセージを「FTPサーバーへようこそ」に設定します。ユーザーがFTPサーバーに正常にログインすると、サーバーは事前設定されたウェルカムメッセージをログインユーザーに出力できます。
banner_file=/etc/vsftpd/banner 若欢迎信息较多,则可使用banner_file配置项,将欢迎信息放在/etc/vsftpd/banner文件里面
xferlog_enable=YES 上传/下载文件时记录日志
xferlog_std_format=YES 使用标准文件日志
xferlog_file=/var/log/vsftpd.log 日志文件
connect_from_port_20=YES 使用20端口传输数据(是否使用主动模式)
listen=NO 关闭ipv4监听,YES为打开
listen_ipv6=YES 开启ipv6监听
pam_service_name=vsftpd 使用pam模块控制,vsftpd文件在/etc/pam.d目录下(定义PAM 所使用的名称,预设为vsftpd)
tcp_wrappers=YES 开启tcp_wrappers管理支持
pasv_promiscuous=yes 关闭PASV模式的安全检查
pasv_enable=NO 允许使用pasv模式
nopriv_user=ftp 指定vsftpd服务的运行帐户,不指定时使用ftp
idle_session_timeout=600 会话超时,客户端连接到ftp但未操作
data_connection_timeout=120 数据传输超时
async_abor_enable=YES 是否允许客户端使用sync等命令
Pasv_min_port=50000 Pasv_max_port=60000 将客户端的数据连接端口改在50000—60000之间
Max_clients=200 FTP的最大连接数
Max_per_ip=4 每IP的最大连接数
Listen_port=5555 从5555端口进行数据连接

chroot_list_enable=YES
通过与chroot_local_user=YES/NO搭配能实现以下几种效果:
1、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
2、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
3、当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
4、当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

9.ftp-主动模式(PORT)和被动模式(PASV)

    FTP 分为两种模式,主动模式(PORT)和被动模式(PASV),PORT模式是一般形式的FTP。
    这两种模式的FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过此链接进行传输操作指令。
    它们的区别在于使用数据传输端口(ftp- data)的方式。PORT模式由FTP服务器指定数据传输所使用的端口,默认值为20。PASV模式由FTP客户端决定数据传输的端口。
    PASV模式主要是考虑到存在防火墙的环境下,由客户端与服务器进行沟通(客户端向服务器发出数据传输请求中包含了数据传输端口),决定两者之间的数据传输端口更为方便。

在网上找了两张图片,描述得很清晰,下面我以这两张图总结一下:
ここに画像の説明を挿入
按照图中的步骤:
1.用户登陆FTP服务器,客户端从任意一个大于1024(1024-65535)的非特权端口
连接到服务端的21端口(命令端口)
2.FTP服务端告诉客户端,说:“你的身份验证通过,你已经连接到我的21端口登陆成功了
3.客户端收到服务端的通知后,自己随机开放了一个端口
4.客户端利用FTP的port命令将随机端口发送到FTP服务器(通俗说就是:客户端告诉服务端说:“我给你开放了xxx端口,你传输数据的时候连接这个端口就可以了)
5.服务端收到客户端发送过来的随机端口后,会从自己的数据端口20连接到客户端指定的数据端口(随机端口)进行数据传输

ここに画像の説明を挿入
1.クライアントがFTP接続を開くと、クライアントは任意の2つの非特権ポートを開き、そのうちの1つは
サーバーの21コマンドポートに接続されます。2。FTPサーバーは、クライアントに「認証に合格しました。
My21ポートへの接続が成功しました3.クライアントがpasvコマンドをサーバーに送信します
4.サーバーがクライアントからpasvコマンドを受信した後、サーバーは非特権ポートを開きます
5.サーバーはportコマンドを使用して非-サーバーの特権ポート特権ポートがクライアントに送信されます。6
クライアントはサーバーから送信された非特権ポートを受信します
。7 クライアントによって最初から開かれた2番目のデータポートは、サーバーの非特権ポートに接続されます。データを送信するためのデータ接続を確立します。

概要:
    アクティブモードとは、クライアントの開いているポートをサーバーの21ポートに接続してコマンド接続を確立することを意味します。データポートがランダムに生成された後、サーバーにローカルで開いているデータポートが通知され、サーバーの20ポートがアクティブになります。ローカルの開いているデータポートとのデータ接続を確立します。
    パッシブモードでは、クライアントは2つのポートを開きます。1つはftpサーバーのポート21に接続するために使用され、もう1つはデータポートとして使用されます。最初にサーバーとのコマンド接続を確立し、pasvコマンドをサーバーに送信します。サーバーはランダムにデータポートを生成し、サービスを提供しますクライアントはportコマンドを送信して、クライアントに自身の開いているデータポートを通知します。次に、クライアントは自身のデータポートとサーバーの開いているデータポートからデータ接続をアクティブに確立してデータを送信します

上記に問題がある場合は、訂正してください、ありがとうございます!

おすすめ

転載: blog.csdn.net/weixin_44901564/article/details/107979596