トップ > 日医標準レセプトソフト > 運用のための各種設定 > ネットワークセキュリティ

セキュリティ

INDEX


エンドユーザ向けセキュリティポリシー

パスワードについて

概要

パスワードは、コンピュータ上のユーザを証明するための方法として、安価に、そして広く使われている認証の手段です。
パスワードを設定することで、安易に関係者以外の人がアクセスすることを防ぐことができます。
しかし、パスワードの管理を怠りますと、関係者以外の人の侵入を受けることになり、個人情報の流出など、さまざまな被害を被る可能性があります。
そのため、パスワードの管理について、以下の点に気を付けなければなりません。

パスワードを他人に知られないようにする

パスワードが他人に知られた場合、そのパスワードは、セキュリティを確保するという使命を失うことになります。
パスワードが他人に知られる機会は、以下のようなことが考えられます。

  • パスワードを書いた紙を、人に見られた
  • パスワードを書いた紙を、シュレッダにかけずに捨てた
  • パスワードを記述したデータをコンピュータのディスク上に保管した
  • パスワードの入力をしているところを盗み見された
  • パスワードを声に出していたのを人に聞かれた

他にもありますが、多くの場合は上記のような場合に、パスワードの流出があると考えられます。
また、管理者と名前を偽り、調査という名目でパスワードをメールや電話で聞き出す手口があります。
不審に思った場合には、即答をしないで、かならず管理者に確認をとってください。

パスワードを紙に書いた場合

できる限り、パスワードは頭の中に記憶して、人に知られないようにしてください。
記憶できない場合は、紙に書いてもかまいませんが、その管理はしっかり行ってください。
その際に気を付けることとして、以下のことに注意する必要があります。

  • パスワードを書いた紙を見られないようにする
  • パスワードを書いた紙の廃棄には、シュレッダを使って、判読不能にする
  • パスワードの保管場所に気を付ける

上の2点は「パスワードを他人に知られないようにする」と同じ内容になっています。
パスワードは、その保管に際し、なるべく他人の目に触れることが無い場所へ保管する必要があります。
(たとえば、金庫など鍵のかかる場所)

他人に予測されにくいパスワードにする

パスワードは、他人から勝手に侵入されないために、推理されにくくする必要があります。
以下のようなパスワードは、推理されやすいので、さけてください。

  • 辞書に載っているような単語
  • キーボード配列や番号順などの単純なパターン
  • 関係者や有名な人
  • ユーザーIDなどの名前
  • 誕生日や住所
  • 電話番号などの個人情報を使った名前
  • 4文字や6文字などの短いパスワード
  • ローマ字のパスワード
  • 単語を少しいじっただけのパスワード

上記の点に気を付けて、パスワードを決めてください。
特に、ユーザーIDとパスワードが同じというのは、パスワードが無いのに等しいので、必ず避けてください。

その他の対策

上記以外にも、パスワードに関して、以下の点に気を付ける必要があります。

  • パスワードを定期的に変更すること
  • パスワードが漏れた可能性がある場合(あるいはあった場合)、速やかにパスワードを変更すること

ネットワークについて

概要

ネットワークでやりとりを行う際、診療所単位のネットワークは、外部のネットワークとの不要なやりとりをできるだけ遮断する必要があります。
それによって、外部からの不正アクセスを減らし、グローバルなインターネットなどからの侵入を防ぐことができます。
そのため、ネットワークについて、以下の点に気を付けなければなりません。

  • 日医標準レセプトサーバを接続しているLANとグローバルネットワークの間は、必ずルータ(あるいはプロキシサーバ)を設置すること
  • 日医標準レセプトソフトサーバを運用するLANと院外のネットワークを接続するルータにはIPフィルタリングを設定すること(特に、glserverとglclientをつなぐ8000番ポートは遮断しなければならない)
  • 遠隔地からのリモートログインを原則禁止とする(リモートでのメンテナンスを除く)
  • コンピュータの構成を把握すること(接続しているコンピュータに名前を書いたシールを貼り付けるなど)

