LinuCの受験パウチャー券を購入する。。。

LinuCの受験パウチャー券が8月31日まで5パーセントオフのキャンペーンだったが、買うのを忘れていて今日ダメ元でアクセスしてみたらまだ5パーセント引きだった。
値引き設定がシステム対応されていないのか、それとも今後も5パーセントオフなのか分からないけれど。。。

LinuCの受験バージョンは下記の通り。LinuC1,2についてはバージョンアップしてるが、LinuC3はメンテナンスされていない感じ。LPICから決別して独自の路線を歩み始めたLinuCの有資格を維持していく意味があるかは今後のお楽しみということで。

101-400 LinuC-1 101試験、バージョン4.0
102-400 LinuC-1 102試験、バージョン4.0
201-450 LinuC-2 201試験、バージョン4.5
202-450 LinuC-2 202試験、バージョン4.5
300-100 LinuC-3 300試験、バージョン1.0
303-200 LinuC-3 303試験、バージョン2.0
304-200 LinuC-3 304試験、バージョン2.0

Linucの教科書

が見当たらないので、Linuc304 Virtualization を取得する場合には、徹底攻略 LPIC Level3 304 教科書+問題集[Version 2.0]対応を購入するしかなさそう。

試験バージョンが対応しているかどうか確認したほうがよさそう。8月末まで5%割引のパウチャー券が購入できるキャンペーンがあるので、今のうちに購入して来年8月末までに受験というのが試験スケジュールになりそう。。。

LPI 303 Security Exam

LPIC2認定から4年が経過し、来年には、無効になってしまう。
もうそろそろ301試験を受験して、LPIC3認定を受けて延命しようと思ってLPICのサイトを見たら、試験制度が変わっていた。。。。
301,302試験が今年の3月末で廃止になってしまっていて、代わりに300, 303, 304試験のいずれかを合格すればよいらしい。
自分のスキルマップから考えると、303 > 304 > 300の優先順位かな?と思い、とにかく303を取得しようと思う。
まずは参考書を買うところから始めないと、、、、
徹底攻略LPI問題集Level3[303/304]対応
ただ、これしか書籍がないというのもどうしたものか。。。。

LPIC-2(201)試験受験

2/13にLPIC-2(202)試験を受験してから受験する時間を取れず、ずいぶん時間が経ってしまった。今回は勉強を十分にしないまま、先に試験日程を決めたばっかりに、当日ひたすら暗記を繰り返す羽目になりました。
教科書や問題集に出ていた類似問題が半分くらいと、全く見たことのないような問題が半分くらいあって、正直落ちたと思いました。
受験結果は、550点でなんとか合格。
Linux Kernel・・・・・・・・・・・・・・・・50%
System Startup・・・・・・・・・・・・・・50%
Filesystem and Devices・・・・・・60%
Advanced Storage Device Administration・・83%
Networking Configuration・・・・53%
System Maintenance・・・・・・・・・・85%
Domain Name Server・・・・・・・・・・83%
恥ずかしながら、wallコマンドなんて初めて知りました。
また、e2labelコマンドについても問われていました。
どの試験もすれすればかりでしたが、これでなんとかLPIC-2認定となりました。

kernelを再構築する

