実践Linux
CentOS7        CentOS7 目次へ  TOP(HOME)へ


FTPサーバー(vsftpd)            2016年6月



●設定ファイル /etc/vsftpd/vsftpd.conf
anonymous_enable=NO  匿名ユーザはアクセス禁止にする。
以下、#をはずす。
ascii_upload_enable=YES  アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES
chroot_local_user=YES  ローカルユーザーはchroot有効。
追記 allow_writeable_chroot=YES
あとはほぼ変更なしで使えるようになっている。詳細は後述。

ただし、 tcp_wrappers = YES となっているので、/etc/hosts.allow に許可を出しておく必要がある。
また、 listen_ipv6 = YES なのでスタンドアローン=サービスの起動が必要。(xinetd経由だとNOに。この場合は、常時アクティブではなく接続ごとの起動となる。当然サービスは停止しておく。)

●/etc/hosts.allow
vsftpd: 192.168.7. 等。(ここではALL: 192.168.7. があるのでなにもしない。)

●vsftpdサービスの起動
# systemctl --type=service list-unit-files  インストールされたユニット一覧
# systemctl --type=service list-units  実行中のユニット一覧
# systemctl start vsftpd  スタート
# systemctl restart vsftpd  再スタート
# systemctl enable vsftpd  起動時有効化

●SElinux
booleanのポリシーは、 # getsebool -a | grep ftpで調べておく。
ポリシーftp_home_dirがOFFでも、なぜかホ−ムにアクセスできる。
ホ−ムにアクセスできず、ONにする場合は、
# setsebool -P ftp_home_dir 1

しかし、このままでは /var/www にはアクセスできない(/home関係は、大丈夫だが)。
調査
permissiveモードにする  # setenforce 0
この状態でFTPでwwwmaster(/var/www)にアクセス。auditのログをとる。
ログが溜まりすぎている場合は、/var/log/audit/audit.logをいったん削除して、auditdサービスを再起動しておく。audit.logが刷新されるので、それからログをとるとよい。
ログから足りない部分を解析する  # audit2allow -a -l -m mylocal これは結果を表示するだけでmylocal.te等は作成されない。これを見てみると、ポリシーftpd_full_access をONにすればよいことがわかる。(多少安易なようだが、とりあえず)
# setsebool -P ftpd_full_access 1

●firewalldの設定
trustedゾーンに対しては、必要ない。
外部からは、基本的に接続させない。


/etc/vsftpd/vsftpd.confの主な設定項目

anonymous_enable=NO  匿名ユーザはアクセス禁止にする。
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
  Activeモード時のデータコネクションポートを20番に固定するかどうかの設定。デフォルトのNOでは任意のポートが使用される。20番にしないと、クライアント側環境によってはデータ転送ができない可能性もある。
xferlog_std_format=YES

ascii_upload_enable=YES
  #をはずす=アスキーモードでのアップロード・ダウンロード許可。
ascii_download_enable=YES

chroot_local_user=YES
  #をはずす=ローカルユーザーは全てchrootを有効にする。
allow_writeable_chroot=YES
  追記。chrootを有効にすると、ホームディレクトリに書き込み権限のあるユーザがログイン出来なくなるので、ログイン出来るようにする。
#chroot_list_enable=YES
  下のリストファイルを利用する場合。
#chroot_list_file=/etc/vsftpd/chroot_list
    上のchroot_local_user=YESの設定がないとchrootするユーザーリストとなるが、
    上の設定があると逆転してchrootしない(全て覗ける)ユーザーリストとなる。

#ls_recurse_enable=YES
  ディレクトリを丸ごと削除できるようにする。

listen=NO
YESだとipv4のみスタンドアローン
listen_ipv6=YES
ipv4とipv6の両方がスタンドアローン

pam_service_name=vsftpd
userlist_enable=YES
←/etc/vsftpd/user_listは接続拒否ユーザーリスト/ftpusersは認証後拒否/他は許可
userlist_enable=NO
 →user_listを使用しない/ftpusersは拒否ユーザーとなる

tcp_wrappers=YES


firewalledとFTPパッシブモードについて
FTPには、データ転送に使用するポートと接続方法の違いによって、アクティブFTPとパッシブFTPがある。
アクティブFTP: 昔からある方法で、サーバからクライアントに対してデータコネクション確立を行なう。 FTPの制御(コマンドとレスポンス)に21番ポートを使用し、FTPのデータ転送(lsコマンドの結果、ファイルのアップロード・ダウンロード)に20番ポートを使用する。
パッシブFTP: クライアントからサーバに対してデータコネクション確立を行なう。FTPの制御に21番ポートを使用し、FTPのデータ転送に任意のポートを使用する。
FTPでクライアントからサーバにファイルを送信するには、通常のモードではクライアントからサーバに接続した後、サーバからクライアントにデータ通信用の接続要求を行い、このコネクションを利用してファイル送信を行う。この方式だと、クライアントがファイアウォールの内側にあり、外部から直に接続要求を行うことができないような環境ではファイルの送信が行えない。こうした場合に利用するのがパッシブモードである。

firewalledに「ip_conntrack_ftp」モジュールを組み込んでおくと、データコネクションやパッシブモードの対応を自動で行ってくれる。
ftp.xml(/usr/lib/firewalled/services)をみると、すでに組み込まれていることがわかる。


TOP(HOME)へ

目 次

特別企画
Raspberry Piで遊ぶ

HOME(全体のシステム構成&目次)

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
  EC-CUBEショッピングサイト構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ストリーミングサーバーRed5
ドメインの追加

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
audit2allowを使い問題の解決
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く