コンピュータの利用について

概要

ネットワーク経由の不正侵入は防ぐことができても、物理的にコンピュータにふれることで、個人情報を持ち出すことは可能です。
そのため、コンピュータの利用について、以下の点に気を付けなければなりません。

  • 関係者以外のLAN内での日医標準レセプトソフトサーバの利用を禁止する
  • ログインした状態で、長時間席から離れないこと(離れることがある場合、たとえば、スクリーンセーバーが起動するようにし、スクリーンセーバーの設定である「パスワードを要求する」の設定を有効にして、離れた隙の不正侵入を防ぐこと)
  • 管理者以外が重要なユーザで操作することを禁止する
  • 不要なアプリケーションのインストールをしてはならない(ポートが開く可能性がある)
  • 許可なくフロッピー・CD−ROM・MOなどの記録媒体を使用しない
  • 設定ファイルを書き換えてはならない

なお、日医標準レセプトソフトサーバ(DebianLinuxプラットホーム)以外については、ここには記載しません。


ベンダー向けのセキュリティポリシー

概要

診療所へ日医標準レセプトソフトサーバを設置する際に、セキュリティに関して細心の注意を払う必要があります。
ここでは、どのような作業を行うことで、セキュリティを確保するかについて記載します。


LAN全体のネットワークの設定について

IPv4の設定について

診療所内のLANは、プライベートアドレスを使い、ルーターはNATを使ったアドレス変換機能を有効にしてください。
(LAN内において、IPv4のグローバルアドレスは使わないようにします)。
ルーターのNATと同時に行われるIPフィルタリングを有効にすることで、グローバルなインターネット(LANの外側)からの日医標準レセプトソフト端末のアクセスを許可しないようにします。
逆に、LAN内からインターネットへのアクセスは、診療所のポリシーに従い、制御します。
日医標準レセプトソフトとしては、特にこれを規定しないものといたします。


ポートについて

日医標準レセプトソフトのサーバをネットワークに接続する際、不正アクセス等を防ぐために、不要なポートを閉じる必要があります。
そのためには、接続待ちポートを表示する「netstat -l -A inet」「netstat -l -A inet6」コマンドや、ポートスキャンを行うコマンドを使用して、どのポートが開いているかを確認する必要があります。

※※注意!!ポートスキャンのコマンドとしてnmapコマンドがありますが、このコマンドは、他の日医標準レセプトソフトサーバのポートを調べることができてしまいます。
そのため、他の組織の運営するサイトにポートスキャンを実施した場合、不正アクセスとみなされるケースがあるため、このコマンドの使用に際しては、特に注意を払わなければなりません。
そして、他の日医標準レセプトソフトサーバに対して、絶対に実行してはなりません。
実行していいのは「nmap localhost」というように、自分に対してのみです。
(このコマンドで、ポートを調べることができます)

ポートスキャンコマンドを実行した結果、表示される一覧として、以下のようなものが表示されます。

Interesting ports on orca-test (127.0.0.1):
Port    State       Protocol  Service
9       open        tcp        discard
13      open        tcp        daytime
22      open        tcp        ssh
37      open        tcp        time
111     open        tcp        sunrpc
755     open        tcp        unknown
1178    open        tcp        skkserv
5432    open        tcp        postgres
5680    open        tcp        canna
6000    open        tcp        X11
22273   open        tcp        wnn6

上記の表示を参照して、開いているポートの中で不要なものが何かを探してください。
不要なものについては、「inetd.conf」の設定を変更したり、アンインストールを行ってください。
「ssh」や「postgres」など、必要なポートに関しては、各プログラムごとに、きちんとした設定を行って、セキュリティを確保してください。

ポートについての説明

