Proftpdで、SFTPのユーザーごとにIP制限をしたいことがありますね。ねっ。
その場合、コンパイル時にmod_ifsessionとmod_sftpを追加し、設定に少し加えることで可能になります。
インストール方法および、制限概要に沿ったサンプルは以下の通りです。
※proftpdのsftpの詳細は、 ProftpdのSFTPとFTPSの覚書(まとめ中) を参照すること。
<インストール作業手順>
<今回の制限概要>
<サンプルConfig内容>
あとは、sftp以外の接続を全部なしにするために、configのドあたまに
<Limit LOGIN>
DenyAll
</Limit>
とかやっておくと、より安全かもしれませんね~
その場合、コンパイル時にmod_ifsessionとmod_sftpを追加し、設定に少し加えることで可能になります。
インストール方法および、制限概要に沿ったサンプルは以下の通りです。
※proftpdのsftpの詳細は、 ProftpdのSFTPとFTPSの覚書(まとめ中) を参照すること。
<インストール作業手順>
tar zxvf proftpd-1.3.4x.tar.gz
cd proftpd-1.3.4x
./configure --with-modules=mod_ifsession:mod_sftp
make
su -
make install
<今回の制限概要>
- IPアドレスのグループを作る(Class)
- ユーザーα、β、Θ以外はアクセスできない(AllowUser)
- ユーザーαは、192.168.0.0/16からしかアクセスできない
- ユーザーβは、10.0.0.0/8からしかアクセスできない
- ユーザーΘは、どこからでもアクセスできる。
<サンプルConfig内容>
<Class private-a>
From 10.0.0.0/8
</Class>
<Class private-b>
From 172.16.0.0/12
</Class>
<Class private-c>
From 192.168.0.0/16
</Class>
<Class private-all>
From 10.0.0.0/8
From 172.16.0.0/12
From 192.168.0.0/16
</Class>
<IfModule mod_sftp.c>
<VirtualHost xxx.xxx.xxx.xxx>
<Limit LOGIN> ←ここがユーザーのホワイトリストを定義する
AllowUser ユーザーα
AllowUser ユーザーβ
AllowUser ユーザーΘ
DenyAll ←指定した以外のユーザーはここで明示的に拒否する。
</Limit>
<IfUser ユーザーα> ←ユーザーαの詳細設定
<Limit LOGIN>
AllowClass private-c ←<Class private-c>に含むIPを許可
DenyAll ←それ以外のIPはここで明示的に拒否する。
</Limit>
</IfUser>
<IfUser ユーザーβ> ←ユーザーβの詳細設定
<Limit LOGIN>
AllowClass private-a
DenyAll
</Limit>
</IfUser>
<IfUser ユーザーΘ>
<Limit LOGIN>
order allow, deny ←許可と拒否のどちらを先に評価するか
AllowAll ←すべてを許可
DenyAll ←すべてを拒否(だけど、上ですでに許可済なので意味がない)
</Limit>
</IfUser>
Port 22 ←適宜変更で
DefaultRoot ~/
AllowOverwrite on
SFTPEngine on
SFTPLog /var/log/proftpd/sftp.log ←適宜変更で
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPAuthMethods publickey ← 公開鍵認証のみにしてパスワード認証を禁止する。
SFTPAuthorizedUserKeys file:~/.ssh/id_rsa.pub ←公開鍵の保存場所を指定する。
</VirtualHost>
</IfModule>
あとは、sftp以外の接続を全部なしにするために、configのドあたまに
<Limit LOGIN>
DenyAll
</Limit>
とかやっておくと、より安全かもしれませんね~