攻撃手法

ウイルス

トロイの木馬 -> 派生してワーム
キーロガースパイウェア

システムの攻撃方法

バッファオーバーフロー

スタックA

                                        • -

arr

n

                                        • -

リターンアドレス

                                        • -

スタックB

                                        • -

data

                                        • -

Cなどに昔から存在する脆弱性
バッファに対して、意図的にオーバーフローさせてあふれたデータを別なメモリ領域に上書きさせる。
リターンアドレスを書き換えてべつな関数を実行させることも可能。

シェルコード

攻撃者がシェルを起動させてコマンドを受け付けるようにするプログラム。
UnixLinuxにはsetuid機能がある。すなわち本人ではなくファイルのオーナの権限でプログラムを実行出来てしまう。

対策
OSおよび使用するソフトのバージョンを最新にしてパッチを適用させる。
ファイやウォールで不正アクセスを遮断する。

開発者としての対策
C/C++には脆弱性が多く含まれる。
脆弱性のある関数は使わない。strcpyなど。
バッファのサイズを厳しくチェックする。

バッファードオーバフローを利用した攻撃
1.シェルコード 最初にやること、シェルを起動させる。
2.ルートキット ログなどの侵入した形跡を改ざんする。
3.バックドア 次回侵入が楽になるようにする。
4.キーロガー コンピュータのキー入力を記録するソフト。

ハニーポット
有益そうな情報や資源がありそうな場所を用意する。
攻撃者をおびきよせる。

DoS攻撃
Denial of Service attack(サービス不能攻撃)
可用性を侵害する。

想定される被害
CPUやメモリを圧迫する。

原因
セキュリティホールを攻撃。
ネットワーク通信の仕組みを悪用。

Dos攻撃種類
1.SYN Flood攻撃
SYNパケットを大量に送りつける

2.UDP Flood攻撃
UDPポートにサイズの大きなパケットを大量に送り続ける

3.ICMP Flood攻撃
ICMP echo requestを大量に送り続ける

4.Smurf攻撃
発信元アドレスを偽装し、ターゲットホストが接続されたネットワークに攻撃をする。
すると、レスポンスが偽装されたアドレスに返ってくる。

5.Connection Flood
ターゲットのTCPポートに対してコネクションを確立しつづける

6.DDos攻撃
Distributed DoS
分散型DoS攻撃

7.DRDoS攻撃
Distributed Reflection DoS
分散反射型サービス不能攻撃

DoS攻撃対策
十分な帯域のネットワークを用いる。
十分な処理能力をもつサーバやネットワークを機器を用いる。

ディレクトリトラバーサル

Webサーバ内のファイル閲覧
Webサーバ内のファイルの改ざん

サーバ内のファイルを直接閲覧しているようなサイトで、
http://192.168.2.183:8080/dt/reader?fileName=../../../../../../../etc/passwd
などのパラメーターでファイルが読み取られてしまう脆弱性
%00は文字列の終端を表す。

対策

OSコマンドインジェクション

外部プログラムを呼び出しているようなシステムの脆弱性
OSコマンドを呼び出さなければいけなくなったら十分緊張すること。
; cat /etc/passwd

対策
; , [ ,] ,| ,< ,> ,\のサニタイズ

XSS

クロスサイトスクリプティング

想定される被害
1.ブラウザが保存しているCookie値の盗み出し。
2.Javascriptによるウイルス
3.画面の書き換え

原因
1.JSのコードを注入できてしまう。
2.入力されたパラメータをそのまま表示させることで、意図せずHTMLの構造が変更される。

フォームが書き替わってしまう。

1.掲示板のシステムでjsが注入できた状態で保存できる (持続型)
2.パラメータを含んだURLを踏まされる (反射型)
※実行例
http://192.168.1.200:8080/xss/input.jsp?name=">


要素の中身を動的に生成しない
3.CSSを外部から読み込めるようにしない expression()関数を利用してスクリプトを記述できてしまう

SQLインジェクション

被害
1.データベースの内容が盗まれる
2.データベースの内容が書き換えられる
3. 不正ログイン
4.ストアドプロージャを利用したOSコマンドの実行

原因
1.任意のSQL文を注入できる
2.入力されたパラメーターをそのままSQL文に含めることで意図せずSQL文が変更される

対策
1.プレースホルダを利用する ? みたいなもの
2.プリペアドステートメントを使う

CSRF

被害
1.ログインユーザが利用可能なサービスの悪用
2.ログインユーザが可能な情報の改ざん

原因
1.想定外のページから任意のPOSTを送信する事が出来る