ポートスキャンで表示されたものについて、主要な一部のものについて説明します。

 port - サービス名 - 機能
    7 - echo       - 外部から受信したデータを、そのまま送り返すポート
    9 - discard    - 外部からの受信のみ行い、送信は何も行わないポート
   13 - daytime    - 日付と時刻を文字で送信するポート
   21 - ftp        - ftpを使ったファイルの送受信を行うポート
   22 - ssh        - sshを使った通信を行うポート
   23 - telnet     - telnetを使った通信を行うポート
   25 - smtp       - 送信メールの通信を行うポート
   37 - time       - 1900年1月1日0時0分0秒からの秒数を4バイト整数で返信するポート
   53 - DNS        - ホスト名とIPアドレスを結びつけるためのポート
   79 - finger     - アカウント情報の通信を行うポート
   80 - www-http   - インターネット情報の通信を行うポート
  109 - pop2       - 受信メールの通信を行うポート
  110 - pop3       - 受信メールの通信を行うポート
  111 - sunrpc     - RPC(リモート手続き呼び出し)ポート
 1178 - skkserv    - 漢字変換を行う「skk」のポート
 5432 - postgres   - PostgreSQLとの通信を行うポート
 5680 - canna      - 漢字変換を行う「canna」のポート
 6000 - X11        - X Windowシステムのポート
22273 - wnn6       - 漢字変換を行う「wnn6」のポート

必要なポート

   22 - ssh        - センターとのバックアップやリモートメンテナンスなど、暗号化通信に必要です
 5432 - postgres   - DBとアクセスする場合に必要です

sshは、常時接続する必要がないため、接続する必要が発生した場合のみ接続できるようにすることができるのであれば、sshは通常は停止させることを推奨します。
postgresは、ルーターレベルでインターネットとのやりとりを遮断してください。

クライアントとして使用しない場合は不要なポート

 1178 - skkserv    - 漢字入力を行う場合に必要です
 5680 - canna      - 漢字入力を行う場合に必要です
 6000 - X11        - X Windowを使用する場合に必要です
22273 - wnn6       - 漢字入力を行う場合に必要です

停止することを推奨するポート

    9 - discard
   13 - daytime
   37 - time

停止すべきポート

    7 - echo       - DoS攻撃を受ける可能性があります
   19 - chargen    - DoS攻撃を受ける可能性があります
   21 - ftp        - 不正アクセスの原因となります
   23 - telnet     - 不正アクセスの原因となります
   25 - smtp       - spamメールの踏み台になる危険性があります
   53 - DNS        - パスワード盗用の可能性があります
   79 - finger     - 個人情報が盗まれる可能性があります
   80 - www-http   - もっともねらわれやすいポートであるため、ちょっとした設定ミスで攻撃を受ける可能性があります
  109 - pop2       - パスワード盗用の可能性があります
  110 - pop3       - パスワード盗用の可能性があります
  111 - sunrpc     - 不正アクセスの原因となります

不要なポートで、「/etc/inetd.conf」に記述されているものについては、行頭に「#」を付けて、再起動してください。
ポートが閉じられるようになります。
(対象:echo, chargen, discard, daytime, time, telnet, finger...)

その他の不要なポートについては、デーモンを起動しないようにしてください。
特に、ネットワーク関連のポート(ftp, telnet, smtp, DNS, www-http, pop2, pop3, sunrpc)はねらわれやすいので、かならず停止させてください。


各アプリケーションについて

OS全体について

セキュリティパッチについて

