攻撃手法
システムの攻撃方法
スタックA
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
arr
n
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
リターンアドレス
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
スタックB
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
data
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cなどに昔から存在する脆弱性。
バッファに対して、意図的にオーバーフローさせてあふれたデータを別なメモリ領域に上書きさせる。
リターンアドレスを書き換えてべつな関数を実行させることも可能。
シェルコード
攻撃者がシェルを起動させてコマンドを受け付けるようにするプログラム。
UnixやLinuxには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=">
SQLインジェクション
被害
1.データベースの内容が盗まれる
2.データベースの内容が書き換えられる
3. 不正ログイン
4.ストアドプロージャを利用したOSコマンドの実行
原因
1.任意のSQL文を注入できる
2.入力されたパラメーターをそのままSQL文に含めることで意図せずSQL文が変更される
セキュリティ基礎
情報セキュリティ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.被害が最小限
- >分散して管理しているため
ソフトウェア型かハードウェア型か
1.ソフトウェア型 パソコンやサーバなどに搭載されているFW
2.ハードウェア型 専用機器
どの層でフィルタリングするか
1.パケットフィルタリング型
パケットというように3層であることがわかる。
パケットフィルタリング型は3層でのIPと4層のトランスポート層でのポート番号による振り分けが可能。
2.ゲートウェイ型
7層でのフィルタリング。
HTTPやクッキーを条件にフィルタリング可能。
UTM
Unified Threat Management(統合脅威管理)
以下のような機能を統合
1.IDS
2.IPS
3.アンチウイルス
4.アンチスパム
5.Webコンテンツフィルタリング
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 AHとESPの2つのプロトコルが使用可能
メッセージ認証を行う。暗号化しない
1.AH Authentication Header
トランスポートモード
トンネルモード 新しいIPヘッダをつける
2.ESP Encapsulated Security Protocol
メッセージ認証。データ暗号化!
トランスポートモード
トンネルモード 新しいIPヘッダをつける
トランスポートモードとトンネルモードの2つのモードが使用できる
トランスポートモード
トンネルモード 新しいIPヘッダをつける
暗号技術
公開鍵暗号方式
だれでも暗号化可能。みるのは自分だけ。
暗号化を公開鍵、複合を秘密鍵
送信側に対して今度は受信側から暗号化したデータを送信しようとする場合、送信側で秘密鍵と公開鍵を作成し、公開鍵を公開しておく必要があります。また共通鍵を使用する場合と比較して処理が複雑になるため処理速度が遅くなる傾向がある
一方向ハッシュ関数
代表値を求める。完全性を提供。
メッセージ認証コード
MAC。改ざんを防ぐ。完全性と認証を提供。
疑似乱数生成器
暗号化アルゴリズムで利用する。
ブルートフォースアタック
パターンをすべて試す
辞書攻撃
英単語をリストアップして推察
差分解読法
複数の平文とそれに対する暗号文の差分を解析
線形解読法
関数を近似させて解読
レインボーテーブル
ハッシュ値から元の値を得る。レインボーテーブルという特殊なテーブルを利用する。
共通鍵暗号方式の種類
シーザー暗号
ずらす
DES
IBM。可読されている。
3DES
DES互換性を持つ。
AES
アメリカの暗号規格。
公開鍵の暗号方式
ElGamal暗号
離散対数問題を利用。
楕円曲線暗号
楕円の離散対数問題が困難であることが根拠。
研究が盛ん。
メッセージ認証コード
message authentication code MAC
完全性と認証を提供
公開鍵基盤
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度フルバックアップ + 毎日フルバックアップ以降に更新されたすべてのデータをバックアップ。
復元はフルバックアップ + 最新の差分バックアップ。
※毎回データ量が増えていくが、リストアが容易。
増分バックアップ
週に一度フルバックアップ。
増分バックアップは前日から更新されたデータ分だけバックアップを行う。
バックアップするデータ量が少ないため、バックアップ時間が短縮できる。
リストアに時間がかかる。
バックアップツール
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構成
データが限定されない
監視と運用
システムを効率よく監視する
システムがのどような状態にあるのか監視しておく必要がある。
監視の目的
1.システムの定常状態を観察する
2.システムの障害の兆候を発見する
3.システムの拡張の時期を知る
4.障害をいち早く発見する
プロセス監視
ソフトウェアの動作に必要なすべてのプロセスが正常に動作しているかを検査する。
ログ監視
ログを監視、エラーメッセージなどを監視する。
各種指標
システム動作
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マネージャという。
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