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を使い倒そうが詳しい。

/etc/aliases

メールエイリアスの方法について
アカウント: 転送先ユーザー1, 転送先ユーザー2 …
転送元アカウントはメールを受け取れない
転送先ユーザーはメールアドレスにすることで別ドメインにも転送ができる
アカウント: /path 指定したファイルにメッセージを追加
アカウント: |command コマンドの標準入力にメッセージを転送
アカウント: :include:/path 指定したファイルにあるユーザーに転送する
ファイル名を変更した場合には、newaliasコマンドを実行する。(sendmailの場合には、sendmail -bi でも更新できる)

routeコマンド

静的ルートの追加と削除
route add -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイアドレス
route del -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイアドレス

Windowsの場合には
route add ネットワークアドレス mask サブネットマスク ゲートウェイアドレス
route delete ネットワークアドレス
となる

route コマンド(netstat -rでも同等)
Flags U:経路が有効 H:宛先がホスト(pppなど) G:ゲートウェイを使用 !:経路は無効
Linuxをルータで使用する場合
一時利用:echo 1 > /proc/sys/net/ipv4/ip_forward
恒久利用:/etc/sysconfig/network に FORWARD_IPV4=yes
とする。