
第10回 ACL設定のステップバイステップ
面 和毅サイオステクノロジー株式会社
インフラストラクチャービジネスユニット
Linuxテクノロジー部
OSSテクノロジーグループ
シニアマネージャ
2006/9/8
本連載では、これまでLIDSのACLを設定する際に必要となる知識を紹介してきました。今回から実際のアプリケーションを例にして、ACL/ケーパビリティを設定する方法を紹介します。
今回も説明のためにVMwareイメージを用いて解説します。実際に手元で設定ファイルなどを確認したい場合には以下のURLからVMwareイメージをダウンロードしてください。
【atmarkIT VMware Images】 http://www.selinux.gr.jp/LIDS-JP/atmarkit.html |
VMwareイメージのアップデート
いままで使用してきたVMwareイメージを、aptを用いてアップデートする方法を説明します。更新だけでなくパッケージを追加する場合も同様の手順で作業を行います。
1.rootでログインし、LFSを開く
# lidsadm -S -- -LIDS SWITCH enter password: |
2.aptコマンドでアップデートする
# apt-get update ; apt-get upgrade -y |
3.inodeが変更されている可能性があるので、inode情報を整合する(ここでは/root/scripts以下のスクリプトを用います)
# /root/scripts/lids.update.sh |
4.LFSを閉じる
# lidsadm -S -- +LIDS SWITCH enter password: |
ここで注意が必要です。loginやtty関連のファイルがアップデートされると、LIDS-2系列では/root/scripts/lids.update.shを実行しても更新情報が不足していることがあります。そのため、loginやssh(リモートから作業を行っているとき)などのファイルがアップデートされた場合には、/root/scriptsディレクトリに移動し、
# cd /root/scripts # ./install.sh |
としてACLの再インストールをしておいた方がよいでしょう。
vsftpdを使ってのACLを設定してみる
例としてvsftpdを用いてACLの設定方法を見てみましょう。せっかくですから、vsftpdを(LIDS-1系列のみですが)サンドボックス化してからACL/ケーパビリティを設定したいと思います。以下、サンプルのVMwareイメージを用います。
1.VMwareイメージを起動する際に、ブートプロンプトで「lids=0」としてLIDSを無効化する
2.vsftpdパッケージをインストールする(aptコマンドを使用)
# apt-get install vsftpd |
3./etc/vsftpd.confファイルを修正する
サンプルとして「ローカルユーザーでのログインを許可」と「ftpクライアントからのファイルのアップロードを許可」を行いたいので、/etc/vsftpd.confファイルにある以下の2つの設定のコメントを外します。
# Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES |
4.ACLを設定する
ACL設定の例として、以下のようなシェルスクリプト(/root/scripts/services/lids.vsftpd.sh)を作成します。
#!/bin/sh |
#Sandboxing ― (A) /sbin/lidsconf -A -s /usr/sbin/vsftpd -o LIDS_SANDBOX -j ENABLE |
#Hide vsftpd.conf file except vsftpd itself ― (B) /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 ― (C) /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 ― (D) /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 ― (E) /sbin/lidsconf -A -s /usr/sbin/vsftpd -o /var/log/vsftpd.log -j APPEND |
#for changing UID/GID when it run from service ― (F、G) /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 |
最初に/usr/sbin/vsftpdをサンドボックス化しています(A)。
次に、/etc/vsftpd.confは設定ファイルであり重要なファイルなので、すべてのステート(GLOBAL)でDENYとして、vsftpd以外のプログラムからは完全に見えないようにします(B)。また、vsftpdは起動する際に/etc/vsftpd.confを参照するので、BOOTステートでREADONLYのアクセス権限を与えます。
vsftpdをサンドボックス化したため、vsftpdが使用しているライブラリに対してBOOTステートで読み込み権限を与える必要があります。lddコマンドを用いてライブラリを調べ、それらに読み込み権限を与えます(C)。
# ldd /usr/sbin/vsftpd |
このコマンドで出力されたファイルに対して、BOOTステートで読み込み権限を与えていきます。
vsftpdがポート20と21を使用するため、vsftpdに20、21番ポートをバインドできるようにケーパビリティを与えます(D)。通常、コントロールコネクションは起動して21番ポートをバインドして待ち受けているため、BOOTステートで21番ポートを使用できるようにします。また、実際にftpサーバを使用する際には、データコネクションとして20番ポートを使用することになりますので、POSTBOOTステートで20番ポートを使用できるようにします。
vsftpdが/var/log/vsftpd.logにログを出力します。そのため、vsftpdに対して/var/log/vsftpd.logファイルへの書き込み権限を与えます(E)。
vsftpdはFTPクライアントからの接続を受け、ログイン認証を通過した後に、子プロセスの実効Userを変更して生成します。そこで、POSTBOOTステートでvsftpdに対しCAP_SETUIDとCAP_SETGIDのケーパビリティを与えます(F)。
今回はanonymous ftpを許可しています。anonymousでログインした際にvsftpdがchrootを行えるように、POSTBOOTステートでCAP_SYS_CHROOTを与えます(G)。
これでvsftpdの主な設定が終わりました。シェルスクリプトを実行してACLを反映し、コンパイルしてから、システムを再起動しましょう。今度はLIDSが有効な状態(REBOOTプロンプトで何も指定しない)で起動します。
# /root/scripts/services/lids.vsftpd.sh # lidsconf -C # reboot |
5.vsftpdに対してエラーが表示される
再起動後にログインしてvsftpdのプロセスを確認すると、vsftpdが動作していないことが分かります。/var/log/syslogを確認すると、vsftpdに対して次のようなエラーが出力されています。
Aug3 12:35:21 localhost kernel: LIDS:start-stop-daemon (dev 3:1 inode 80331) pid 740 ppid 1 uid/gid (0/0) on (null tty) : Attempt to open /var/run/vsftpd/vsftpd.pid for writing, flag = 33346 |
このエラーによれば、「start-stop-daemonが/var/run/vsftpd/vsftpd.pidを書き込もうとしたので拒否した」となっています。start-stop-daemonは/etc/init.d/vsftpdで呼び出されていますので、システム起動時に/etc/init.d/vsftpdから呼び出されたstart-stop-daemonプログラムがPIDファイル(/var/run/vsftpd/vsftpd.pid)を作成しようとしてエラーになっているようです。
従って、この部分のACLを追加する必要があります。これには、
- start-stop-daemonプログラムに権限を直接与える
- /etc/init.d/vsftpdプログラムに権限を与え、そのプログラムから呼び出された子プロセスに権限を継承させる
という2通りのやり方があります。
1/3
|
![]() |
Index | |
ACL設定のステップバイステップ | |
![]() |
Page1 VMwareイメージのアップデート vsftpdを使ってのACLを設定してみる |
Page2 権限の継承 権限の継承の問題点 |
|
Page3 vsftpdの動作テストをする |
![]() |
Security&Trust記事一覧 |
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
![]() |
||
|
||
![]() |
Security & Trust 記事ランキング
- 「キミの部門で一番重大なセキュリティ脅威は何かね?」から始める“いまさら”アタックサーフェス管理のススメ
- 米国政府からの支援打ち切りを受け、CVE財団が発足 CVEプログラムの長期的な存続など狙い
- Microsoft、「Security Copilot」でインシデント対応を支援する11のAIエージェントを発表 どう役立つのか
- 無料で「ランサムウェアへの対応方法」を学び、学ばせることも可能な演習用教材 IPAが公開
- 年3回? 4回? 標的型攻撃メール訓練の効果を最大化する「黄金ルール」とは LRMが調査
- IPA「AIセーフティに関するレッドチーミング手法ガイド」改訂 何が変わったのか
- 対象はWindows Server 2025、2022、2019、2016 リモートでのコード実行が可能な脆弱性を修正した更新プログラムをMicrosoftが配布
- 2025年の世界のセキュリティ支出は12.2%増加、支出が増加する業界は? IDC
- SASEが成長の原動力、2024年ネットワークセキュリティ市場シェア2位はFortinet、1位は? Omdiaレポート
- ゼロトラストアーキテクチャへの変革におけるモダナイゼーションの重要性、移行への実践的なアプローチ
- Google Chromeのゼロデイ脆弱性を発見、悪用されると「リンクをクリックするだけで攻撃が成立」 Kaspersky
- 無料で「ランサムウェアへの対応方法」を学び、学ばせることも可能な演習用教材 IPAが公開
- SASEが成長の原動力、2024年ネットワークセキュリティ市場シェア2位はFortinet、1位は? Omdiaレポート
- Microsoft、「Security Copilot」でインシデント対応を支援する11のAIエージェントを発表 どう役立つのか
- 経験豊富なハッカーからサイバー犯罪の初心者まで網羅する「VanHelsing」の脅威が拡大中 チェック・ポイント・ソフトウェア・テクノロジーズ
- 対象はWindows Server 2025、2022、2019、2016 リモートでのコード実行が可能な脆弱性を修正した更新プログラムをMicrosoftが配布
- 米国政府からの支援打ち切りを受け、CVE財団が発足 CVEプログラムの長期的な存続など狙い
- 「RPKI」「DNSSEC」「DMARC」のガイドライン策定に込められた思い、内容のポイントとは 作成した有識者らが解説
- IPA「AIセーフティに関するレッドチーミング手法ガイド」改訂 何が変わったのか
- “闇バイト的ランサムウェア攻撃”にご用心 フィジカル空間の犯罪スキームがデジタル空間にも波及?