セキリュティー機能拡張(Secure By Default) : やっぱり Sun がスキ! やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20061220 2006年 12月 20日 水曜日

セキリュティー機能拡張(Secure By Default)

前の記事 で Solaris 10 11/06 新機能について独断と偏見で目玉 TOP 5 を あげさせて頂きましたが、 その中の 1 つの"Secure By Default" について、どのような機能かインストールをして 確認してみました。

Secure By Default とはデフォルト状態で、ネットワークサービスに関して ssh のポートのみを開けておく 機能です。Solaris 上級者ではインストール直後にいろいろなポートを閉じる ことは普通に行われていることですが、Solaris 初心者には少しハードルが高 かったかもしれません。そのハードルの高さを取り除いた物が今回の Secure By Default と言えるかと思います。

1. 設定方法

この Secure By Default の機能はアップグレードインストールでは有効になりません。 初期インストールでは途中以下のように Secure By Default を ON/OFF のどちらにするか 選択肢が出てきます。

- Enabling remote services -----------------------------------------------------

  Would you like to enable network services for use by remote clients? 

  Selecting "No" provides a more secure configuration in
  which Secure Shell is the only network service provided to
  remote clients.  Selecting "Yes" enables a larger set of
  services as in previous Solaris releases. If in doubt, it is
  safe to select "No" as any services can be individually enabled
  after installation.

  Note: This choice only affects initial installs. It doesn't affect upgrades.


      Remote services enabled
      -----------------------
      [ ] Yes
      [X] No

--------------------------------------------------------------------------------
    F2_Continue    F6_Help

またこの設定をインストール後に変更するために、以下のコマンドが存在するので もしインストール時に間違って変更した場合も安心です。

# netservices open
# netservices limited


2. SMF の Status 確認

インストール時に "Remote services enabled" で "NO" を選択するか netservices limited コマンドを実行するとどのように設定が変更されるか 実機で確認してみました。

まず、netservices を Open にした状態で SMF の状態のリストを保存

# netservices open
restarting syslogd
restarting sendmail
restarting wbem
dtlogin needs to be restarted. Restart now? [Y]
restarting dtlogin
# svcs -a | sort -k 3,3 | awk '{printf "%-12s%s\n",$1, $3}' > open.txt

次に netservices を limited にした状態で SMF の状態のリストを保存

# netservices limited
restarting syslogd
restarting sendmail
restarting wbem
dtlogin needs to be restarted. Restart now? [Y]
restarting dtlogin
# svcs -a | sort -k 3,3 | awk '{printf "%-12s%s\n",$1, $3}' > limited.txt

そして両者の比較

# sdiff open.txt limited.txt | grep "|"
online      svc:/application/management/seaport:default  |  disabled    svc:/application/management/seaport:default
online      svc:/application/management/sma:default      |  disabled    svc:/application/management/sma:default
online      svc:/application/management/snmpdx:default   |  disabled    svc:/application/management/snmpdx:default
offline     svc:/application/print/ipp-listener:default  |  disabled    svc:/application/print/ipp-listener:default
online      svc:/application/x11/xfs:default             |  disabled    svc:/application/x11/xfs:default
online      svc:/network/cde-spc:default                 |  disabled    svc:/network/cde-spc:default
online      svc:/network/finger:default                  |  disabled    svc:/network/finger:default
online      svc:/network/ftp:default                     |  disabled    svc:/network/ftp:default
online      svc:/network/login:rlogin                    |  disabled    svc:/network/login:rlogin
online      svc:/network/nfs/cbd:default                 |  disabled    svc:/network/nfs/cbd:default
online      svc:/network/nfs/client:default              |  disabled    svc:/network/nfs/client:default
online      svc:/network/nfs/mapid:default               |  disabled    svc:/network/nfs/mapid:default
online      svc:/network/nfs/nlockmgr:default            |  disabled    svc:/network/nfs/nlockmgr:default
online      svc:/network/nfs/rquota:default              |  disabled    svc:/network/nfs/rquota:default
online      svc:/network/nfs/status:default              |  disabled    svc:/network/nfs/status:default
online      svc:/network/rpc/mdcomm:default              |  disabled    svc:/network/rpc/mdcomm:default
online      svc:/network/rpc/meta:default                |  disabled    svc:/network/rpc/meta:default
online      svc:/network/rpc/metamed:default             |  disabled    svc:/network/rpc/metamed:default
online      svc:/network/rpc/metamh:default              |  disabled    svc:/network/rpc/metamh:default
online      svc:/network/rpc/rstat:default               |  disabled    svc:/network/rpc/rstat:default
online      svc:/network/rpc/rusers:default              |  disabled    svc:/network/rpc/rusers:default
online      svc:/network/shell:default                   |  disabled    svc:/network/shell:default
online      svc:/network/telnet:default                  |  disabled    svc:/network/telnet:default

