- 更新日: 2013年7月25日
- CentOS & Linux
FTP サーバー(vsftpd)のインストールと設定 〜 CentOS6
vsftpd が入ってなければインストール。自動起動を設定します。
1 2 3 4 5 6 7 8 |
# yum -y install vsftpd # service vsftpd start vsftpd 用の vsftpd を起動中: [ OK ] # chkconfig vsftpd on # chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。
ポート開放、iptables と iptables-config の編集
20,21番ポートが開いているのを確認。開いてなければ開ける。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# iptables -vnL Chain INPUT (policy DROP 119 packets, 19353 bytes) pkts bytes target prot opt in out source destination 220 20543 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 168 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 255 0 0 ACCEPT esp -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT ah -- * * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT udp -- * * 0.0.0.0/0 224.0.0.251 udp dpt:5353 18257 10M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp flags:!0x17/0x02 6 384 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:60022 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:20 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:21 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306 |
パケットフィルタリングに関する設定をします。
1 2 3 4 5 6 |
# vi /etc/sysconfig/iptables-config IPTABLES_MODULES="" ↓ IPTABLES_MODULES="ip_conntrack_ftp" |
と、ip_conntrack_ftp を追加して、iptables を再起動。
1 2 3 |
# service iptables restart |
FTP ログイン・ユーザーの制限
次にFTPにログインできるユーザーの設定です。/etc/vsftpd/ftpusers に設定したユーザーは、FTPでログインすることができません。デフォルトでは、root や nobody などがFTPでログインできないように設定されています。
そして少しややこしいのですが、/etc/vsftpd/user_list というユーザーを設定するリストもあります。これはデフォルトでは、/etc/vsftpd/ftpusers と同様にブラックリスト(FTPログインできないリスト)として働きます。
しかし、/etc/vsftpd/vsftpd.conf に以下のように記述するとホワイトリストとなる。
1 2 3 4 5 |
userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list |
このように記述した場合は、/etc/vsftpd/user_list がホワイトリスト(FTPログインできるユーザーのリスト)として働きます。userlist_deny=NO(拒否するユーザーリストを拒否=許可するユーザーリストして使う)という設定になるわけです。
また、/etc/vsftpd/user_list をホワイトリストとして使っても、/etc/vsftpd/ftpusers がブラックリストとして働くのは変わりません。つまり、/etc/vsftpd/ftpusers に記されたユーザーはFTPログインできません。
ということで今回は、/etc/vsftpd/user_list をホワイトリストとして使う方針でいきます。
1 2 3 4 5 6 7 8 |
# vi /etc/vsftpd/vsftpd.conf userlist_enable=YES ↓ userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd/user_list |
と変更する。ついでに、匿名ログインを拒否。
1 2 3 4 5 |
anonymous_enable=YES ↓ anonymous_enable=NO |
また、chroot(FTPログイン時にユーザー自身のディレクトリのみを見せる)を有効にする。
1 2 3 4 |
chroot_local_user=YES #chroot_list_enable=YES |
というセットで設定。これも少しややこしい。詳しくは、FTPサーバ vsftpdの設定(vsftpd.conf) を参照。
ホワイトリストでログイン・ユーザーを指定
つづいて、ホワイトリスト(FTPログインできるユーザー)を指定。
1 2 3 4 5 6 7 8 9 10 |
# vi /etc/vsftpd/user_list # vsftpd userlist # If userlist_deny=NO, only allow users in this file # If userlist_deny=YES (default), never allow users in this file, and # do not even prompt for a password. # Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers # for users that are denied. username |
と、FTPログインを許可するユーザーだけ書きます。最後にvsftpdを再起動します。
1 2 3 4 5 |
# service vsftpd restart vsftpd を停止中: [ OK ] vsftpd 用の vsftpd を起動中: [ OK ] |
FTPクライアントから接続を試してみたところ…
1 2 3 |
500 OOPS: cannot change directory:/home/username |
とFTP接続できない。SELinuxが機能しているのだろうと、一旦 SELinux を無効化します。
1 2 3 4 5 6 7 |
# getenforce Enforcing # vi /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled |
SELINUX=disabled としておく。OS再起動。
1 2 3 |
# reboot |
または、setenforce 0 で SELinux を Permissive に変更します。こちらの方法だと、再起動は必要ありませんでした。
1 2 3 4 5 |
# setenforce 0 # getenforce Permissive |
これで無事に FTP 接続できました。
SELinux を有効に戻し、ポート20,21を閉じる
なお今回の CentOS 環境構築では通常の FTP は使わず次回設定する SFTP のみを使う予定ですので、この後 SELinux は有効に戻しておきます。
1 2 3 4 5 |
# vi /etc/sysconfig/selinux #SELINUX=disabled SELINUX=enforcing |
再起動。または、
1 2 3 4 5 |
# setenforce 1 # getenforce Enforcing |
また FTP を使わず SFTP のみ使う場合は、iptables の FTP 用のポート(20,21)を閉じておきます。
1 2 3 4 5 6 7 8 9 |
# vi /etc/sysconfig/iptables ... #-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT #-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT ... # service iptables restart |
- – 参考リンク –
- デフォルトで禁止し特定ユーザーのみを許可 ~ vsFTPD
- vsftpdでのアクセス制限 | Linuxで自宅サーバ構築
- ◇ローカルユーザー接続の設定(WBEL3,CentOS3,WBEL4,CentOS4)◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.com☆
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!