仕組み
何らかの方法で身元情報を保持している。
CookieのセッションID
Basic認証
SSLクライアント証明書

三者中継サーバからの自動POSTでもセッション情報は送信されてしまう。

対策
1.固定トークンを埋め込む
2.ワンタイムトークンを埋め込む
3.パスワードの再入力
4.リファラのチェック

セキュリティ基礎

情報セキュリティC.I.A

1.機密性 Cpnfidentiality 許可されたものだけが許可された活動を
2.完全性 Integrity データの改ざんや欠落が発生することなく一貫性を維持する
3.可用性 Availbility 必要なときにいつでも正常なサービスを提供できる

付加的なものとして

1.真正性 authenticity 主張通りであること
2.責任追跡 accountability 主体となる動作内容を追跡可能であること
3.否認 non-repudiation 否認されないようにすること
4.信頼 relability 処理の結果に矛盾がないこと

Web3層システム

メリット
1.1サーバのサービスが必要最低限に
2.リバースプロキシを利用することでセキュアに

  • >SSLオフローダーとして動作させることで443ポートも解放しないで済む

3.被害が最小限

  • >分散して管理しているため

制御対象からのFWの分類

1.外部と内部 ファイアウォール
2.ネットワーク(外部、内部)と自分 パーソナルファイアウォール

ソフトウェア型かハードウェア型か

1.ソフトウェア型 パソコンやサーバなどに搭載されているFW

2.ハードウェア型 専用機器

どの層でフィルタリングするか

1.パケットフィルタリング型
パケットというように3層であることがわかる。
パケットフィルタリング型は3層でのIPと4層のトランスポート層でのポート番号による振り分けが可能。

2.ゲートウェイ
7層でのフィルタリング。
HTTPやクッキーを条件にフィルタリング可能。

UTM

Unified Threat Management(統合脅威管理)
以下のような機能を統合
1.IDS
2.IPS
3.アンチウイルス
4.アンチスパム
5.Webコンテンツフィルタリング

IDS/IPS

不正アクセス検知、不正アクセス防止
おもな製品は以下。
1.Snort
2.Suricata
3.Tripwire

IDSの分類(ホスト型、ネットワーク型)

1.ホスト型 各クライアントにアクセス
2.ネットワーク型 ネットワーク上に配備

IDSの分類(シグネチャ型、アノマリ型)

1.シグネチャ型 だめなパターンを記憶 未知のパターンに弱い
2.アノマリ型 正常なパターンを記憶 ラフィック量などを閾値で判定

平文と暗号文

1.平文 生のデータ
2.暗号文 そのままでは読めないデータ
3.複合 鍵を使って暗号文を平文にする
4.暗号化 鍵を使って暗号化すること
5.鍵を使わないで平文に戻す事

SSL/TLSの位置づけ

SSL/TLSはアプリケーション層に位置し、HTTPなどのすぐしたにあるイメージ
SSL 1.0,2,0,3.0
TLS
1.0,
1.1, 暗号化アルゴリズム
1.2 ハッシュアルゴリズム

IPsec

TCP/IP 3層 インターネット層のIPの下に位置する
IPv6で必須

IPsec AHとESPの2つのプロトコルが使用可能

メッセージ認証を行う。暗号化しない
1.AH Authentication Header
トランスポートモード
トンネルモード 新しいIPヘッダをつける

2.ESP Encapsulated Security Protocol
メッセージ認証。データ暗号化!
トランスポートモード
トンネルモード 新しいIPヘッダをつける

トランスポートモードとトンネルモードの2つのモードが使用できる

トランスポートモード
トンネルモード 新しいIPヘッダをつける

暗号技術

共通鍵暗号方式

暗号化と複合化に同じ鍵を利用する
機密性を提供。
鍵をどのようにして相手に渡すのかが問題。

1.シーザー暗号
2.バーナム暗号
3.DES
4.3DES
5.AES

公開鍵暗号方式

だれでも暗号化可能。みるのは自分だけ。
暗号化を公開鍵、複合を秘密鍵
送信側に対して今度は受信側から暗号化したデータを送信しようとする場合、送信側で秘密鍵と公開鍵を作成し、公開鍵を公開しておく必要があります。また共通鍵を使用する場合と比較して処理が複雑になるため処理速度が遅くなる傾向がある

1.RSA暗号
2.ElGamal暗号
3.楕円曲線暗号

一方向ハッシュ関数

代表値を求める。完全性を提供。

メッセージ認証コード

MAC。改ざんを防ぐ。完全性と認証を提供。

