Bastilleで確実なセキュリティ対策――第2回 HP-UXのセキュア設定(その2)UNIX USER9月号「unixuser.jpサーバー構築記」より転載(2/2 ページ)

» 2004年08月12日 16時00分 公開
[渡辺真次,UNIX USER]
前のページへ 1|2       
Bastille実行後の微調整

 TODO.txtにはいくつかの項目が書き込まれたが、多くが報告的なもので、これまでの作業の場合、セキュリティパッチの確認と、ファイアウォールであるIPFilterの調整が実質的な作業となる。この2つに加えて、以下ではrootログインも禁止しておこう。

セキュリティパッチの確認

 HP-UXには、security_patch_checkというツールが用意されており、利用中のシステム構成と、最新のパッチとを比較できるようになっている。Bastille適用後はcronで毎日起動し、チェックするように設定されている(リスト2)。

リスト2 rootのcron設定
0,15,30,45 * * * * /usr/sbin/sendmail -q
↑ Batilleによってデーモン常駐から15分の起動に変更された
5 3 * * * (umask 077; export PASSIVE_FTP=1; export PATH=/usr/bin:/sbin; /opt/sec_mgmt/spc/bin/security_patch_check -r -q -d -c /etc/opt/sec_mgmt/bastille/security_catalog 2>&1 | /usr/bin/mailx -s "Security Patch Check Results for uuweb01" root@localhost )
↑ 毎日チェックし、その結果をrootアカウントにメールする

 リスト2のようなコマンドを実行すればFTPアクセスで最新カタログを取り寄せチェックできるのだが、ここではチェック機構の流れを把握するためにも、外部へのFTPアクセスを拒否するポリシーで運用していることを想定して、別のマシンで最新情報のカタログファイルを取り寄せ、チェックする手順で作業していく。

  • 最新カタログの取得

 まず、管理端末のマシンで最新のカタログファイルを取得する。最新のカタログファイルは、次のURLに用意されている。

ftp://ftp.itrc.hp.com/export/patches/security_catalog

 security_catalog.gzというgzip形式になっているファイルもあるので、こちらをダウンロードするといいだろう。ダウンロードしたら、scpコマンドでHP-UXマシンへ転送しておく。

  • 適用状況のチェック

 次に、security_patch_checkコマンドを実行する(実行例4)。いくつかのものが未適用な状態であるのが分かる。この例ではWebサーバーとして緊急に適用するものはないが、先頭のSendmailを例にインストールしていこう。

実行例4 未適用のセキュリティパッチをチェック
# gunzip security_catalog.gz
# security_patch_check -c ./security_catalog
      :
      :
# Recommended Bull(s) Spec? Reboot? PDep? Description
-----------------------------------------------------------------
1  PHNE_29913  281   No   No    No  sendmail(1m) 8.11.1
2  PHNE_30090  1020  Yes  Yes   No  libnsl cumulative
3  PHNE_30092  1020  No   Yes   Yes RPC commands and daemons cumulative
4  PHNE_30093  1020  No   Yes   Yes Lock Manager cumulative
5  PHNE_30094  1020  No   Yes   Yes NFS cumulative
6  PHNE_30095  1002  No   Yes   Yes NIS/NIS+ cumulative
7  PHSS_29966  299   Yes  No    No  HP DCE 1.9 client cumulative
8  PHSS_30013  297   No   No    No  CDE Base
9  PHSS_30480  1018  No   No    No  X11 Font Library
10 PHSS_30502  1018  No   Yes   Yes Xserver cumulative
11 PHSS_30671  1038  Yes  No    No  CDE Applications
-----------------------------------------------------------------
*** END OF REPORT ***
NOTE:    Security bulletins can be found ordered by number at
http://itrc.hp.com/cki/bin/doc.pl/screen=ckiSecurityBulletin

  • パッケージの入手

 最新のパッケージは、実行例4の最後に表示されているように「ITリソース・センタ」から入手できるが、このURLではなく、「パッチデータベース ホーム」のページで検索するのが分かりやすいだろう。

http://www1.itrc.hp.com/service/patch/mainPage.do

 このページの「特定パッチの検出」の欄に、実行例4で表示された番号「29913」を入力すれば、一発で検索できる。あとは、該当のパッチにチェックを入れ、[選択済みパッチリストに追加]ボタン、[選択済みパッチのダウンロード]ボタンと押していけば、Webブラウザからファイルがダウンロードできる。ファイルフォーマットはいくつか選べるが、ここではgzipを選び、hpux_800_11.23_08020450.tgzをダウンロードした。

 このファイルもHP-UXマシンにscpで転送したら、/tmpなど任意のディレクトリで展開する(実行例5)。PHNE_29913が本体であり、これを実行するとHP-UX標準のパッケージ形式である、depotという拡張子のついたファイルが現れる。

実行例5 ダウンロードしたファイルを展開してdepotパッケージを取り出す
# cd /tmp
# gunzip hpux_800_11.23_08020450.tgz
# tar xvf hpux_800_11.23_08020450.tar
x patch_manifest, 91 bytes, 1 tape blocks
x README_hp-ux, 1780 bytes, 4 tape blocks
x create_depot_hp-ux_11, 5608 bytes, 11 tape blocks
x PHNE_29913, 1586486 bytes, 3099 tape blocks
# sh PHNE_29913
x - PHNE_29913.text
x - PHNE_29913.depot [non-ascii]

  • depotファイルのインストール

 depotファイルをインストールには、実行例6のようにswinstallコマンドを使う。「-s」オプションのあとにインストールしたいファイルを指定するが、ファイル名指定は絶対パスである点に注意していただきたい。ファイル名だけを指定しても正常に実行されない。

 depotファイルをインストールしたら、念のため、再びsecurity_patch_checkを実行してみよう。Sendmailの項目が消えていればOKだ。

