2005年03月05日

Kernel 2.6.11 リリース

Linux Kernel 2.6.11 リリース


しかし、相変わらずchangeLog 見にくいですねぇ。。。
せめて、ジャンル別とか表示できないかなぁ。

ということで、個人的に気になったモノを抜き出してみました。
かなり、偏見と無能に満ちたモノとなっています。(^-^;A


●IPv6
IPv6まんせ〜! ということで。

実装ミスっぽ。
・[IPV6] Don't update FAILED entries on receipt of NAs.

As NAs do not create new entries (RFC2461 7.2.5),
NA should not change state of FAILED entries.



●TUN/TAP系
自宅のIPv6環境にて使用中のTUNドライバ関連。

今回の目玉かな? queuingが改良されてるっぽいっす。
・TUN/TAP driver packet queuing fixes and improvements

Patch from Harald Roelle

Fixes for the following issues
- "Kicking" packet behavior in case of kernel packet scheduler (! TUN_ONE_QUEUE):
When the netif queue is stopped because of an overrun of the driver's queue,
no new packets are delivered to the driver until a new packet arrives, not even
when in the meantime there's again space in the driver's queue (gained by a
reading user process). In short, whenever netif queue was stopped, one needs an
additional packet to "kick" packet delivery to the driver.
The reason for this is, that the netif queue is started but not woken up, i.e.
the rest of the kernel is not signaled to resume packet delivery.

- Adjustment of tx queue length by ifconfig has only effect when TUN_ONE_QUEUE
is set. Otherwise always constant TUN_READQ_SIZE queue length is used.

- TX queue default length setting is not consistent:
o TAP dev + TUN_ONE_QUEUE: 1000 (by ether_setup())
o all other cases: 10

- Default tx queue length is too short in many cases.
IMHO it should be at least twice as long as the number of fragments needed
for a maximum sized IP packet at a "typical" MTU size.
This would ensure that at least one complete IP packet can be delivered
to the attached user space process, even if the packet's fragments
are "misaligned" in the buffer and the user process is not scheduled
in time to read the queue.

Additional modifications:

- To signal that stopping of the queue has occurred, the tx fifo overrun
counter is increased.

- Implemented ethtool api. Primarily added to have a standard method requesting
the driver version.

Signed-off-by: Max Krasnyansky


Use random_ether_addr() to generate TAP MAC address.


まぁ、まんまですが、私的に影響ありそうなので。
・[PATCH] Multicast filtering for tun.c

From: Shaun Jackman

This patch adds multicast filtering to the TUN network driver, for
packets being sent from the network device to the character device.

* drivers/net/tun.c: Add multicast filtering for packets travelling from
the network device to the character device.

* include/linux/if_tun.h (tun_struct): Add interface flags, a hardware
device addres, and a multicast filter.


「Please test if this helps in your case」って、そんな。(^-^;A
・[TUN/TAP]: Add missing trans_start and last_rx setting.

But as stated in bonding.txt, the ARP monitor requires the underlying
driver to update dev->trans_start and dev->last_rx.

The patch below adds the required functionality to the TUN/TAP driver.
Please test if this helps in your case.



●TCP/UDP系
●UML系
●netfilter系
●SELinux系
う〜ん、ざっと見た限りでは、面白そうなのなし。


●ねた!!!
「crazy Mac OS-X TCP implementations」って。(^-^;A
・[TCP]: Set PSH bit on all outgoing TSO frames.

Helps with crazy Mac OS-X TCP implementations which delay the
recvmsg() wakeup of the user until push is seen.

Based upon ideas from Alexey Kuznetsov, and a preliminary
patch by Stephen Hemminger.



今回は、アップデートは見送りかなぁ。
安定したって書いてあるけど、微妙だし。。。

2005年02月27日

Red Hat Enterprise Linux 4.0 SELinux編

SELinuxについて、つらつらと。。。

●各デーモンの設定具合
では、本題のSELinuxが、どのくらい設定されているか確認。
(Zオプションで、SELinuxのドメインが表示されます。
 unconfined_tというドメインは、全てOKというSELinux無効モードです。)

# ps -eZ
・unconfined_t以外のドメインが設定されている物
named,ntpd,postgres,mysql,apache,syslogd,snmpd,squid

と、基本的な物は、SELinuxで設定されているようです。

が、sendmailなどのメール系は、設定されていない模様。
それに、あまり使用しないような物も、設定されていません。

この手のセキュリティー系は、全てに対して設定しなければ、意味がない
ため、このままでは、無意味としか言いようがないでしょう。
(セキュリティーは、一カ所でも破れれば、OKですからね。
 侵入時に、全てのドアや窓の鍵を破る泥棒はいないのと同じです。)


●各アプリの設定具合
続いて、どのくらい強固な設定となっているか、設定ファイルをのぞいて
みようと思います。
今回の題材は、ネットにいっぱい情報が転がっているapacheちゃんです。

・各ディレクトリに割り振られたドメイン
/etc/selinux/targeted/src/policy/file_contexts/program/apache.fc
・各ドメインの権限
/etc/selinux/targeted/src/policy/domains/program/apache.te

二つのファイルが、連携して、各ディレクトリやファイルに対し、権限操作を行って
います。

「apache.fc」に、どのディレクトリやファイルにどのドメインを割り振るかを記述し、
「apache.te」に、どのドメインが、どんな権限(書き込み権や実行権など)を持って
いるかを記述します。

これをのぞいてみると、、、

読み込み用、スクリプト実行用、ログ用、コンフィグ用

など、いろいろロールに分かれており、良さそうに見えなくもないのですが、
実際には、「httpd_tドメイン」には、書き込み権など強力な権限が割り当て
られていますので、実環境にあわせて、もう少し権限を絞る必要があると
思います。


●まとめ
といったように、全体的に利便性重視の甘い設定がされているようです。

実は、それもそのはずでして、現在のポリシーは、「targeted」というものに
なっています。
このポリシー自体が、利便性重視なのです。

そのため、セキュリティー重視の「strictポリシー」という物があり、こちらを
利用すると、とてもがちがちな設定をしてくれるようですが、動かなくなる
アプリが続出すると思われますので、すべて、正常動作させるようにするには
かなり、根気のいる作業となります。
しかし、そうした場合、かなりのセキュリティー(TCSEC(米国のセキュリティ
評価基準。通称オレンジブック)でB1レベル相当)を、実現できるはずです。


●感想
個人的な感想としましては、「strictポリシー」で動作させる気がないのだったら
素直に、Offにしておいた方がよいように思います。

通常、サーバをたてるときには、開発したアプリをインストールしたり、メール
サーバなどを動かしたりすると思いますので、デフォルトの設定のまま使用する
可能性はほとんど無いと思われるためです。


●おまけ

ちなみに、設定法の基本は、下記のパターンで、設定していくことになります。
もう、気が遠くなりそうですよね。。。

1,「setenforce 0 」で、「permissiveモード」というSELinuxのアクセス制御を
 無効にするモードで、動作確認をする。

2,「setenforce 1 」で、SELinuxのアクセス制御を有効にして、再度、動作確認を
 する。

3,動かない場合には、SELinuxのアクセス制御(*.fc,*.te)を再度設定する。
 「ドメインがどんなファイル・リソースにアクセスできるか」ですので、
 考え方はより詳細に制御できるパーミッション管理と変わりません。
 一つずつ、潰していけば、必ず、設定できるはずですので。

2005年02月26日

Red Hat Enterprise Linux 4.0 インストール編

まっ、入れねばならぬでしょう、ということで。(^-^;A

●変更点
変更点としましては、、、という、細かい話は、

http://www.redhat.com/software/rhel/

を、見て頂くとして、今回の変更点で、
「プログラマ」としては、

・Kernel2.6
・I/Oまわりの変更

が、気になるところでしょうか?
パフォーマンスやスケーラビリティー、さらに、プログラムの組み方(ノД`)
が、パワーアップしているらしいです。

組み方については、もちろん、いままでのやり方でも動くのですが、より
パフォーマンスを出せる組み方が出来るようになっています。


つづいて、「管理者」としては、

・SELinux(Security-Enhanced Linux)
 これについては、この辺の連載がよいかも???まだ更新されるようですし。


でしょう。なんといっても。
しかも、これ、デフォルトでONになっているとのこと。

パーミッションの扱いなどが、大きく変わりますので、移行やバージョン
アップ組は、苦労するんじゃないでしょうか?
それに、新規システムだとしても、SELinux流の設計・設定をマスター
しなくては、構築もままなりません。
(まぁ、使わなければよいという話もありますが。)

この点から、SELinuxについては、少々、つっこんでみたいと思います。
(ただし、細かい話はやりません。ほかで、いっぱい出てますので。)


●インストール
さて、では、早速インストールをしようかと思います。
インストールマシンは、例のごとく、VMWareちゃんです。

VMWareで、インストールOSとしてLinuxを選択すると、ディスクのインター
フェースにSCSIが選ばれますが、RHEL4.0では、自動認識されないようです。

使用可能なSCSIドライバは、下記の物なのですが、デフォルトの選択肢には
ないのです。
もちろん、ドライバを別途作って読み込ませれば、OKなのですが、ここは
めんどくさいので、あきらめてIDEに接続し直すことにします。


・Buslogic BT-958 Compatible

・LSI Logic LSI53C10xx Ultra160


このあとは、いつものanacondaちゃんが起動します。
いままでのインストーラそのままですので、迷う人もいないでしょう。

ただ、一点、ファイアーウォールの設定のところで、SELinuxを使うかどうかの
設定が増えています。
使いたくない人は、ここで、使用しない設定にしましょう。
今回は、これがメインイベントなので、「アクティブ(デフォルト値)」です。


そして、インストールが無事に終了したら、起動画面が現れます。
ここからが、今までと少々違うようです。

最初に、Windowsの様にRedHatNetworkアクティべーションを要求されます。

ここで、登録しないと30日のトライアル版扱いとなるようです。

以上でインストールは終了です。


そして、無事にgnomeGUIが起動するわけですが、こちらも大きく変わって
いるようです。
あえて、キャプ画面は載せないので、どう変わったかは、皆さんの目で
お確かめを。