ディジタル署名

公開鍵暗号を利用して、完全性、認証、否認防止を提供。

疑似乱数生成器

暗号化アルゴリズムで利用する。

ブルートフォースアタック

パターンをすべて試す

辞書攻撃

英単語をリストアップして推察

差分解読法

複数の平文とそれに対する暗号文の差分を解析

線形解読法

関数を近似させて解読

レインボーテーブル

ハッシュ値から元の値を得る。レインボーテーブルという特殊なテーブルを利用する。

共通鍵暗号方式の種類

シーザー暗号

ずらす

バーナム暗号

排他的論理和を利用。解読不能

DES

IBM。可読されている。

3DES

DES互換性を持つ。

AES

アメリカの暗号規格。

公開鍵の暗号方式

RSA暗号

素数因数分解が困難であることを根拠。

暗号化
(E,N)が公開鍵
(D,N)が秘密鍵

平文が83だとすると
83^E mod N で暗号化
暗号文^D mod N で複合

ElGamal暗号

離散対数問題を利用。

楕円曲線暗号

楕円の離散対数問題が困難であることが根拠。
研究が盛ん。

一方向ハッシュ関数

一文字でも異なると異なる。完全性を得られる。

1.MD5
2.SHA1
3.SHA2
4.Salt

メッセージ認証コード

message authentication code MAC
完全性と認証を提供

ディジタル署名

否認防止を達成。
RSA署名
DSA
ECDSA

乱数の種類

1.真の乱数
予測不可能
サイコロ、熱雑音、宇宙線などを利用する。

2.擬似乱数
一定の計算で求められた数
計算式だけわかれば理論的に予測可能

3.暗号論的擬似乱数
暗号技術での利用に適した擬似乱数
ある時点の乱数から次の乱数が予測不可能

公開鍵基盤

1.ディジタル証明書 公開鍵を保証
2.認証局 証明書の管理を行う
3.公開鍵基盤 保証を実現する

ディジタル証明書

1.バージョン
2.シリアル
3.認証局名前
4.有効期限
5.主体者
6.主体者の公開鍵
7.公開鍵アルゴリズム
8.署名アルゴリズム
9.認証局の署名

ながれ
証明書
1から7、8で計算したものと
9での署名をくらべて、それぞれのメッセージと検証メッセージが同じであれば公開鍵を保証できる。

鍵の強度

RSA(2048bit) ≒ 楕円(210bit) < AES(128bit)

無線LANのセキュリティ

WEP
WPA
WPA2

ネットワークツール

HAクラスタ

HAクラスタ
1台のコンピュータでは得られない高可用性を確保を目的としたクラスタシステムをHAクラスタ

Lifekeeper サイオスエクノロジー
CLUSTERPRO NEC

Heartbeat Linux-HAプロジェクト --- OSS!!
Keepalive --- OSS!!!
Pacemaker

自動で死活監視を行なってくれる

■アクティブ・スタンバイクラスタ
実際にサービスを提供する稼動系と待機系にわかれる

■コールドスタンバイ
稼動系と同じ構成の予備システムを停止状態で待機させておき主システムに障害が起きた時待機系を起動して業務や処理を行う。
※待機系は普段動作させないので障害が発生したときになって電源をいれてみるとうまく動かないような場合がある

■フェイルオーバ
障害時に、稼動系サーバから待機系サーバに切り替える

■フェイルバック
故障した機器の修理を行い元の状態に戻す

■仮想IP
実サーバが切り替わってもIPアドレスを変えない

■Heartbeat
アクティブ・スタンバイクラスタに必要な様々な機能を提供するソフトウェア群
Heartbeat

DRBD + Heartbeat + NFS構成

DRBD + Heartbeat + NFS構成

仮想IP 10.0.0.3
プライマリ 10.0.0.1
セカンダリ 10.0.0.2
データ領域 /data

HDD 10G

■DRBD
インストール
# yum install drbd83
# yum install kmod-drbd83

#fdisk /dev/sdb
領域番号 (1-4): 1 w
領域番号 (1-4): 2 w
adb1,adb2を作成

設定ファイル
# vi /etc/drbd.conf
resource r0 {

on serv1 { # uname -n
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.11.11:7788;
meta-disk /dev/sdb1[0];
}
on serv2 { # uname -n
device /dev/drbd0;
disk /dev/sdb2;
address 192.168.11.12:7788;
meta-disk /dev/sdb1[0];
}
}

自動起動
# chkconfig drbd on
# chkconfig --list drbd

