July 05, 2008

Yuichi Nakamura

[Linux]今更知ったEmacs/viの補完入力

Emacs Emacsでは、関数や変数補完入力のためのetagsコマンドというのがあって結構使われているらしい。 BusyBoxでも make TAGS とやるとTAGSファイルが作られる。 で、emacsでbusyboxのソースを開いて M-x visit-tags-table で、TAGSファイルを開く。 すると、それ以降、 M-TAB すると関数名が補完入力できるようになる。 なおM-.で関数定義に飛んでM-*で戻れる。 vi viにもあった。これまた今更知った。 入力中にctrl-nまたはc ...

by himainu at July 05, 2008 02:01 AM

July 03, 2008

Dan Walsh

File Context problems.

If you want to move files to directories that the current policy does not know about you should use the semanage command to tell the system what to label these files.


# semanage fcontext -a -t httpd_sys_script_exec_t '/myweb/cgi(/.*)?'
# restorecon -R -v /myweb/cgi

Semanage is a good tool for this, since it sets up the machine to permanently label these directories with this context.  If the machine is later relabeled, this directory will continue to be labeled correctly.    system-config-selinux also has a graphical mechanism to do this.

Note:
  This is preferred over using chcon, since chcon  might not survive a relabel.

If you do this labeling and the policy is updated later on with the same or slightly different context, you can have problems.  I have also seen packages shipping with semanage commands in their post install to set the file context.

You can end up seeing statements like:

/etc/selinux/targeted/contexts/files/file_contexts: Multiple 
different specifications for /var/lib/awstats(/.*)?
(system_u:object_r:httpd_sys_script_rw_t:s0 and
system_u:object_r:awstats_var_lib_t:s0).
/etc/selinux/targeted/contexts/files/file_contexts: Multiple
different specifications for /usr/share/awstats/wwwroot/cgi-
bin(/.*)? (system_u:object_r:httpd_sys_script_exec_t:s0 and
system_u:object_r:httpd_awstats_script_exec_t:s0).
When restorecon, rpm, matchpathcon, setfiles or any other tools that reads the systems file context sees a conflict they put out this message.

You can remove the conflict by using semange

# semanage fcontext -d '/var/lib/awstats(/.*)?'

One handy qualifier available at least in semanage on Fedora 9

# semanage fcontext -l -C
SELinux fcontext                                   type               Context

/etc/glpi(/.*)?                                    all files          system_u:object_r:httpd_sys_script_rw_t:s0
/var/log/glpi(/.*)?                                all files          system_u:object_r:httpd_sys_script_rw_t:s0
/var/lib/glpi(/.*)?                                all files          system_u:object_r:httpd_sys_script_rw_t:s0
/dev/mapper/Volumes-OldWindowsBackup               all files          system_u:object_r:virt_image_t:s0

This command lists all the local customizations that have been made to your system.  This shows that on my system the glpi program must have setup special labeling and I labeled an virtual image in /dev/mapper.

You can see similar functionality in system-config-selinux by selecting the "File Labeling" list item and then clicking on the "Customized" button.

by dwalsh@redhat.com at July 03, 2008 06:34 PM

Andrey Markelov (SELinux)

Новая статья в Red Hat Magazine посвященная SELinux

В Red Hat Magazine вышла новая статья "Writing policy for confined SELinuxusers ", написанная Dan Walsh. В ней Dan на примере двух простых задач описывает как при помощи мастера создания модулей политики
в утилите system-config-selinux можно модифицировать существующий тип пользователя и как добавить новый.

В первом примере модифицируется политика для xguest, позволяя этому пользователю не только запускать браузер, но и работать с IM по протоколу
AIM/AOL. Во втором примере создается новый тип пользователя, которому разрешено пользоваться терминалом, отправлять почту и читать/писать
в /maildir.

Отличная статья для первоначального знакомства с некоторыми расширенными в Fedora 9 функциями GUI-утилиты system-config-selinux.

by Andrey Markelov (noreply@blogger.com) at July 03, 2008 08:00 AM

July 02, 2008

June 30, 2008

KaiGai Kohei

mod_selinux(その2)

前回のエントリで書いた mod_selinux について、以下のような問題があるようだ。
1.ビルド環境の selinux-policy が最新すぎて、Fedora 9に入らない。
2.SRPMをインストールすると以下のようなメッセージが表示される。
~]# rpm -ihv mod_selinux-0.1-r906.src.rpm 
1:mod_selinux 警告: ユーザ kaigai は存在しません - root を使用します
警告: ユーザ kaigai は存在しません - root を使用します
警告: ユーザ kaigai は存在しません - root を使用します
警告: ユーザ kaigai は存在しません - root を使用します
########################################### [100%]
[root@perl-devel ~]#


