第10回 ACL設定のステップバイステップ

面 和毅
サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/9/8

 vsftpdの動作テストをする

 ほかのftpクライアントから接続してみましょう。

lids@host1:~$ ftp 192.168.230.128
Connected to 192.168.230.128.
220 (vsFTPd 2.0.3)
Name (192.168.230.128:lids): lids
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get test1
local: test1 remote: test1
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test1 (0 bytes).
226 File send OK.
ftp> put test2
local: test2 remote: test2
200 PORT command successful. Consider using PASV.
553 Could not create file.
ftp> by
221 Goodbye.

 ローカルユーザー(lids)でログインできています。また、ファイル(test1)をLIDSマシンからgetすることはできていますが、LIDSマシンにファイル(test2)をputしようとすると、ファイルが作成できないというエラーになっています。

 LIDSマシンのログを見ると、次のようにLIDSのACL違反のエラーが出力されています。

Aug 3 16:04:04 localhost kernel: LIDS: vsftpd (dev 3:1 inode 241147) pid 786 ppid 784 uid/gid (1000/1000) on (null tty) : Attempt to open test2 for appending, flag = 36418

 これは、vsftpdが/home以下にWRITE権限を持っていないためです。すべてのプログラムが書き込めるようにWRITE権限を与えてある/tmpディレクトリなどには問題なく書き込めます。

 これを利用して、/var/www以下にvsftpdが書き込めるように、

# lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o /var/www -j WRITE

としておけば、ftp経由のコンテンツのアップロード/置き換えは許可するが、そのほかからは改変を許さないといったWebサーバを構築できます(もちろん、LIDS以前のLinuxでのrwx、user/groupによるアクセス権で許可されている場合ですが)。

 サンプルのVMwareイメージでは、lidsユーザーがwww-dataグループに所属しているので、上記のACLを追加するだけで実現が可能です。ftpクライアントでputしたログと、そのファイルの中身をWebを通して見た画面は次のようになります。

lids@host1:~$ ftp 192.168.230.128
Connected to 192.168.230.128.
220 (vsFTPd 2.0.3)
Name (192.168.230.128:lids): lids
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /var/www
250 Directory successfully changed.
ftp> mput test2
mput test2? y
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 File receive OK.
15 bytes sent in 0.00 secs (244.1 kB/s)
ftp> by
221 Goodbye.

 今回のすべてのACLが設定されたスクリプトは以下のようになります。

#!/bin/sh

#Sandboxing
/sbin/lidsconf -A -s /usr/sbin/vsftpd -o LIDS_SANDBOX -j ENABLE

#Hide vsftpd.conf file except vsftpd itself
/sbin/lidsconf -A -o /etc/vsftpd.conf -j DENY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /etc/vsftpd.conf -j READONLY

#need to READONLY whole linked libraries
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libwrap.so.0 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libnsl.so.1 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libpam.so.0 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libdl.so.2 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libresolv.so.2 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libutil.so.1 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libcap.so.1 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /usr/lib/i686/cmov/libssl.so.0.9.7 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /usr/lib/i686/cmov/libcrypto.so.0.9.7 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/libc.so.6 -j READONLY
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o /lib/ld-linux.so.2 -j READONLY

#for BIND ftp port
/sbin/lidsconf -A BOOT -s /usr/sbin/vsftpd -o CAP_NET_BIND_SERVICE 21 -j GRANT
/sbin/lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o CAP_NET_BIND_SERVICE 20,21 -j GRANT

#for logging
/sbin/lidsconf -A -s /usr/sbin/vsftpd -o /var/log/vsftpd.log -j APPEND

#for changing UID/GID when it run from service
/sbin/lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o CAP_SETUID -j GRANT
/sbin/lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o CAP_SETGID -j GRANT

#for anonymous ftp
/sbin/lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o CAP_SYS_CHROOT -j GRANT

#for run vsftpd as bootup service
/sbin/lidsconf -A BOOT -s /sbin/start-stop-daemon -o /var/run -j WRITE
/sbin/lidsconf -A SHUTDOWN -s /sbin/start-stop-daemon -o /var/run -j WRITE

# for Web server maintainance
/sbin/lidsconf -A POSTBOOT -s /usr/sbin/vsftpd -o /var/www -j WRITE

 次回は、LIDS-1系列で説明していなかったもう1つの機能「NETMARK」の説明と実際の応用例をお見せします。

3/3
 

Index
ACL設定のステップバイステップ
  Page1
VMwareイメージのアップデート
vsftpdを使ってのACLを設定してみる
  Page2
権限の継承
権限の継承の問題点
Page3
vsftpdの動作テストをする


Profile
面 和毅(おも かずき)

サイオステクノロジー株式会社
インフラストラクチャービジネスユニット Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ

 学生時代よりUNIXに親しむ。1997年からサーバ構築およびセキュリティ全般を扱う仕事に従事、Linuxを使い始める。

 現在はLIDSの普及活動に注力。LIDSユーザ会(LIDS-JP)の立ち上げやLIDS関連文書の日本語化、LIDSを用いたシステム構築の紹介などを行っている。また、サイオステクノロジーでビジネス面でのLIDSの普及活動に注力している。

 2005年12月より、LIDS Teamに参加し、LIDSの公式な開発チームの一員として活動している。

Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間