例えば telnet, rlogin, ftp など様々なサービスが disabled になっているのが 確認できます。



3. ローカル接続のみに制限されているサービス

その他に以下のマニュアルにあるとおり、ローカルからの接続のみに 制限されているサービスがあります。

Solaris 10 11/06 Release and Installation Collection
>> Solaris 10 11/06 Installation Guide: Planning for Installation and Upgrade
>> Overall Planning of Any Solaris Installation or Upgrade
>> 3. Solaris Installation and Upgrade (Roadmap)
>> Planning Network Security
http://docs.sun.com/app/docs/doc/819-6764/6n8onr7pd?a=view

上記のマニュアル中の Property を変更すれば良いのですが、 制限を解除する方法は、そのサービスのマニュアルに記述されている場合が あるので参考にしてください。

例えば Sendmail の場合ですが、sendmail(1M) に

  ...略...

  Enabling Access to Remote Clients

     On an  unmodified  system,  access  to  sendmail  by  remote
     clients  is enabled and disabled through the service manage-
     ment facility (see smf(5)).  In particular, remote access is
     determined by the value of the local_only SMF property:

     svc:/network/smtp:sendmail/config/local_only = true

     A setting of true, as above, disallows remote access;  false
     allows remote access. The default value is true.

     The following example shows the  sequence  of  SMF  commands
     used to enable sendmail to allow access to remote systems:

     # svccfg -s svc:/network/smtp:sendmail setprop config/local_only = false
     # svcadm refresh svc:/network/smtp:sendmail

     See svcadm(1M) and svccfg(1M).

     Note, however, on a system  where  any  of  the  sendmail(4)
     files  have been customized, setting this property might not
     have the intended effect. See sendmail(4) for details.

  ...略...

マニュアルにもばっちり記述があるので簡単に設定変更が可能ですね。 以下実機でプロパティーが変更されたか確認しました。

# netservices open
restarting syslogd
restarting sendmail
restarting wbem
dtlogin needs to be restarted. Restart now? [Y]
restarting dtlogin
# svccfg -s  svc:/network/smtp:sendmail listprop config/local_only
config/local_only  boolean  false
# svcs svc:/network/smtp:sendmail
STATE          STIME    FMRI
online          5:03:12 svc:/network/smtp:sendmail
# netservices limited
restarting syslogd
restarting sendmail
restarting wbem
dtlogin needs to be restarted. Restart now? [Y]
restarting dtlogin
# svccfg -s  svc:/network/smtp:sendmail listprop config/local_only
config/local_only  boolean  true
# svcs svc:/network/smtp:sendmail
STATE          STIME    FMRI
online          5:04:28 svc:/network/smtp:sendmail
#

確かに両方とも Status は Online ですが、

  • netservices limited の場合は config/local_only のプロパティーが true になって、ローカルのみに制限
  • netservices open の場合は config/local_only のプロパティーが false になって、特にホストアクセス制限なし

に変更されてます。

結構簡単にポートを閉じることが可能ですし、もし設定変更をしたくなったとし てもマニュアルをご覧頂ければ良いことが解って頂けたかと思います。

今後はこの Secure By Default の機能を活用して、必要の無いポートを基本的 に閉じ、必要が出てきたらそのサービスのみ enable にしたり、ローカルのみの 制限を解除したりしすれば、サーバの設定が簡単になりますね。

投稿されたコメント:

コメント
  • HTML文法 不許可