ちょっっっっっwwwwwww
というワケで、rootになってパッケージを作り直した。
Fedora9のselinux-policy-3.3.1以上でインストールOKのハズ。
http://sepgsql.googlecode.com/files/mod_selinux-0.2-r926.i386.rpm
http://sepgsql.googlecode.com/files/mod_selinux-0.2-r926.src.rpm

Apacheのバックエンドでリクエストを処理するプロセス(スレッド)は、一度リクエストを処理した後、再び次のリクエストを処理する(ために待機する)。
したがって、setexeccon()を設定した後、この設定をクリアしないと、無関係の処理で fork() + execve() した時に変なコンテキストが付与されるという問題がある。
コメントでPANDAさんが質問を書いていたので、詳しく言及する事にする。

Apacheには、ローダブルモジュールが利用する事のできる各種のフックが存在し、クライアントからのリクエストを処理する過程で、各種の処理を行う事ができるようになっている。
mod_selinuxモジュールは、全てのリクエストに対して、(PHPやCGIやHTML等の)コンテンツハンドラが起動される直前に呼び出される fixups フックを利用している。
(このフックが呼び出される時には、既にHTTP認証は完了済みであることに留意されたい。)

このフックの延長で mod_selinux は、HTTPユーザ名に対応するセキュリティコンテキストを setexeccon() を使って設定するが、仮に、当該ディレクトリに何も設定されていない場合や、マッチするユーザが居なかった場合には setexeccon(NULL) を使って、設定をクリアする。

これに関して言及している記事:
http://d.hatena.ne.jp/kgbu/20080630/1214801923 に、
ところで、コメント欄のやり取りで気になったのだが、
setexecconのrevertはどのタイミングで行われるのだろう?
起動してすぐ元に戻すなら、race conditionは起きないよね?

とあるが、正解は「バックエンドが次のリクエストを処理する直前」である。
ただし、動的/静的コンテンツを問わず、このフックは常に呼び出され、明示的なsetexeccon()の必要のない場合は設定をクリアするので問題は生じない。
要は、次のリクエストを処理する前にクリアすれば良いのである。

(追記)
まっちゃだいふくさんの所でも紹介されていた:
http://d.hatena.ne.jp/ripjyr/20080630/1214768722
mod_selunuxで、ApacheとSELinuxのセキュリティコンテキストでの動作制限が出来るソフトだそうです
これって、SQLインジェクションに効果どころでなくて、システム全体として面白いと思うけどなぁ
BASIC認証からフォーム認証も出来るようになったらもっと面白いなぁ。
PerlモジュールとかJavaのServeletとかPHP(何 モジュールとかw
さすが鋭い。
コレの意味するところは、LAPPスタックの最上位(Webアプリ)から最下位(OS)までを、同じセキュリティ属性/同じセキュリティポリシーで一気通貫にアクセス制御できるようになる事。

ただ、Apacheモジュールとして実装されているperlやPHP、JServletをこの枠組みに組み込む事は、2つの技術的課題があり、まだ上手く行っていない。

■その1:スレッドの扱い
SELinuxはプロセスに一個のセキュリティコンテキストを割り当てる。複数のスレッドが、それぞれに異なるリクエストを処理するような場合でも、個々のスレッドが別々のセキュリティコンテキストを持つ事を認めていない。
これは、Linuxカーネルがプロセスメモリ空間を通じたデータ交換を捕捉できないための制限事項と思われる。

■その2:誰が権限を戻すのか?
Apacheは、ユーザからのリクエストを受け付けるバックエンドプロセスを繰り返し使用するため、一度セキュリティコンテキストを設定したとしても、リクエストを処理した後、次のリクエストを受け付けるために元のセキュリティコンテキストに戻さねばならない。
しかし、setexeccon()の場合と違い、元に戻すのは自分自身。つまち、これを許すことはWebアプリの脆弱性を突いて権限昇格を許す事と同義である。ああ、困った困った。

by KaiGai at June 30, 2008 02:13 PM

June 29, 2008

Shintaro Fujiwara

segatex-6.50 released !

I released segatex-6.50 which pops up AVC denied widget.
RPM version, not yet.

http://sourceforge.net/projects/segatex/

June 29, 2008 01:00 PM

segatex-6.50 will be released soon !

segatex-6.50 will inform you AVC denied message.
Widget pops up as denied log occurs.

Looks like setroubleshoot, but it just pops up and alarm you.

I wrote small c programs and set it work by script.

June 29, 2008 05:33 AM