実行例6 depotファイルのインストール
# swinstall -x autoreboot=true -x patch_match_target=true -s /tmp/PHNE_29913.depot
      :
      :
# security_patch_check -c ./security_catalog
      :
      :
# Recommended Bull(s) Spec? Reboot? PDep? Description
-------------------------------------------------------------------
1 PHNE_30090 1020 Yes Yes No libnsl cumulative
2 PHNE_30092 1020 No Yes Yes RPC commands and daemons cumulative
      :
      :

80番ポートを開ける

 Bastilleによって、ファイアウォールIPFilterの設定は、22番ポート以外はふさがった状態である。Webサーバーとして構築するので80番ポートは空けておかなければならない。

 IPFilterの設定は/etc/opt/ipf/ipf.confで行うが、リスト3のように、このファイルはBastilleによって管理されている状態である。何らかの変更を加える場合は、/etc/opt/sec_mgmt/bastille/ipf.customrulesに追加設定を記述し、再度「bastille -b」コマンドを実行する。

リスト3 /etc/opt/ipf/ipf.conf
#   RULES INSERTED FROM /etc/opt/sec_mgmt/bastille/ipf.customrules  #   ARE BELOW.  THESE MAY BE OVERWRITTEN IF YOU RERUN BASTILLE!!! # #    #      #      #      #      #      #      #      #      #       #    #      #      #      #      #      #      #      #      #       #    #      #      #      #      #      #      #      #      #       #    #      #      #      #      #      #      #      #      #       #  # # #  # # #  # # #  # # #  # # #  # # #  # # #  # # #  # # # #   ###    ###    ###    ###    ###    ###    ###    ###    ###   #    #      #      #      #      #      #      #      #      #             :
      :
↑ /etc/opt/sec_mgmt/bastille/ipf.customrulesの記述がここに挿入される
#    #      #      #      #      #      #      #      #      #       #   ###    ###    ###    ###    ###    ###    ###    ###    ###   #  # # #  # # #  # # #  # # #  # # #  # # #  # # #  # # #  # # # #    #      #      #      #      #      #      #      #      #             :
      :

 /etc/opt/sec_mgmt/bastille/ipf.customrulesファイルには、デフォルトで内側から外側へのアクセス許可と、Windowsネットワークに関連したアクセス拒否が設定されている(リスト4)。後者の設定は意味がなさそうだが、これによってWindowsからのブロックログが大量に書かれてしまうことを防いでいる。

 80番ポートを開ける設定を記述したら、再度「bastille -b」コマンドを実行して完了である。今度はIPFilter設定の適用のみなので、それほど時間はかからない。

リスト4 /etc/opt/sec_mgmt/bastille/ipf.customrules
####################################################
# These rules will allow connections initiated from
# this host along with the return connection

pass out quick proto icmp all keep state
pass out quick proto tcp all keep state
pass out quick proto udp all keep state

# End allow outgoing rules
####################################################

# These rules specifically do not log netbios udp or portmapper
# packets because these protocols tends to be very noisy on networks
block in quick proto udp from any to any port = netbios_ns
block in quick proto udp from any to any port = netbios_dgm
block in quick proto udp from any to any port = portmap

pass in quick proto tcp from any to any port = 80 keep state
      ↑80番ポートを開ける設定を追加

Telnet、SSHでのrootログインを禁止する

 Bastille(DMZ)適用後の環境では、telnet(tty?)からのrootのリモートログインは禁止されている。これは/etc/securettyファイルで設定しており、consoleのみが許可されている。一方でSSHでのログインは許可されている。

 複数管理者がいるときなどは、一般ユーザーアカウントでログインさせ、suコマンドなどでrootにスイッチさせるほうが、誰が操作したのかが把握できて良い。どうしても利便性を考えてrootで直接ログインしたい場合も、パスワード認証ではなく、鍵交換による認証に変更したほうが安全だろう。

 SSH経由でのrootのログインを禁止させるには、/opt/ssh/etc/sshd_configでコメントアウトされている「PermitRootLogin」の部分をリスト5のように変更する。これでOS再起動後に有効になるが、即時適用させるため、sshdを再起動させておく(実行例7)。

リスト5 SSHでrootログインを制限
PermitRootLogin no                   ログインを禁止
      もしくは
PermitRootLogin without-password     パスワードログインを禁止


実行例7 sshdの再起動
# /sbin/init.d/secsh stop
# /sbin/init.d/secsh start_msg
      もしくは
# kill -HUP

次回は

 主にセキュリティ関連、とくにBatille関連の設定を解説したが、ほかのOSのソースやドキュメントを見ていくと、Linuxディストリビューションの違いや各システムでの作業例が分かるので、参考にしてはいかがだろう。

 次回はWebサーバー構築に向けたボリューム設定と、Apacheの設定を紹介する予定だ。

UNIX USER 9月号表紙 最新号:UNIX USER 9月号の内容

第1特集
ここが危ないファイルシステム

第2特集
Firefoxでオリジナルアプリに挑戦!

[特別企画]
・WindowsにインストールできるKNOPPIX 3.4
・Slackwareで手作り日本語Linux環境


前のページへ 1|2       

Copyright(c)2010 SOFTBANK Creative Inc. All rights reserved.

注目のテーマ