• 検索結果がありません。

振る舞いに基づくSSHブルートフォース対策

N/A
N/A
Protected

Academic year: 2021

シェア "振る舞いに基づくSSHブルートフォース対策"

Copied!
128
0
0

読み込み中.... (全文を見る)

全文

(1)

振る舞いに基づく

SSHブルートフォース対策

平成20年11月13日

TOMOYO Linux Project

半田 哲夫

TOMOYO is a registered trademark of NTT DATA CORPORATION in Japan.

(2)

はじめに

• 遠隔管理などで利用されるSSHサービスへ

の不正なログインを許してしまうと、情報漏え

いだけでなく、踏み台やトロイの木馬の設置

のような被害が生じます。

– 近年の攻撃手法は高度化・洗練化されてきており、

従来の防御手法だけでは対処しきれない可能性

が増えてきています。

• 「アクセス制御機能を強化したOS」を用いて、

(3)

準備:フローチャート

• この図の見方はご存じですよね?

1 2 3 4 Yes No

(4)

準備:状態遷移図

• この図の見方はご存じですよね?

A B D C E B A C B E D C

(5)

準備:Linux における状態遷移図の例

• /sbin/initを起点にツリー状に広がります。

/sbin/init /etc/rc.d/rc.sysinit /sbin/mingetty /bin/unicode_start /sbin/start_udev /bin/kbd_mode /sbin/mingetty /etc/rc.d/rc.sysinit /sbin/start_udev /bin/unicode_start /bin/kbd_mode /bin/login /bin/login

(6)

準備:TOMOYO Linuxとは

• 状態遷移をデザインし強制するツール

– プログラムの中で発生するプログラムの実行要求

を監視し、その可否を制限する。

– プログラムの実行により状態遷移を行う。

• リクエストを観測し制限するツール

– プログラムの中で発生するファイルの読み書き要

求を監視し、その可否を制限する。

– プログラムの実行要求やファイルのオープン要求

(7)

準備:SSHセッションの種類

• 対話型シェルセッション

– シェルが提供され、自由にコマンドを入力できる

• 自由に資源にアクセスできる

• 非対話型シェルセッション

– シェル起動時に -c で指定されたコマンドが実行

される

• scp や sftp など

• 非シェルセッション

– シェルが提供されない

/usr/sbin/sshd /bin/bash ??? /bin/bash

(8)

従来の対策

• 知識に基づく認証

– ブルートフォース攻撃の対象になります。

• ログイン認証を突破されないことを前提とした

対策

– 突破される確率を減らす

• ファイアウォールと連動して認証に失敗したクライアント

を一定期間再接続禁止にする

• 公開鍵認証を用いる

(9)

提案する対策

• 振る舞いに基づく認証

– 状態遷移を活用します。

• 従来のログイン認証を突破されることを前提と

した対策

– 従来のログイン認証から先を制限します。

– とりあえずログインシェルを与えてみて、期待通り

の振る舞いをするかどうかを観察します。

• 労働契約における試用期間をイメージしてください。

(10)

従来の対策のフロー

• ログイン認証までをカスタマイズする

SSHサーバがクライアントからの接続を受け付ける ログイン認証を行う 作業を行う 成功 失敗

(11)

提案する対策のフロー

• ログイン認証から先をカスタマイズする

SSHサーバがクライアントからの接続を受け付ける ログイン認証を行う 作業を行う 振る舞いを検査 不審 正常 成功 失敗

(12)

扉をあけて

• 常識は捨ててください。

– 「なんでもあり」の世界です。

– あなた自身のアイデアを実装してください。

• 新しい世界の始まりです。

– セキュアな世界へようこそ!

(13)

ケース1:対話型シェルセッション

• 打鍵タイミングを利用します。

– 利用するもの

• 自作プログラム /bin/timeauth

/usr/sbin/sshd /bin/bash /bin/bash /bin/timeauth /bin/timeauth /bin/bash /bin/bash ??? ???

(14)

ケース1:対話型シェルセッション

(15)

ケース1:対話型シェルセッション

Authenticate me!

(16)

ケース1:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

(17)

ケース1:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

(18)

ケース1:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

OK. Authenticated. Let me access shell.

(19)

ケース1:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

OK. Authenticated. Let me access shell.

(20)

Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(21)

Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(22)

Password is PacSec Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(23)

NG. Go away! Password is PacSec Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(24)

Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(25)

Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(26)

Enter password. Password is Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(27)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(28)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(29)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(30)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(31)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(32)

Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(33)

OK. Go ahead. Password is Enter password. Authenticate me!

ケース1:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

OK. Go ahead.

(34)

ケース1:対話型シェルセッション

• 利点

– 使える要素が制限されない

• RFCなどの標準に従う必要がない

• どんな要素を使っているかを秘匿できる

– 想定外の認証方式

• 侵入者が思いも付かない方法を使える

• パスワード文字数が少なくても、タイミング情報と組み

合わせることでブルートフォースを無意味に

(35)

ケース1:対話型シェルセッション

• 難点

– 「アクセス制御機能を強化したOS」が必要

• ログインシェルから実行できるコマンドを制限するため

• MAC(強制アクセス制御)と呼ばれる機能を利用

– Round Trip Timeが大きいと使いにくい

(36)

ケース2:対話型シェルセッション

• ワンタイムパスワードとメールを利用します。

– 利用するもの

• SMTPサーバ

• 自作プログラム /bin/mailauth

/usr/sbin/sshd /bin/bash /bin/bash /bin/mailauth /bin/mailauth /bin/bash ??? ???

(37)

ケース2:対話型シェルセッション

(38)

ケース2:対話型シェルセッション

Authenticate me!

(39)

ケース2:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

(40)

ケース2:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

(41)

ケース2:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

OK. Authenticated. Let me access shell.

(42)

ケース2:対話型シェルセッション

Authenticate me!

Enter password. Password is ******

OK. Authenticated. Let me access shell.

(43)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(44)

ケース2:対話型シェルセッション

Authenticate me! Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(45)

ケース2:対話型シェルセッション

Authenticate me! Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(46)

ケース2:対話型シェルセッション

Authenticate me! Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(47)

ケース2:対話型シェルセッション

Authenticate me! Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(48)

Enter password.

ケース2:対話型シェルセッション

Authenticate me! Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(49)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(50)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(51)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(52)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(53)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(54)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(55)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(56)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(57)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(58)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(59)

OK. Go ahead. Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(60)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(61)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(62)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(63)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(64)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(65)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(66)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(67)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(68)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(69)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(70)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(71)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(72)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(73)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(74)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(75)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(76)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(77)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(78)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(79)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(80)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(81)

Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(82)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(83)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(84)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(85)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(86)

Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(87)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(88)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(89)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(90)

Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(91)

NG. Go away! Password is Enter password. Authenticate me!

ケース2:対話型シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(92)

ケース2:対話型シェルセッション

• 利点

– ワンタイムパスワードを生成したプロセス自身が検

証も行う

• 時刻やカウンタなどの同期機構が不要

• プロセスの消滅と同時にワンタイムパスワードも失効

– ワンタイムパスワードが侵入者以外に漏洩しても

問題にならない

• プロセスを生成したユーザ以外には何の価値もない

(93)

ケース2:対話型シェルセッション

• 難点

– メールを受信できる必要がある

• 携帯電話のようなメール受信端末を所持していること

– メールを送信できる必要がある

• SMTPサーバやWebサーバのメール送信CGIなどが

利用可能なこと

(94)

ケース3:非対話的シェルセッション

• 環境変数の有無やその内容を利用します。

– 利用するもの

• SSH サーバの AcceptEnv ディレクティブ

• SSH クライアントの SendEnv ディレクティブ

• 自作プログラム /bin/env_check

• TOMOYO Linux の execute_handler ディレクティブ

/usr/sbin/sshd

/bin/env_chk /bin/env_chk

(95)

ケース3:非対話的シェルセッション

SSHサーバがクライアントからの接続を受け付ける ログイン認証を行う 要求されたコマンドを実行する 認証成功 失敗 失敗 成功 SSHサーバが環境変数を設定する SSHサーバが execute_handler を起動する 環境変数の検査を行う ログインシェルを起動する 成功

(96)

ケース3:非対話的シェルセッション

(97)

ケース3:非対話的シェルセッション

Authenticate me!

(98)

ケース3:非対話的シェルセッション

Authenticate me!

Enter password. Password is ******

(99)

ケース3:非対話的シェルセッション

Authenticate me!

Enter password. Password is ******

(100)

ケース3:非対話的シェルセッション

Authenticate me!

Enter password. Password is ******

OK. Authenticated. Let me access shell.

(101)

NG. Go away!

ケース3:非対話的シェルセッション

Authenticate me! Enter password. Password is ****** OK. Authenticated. Let me access shell.

(102)

ケース3:非対話的シェルセッション

Use this environ. Authenticate me!

Enter password. Password is ******

(103)

ケース3:非対話的シェルセッション

Use this environ.

OK. Ready. Authenticate me!

Enter password. Password is ******

(104)

ケース3:非対話的シェルセッション

Use this environ.

OK. Ready. Authenticate me!

Enter password. Password is ******

OK. Authenticated.

(105)

OK. Go ahead.

ケース3:非対話的シェルセッション

Use this environ.

OK. Ready. Authenticate me!

Enter password. Password is ******

OK. Authenticated.

(106)

ケース3:非対話的シェルセッション

• 利点

– クライアントからは透過に見える

• コマンドラインでの操作が不要

• 標準入出力の扱いが不変

– 環境変数をパスワードの代わりに使える

• 環境変数名を秘密にできる

• 環境変数の内容に応じて権限を分割することも可能

– 対話的シェルセッションを開始する前に適用する

ことも可能

(107)

ケース3:非対話的シェルセッション

• 難点

– TOMOYO Linux 専用

• execute_handler を備えているのは TOMOYO Linux

だけ

– SSHクライアントが環境変数を送信する機能

(SendEnv)をサポートしていない可能性

(108)

ケース3:非対話的シェルセッション

• 応用例:環境変数による権限分割

/usr/sbin/sshd /usr/libexec/openssh/sftp-server /bin/bash 玄関 ログインシェル

(109)

ケース3:非対話的シェルセッション

/usr/sbin/sshd /bin/env_chk /bin/ro-sftp /bin/rw-sftp /usr/libexec/openssh/sftp-server /bin/bash /bin/bash 再検査 ダミー ダミー 読み書きモード 読み込み専用モード

(110)

ケース4:非対話的シェルセッション

• 独自のレイヤーを構築します。

– 利用するもの

• scp や sftp コマンドの -S オプション

• 振る舞いを監視するためのサーバ側プログラム

• 振る舞いを指定するためのクライアント側プログラム

• TOMOYO Linux の execute_handler ディレクティブ

(111)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1

(112)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1 2

(113)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1 2 3

(114)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1 2 3 4

(115)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1 2 3 4 5

(116)

ケース4:非対話的シェルセッション

アプリケーション層 振る舞い指示機能 (独自プログラム) /usr/bin/ssh アプリケーション層 振る舞い監視機能 (独自プログラム) /usr/sbin/sshd 1 2 3 4 Go! 5

(117)

ケース4:非対話的シェルセッション

アプリケーション層

/usr/bin/ssh

アプリケーション層

(118)

ケース4:非対話的シェルセッション

• 利点

– 標準の機能で利用できない要素(標準入出力や

コマンドラインパラメータなど)を使える

– 環境変数と組み合わせて利用できる

• 独自認証対応の可否に応じた権限分割ができる

(119)

ケース4:非対話的シェルセッション

• 難点

– クライアント側にもプログラムを用意する必要があ

る。

(120)

PAMではできないの?

• 自由度・難易度が違います。

– 標準入出力やパラメータなどを独占できるので、

他のPAMモジュールとの干渉が起こりません。

• 誰にでも作ることができます。

– RFCなどの標準に縛られません。

(121)

PAMではできないの?

• クライアント側の対応が不要です。

– PAMの場合はクライアントが対応していないと使

えません。

– PAMを通過後に実行される処理(シェルなど)に

対応していないクライアントはありえません。

(122)

PAMではできないの?

• 強制することができます。

– 他のPAMモジュールの設定や実行結果により省

略される心配がありません。

– 生じうる状態遷移がMACにより規定されているの

で、想定外の抜け道(バッファオーバーフローや

コマンドインジェクション)の心配がありません。

– 外部プログラムの助けを借りるのが容易です。

(123)

まとめ

• ホスト内での認証なので独自プロトコルを利用

可能です。

– アイデアの勝負です。

• 利用可能な要素は無限にあります。

– 正しい振る舞い(状態遷移)を知られない限りブ

ルートフォースは不可能です。

• 安価に構築でき、負担の少ない方法を選べま

す。

(124)

ケース5:非シェルセッション

• クライアントプログラムをカスタマイズします。

– 利用する機能

• 独自のSSHクライアントプログラム(例えば JSCH)

• TOMOYO Linux の task.state キーワード

(125)

ケース5:非シェルセッション

• 利点

– プログラムの実行を伴わずに権限を切り替えでき

• アクセス要求の順序をパスワードの代わりに使用

– 対話的・非対話的シェルセッションを開始する前

に適用することも可能

(126)

ケース5:非シェルセッション

• 難点

– 使える要素が少ない

• プログラムの実行を伴わないで実現する必要がある

– おそらく TOMOYO Linux 専用

• SSHサーバプログラム(/usr/sbin/sshd)を改造すること

なくプロセスの状態変数(task.state)を操作しているた

– クライアントを自作する必要性

(127)

ケース6:即席ハニーポットの構築

• 侵入者をハニーポットへリダイレクトできます。

– もちろん、強制ログアウトもできます。

/usr/sbin/sshd /bin/bash /bin/bash /bin/timeauth /bin/timeauth /bin/bash /bin/bash /bin/force-logout ??? ???

(128)

論文はこちらです。

• セキュリティ強化OSによるログイン認証の強化

手法

– http://sourceforge.jp/projects/tomoyo/docs/win

f2005.pdf

– http://sourceforge.jp/projects/tomoyo/docs/win

f05-slides.pdf

– 3年前に書かれた内容ですので内容が古いです。

– しかし、考え方は現在でも役に立ちますし、実際

参照

関連したドキュメント

活動が行われている。 実施 実施を継続

の変化は空間的に滑らかである」という仮定に基づいて おり,任意の画素と隣接する画素のフローの差分が小さ くなるまで推定を何回も繰り返す必要がある

そのような発話を整合的に理解し、受け入れようとするなら、そこに何ら

目的 これから重機を導入して自伐型林業 を始めていく方を対象に、基本的な 重機操作から作業道を開設して行け

FSIS が実施する HACCP の検証には、基本的検証と HACCP 運用に関する検証から構 成されている。基本的検証では、危害分析などの

事故時運転 操作手順書 事故時運転 操作手順書 徴候ベース アクシデント マネジメント (AM)の手引き.

歴史的にはニュージーランドの災害対応は自然災害から軍事目的のための Civil Defence 要素を含めたものに転換され、さらに自然災害対策に再度転換がなされるといった背景が

これら諸々の構造的制約というフィルターを通して析出された行為を分析対象とする点で︑構