起動
# /etc/init.d/drbd start
# /etc/init.d/drbd status

プライマリ昇格
# drbdadm -- --overwrite-data-of-peer primary r0

DRBDボリュームのマウント
# mke2fs -j /dev/drbd0
# mount -t ext3 /dev/drbd0 /data/

NFS
# yum install nfs-utils
# yum install nfs-utils-lib

/data を公開ディレクトリとして設定します。

NFSはHeartbeat経由で起動する必要があるため自動起動をOFFにします
# chkconfig portmap off
# chkconfig nfslock off
# chkconfig rpcidmapd off
# chkconfig nfs off

■Heartbeat
# yum install heartbeat

/etc/ha.d/ha.cf クラスタ構成を定義するメイン設定ファイル
/etc/ha.d/haresources Version1用のリソース設定ファイル
/etc/ha.d/authkeys 認証設定ファイル

# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/

haresourcesの設定
# vi /etc/ha.d/haresources
※書式  [node-name resource1 resource2 ... resourceN]
※resourceの部分は「/etc/ha.d/resource.d」配下のファイル名を記載します。
※各リソースに渡す引数は「::」で区切って記述します。
serv1 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 192.168.11.10/24 nfs

authkeysの設定
# vi /etc/ha.d/authkeys
auth 2
2 sha1 test

バックアップ

バックアップ

対象とするべきデータ
1.ホームディレクト
2.ファイルサーバ
3.Webサーバ
4.DB
5.設定ファイル
6.ログファイル

  • >二度と同じものを作成できないもの

フルバックアップ

全データバックアップ

差分バックアップ

週に1度フルバックアップ + 毎日フルバックアップ以降に更新されたすべてのデータをバックアップ。
復元はフルバックアップ + 最新の差分バックアップ
※毎回データ量が増えていくが、リストアが容易。

増分バックアップ

週に一度フルバックアップ。
増分バックアップは前日から更新されたデータ分だけバックアップを行う。
バックアップするデータ量が少ないため、バックアップ時間が短縮できる。
リストアに時間がかかる。

バックアップツール

tar
rsync
cpio
dump/restore

LVM

完全なバックアップをとるにはシステムを一時停止する必要がある。
LVMのスナップショット機能は全ディスクを退避させたときに古いデータをスナップショット領域に退避していくという仕組み。

LVMのスナップショット

Logical Volume Manager
ハードディスクなどの物理的な状態を隠蔽して、論理的なイメージで管理する技術。

物理ボリューム

物理的な記憶媒体を物理ボリュームとして管理する。

ボリュームグループ

複数の物理ボリュームを集めて、グループ化したもの。
これは論理的なディスクになる。

論理ボリューム

ボリュームグループを複数に分割したもの。

ネットワークミラーリング

リアルタイムにバックアップを実行。

経済性

安価。

冗長性

ネットワークミラーリングだと2つのコンピュータのハードディスクにデータが保管される。

速度

ネットワークを介して同期をとるため、通常のディスクアクセスに比べ速度が低下する。

DRBD

Distributed Redundart Block Device
ミラーリングソフトウェア

2台のサーバで管理する
1つのカーネルモジュールと3つのカーネルスレッドからなる

1)書き込み
2)書き込み要求
3)リモートシステムでの受付とバッファキャッシングへの書き込み
4)リモートディスクでの書き込み

プロトコル

A ・・・ 1,2を確認
B ・・・ 1,3を確認
C ・・・ 1,4を確認

まとめ

Active、Standby構成
データが限定されない

コマンド

tar

  • c 新規
  • f ファイル名を指定
  • z gzip圧縮
  • v 処理経過をみる

scp ./file user@192.168.0.1 :/home/

rsync
最後に「/」があるかないかによる動作の相違です。この「/」の入力を忘れ、いろいろトラぶったので注意が必要です。
具体的には、上記の例でコピー元の最後の/をつけ忘れると、コピー先で指定したディレクトリの下にpublic_htmlというフォルダが作成されその配下にファイルがコピーされます。
コピー元:/home/oyaji/public_html/a,b,c・・・ 
コピー先:/home/oyaji/public_html/public_html/a,b,c・・・

監視と運用

システムを効率よく監視する

システムがのどような状態にあるのか監視しておく必要がある。

監視の目的

1.システムの定常状態を観察する
2.システムの障害の兆候を発見する
3.システムの拡張の時期を知る
4.障害をいち早く発見する

ping監視

pingコマンドと同様の機能(ICMP echo request/echo reply)
ネットワーク上の他のノードが稼働しているのか検査する。

