‘proftpd’ タグのついている投稿

Debian(lenny)にproftpdインストール・設定

2009年11月4日 水曜日

1.基本ポリシー

  • 特定ユーザのみFTPアクセス可能
  • 特定ディレクトリより上位の階層へのアクセス不可
  • LIMITディレクティブでなくTcpWrapperによるIPアドレス制限

2.proftpdのインストール

xinetd経由で使用する。

$ sudo aptitude install xinetd
$ sudo aptitude install proftpd
$ cat /etc/xinetd.d/ftp
service ftp
{
        disable         = no
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        log_on_success += DURATION USERID
        log_on_failure += USERID
        server          = /usr/sbin/proftpd
}
$ sudo /etc/init.d/xinetd restart

3./etc/proftpd/proftpd.confの設定

adminユーザは /var/www/htmlをホームとする。
それ以外のユーザはデフォルトホーム(/home/hogeなど)。
許可するユーザはadminとadmin2。

・・・
DefaultRoot /var/www/html admin
DefaultRoot ~
・・・
<Limit LOGIN>
  Order allow,deny
  AllowUser admin,admin2
  Deny all
</Limit LOGIN>

注意しなくてはいけないのが、以下のようにIPアドレス制限と組み合わせると「または」になってしまう。
しかもapacheのIP制限と記述が似ているがproftpdの場合、条件にマッチした時点で評価終了となりapacheとは動作が異なる。

<Limit LOGIN>
  Order allow, deny
  Allow from 192.168.0.0/24
  Deny from all
</Limit LOGIN>

つまり、「admin,admin2」からのアクセスまたは「192.168.0.0/24」からのアクセス許可となる。
mod_ifsessionなどと組み合わせれば「あるユーザを特定の IP アドレス範囲からだけログインできるように制限できる」らしい。参考
めんどいのでTcpWrapperでIPアドレスの制限は行う。

4.TcpWrapperによるアクセス制限

すべて拒否してから、許可するサービス、IPを記述。

/etc/hosts.deny

ALL: ALL

/etc/hosts.allow

sshd: 192.168.0.0/255.255.255.0
proftpd: 192.168.0.0/255.255.255.0 192.168.1.0/255.255.255.0

PASV(パッシブモード)対応

PASV(パッシブモード)に対応できるようiptables設定。

# modprobe nf_conntrack_ftp
# cat /etc/modules
・・・
nf_conntrack_ftp

※kernel-2.6.20から、ip_conntrack*関連が nf_conntrack*に置き換わっているので注意。

6.接続拒否ユーザの設定

/etc/ftpusersに接続を拒否するユーザを記述。これはPAMの段階で拒否される。/etc/pam.d/proftpdをみると以下の記述がある。

auth       required     pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed