ProFTPDでユーザー単位でアクセス制限する方法(IfUser,Limit)

ProFTPDでユーザー単位でアクセス制限する方法(IfUser,Limit) サーバー

CentOSなどのLinux系OSでFTPサーバとして利用することが多いProFTPDにて、ユーザーごとにアクセス制限を掛ける方法です。

ProFTPDでは<Limit>コンテキストで簡単にアクセス制限が可能ですが、<IfUser>コンテキストを追加することでユーザー単位でアクセス制限のルールを設定することが出来ます。

基本的なアクセス制限と、ユーザー単位でのアクセス制限の方法を解説します。

※動作確認環境
CentOS Linux 7.6
ProFTPD version 1.35

基本的なアクセス制限(全てのユーザー)

ProFTPDの設定ファイル「 /etc/proftpd.conf 」をviなどで編集します。

以下の書式で設定を追加します。

ProFTPDの再起動で完了です。

※【許可するIPアドレス又はクライアントホスト名】が複数ある場合はカンマで区切りましょう。

【例】Allow from 192.168.1.100, 192.168.2.200

ユーザー単位でのアクセス制限

ProFTPDの設定ファイル「 /etc/proftpd.conf 」を編集します。

LoadModule mod_ifsession.c のコメントアウトを外して mod_ifsession.c を有効化します。※無ければこの行を追加してください。

以下の書式で設定を追加します。

ProFTPDの再起動で完了です。

※これだけでもユーザー単位のアクセス制限は掛かりますが、FFFTPで接続すると、接続が拒否された際に以下のような画面が出ます。

FFFTP接続エラー画面「正しいパスワードを入力してください。」

「正しいパスワードを入力してください。」という画面はあまり気持ちよくないので、更に厳密に設定した例を以降で紹介していきます。

設定例A(単一の指定ユーザーをアクセス制限、それ以外は全拒否)

アクセス制限内容

■ユーザー①「testuser1」
192.168.1.100
.tokyo.ocn.ne.jp
からの接続許可

■それ以外のユーザー
全て接続拒否

この制限だと設定は以下のようになります。

設定内容

/etc/proftpd.conf を編集します。

LoadModule mod_ifsession.c のコメントアウトを外して mod_ifsession.c を有効化。

ProFTPD再起動で完了。

備考(テクニック)

IfUserとAllowUserにて「!」を先頭に付加することで否定の意味になります。

<IfUser !testuser1>~</IfUser >でtestuser1以外のユーザーのアクセスを全て拒否しています。※この設定によりFFFTPでの「正しいパスワードを入力してください。」という画面が出なくなります。

設定例B(単一の指定ユーザーとそれ以外を別々にアクセス制限)

アクセス制限内容

■ユーザー①「testuser1」
192.168.1.100
.tokyo.ocn.ne.jp
からの接続許可

■それ以外のユーザー
192.168.1.200
からの接続許可

この制限だと設定は以下のようになります。

設定内容

/etc/proftpd.conf を編集します。

LoadModule mod_ifsession.c のコメントアウトを外して mod_ifsession.c を有効化。

ProFTPD再起動で完了。

備考(テクニック)

<IfUser !testuser1>~</IfUser >でtestuser1以外のユーザーのアクセス制限(許可)を行っています。

設定例C(複数のユーザーとそれ以外をそれぞれ別々にアクセス制限)

アクセス制限内容

■ユーザー①「testuser1」
192.168.1.100
.tokyo.ocn.ne.jp
からの接続許可

■ユーザー②「testuser2」
.tokyo.ocn.ne.jp
からの接続許可

■それ以外のユーザー
192.168.1.200
からの接続許可

この制限だと設定は以下のようになります。

設定内容

/etc/proftpd.conf を編集

LoadModule mod_ifsession.c のコメントアウトを外して mod_ifsession.c を有効化。

ProFTPD再起動で完了。

備考(テクニック)

IfUserとAllowUserにて「AND」を利用しています。
演算子は「AND」と「OR」が利用可能です。
書式は「AND」又は「OR」と記述してからカンマ区切りで記述します。

【書式例】
<IfUser AND !testuser1, !testuser2>
<IfUser OR testuser1, testuser2>
AllowUser AND !testuser1, !testuser2
AllowUser OR testuser1, testuser2

その他、「regex」と記述すると正規表現が可能です。

【書式例】
<IfUser regex ^testuser>
AllowUser regex ^testuser

まとめ

ProFTPDでは<Limit>コンテキストと<IfUser>コンテキストを組み合わせると複雑なユーザーごとのアクセス制限が出来ます。

「AND」と「OR」の演算子や「regex 」による正規表現も可能です。

これらのルールを知っていると様々な設定が可能ですので、上記の設定例を参考に色々とアレンジしてProFTPDのセキュリティを高めましょう。

※設定を変更したらちゃんとアクセス制限が掛かっているかの動作確認・接続テストも忘れずに行いましょう。

タイトルとURLをコピーしました