プロセス監視

ソフトウェアの動作に必要なすべてのプロセスが正常に動作しているかを検査する。

ログ監視

ログを監視、エラーメッセージなどを監視する。

各種指標

システム動作
1.CPU
2.負荷状況
3.プロセス数
4.ログメッセージ

リソースの利用
1.データ数
2.ネットワークインターフェースの通信料
3.メモリ使用量
4.SWAPの使用量
5.ログメッセージ

ソフトウェアの利用
1.利用料
2.ソフトウェアのプロセス数
3.ログメッセージ

コマンド

iostat
ディスク I/Oの利用状況を確認するためのコマンド

top
CPUのプロセスをリアルタイムで表示する

netstat
ホストのネットワーク接続状態やソケット/インターフェイスごとのネットワーク統計などを確認する

sar
CPUやネットワーク、メモリ、ディスクなどのシステム情報を確認・出力できる

SNMP

Simple Network Management Protocol。
ネットワーク内の様々なサーバを集中的に管理する
管理される側をSNMPエージェント。
管理する方をSNMPマネージャという。

SNMP監視

SNMPエンージェントガ管理情報を各サーバのMIBに保存して、マネージャが主計する。

SNMPマネージャ

ネットワーク上の様々な機器やサーバのSNMPエージェントカラシステム情報を取得する。
MRTG,Cacti、Zabbixなどが有名。

SNMPエージェント

対象の機器やサーバにSNMPエージェントが導入されている必要がある。

MRTG

Multi Router Traffic Grapher。
SNMPマネージャの実装。
SNMPエージェントから取得した情報を保管し、グラフで表記し、HTML形式のページとして出力する。
LInuxでのSNMPエージェントの実装としてはNET-SNMPが使われる。

異常状態への対応

システム全体の状況を把握する必要がある。

ITILにおける障害対応

インシデント管理
インシデント管理で求められるのは、まず早急に対応すること。
また、問い合わせに対して適切に答えられるためにシステム状況を把握してあることです。
インシデント管理プロセスで対応困難なものは、問題管理プロセスに依頼する。

問題管理
システム障害などを機に、原因の追求が必要と判断したものを問題点として管理する。
ユーザに提供しているドキュメントやシステム自体に変更が必要であれば、変更要求を発行して、変更管理プロセスに依頼する。

変更管理
変更による障害発生リスクや業務への影響度を考慮にいれて変更内容の審議と変更計画の立案を行う。

リリース管理
システムに対する実装計画をたてます。

構成管理
管理の対象となっているシステムの構成情報を管理します。

インシデント管理プロセスフロー

1.インシデントの検出
2.分類、初期サポート
3.調査、診断
4.解決、復旧
5.インシデントのクローズ
6.オーナーシップ、監視、追跡、コミュニケーション

統合運用管理ツール

1.ハードウェア監視
2.ネットワーク監視
3.OSリソースカンシ
4.プロセス監視
5.ログ監視
6.アプリケーション監視
7.サービス監視
8.イベント監視

商用
JP1
Systemwalker
WebSAM
SenjuFamily
Tivoli

OSS
Hinemos

データの共有

複数サーバでデータを共有する

複数サーバ間で同じデータを持つことが必要とされる。

ファイル数やサイズが膨大

以下ののような問題が発生してくる
1.デプロイに時間がかかる
2.大容量なハードディスクが必要
3.ファイルの整合性がとれているか困難
4.weサーバの新規投入が困難

NFS

Network File System
NFSが公開したディレクトリをマウント。
ロードシェアリングによってシステムを冗長化することが出来る。

1.汎用性
2.スケーラビリティ
3.パフォーマンス
4.管理性

ユーザ情報の共有

ユーザデータをすべてのサーバで共有したい。

LDAP

/etc/passwd
/etc/group
に替わってLDAPに登録されたデータを参照する

dc=designet,dc=jpというエントリをrootディレクトリと呼ぶ。
このようなツリー構造をDIT(Directory Informaton Tree)と呼ぶ。

LDAP

slapd.conf

com dc=com
dc=example,dc=com
でdcとなっているのがルートエントリ
ou=Users,dc=example,dc=com
cn=0001,ou=Users,dc=example,dc=com

1.ユーザー名やグループ名、コンピュータ名、ほか Common-Name CN=……
2.組織単位(OU) Organizational-Unit-Name OU=……
3.ドメイン Domain-Component DC=……

ユーザ登録時
ldapadd -x -D "cn=Manager,ou=People,dc=designet,d=jp" -W -f user.ldif