セキュリティパッチの作業は、他のディストリビューションと異なりDebianでの作業はあまり手間をかけずに行うことができます。
(これは、Debianの大きな特徴です)
なお、実作業の手間は省けますが、情報の収集については、日頃気を付けなければなりません。
Debian/GNU Linuxのセキュリティについては、公式サイト(http://www.jp.debian.org/)にて情報を収集を行ってください。
日医標準レセプトソフトのセキュリティパッチにつきましては、ORCAプロジェクトより情報を提供いたします。
セキュリティホールなどの情報が入りましたら、すみやかにアップデートを行ってください。
アップデートを行うことによって、既知のセキュリティホールがふさがれるようになります。
アップデートは「dselect」コマンドや「apt-get」コマンドを使います。

まず、前手順として、以下の記述を「/etc/apt/source.list」に追加する必要があります。
(既に記述されている場合は、追加する必要はありません)
「sudo vi /etc/apt/source.list」コマンドを実行して、以下の行を追加してください。

woody版

deb http://security.debian.org/ woody/updates main contrib non-free

上記の記述を追加しましたら、Debianのセキュリティパッチをあてることができるようになります。
セキュリティパッチをあてる際には、以下のコマンドを実行してください。

sudo apt-get update
sudo apt-get upgrade

記述の追加は一度のみですので、実質、コマンドを一回実行するだけで、アップデートが完了します。

パスワードについて

以下のユーザについては、パスワードを入れてもログインできないようにしてください。

  • orcaユーザ
  • postgresユーザ

上記のユーザの権限でコマンドを実行したい場合は、「sudo -u」コマンドを使用してください。

以下のユーザについて、きちんとしたパスワードが設定されているかを確認してください。

  • rootユーザ

上記のユーザは、特に判読しにくいパスワードを指定してください。

たとえば、以下のような規定をすると良いと思います。

  • 全体の文字数はxx文字以上であること
  • パスワードのxx文字は英字・xx文字は数字・xx文字は記号で、それぞれ区切りがx回あること
  • パスワードは、周期的に変更すること。
    最長でもxxヶ月に1度変更すること

関連 : suコマンド

パーミッションについて

通常のユーザで、普段は必要がなく、重要なファイルについては、実行権限等を考慮して、パーミッションを確認・設定をしてください。
特に、日医標準レセプトソフトシステムのDBやシステムを操作するプログラムについては、扱いに注意してください。
パーミッションの設定については、「chmod」コマンドを使って、パーミッションの設定を行ってください。
また、作成者以外が入れるようにしたい場合には、「chown」コマンドを使ったグループ設定を活用し、通常ユーザとの切り分けを行うことで、セキュリティを確保してください。


日医標準レセプトソフトについて

パーミッションについて

通常は、インストール直後の状態で大丈夫です。
確認を行う場合は、「ls -l」コマンド等を実行して、パーミッションを確認し、必要であれば、「chmod」コマンドを実行して、適切にパーミッションを設定してください。


PostgreSQLについて

データ(DB)についての確認

日医標準レセプトソフトシステムが使用するデータベースは、日医標準レセプトソフトシステムを管理・実行するユーザ以外からは使用できないようにしてください。
インストール直後の日医標準レセプトソフトデータベースは、日医標準レセプトソフトを管理・実行するユーザのみ使用が可能になっていますので、データベースを起動して権限の設定を行うことありません。

Postgresのユーザ認証について記入するファイル「/var/lib/postgres/data/pg_hba.conf」についての記述は、以下のように設定してください。

local        all                                           ident sameuser
host         orca        127.0.0.1     255.255.255.255     trust
host         all         127.0.0.1     255.0.0.0           ident sameuser
host         all         0.0.0.0       0.0.0.0             reject

他の日医標準レセプトソフトサーバからアクセスする場合、cryptを使用したパスワード認証を行うことでセキュリティを確保します。
これによって、セキュリティを確保しながらの2台運用を可能にします。
例えば、従サーバのアドレスが「192.168.1.12」の場合、下記のように設定します。

local        all                                           ident sameuser
host         orca        127.0.0.1     255.255.255.255     trust
host         all         127.0.0.1     255.0.0.0           ident sameuser
host         orca        192.168.1.12  255.255.255.255     crypt
host         all         0.0.0.0       0.0.0.0             reject

さらにセキュリティを強化したい場合は、書籍等を参照して、「pg_hba.conf」を設定してください。
cryptを使ったセキュリティの確保のためには、MONTSUQI・PostgreSQLの両方に対して、以下の設定が必要となります。

MONTSUQI側の設定

MONTSUQIの設定ファイル「/etc/jma-receipt/dbgroup.inc」については、以下のような設定を行ってください。

db_group {
 type "PostgreSQL";
 port "localhost";
 name "orca";
 redirect "log";
};
db_group "log" {
 priority 100;
 type "PostgreSQL";
 port "192.168.1.12";
 name "orca";
 password "orcapasswd"    # <= password
 file "/var/lib/jma-receipt/dbredirector/orca.log";
 redirect_port "localhost";
};
  :
 (以下略)

nameとpasswordを、データベースで設定したユーザIDとパスワードで一致させてください。
このユーザIDとパスワードをきちんとしないと、MONTSUQI(aps)の起動時に、接続に失敗するため、異常終了と再起動の繰り返しとなってしまいます。
適切に行いますと、デーモンの起動後、しばらくしますと、すべてのデーモンの起動が完了し、postgresとの接続が可能になります。

Postgresの設定(cryptで保護する場合)

cryptはパスワードを暗号化してやりとりする方法です。
パスワードは、パスワードファイルを作るのではなく、psql内で実行するSQLコマンドの「CREATE USER」や「ALTER USER」によって設定します。
cryptでのパスワード設定は、以下の手順で行います。

  1. postgresユーザになる
  2. 「psql <db名>」を実行する
  3. .「CREATE USER <ユーザ名> WITH PASSWORD '<パスワード>';」を実行する
    うまくいかない場合、すでにユーザが存在する場合がありますので、その場合は、「ALTER USER <ユーザ名> WITH PASSWORD '<パスワード>';」を実行してください。
  4. 確認をしたい場合は「SELECT * FROM pg_shadow;」を実行します。
    すると、パスワード等の確認ができます。

DB内で実行し、しかもDBの内部に保存されるため、DBに入らない限り、パスワード等は判明しません。
また、パスワードの変更や確認等は、postgresユーザでなければできません。
なので、postgresユーザのパスワードをきちんと行えば、パスワードの盗用については防げるようになっています。
ただし、postgresユーザについても、きちんとパスワードを設定する必要がありますので、注意する必要があります。

上記の設定を行うことで、日医標準レセプトソフトデータベースへの不要なアクセスを防ぐことができます。


sshについて

概要

sshを使ったリモートでのログインについて、リモートメンテナンスなどで必要なときにRSA認証を行ったログインのみを許可することを推奨します(RSA認証がとれない場合は、アクセスできないようにします)。

設定ファイルについて

sshに関する設定は、「/etc/ssh/sshd_config」に記述するようになっています。
このファイルに記述することで、ログインできるユーザを制限することができます。

設定方法

  1. ユーザ認証の設定ファイル(/etc/ssh/sshd_config)に対して、以下の設定を行います
    • RhostsAuthentication <yes|no> [「no」を設定]
      rcmd系の認証方式を使用するか
    • RhostsRSAAuthentication <yes|no> [「yes」を設定]
      rhosts や hosts.equiv認証に加えて、ホストベースのRSA認証を使用するか
    • RSAAuthentication <yes|no> [「yes」を設定]
      ユーザベースのRSA認証を使用するか
    • PasswordAuthentication <yes|no> [「no」を設定]
      パスワードによる認証を使用するか
    • PermitEmptyPasswords <yes|no> [「no」を設定]
      空のパスワードを許可するか
    • PermitRootLogin <yes|no> [「no」を設定]
      rootでのログインを許可するか
    • AllowUsers <ログインを許可するユーザ> ...
      ログインを許可するユーザの指定(複数人数を指定する場合)
  2. 上記の設定を行った後、リモートログインする日医標準レセプトソフトサーバが生成したsshの認証キーを作成し、リモートログインされる日医標準レセプトソフトサーバの該当ディレクトリにコピーします 以下の手順で、sshの認証キーを作成し登録してください。
    • [リモートログインする日医標準レセプトソフトサーバ]
      1. ログインする際に使用するユーザとなる
      2. 「ssh-keygen」コマンドを実行して、暗号認証ファイルを生成する
      3. 生成作業を行うと「~/.ssh/identity.pub」と呼ばれるファイルが生成されるので、それを接続先のリモートログインされる日医標準レセプトソフトサーバに(ネットワーク経由等で)持っていく
    • [リモートログインされる日医標準レセプトソフトサーバ]
      1. 接続元からリモートログインする際に使用するユーザにログインする
      2. 接続元から持ってきた「identity.pub」の内容を「~/.ssh/」にある「authorized_keys」に追加する。
        なお、存在しない場合は、「identity.pub」の名前を「authorized_keys」という名前に変更する ファイルが存在するかの確認は「ls ~/.ssh/authorized_keys」を実行することで確認できる
        例)
        「~/」に「identity.pub」をコピーしたものとする
        すでに「~/.ssh/」ディレクトリが存在するものとする
        例1)まだauthorized_keysが存在しない場合
        cp ~/identity.pub ~/.ssh/authorized_keys
        例2)すでにauthorized_keysが存在する場合
        cat ~/identity.pub >> ~/.ssh/authorized_keys
      3. 接続元より持ってきた「identity.pub」を削除する
  3. 上記の設定が完了しましたら、sshデーモンを再起動させてください。