linux kernelの最新版は2.6.33である。
ReadHatやCentOS、Fedoraなどのディストリビューションにおいてカーネルをバージョンアップするなら間違いなく yum update kernelをするだろう。今までもそうしてきて困ったことはない。
しかしながら、LPIC試験対策ということもあり、CentOS(kernel 2.6.9)においてバニラカーネルを使って再構築をした奮闘記について記録しておきたい。今後も再構築するなんてことはほとんどないと思われるが。。。(笑
まずは、最新バージョン(2.6.33)を使っていきなり再構築してみた。
make oldconfigコマンドを実行すると新機能が多すぎるのか、やたら質問攻めにされ、すべてEnterキーで回避した。ところが、makeコマンドの結果次のようになってエラーになってしまった。

CC [M] drivers/message/fusion/mptsas.o
drivers/message/fusion/mptsas.c: In function `mptsas_port_delete’:
drivers/message/fusion/mptsas.c:106: sorry, unimplemented: inlining failed in call to ‘mptsas_set_rphy’: function body not available
drivers/message/fusion/mptsas.c:462: sorry, unimplemented: called from here
make[3]: *** [drivers/message/fusion/mptsas.o] Error 1
make[2]: *** [drivers/message/fusion] Error 2
make[1]: *** [drivers/message] Error 2
make: *** [drivers] Error 2

http://mekaananth.blogspot.com/2009/09/how-to-compile-linux-kernel-2631.htmlにあるようにどうやらmptsas.cがバグっているらしい。mptsas_set_rphy関数の実態の場所を変えて再度makeしてみたが、

LD .tmp_vmlinux1
drivers/built-in.o(.init.text+0x3bce): In function `con_init’:
include/trace/events/kmem.h:81: undefined reference to `.L1496′
make: *** [.tmp_vmlinux1] Error 1

コードを変更してもうまくいかなかったので、あきらめた。
次に2.6.30.10のソースを入手して同様にmakeしてみたが、これもうまくいかなかった。

ERROR: “.L193” [drivers/usb/serial/kl5kusb105.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2

だめもとで、2.6.10を入手して同様にやってみたところ、問題なくコンパイルできた。
make oldconfig時に聞いてくる項目がなかった。
次に2.6.20を入手して同様にやってみたところ、問題なくコンパイルでき、2.6.10と同様にmake oldconfig時に聞いてくる項目がなかった。
ただ、問題なくコンパイルできたはずだったのだが、再起動したらなぜか2.6.10が起動してしまう。調べてみたら、/etc/grub.confには設定がされていたもののdefaultが0から1に変更されており2.6.10が起動してしまうことが分かった。
default設定を変更して、2.6.20を起動させたが、pcnet32がないので、eth0の起動に失敗していた。
lsmodをしても一切モジュールがロードされておらず、
/lib/modules/2.6.20/kernel/
の中身は空っぽだった。
どうやら make oldconfigをすると
.configファイルが
CONFIG_PCNET32=m
から
CONFIG_PCNET32 is not set
に変更されてしまうなどモジュール設定が正しく引き継がれない(理由はよくわからないが)ようだったので、2.6.10の.configファイルをコピーしてきて、make menuconfigからGUI画面を呼び出したうえで、.configファイルを読み込ませてそのまま保存した。
その上で、
make
make modules_install
として /lib/modules/2.6.20/kernel/ をみると
正しくモジュールが入っているようだったので、
make install
を実行して、再起動して、2.6.20まで構築することができた。
カーネルをコンパイルするのに仮想環境ということもあり1時間程度かかってしまう。次の機会に 2.6.20 から 2.6.33 まであげてみたいと思う。

LPIC2(202)試験受験

試験を受けてきました。正直受験中は勉強していた分野ながら深く突っ込まれる質問が多く愕然としていましたが、冷静になって解いていった結果10問程度が自信がない状態でした。
やはり問題集にもLinux教科書 LPICレベル2にも類似問題がないものもあって、正直LPIC1よりもかなり手ごわい感覚があった。
受験結果は、今回も580点で無事合格。
Web Serices・・・・・・・・・・・・・・・・83%
File Sharing・・・・・・・・・・・・・・・・87%
Network Client Management・・42%
E-Mail Services・・・・・・・・・・・・・28%
System Security・・・・・・・・・・・・・69%
Troubleshooting・・・・・・・・・・・・68%
E-Mail ServicesではPostfixに関連する部分を深く突っ込まれ28%という恐ろしい正答率だったが、ウエイトが大きかったApacheとSamba、NFSで助けられたような気がする。
201試験を合格できれば、LPICレベル2認定になる。

LPI問題集

LPIC Level2が2009年4月より改訂されてRelease2となったものに対応した問題集
電車で持ち運べる薄さなので、まとまった試験勉強の時間が取れない場合でも利用できる本。
また、問題のページと答えのページがまとまって別々の場所にあるので、答えを隠さないでもよい点が工夫されていると思う。

OpenSSH

サーバーの設定ファイル /etc/ssh/sshd_config
#SSH Version2のみ
Protocol 2
#接続を許可するユーザー
AllowUsers hogehoge
#接続を許可するグループ
AllowGroups member
#空パスワードを禁止
PermitEmptyPasswords no
#Rootログインを禁止
PermitRootLogin no
ユーザーの鍵情報(秘密鍵/公開鍵)
SSH Version1(RSA1) identity/identity.pub
SSH Version2(DSA) id_dsa/id_dsa.pub
SSH Version2(RSA) id_rsa/id_rsa.pub
→~/.ssh/ 配下に保存される
公開鍵をSSH接続先サーバーのアカウント ~/.ssh/authorized_keys に追記するとパスワード認証が不要となる
サーバーのカギ情報(秘密鍵/公開鍵)
SSH Version1(RSA1) ssh_host_key/ssh_host_key.pub
SSH Version2(DSA) ssh_host_dsa_key/ssh_host_dsa_key.pub
SSH Version2(RSA) ssh_host_rsa_key/ssh_host_rsa_key.pub
→/etc/ssh/ 配下に保存される

sysctlコマンド

/proc/sys/ 配下のパラメータを表示したり、変更したりすることができるコマンド
sysctl -w net.ipv4.ip_forward = 1
→ echo 1 > /proc/sys/net/ipv4/ip_forward と同じ
IPパケット転送を有効にする
sysctl -w net.ipv4.icmp_echo_ignore_all = 1
→echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all と同じ
ICMP Echo Replyを応答しない
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1
ブロードキャスト宛ICMP Echo Requestに応答しない(Smurf攻撃を回避)
sysctl -w net.ipv4.tcp_syncookies = 1
SYN flood攻撃を回避
いずれも再起動すると無効となるため、継続的に利用する場合には、 /etc/sysctl.conf に記述が必要。

named.confのオプション

よく使われるオプションについて
allow-query { 問い合わせを受け付けるIPアドレス; };
allow-transfer { ゾーン転送を受け付けるIPアドレス; };
forwarders { 問い合わせ転送をするIPアドレス; };
forward onlyもしくはforward firstを指定している場合において、自分で解決できない際に問い合わせを行うIPアドレス
問い合わせを行ったDNSサーバーが自分自身でゾーン情報を持っているか、もっておらず別のDNSサーバーへ問い合わせを受けて得られた回答なのかはdigオプションのflagsでわかる。
自分のDNSサーバーでYahooドメインについてDNS問い合わせを行った場合
dig @localhost yahoo.co.jp ns
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11508 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
YahooドメインのNSレコードでDNS問い合わせを行った場合
dig @dnsg01.yahoo.co.jp yahoo.co.jp ns
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6686 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
前者はflagsにaaはないが、後者には存在する。詳しいオプションの内容はdigを使い倒そうが詳しい。