設定方法の詳細については、書籍やインターネット上などで検索してください。

※上記は、sshプロトコルバージョン1の場合の記述です。sshプロトコルバージョン2の場合、上記の「identity.pub」を「id_rsa.pub」や「id_dsa.pub」に置き換えて読んでください。


suコマンドについて

概要

suコマンドは、基本的には使わないでください。
ただし、万が一などのために使う可能性はあります。
その際に、一般の人が使えないようにするための配慮が必要となります。
そのため、重要なユーザのパスワードについて、きちんとした設定を行うことによって、セキュリティを確保するものとします。


sudoコマンドについて

概要

sudoコマンドは、一部のユーザのみが使えるようにします。
それによって、重要なコマンドを実行する際に、極力rootユーザにならないで、rootユーザのみが使えるコマンドを実行できるようになります。

設定ファイルについて

sudoコマンドを実行するユーザについての制限設定は、「/etc/sudoers」ファイルに記述されています。
このファイルのユーザ設定をきちんと行うことで、sudoコマンドの実行権限を設定することができます。

設定方法

設定を行う場合、rootユーザで「visudo」コマンドを実行します。
するとviでsudoコマンドのユーザ権限の設定ファイルを開いてくれます。

ファイルを開きますと、以下のようなファイルがviで表示されます。

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
apple   ALL=(ALL) ALL
orange  ALL=(ALL) ALL

上記にユーザ「melon」を加えたい場合は、「melon ALL=(ALL) ALL」の行を加えると、「melon」と呼ばれるユーザで、sudoコマンドが実行できるようになります。
なお、上記の場合、sudoコマンドを実行しますと、初めて実行したり、前回実行から5分以上経っていますと、パスワードの入力を求められるので、その場合には、パスワードを入力してから実行してください。

なお、別の記述方法として「lemon ALL=ALL,NOPASSWD:ALL」といった手法があります。
これは、パスワードを入力しないで、管理者権限のコマンドを実行できるようにするものです。
また、sudoコマンドを実行したときのログをとる方法についても存在します。
詳細は、書籍等を参照してください。

トップ > 日医標準レセプトソフト > 運用のための各種設定 > ネットワークセキュリティ

このページのトップへ