SlideShare uma empresa Scribd logo
1 de 51
データベースセキュリティの基礎
Kazuki Omo(  面 和毅 ): ka-omo@sios.com
SIOS Technology, Inc.
2
Who am I ?
- Security Researcher/Engineer (16 years)
- SELinux/MAC Evangelist (11 years)
- Antivirus Engineer (3 years)
- SIEM Engineer (3 years)
- Linux Engineer (16 years)
OSS セキュリティ技術の会 (3 月発足 )
http://www.secureoss.jp/
3
アジェンダ
1. データベースセキュリティのガイドライン
2. OSS での実装を考える
2. 1 OS レベルでのセキュリティ実装を考える
2. 2 DBMS でのセキュリティ実装を考える
2.3 監査の実装を考える
3. まとめ
1. データベースセキュリティのガイドライン
5
DB のセキュリティ標準
DataBase Security Consortium
スタンダードについて色々やってます。
6
DB ガイドラインを にする内部不正対策 参考
7
DB ガイドライン内部不正対策
4. 管理者の抑制
4.1 アクセス制御
4.2 認証方式
4.3 管理者の分掌
4.4 暗号化・鍵管理
4.5 DB 周辺デバイスの
管理
8
DB ガイドライン内部不正対策
5.1 ポリシーの制定
5.2 保全
5.3 監査・監視体制
5.4 監査の実施
5. 運用の実施
9
4. 管理者の抑制
  システムで出来ること
アクセス制御
● OS上のファイル・ディレクトリへのきっちりしたアクセス
権の設定
● DBA権限のきっちりした取扱い
● 各DBアカウントへの必要なだけの権限付与
● 機密情報へのアクセスの制限
認証方式
● パスワードポリシー
● 二因子認証(多要素認証)
10
4. 管理者の抑制
  システムで出来ること
暗号化・鍵管理
● DB暗号化やデータマスキング
● クエリ発行通路の暗号化
周辺デバイス
● ネットワークセグメントへのアクセス制限(ACL等)
● 物理コンソールの制限
● DB暗号化やデータマスキング
11
5. 運用の実施
システムで出来ること
保全
● アクセスログの収集・保全
監査
● 監査証跡のレポート
● アラートの出力
● ポリシーから外れた操作・アクセス履歴のログ
● 管理者アカウントの操作・アクセス履歴のログ
● セキュリティ設定の変更の取得
12
2. OSS での を える実装 考
13
2. 1 OS/Software レベルでの
セキュリティ を える実装 考
14
DB サーバのセキュリティ担保
4.1.2 ファイル、ディレクトリ
等のアクセス制限
さあ、 SELinux だ!
15
4. RHEL 7 / CentOS 7 上での MySQL
[root@cent7 services]# getenforce
Enforcing
[root@cent7 services]# ps axZ |grep mysql
system_u:system_r:mysqld_safe_t:s0 11998 ? Ss 0:00 /bin/sh /usr/bin/mysqld_safe
--basedir=/usr
system_u:system_r:mysqld_t:s0 12203 ? Sl 0:00 /usr/libexec/mysqld –basedir=/usr
--datadir=/var/lib/mysql …..
[root@cent7 services]# ls -lZ /etc/my.cnf
-rw-r--r--. root root system_u:object_r:mysqld_etc_t:s0 /etc/my.cnf
[root@cent7 services]# ls -lZ /usr/libexec/mysqld
-rwxr-xr-x. root root system_u:object_r:mysqld_exec_t:s0 /usr/libexec/mysqld
16
4. RHEL 7 / CentOS 7 上での PostgreSQL
[root@cent7 ~]# getenforce
Enforcing
[root@cent7 ~]# ps axZ|grep -i postgre
system_u:system_r:postgresql_t:s0 3483 ? S 0:00 /usr/bin/postgres -D /var/lib/pgsql/data
-p 5432
system_u:system_r:postgresql_t:s0 3484 ? Ss 0:00 postgres: logger process
system_u:system_r:postgresql_t:s0 3486 ? Ss 0:00 postgres: checkpointer process
system_u:system_r:postgresql_t:s0 3487 ? Ss 0:00 postgres: writer process
system_u:system_r:postgresql_t:s0 3488 ? Ss 0:00 postgres: wal writer process
system_u:system_r:postgresql_t:s0 3489 ? Ss 0:00 postgres: autovacuum launcher process
system_u:system_r:postgresql_t:s0 3490 ? Ss 0:00 postgres: stats collector process
[root@cent7 ~]# ls -lZ /usr/bin/postgres
-rwxr-xr-x. root root system_u:object_r:postgresql_exec_t:s0 /usr/bin/postgres
[root@cent7 ~]# ls -lZ /var/lib/pgsql/
drwx------. postgres postgres system_u:object_r:postgresql_db_t:s0 backups
drwx------. postgres postgres system_u:object_r:postgresql_db_t:s0 data
17
PostgreSQL 自身のセキュリティに気をつける
18
PostgreSQL 自身のセキュリティに気をつける
CVE-2016-5424 (2016/08/11)
PostgreSQL 9.1.23 未満
PostgreSQL 9.2.18 未満の 9.2.x
PostgreSQL 9.3.14 未満の 9.3.x
PostgreSQL 9.4.9 未満の 9.4.x
PostgreSQL 9.5.4 未満の 9.5.x
PostgreSQL におけるスーパーユーザ権限を取得される脆弱性
CVE-2016-0773 (2016/02/11)
PostgreSQL 9.1.20 未満
PostgreSQL 9.2.15 未満の 9.2.x
PostgreSQL 9.3.11 未満の 9.3.x
PostgreSQL 9.4.6 未満の 9.4.x
PostgreSQL 9.5.1 未満の 9.5.x
リモートからのサービス運用妨害 (DoS)
19
PostgreSQL 自身のセキュリティに気をつける
定期的に PostgreSQL の
サイトをチェックする
20
PostgreSQL 自身のセキュリティに気をつける
ディストリビューション提供のものを使っている場合にはディストリビューシ
エラータ情報(メール)などをチェックする
21
2. 2 DBMS でのセキュリティ を える実装 考
22
じゃあ、 は次 DBMS のセキュリティだ
23
それぞれの と項目 実装
項目 対策 MySQL PostgreSQL
4.1.1 DBA 権限の適切な
付与
管理者以外にDB管理者権限を付与しない ○ ○
4.1.3 一般利用者アカウ
ントのアクセス制限
業務上必要なデータのみへのアクセス権 ○ ○
4.1.4 管理者アカウント
のアクセス制限
DB管理者は必要なデータ以外へのアクセス
を制限
○ ○
4.1.5 カラム、テーブル
へのアカウント制限
カラム、テーブルごとにアクセスできるア
カウントを制限
○ ○
4.1.6 カラム、テーブ
ルへの属性制限
カラム、テーブルごとにアクセスできる
時間帯を制限
DBFW DBFW
4.2.5 システム利用アカ
ウント等の管理
ビルトインで不要なアカウントのロックア
ウト
○ ○
4.4.1 暗号化及び権限
の管理
データの暗号化・匿名化 ○ ○
24
それぞれの と項目 実装 ( で設定 実現 )
項目 対策 MySQL PostgreSQL
4.1.1 DBA 権限の適切な
付与
管理者以外にDB管理者権限を付与しない ○ ○
4.1.3 一般利用者アカウ
ントのアクセス制限
業務上必要なデータのみへのアクセス権 ○ ○
4.1.4 管理者アカウント
のアクセス制限
DB管理者は必要なデータ以外へのアクセス
を制限
○ ○
4.1.5 カラム、テーブル
へのアカウント制限
カラム、テーブルごとにアクセスできるア
カウントを制限
○ ○
4.1.6 カラム、テーブ
ルへの属性制限
カラム、テーブルごとにアクセスできる
時間帯を制限
DBFW DBFW
4.2.5 システム利用アカ
ウント等の管理
ビルトインで不要なアカウントのロックア
ウト
○ ○
4.4.1 暗号化及び権限
の管理
データの暗号化・匿名化 ○ ○
25
それぞれの と が項目 実装(機能 必要)
項目 対策 MySQL PostgreSQL
4.1.1 DBA 権限の適切な
付与
管理者以外にDB管理者権限を付与しない ○ ○
4.1.3 一般利用者アカウ
ントのアクセス制限
業務上必要なデータのみへのアクセス権 ○ ○
4.1.4 管理者アカウント
のアクセス制限
DB管理者は必要なデータ以外へのアクセス
を制限
○ ○
4.1.5 カラム、テーブル
へのアカウント制限
カラム、テーブルごとにアクセスできるア
カウントを制限
○ ○
4.1.6 カラム、テーブ
ルへの属性制限
カラム、テーブルごとにアクセスできる
時間帯を制限
DBFW DBFW
4.2.5 システム利用アカ
ウント等の管理
ビルトインで不要なアカウントのロックア
ウト
○ ○
4.4.1 暗号化及び権限
の管理
データの暗号化・匿名化 ○ ○
26
DB のセキュリティ
キーコンポーネント
● データの暗号化・匿名化
● SQL の細かな制御 (DBFW)
27
DB のセキュリティ
キーコンポーネント
● データの暗号化・匿名化
● SQL の細かな制御 (DBFW)
28
DB サーバを っててもアプリが けがあると守 抜
( 例 ) SQL インジェクション
作りが甘いと、最新のパッケージにしても
データが見られる・抜かれる
29
DB サーバを っててもアプリが けがあると守 抜
外部ユーザ
( 例 ) SQL インジェクション
アプリの作りが甘いと、最新のパッ
ケージにしてもデータが見られる・抜
かれる
172.16.148.130
Demo
30
DB Firewall (SQL の かな文実行 細 制御 )
App
外部ユーザ
AllowBlock
● ホワイト / ブラックリスト方式選択可
能
● SQL 文法の解析
● オーバーヘッドを極力抑える
OSS: PostgreSQL 用 SQL ファイアーウォール「 sql_firewall 」
Nginx などの WAF でも最近は防げる
172.16.148.130
172.16.148.128
31
アプリを しても のものに が つかると対策 別 脆弱性 見
( 例 ) Struts2 の脆弱性 (CVE-2017-5638)
SQL インジェクション対策をしていても、
Struts2 のゼロデイ脆弱性で、直接 SQL を
実行されてデータが見られる・抜かれる
Demo
データは平文だと困る
32
DB のセキュリティ
キーコンポーネント
● データの暗号化・匿名化
● SQL の細かな制御 (DBFW)
33
DB の暗号化
製品名 アルゴリズム 鍵サイズ
Oracle Advanced Security 12g Rel1 DES 168bits
AES(表領域Default) 128bits
AES(列レベルDefault) 192bits
AES 256bits
pgcrypto with OpenSSL DES 168bits
AES 256bits
34
DB の暗号化 ( 理想 )
DBMS_CRYPTO
pgcrypto
App
データ盗難
内部の不正者
HSM
長所
● 安全性が高い
短所
● アプリケーションに改修が必要
● 移行性が低下する
● 性能劣化の懸念
メモリ
35
DB の暗号化 (Transparent Data Encryption: TDE)
App
暗号化あり
暗号化無し
メモリ
暗号化 / 復号化
見えるので DB Firewall で防ぐ
内部の不正者
触れるので ACL で防ぐ
ACL
長所
● アプリケーションは改修不要
● 移行性の高い SQL
● 性能劣化は最小限( DB が担当 )
● 鍵は DB 側で管理
短所
● 安全性の低下
(DB Firewall, ACL, 特権管理など
その他の機能/製品を
組み合わせて補う )
DBFirewall
参考: Oracle TDE
36
DB の暗号化 (File System との い暗号化 違 )
メモリ
OS ユーザからも
暗号化で見えない
メモリ
OS のユーザからは
平文で見える
内部ユーザの脅威
への対応
Struts2 など直接
SQL を実行された
時の対応
参考: Oracle TDE( 例 ) Struts2 の脆弱性 (CVE-2017-5638)
37
じゃあ、 Struts2 の で してた脆弱性 暗号化 場合
( 例 ) Struts2 の脆弱性 (CVE-2017-5638)
Struts2 のゼロデイ脆弱性で、直接 SQL を
実行されてデータが見られる・抜かれるが
暗号化していた場合にはどうなるか
Demo
結局、データは極力暗号化しといたほうが良
38
でも DB しててもアプリが けがあると暗号化 抜
外部ユーザ
( 例 ) SQL インジェクション
アプリの作りが甘いと、暗号化してて
もデータが見られる・抜かれる
172.16.148.130
Demo
39
は結局
・インジェクションなどの対策だけでもダメ
・暗号化だけでもダメ
両方を組み合わせることで意味がある
40
2. 3 の を える監査 実装 考
41
じゃあ、 は次 DB の だ監査
42
DB/OS の監査
SIEM やフォレンジック製品と連動させる
・監査ログが確実に出るようにする( OS 側の実装・設定)
・ SQL の実行元・実行内容などを細かく保存する
・ログなどは改変不可なように別筐体に入れる
モニタリングツール(外だし)の必要性
● DAM(Database Activity Monitoring)
43
DAM(Database Access Monitoring)
リアルタイムに、 SQL での全ての操作を検出し記録
● 複数 DB プラットフォームを横断する DB 管理者の活動をとら
ポリシー違反に対して警告
● SQL インジェクション攻撃も警告
● エージェント/情報収集サーバ構成
「誰が」「いつ」「どこから」「何に」「何を」
44
DAM(Database Access Monitoring)
44
App
外部ユーザ
システム管理者
監査ログ
● Oracle Database Firewall and Audit Vault
● IMPREVA SecureSphere Database Activity Monitor
… etc.
DBMS は監査ログがきちんと
出力されるようにする
( パフォーマンスと兼ね合い)
45
じゃあ、 OSS はないの?
MySQL: McAfee MySQL Audit Plugin
(https://github.com/mcafee/mysql-audit)
{"msg-type":"activity","date":"1480477660581","thread-id":"1","query-id":"0",
"user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd":
"Connect","query":"Connect"}
{"msg-type":"activity","date":"1480477660582","thread-id":"1","query-id":"6",
"user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd":
"show_grants","query":"SHOW GRANTS"}
{"msg-type":"activity","date":"1480477660626","thread-id":"1","query-id":"9",
"user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd":
"select","query":"SELECT
46
MySQL の CVE-2016-6662 の攻撃 例
--snip--
000000000098280000000000004e03000000000000000000000000000001000000000000000
000000000000000") INTO DUMPFILE '/var/lib/mysql/mysql_hookandroot_lib.so'"}
{"msg-type":"activity","date":"1480484785741","thread-id":"2","query-
id":"25","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd
":"insert","objects":
[{"db":"poctestdb","name":"poctable","obj_type":"TABLE"}],"query":"INSERT INTO `poctable`
VALUES('execute the trigger!')"}
{"msg-type":"activity","date":"1480484785741","thread-id":"2","query-
id":"29","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd
":"select","query":"select "nn# 0ldSQL_MySQL_RCE_exploit got
here :)nn[mysqld]nmalloc_lib='/var/lib/mysql/mysql_hookandroot_lib.so'nn[abyss]n" INTO
void"}
{"msg-type":"activity","date":"1480484785742","thread-id":"2","query-
id":"33","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd
":"select","query":"SELECT load_file('/etc/my.cnf')"}
47
じゃあ、 OSS はないの?
PostgreSQL: PGAudit
(http://pgaudit.org/)
AUDIT: OBJECT,1,1,READ,SELECT,TABLE,public.account,select password
from account
AUDIT: OBJECT,2,1,WRITE,UPDATE,TABLE,public.account,update account
set password = 'HASH2'
AUDIT: OBJECT,3,1,READ,SELECT,TABLE,public.account,select account.password,
account_role_map.role_id
from account
inner join account_role_map
on account.id = account_role_map.account_id
AUDIT: OBJECT,3,1,READ,SELECT,TABLE,public.account_role_map,select account.password,
account_role_map.role_id
from account
inner join account_role_map
on account.id = account_role_map.account_id
48
ログを めたらどうするか集
一般的には SIEM などの予兆検知ツール等と連動
可視化して、きちんとログを役立てる
Splunk
Arcsight
49
3. まとめ
50
まとめ
ネットワーク/ OS レベルでもセキュリティを保つ
● 適切な設計・制御を行う/通信の暗号化は必須 !!
● SELinux は有効化しましょう!!
● ( 難しいだろうけれど ) パッケージは最新にしましょう。
DB のセキュリティ
● 適切な設計・制御を行う
● DB Firewall の導入を検討( DAM 製品と通常一体化)
● 可能ならば重要なデータは暗号化を検討。
● モニタリングのための監査ログも検討(パフォーマンスと兼ね合い)。
● ログは集めたら可視化・ SIEM 等とも連動。取りっぱなしでは勿体無い
。
51
Thank You!!!

Mais conteúdo relacionado

Mais procurados

OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証Tetsurou Yano
 
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert LipovskýCODE BLUE
 
仮想ネットワーク構築8枚slide
仮想ネットワーク構築8枚slide仮想ネットワーク構築8枚slide
仮想ネットワーク構築8枚slidek009c1271
 
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介Kodai Terashima
 
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」Atsushi Tanaka
 
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000Tetsurou Yano
 
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視Kodai Terashima
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
企業システムにSELinuxを適用するときの検討事項
企業システムにSELinuxを適用するときの検討事項企業システムにSELinuxを適用するときの検討事項
企業システムにSELinuxを適用するときの検討事項Atsushi Mitsu
 
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたSCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたwind06106
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能Ryusuke Kajiyama
 
DRBDを活用したAzure上でのデータ保護
DRBDを活用したAzure上でのデータ保護DRBDを活用したAzure上でのデータ保護
DRBDを活用したAzure上でのデータ保護Ken Sawada
 
Linuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャルLinuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャルToshiharu Harada, Ph.D
 

Mais procurados (19)

OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証OSC2014 東京 owncloud性能検証
OSC2014 東京 owncloud性能検証
 
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský
産業制御システムに対するStuxnet以来最大の脅威 by Anton Cherepanov, Róbert Lipovský
 
仮想ネットワーク構築8枚slide
仮想ネットワーク構築8枚slide仮想ネットワーク構築8枚slide
仮想ネットワーク構築8枚slide
 
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
オープンソースでシステム監視!統合監視ソフトウェアZABBIXの機能と利用事例のご紹介
 
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
OSC 2014 Tokyo/Spring 「Zabbix 2.2を使ってみよう」
 
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
 
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視
オープンソース統合監視ソフトウェア Zabbix 2.0によるクラウド監視
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
企業システムにSELinuxを適用するときの検討事項
企業システムにSELinuxを適用するときの検討事項企業システムにSELinuxを適用するときの検討事項
企業システムにSELinuxを適用するときの検討事項
 
Zabbix入門
Zabbix入門Zabbix入門
Zabbix入門
 
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみたSCUGJ第19回勉強会:RASGWとなにかでつないでみた
SCUGJ第19回勉強会:RASGWとなにかでつないでみた
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
NW入門
NW入門NW入門
NW入門
 
Sfstudy#2チーム5
Sfstudy#2チーム5Sfstudy#2チーム5
Sfstudy#2チーム5
 
141030ceph
141030ceph141030ceph
141030ceph
 
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
[中国地方DB勉強会] 第22回 Webアプリ開発をデータベース側から変革していく - MySQL 8.0新機能
 
DRBDを活用したAzure上でのデータ保護
DRBDを活用したAzure上でのデータ保護DRBDを活用したAzure上でのデータ保護
DRBDを活用したAzure上でのデータ保護
 
Linuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャルLinuxセキュリティ強化エッセンシャル
Linuxセキュリティ強化エッセンシャル
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 

Semelhante a Postgre SQL security_20170412

Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigKazuki Omo
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboD22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboInsight Technology, Inc.
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことKeisuke Nishitani
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナーKazuko Itoda
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門Takashi Takizawa
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssKenichi Sonoda
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
Androidアプリ開発者向け組み込みdb empress
Androidアプリ開発者向け組み込みdb empressAndroidアプリ開発者向け組み込みdb empress
Androidアプリ開発者向け組み込みdb empressITDORAKU
 
whats-new-in-elastic-7-14
whats-new-in-elastic-7-14whats-new-in-elastic-7-14
whats-new-in-elastic-7-14Shotaro Suzuki
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 
rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???Hiroki Ishikawa
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
Azure IaaS 解説
Azure IaaS 解説Azure IaaS 解説
Azure IaaS 解説wintechq
 
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale Japan株式会社
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...Insight Technology, Inc.
 

Semelhante a Postgre SQL security_20170412 (20)

Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Osc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sigOsc2017 tokyo spring_soss_sig
Osc2017 tokyo spring_soss_sig
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
Snapdragon-SCORER
Snapdragon-SCORERSnapdragon-SCORER
Snapdragon-SCORER
 
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji ShinkuboD22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
D22 目覚めよDBエンジニア 〜世界最速カラムナーデータベースは本物だ!〜 by Koji Shinkubo
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
20130203 oss-db-lpi
20130203 oss-db-lpi20130203 oss-db-lpi
20130203 oss-db-lpi
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
Oci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ssOci file storage service deep dive 20181001 ss
Oci file storage service deep dive 20181001 ss
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
Androidアプリ開発者向け組み込みdb empress
Androidアプリ開発者向け組み込みdb empressAndroidアプリ開発者向け組み込みdb empress
Androidアプリ開発者向け組み込みdb empress
 
whats-new-in-elastic-7-14
whats-new-in-elastic-7-14whats-new-in-elastic-7-14
whats-new-in-elastic-7-14
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 
rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???rsyslog + SE-PostgreSQL = ???
rsyslog + SE-PostgreSQL = ???
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
Azure IaaS 解説
Azure IaaS 解説Azure IaaS 解説
Azure IaaS 解説
 
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
[db tech showcase OSS 2017] A24: マイクロソフトと OSS Database - Azure Database for M...
 

Mais de Kazuki Omo

OpenSSF Day Tokyo 2023 Keynote presentation.
OpenSSF Day Tokyo 2023 Keynote presentation.OpenSSF Day Tokyo 2023 Keynote presentation.
OpenSSF Day Tokyo 2023 Keynote presentation.Kazuki Omo
 
Don't you have dream about Foreign Company? How about real one?
Don't you have dream about Foreign Company? How about real one?Don't you have dream about Foreign Company? How about real one?
Don't you have dream about Foreign Company? How about real one?Kazuki Omo
 
2022Q2 最新ランサムウェア動向と対処方法.pptx
2022Q2 最新ランサムウェア動向と対処方法.pptx2022Q2 最新ランサムウェア動向と対処方法.pptx
2022Q2 最新ランサムウェア動向と対処方法.pptxKazuki Omo
 
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)Kazuki Omo
 
Osc2018 tokyo spring_scap
Osc2018 tokyo spring_scapOsc2018 tokyo spring_scap
Osc2018 tokyo spring_scapKazuki Omo
 
Linux Security Status on 2017
Linux Security Status on 2017Linux Security Status on 2017
Linux Security Status on 2017Kazuki Omo
 
Cve trends 20170531
Cve trends 20170531Cve trends 20170531
Cve trends 20170531Kazuki Omo
 
SELinux_Updates_PoC_20170516
SELinux_Updates_PoC_20170516SELinux_Updates_PoC_20170516
SELinux_Updates_PoC_20170516Kazuki Omo
 
OSC ossセキュリティ技術の会について
OSC ossセキュリティ技術の会についてOSC ossセキュリティ技術の会について
OSC ossセキュリティ技術の会についてKazuki Omo
 
RHELのEOLがCentOSに及ぼす影響
RHELのEOLがCentOSに及ぼす影響RHELのEOLがCentOSに及ぼす影響
RHELのEOLがCentOSに及ぼす影響Kazuki Omo
 
SCAP for openSUSE
SCAP for openSUSESCAP for openSUSE
SCAP for openSUSEKazuki Omo
 
Edb summit 2016_20160216.omo
Edb summit 2016_20160216.omoEdb summit 2016_20160216.omo
Edb summit 2016_20160216.omoKazuki Omo
 
Docker app armor_usecase
Docker app armor_usecaseDocker app armor_usecase
Docker app armor_usecaseKazuki Omo
 

Mais de Kazuki Omo (14)

OpenSSF Day Tokyo 2023 Keynote presentation.
OpenSSF Day Tokyo 2023 Keynote presentation.OpenSSF Day Tokyo 2023 Keynote presentation.
OpenSSF Day Tokyo 2023 Keynote presentation.
 
Don't you have dream about Foreign Company? How about real one?
Don't you have dream about Foreign Company? How about real one?Don't you have dream about Foreign Company? How about real one?
Don't you have dream about Foreign Company? How about real one?
 
2022Q2 最新ランサムウェア動向と対処方法.pptx
2022Q2 最新ランサムウェア動向と対処方法.pptx2022Q2 最新ランサムウェア動向と対処方法.pptx
2022Q2 最新ランサムウェア動向と対処方法.pptx
 
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)
エンジニアのキャリアアップを考える(OSC 2018 Fall Tokyo)
 
Osc2018 tokyo spring_scap
Osc2018 tokyo spring_scapOsc2018 tokyo spring_scap
Osc2018 tokyo spring_scap
 
Linux Security Status on 2017
Linux Security Status on 2017Linux Security Status on 2017
Linux Security Status on 2017
 
Cve trends 20170531
Cve trends 20170531Cve trends 20170531
Cve trends 20170531
 
SELinux_Updates_PoC_20170516
SELinux_Updates_PoC_20170516SELinux_Updates_PoC_20170516
SELinux_Updates_PoC_20170516
 
OSC ossセキュリティ技術の会について
OSC ossセキュリティ技術の会についてOSC ossセキュリティ技術の会について
OSC ossセキュリティ技術の会について
 
RHELのEOLがCentOSに及ぼす影響
RHELのEOLがCentOSに及ぼす影響RHELのEOLがCentOSに及ぼす影響
RHELのEOLがCentOSに及ぼす影響
 
SCAP for openSUSE
SCAP for openSUSESCAP for openSUSE
SCAP for openSUSE
 
6 anti virus
6 anti virus6 anti virus
6 anti virus
 
Edb summit 2016_20160216.omo
Edb summit 2016_20160216.omoEdb summit 2016_20160216.omo
Edb summit 2016_20160216.omo
 
Docker app armor_usecase
Docker app armor_usecaseDocker app armor_usecase
Docker app armor_usecase
 

Postgre SQL security_20170412

  • 1. データベースセキュリティの基礎 Kazuki Omo(  面 和毅 ): ka-omo@sios.com SIOS Technology, Inc.
  • 2. 2 Who am I ? - Security Researcher/Engineer (16 years) - SELinux/MAC Evangelist (11 years) - Antivirus Engineer (3 years) - SIEM Engineer (3 years) - Linux Engineer (16 years) OSS セキュリティ技術の会 (3 月発足 ) http://www.secureoss.jp/
  • 3. 3 アジェンダ 1. データベースセキュリティのガイドライン 2. OSS での実装を考える 2. 1 OS レベルでのセキュリティ実装を考える 2. 2 DBMS でのセキュリティ実装を考える 2.3 監査の実装を考える 3. まとめ
  • 5. 5 DB のセキュリティ標準 DataBase Security Consortium スタンダードについて色々やってます。
  • 7. 7 DB ガイドライン内部不正対策 4. 管理者の抑制 4.1 アクセス制御 4.2 認証方式 4.3 管理者の分掌 4.4 暗号化・鍵管理 4.5 DB 周辺デバイスの 管理
  • 8. 8 DB ガイドライン内部不正対策 5.1 ポリシーの制定 5.2 保全 5.3 監査・監視体制 5.4 監査の実施 5. 運用の実施
  • 9. 9 4. 管理者の抑制   システムで出来ること アクセス制御 ● OS上のファイル・ディレクトリへのきっちりしたアクセス 権の設定 ● DBA権限のきっちりした取扱い ● 各DBアカウントへの必要なだけの権限付与 ● 機密情報へのアクセスの制限 認証方式 ● パスワードポリシー ● 二因子認証(多要素認証)
  • 10. 10 4. 管理者の抑制   システムで出来ること 暗号化・鍵管理 ● DB暗号化やデータマスキング ● クエリ発行通路の暗号化 周辺デバイス ● ネットワークセグメントへのアクセス制限(ACL等) ● 物理コンソールの制限 ● DB暗号化やデータマスキング
  • 11. 11 5. 運用の実施 システムで出来ること 保全 ● アクセスログの収集・保全 監査 ● 監査証跡のレポート ● アラートの出力 ● ポリシーから外れた操作・アクセス履歴のログ ● 管理者アカウントの操作・アクセス履歴のログ ● セキュリティ設定の変更の取得
  • 12. 12 2. OSS での を える実装 考
  • 13. 13 2. 1 OS/Software レベルでの セキュリティ を える実装 考
  • 15. 15 4. RHEL 7 / CentOS 7 上での MySQL [root@cent7 services]# getenforce Enforcing [root@cent7 services]# ps axZ |grep mysql system_u:system_r:mysqld_safe_t:s0 11998 ? Ss 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr system_u:system_r:mysqld_t:s0 12203 ? Sl 0:00 /usr/libexec/mysqld –basedir=/usr --datadir=/var/lib/mysql ….. [root@cent7 services]# ls -lZ /etc/my.cnf -rw-r--r--. root root system_u:object_r:mysqld_etc_t:s0 /etc/my.cnf [root@cent7 services]# ls -lZ /usr/libexec/mysqld -rwxr-xr-x. root root system_u:object_r:mysqld_exec_t:s0 /usr/libexec/mysqld
  • 16. 16 4. RHEL 7 / CentOS 7 上での PostgreSQL [root@cent7 ~]# getenforce Enforcing [root@cent7 ~]# ps axZ|grep -i postgre system_u:system_r:postgresql_t:s0 3483 ? S 0:00 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432 system_u:system_r:postgresql_t:s0 3484 ? Ss 0:00 postgres: logger process system_u:system_r:postgresql_t:s0 3486 ? Ss 0:00 postgres: checkpointer process system_u:system_r:postgresql_t:s0 3487 ? Ss 0:00 postgres: writer process system_u:system_r:postgresql_t:s0 3488 ? Ss 0:00 postgres: wal writer process system_u:system_r:postgresql_t:s0 3489 ? Ss 0:00 postgres: autovacuum launcher process system_u:system_r:postgresql_t:s0 3490 ? Ss 0:00 postgres: stats collector process [root@cent7 ~]# ls -lZ /usr/bin/postgres -rwxr-xr-x. root root system_u:object_r:postgresql_exec_t:s0 /usr/bin/postgres [root@cent7 ~]# ls -lZ /var/lib/pgsql/ drwx------. postgres postgres system_u:object_r:postgresql_db_t:s0 backups drwx------. postgres postgres system_u:object_r:postgresql_db_t:s0 data
  • 18. 18 PostgreSQL 自身のセキュリティに気をつける CVE-2016-5424 (2016/08/11) PostgreSQL 9.1.23 未満 PostgreSQL 9.2.18 未満の 9.2.x PostgreSQL 9.3.14 未満の 9.3.x PostgreSQL 9.4.9 未満の 9.4.x PostgreSQL 9.5.4 未満の 9.5.x PostgreSQL におけるスーパーユーザ権限を取得される脆弱性 CVE-2016-0773 (2016/02/11) PostgreSQL 9.1.20 未満 PostgreSQL 9.2.15 未満の 9.2.x PostgreSQL 9.3.11 未満の 9.3.x PostgreSQL 9.4.6 未満の 9.4.x PostgreSQL 9.5.1 未満の 9.5.x リモートからのサービス運用妨害 (DoS)
  • 21. 21 2. 2 DBMS でのセキュリティ を える実装 考
  • 22. 22 じゃあ、 は次 DBMS のセキュリティだ
  • 23. 23 それぞれの と項目 実装 項目 対策 MySQL PostgreSQL 4.1.1 DBA 権限の適切な 付与 管理者以外にDB管理者権限を付与しない ○ ○ 4.1.3 一般利用者アカウ ントのアクセス制限 業務上必要なデータのみへのアクセス権 ○ ○ 4.1.4 管理者アカウント のアクセス制限 DB管理者は必要なデータ以外へのアクセス を制限 ○ ○ 4.1.5 カラム、テーブル へのアカウント制限 カラム、テーブルごとにアクセスできるア カウントを制限 ○ ○ 4.1.6 カラム、テーブ ルへの属性制限 カラム、テーブルごとにアクセスできる 時間帯を制限 DBFW DBFW 4.2.5 システム利用アカ ウント等の管理 ビルトインで不要なアカウントのロックア ウト ○ ○ 4.4.1 暗号化及び権限 の管理 データの暗号化・匿名化 ○ ○
  • 24. 24 それぞれの と項目 実装 ( で設定 実現 ) 項目 対策 MySQL PostgreSQL 4.1.1 DBA 権限の適切な 付与 管理者以外にDB管理者権限を付与しない ○ ○ 4.1.3 一般利用者アカウ ントのアクセス制限 業務上必要なデータのみへのアクセス権 ○ ○ 4.1.4 管理者アカウント のアクセス制限 DB管理者は必要なデータ以外へのアクセス を制限 ○ ○ 4.1.5 カラム、テーブル へのアカウント制限 カラム、テーブルごとにアクセスできるア カウントを制限 ○ ○ 4.1.6 カラム、テーブ ルへの属性制限 カラム、テーブルごとにアクセスできる 時間帯を制限 DBFW DBFW 4.2.5 システム利用アカ ウント等の管理 ビルトインで不要なアカウントのロックア ウト ○ ○ 4.4.1 暗号化及び権限 の管理 データの暗号化・匿名化 ○ ○
  • 25. 25 それぞれの と が項目 実装(機能 必要) 項目 対策 MySQL PostgreSQL 4.1.1 DBA 権限の適切な 付与 管理者以外にDB管理者権限を付与しない ○ ○ 4.1.3 一般利用者アカウ ントのアクセス制限 業務上必要なデータのみへのアクセス権 ○ ○ 4.1.4 管理者アカウント のアクセス制限 DB管理者は必要なデータ以外へのアクセス を制限 ○ ○ 4.1.5 カラム、テーブル へのアカウント制限 カラム、テーブルごとにアクセスできるア カウントを制限 ○ ○ 4.1.6 カラム、テーブ ルへの属性制限 カラム、テーブルごとにアクセスできる 時間帯を制限 DBFW DBFW 4.2.5 システム利用アカ ウント等の管理 ビルトインで不要なアカウントのロックア ウト ○ ○ 4.4.1 暗号化及び権限 の管理 データの暗号化・匿名化 ○ ○
  • 28. 28 DB サーバを っててもアプリが けがあると守 抜 ( 例 ) SQL インジェクション 作りが甘いと、最新のパッケージにしても データが見られる・抜かれる
  • 29. 29 DB サーバを っててもアプリが けがあると守 抜 外部ユーザ ( 例 ) SQL インジェクション アプリの作りが甘いと、最新のパッ ケージにしてもデータが見られる・抜 かれる 172.16.148.130 Demo
  • 30. 30 DB Firewall (SQL の かな文実行 細 制御 ) App 外部ユーザ AllowBlock ● ホワイト / ブラックリスト方式選択可 能 ● SQL 文法の解析 ● オーバーヘッドを極力抑える OSS: PostgreSQL 用 SQL ファイアーウォール「 sql_firewall 」 Nginx などの WAF でも最近は防げる 172.16.148.130 172.16.148.128
  • 31. 31 アプリを しても のものに が つかると対策 別 脆弱性 見 ( 例 ) Struts2 の脆弱性 (CVE-2017-5638) SQL インジェクション対策をしていても、 Struts2 のゼロデイ脆弱性で、直接 SQL を 実行されてデータが見られる・抜かれる Demo データは平文だと困る
  • 33. 33 DB の暗号化 製品名 アルゴリズム 鍵サイズ Oracle Advanced Security 12g Rel1 DES 168bits AES(表領域Default) 128bits AES(列レベルDefault) 192bits AES 256bits pgcrypto with OpenSSL DES 168bits AES 256bits
  • 34. 34 DB の暗号化 ( 理想 ) DBMS_CRYPTO pgcrypto App データ盗難 内部の不正者 HSM 長所 ● 安全性が高い 短所 ● アプリケーションに改修が必要 ● 移行性が低下する ● 性能劣化の懸念 メモリ
  • 35. 35 DB の暗号化 (Transparent Data Encryption: TDE) App 暗号化あり 暗号化無し メモリ 暗号化 / 復号化 見えるので DB Firewall で防ぐ 内部の不正者 触れるので ACL で防ぐ ACL 長所 ● アプリケーションは改修不要 ● 移行性の高い SQL ● 性能劣化は最小限( DB が担当 ) ● 鍵は DB 側で管理 短所 ● 安全性の低下 (DB Firewall, ACL, 特権管理など その他の機能/製品を 組み合わせて補う ) DBFirewall 参考: Oracle TDE
  • 36. 36 DB の暗号化 (File System との い暗号化 違 ) メモリ OS ユーザからも 暗号化で見えない メモリ OS のユーザからは 平文で見える 内部ユーザの脅威 への対応 Struts2 など直接 SQL を実行された 時の対応 参考: Oracle TDE( 例 ) Struts2 の脆弱性 (CVE-2017-5638)
  • 37. 37 じゃあ、 Struts2 の で してた脆弱性 暗号化 場合 ( 例 ) Struts2 の脆弱性 (CVE-2017-5638) Struts2 のゼロデイ脆弱性で、直接 SQL を 実行されてデータが見られる・抜かれるが 暗号化していた場合にはどうなるか Demo 結局、データは極力暗号化しといたほうが良
  • 38. 38 でも DB しててもアプリが けがあると暗号化 抜 外部ユーザ ( 例 ) SQL インジェクション アプリの作りが甘いと、暗号化してて もデータが見られる・抜かれる 172.16.148.130 Demo
  • 40. 40 2. 3 の を える監査 実装 考
  • 41. 41 じゃあ、 は次 DB の だ監査
  • 42. 42 DB/OS の監査 SIEM やフォレンジック製品と連動させる ・監査ログが確実に出るようにする( OS 側の実装・設定) ・ SQL の実行元・実行内容などを細かく保存する ・ログなどは改変不可なように別筐体に入れる モニタリングツール(外だし)の必要性 ● DAM(Database Activity Monitoring)
  • 43. 43 DAM(Database Access Monitoring) リアルタイムに、 SQL での全ての操作を検出し記録 ● 複数 DB プラットフォームを横断する DB 管理者の活動をとら ポリシー違反に対して警告 ● SQL インジェクション攻撃も警告 ● エージェント/情報収集サーバ構成 「誰が」「いつ」「どこから」「何に」「何を」
  • 44. 44 DAM(Database Access Monitoring) 44 App 外部ユーザ システム管理者 監査ログ ● Oracle Database Firewall and Audit Vault ● IMPREVA SecureSphere Database Activity Monitor … etc. DBMS は監査ログがきちんと 出力されるようにする ( パフォーマンスと兼ね合い)
  • 45. 45 じゃあ、 OSS はないの? MySQL: McAfee MySQL Audit Plugin (https://github.com/mcafee/mysql-audit) {"msg-type":"activity","date":"1480477660581","thread-id":"1","query-id":"0", "user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd": "Connect","query":"Connect"} {"msg-type":"activity","date":"1480477660582","thread-id":"1","query-id":"6", "user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd": "show_grants","query":"SHOW GRANTS"} {"msg-type":"activity","date":"1480477660626","thread-id":"1","query-id":"9", "user":"sios","priv_user":"sios","host":"router","ip":"172.16.148.1","cmd": "select","query":"SELECT
  • 46. 46 MySQL の CVE-2016-6662 の攻撃 例 --snip-- 000000000098280000000000004e03000000000000000000000000000001000000000000000 000000000000000") INTO DUMPFILE '/var/lib/mysql/mysql_hookandroot_lib.so'"} {"msg-type":"activity","date":"1480484785741","thread-id":"2","query- id":"25","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd ":"insert","objects": [{"db":"poctestdb","name":"poctable","obj_type":"TABLE"}],"query":"INSERT INTO `poctable` VALUES('execute the trigger!')"} {"msg-type":"activity","date":"1480484785741","thread-id":"2","query- id":"29","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd ":"select","query":"select "nn# 0ldSQL_MySQL_RCE_exploit got here :)nn[mysqld]nmalloc_lib='/var/lib/mysql/mysql_hookandroot_lib.so'nn[abyss]n" INTO void"} {"msg-type":"activity","date":"1480484785742","thread-id":"2","query- id":"33","user":"attackertest","priv_user":"attackertest","host":"router","ip":"172.16.148.1","cmd ":"select","query":"SELECT load_file('/etc/my.cnf')"}
  • 47. 47 じゃあ、 OSS はないの? PostgreSQL: PGAudit (http://pgaudit.org/) AUDIT: OBJECT,1,1,READ,SELECT,TABLE,public.account,select password from account AUDIT: OBJECT,2,1,WRITE,UPDATE,TABLE,public.account,update account set password = 'HASH2' AUDIT: OBJECT,3,1,READ,SELECT,TABLE,public.account,select account.password, account_role_map.role_id from account inner join account_role_map on account.id = account_role_map.account_id AUDIT: OBJECT,3,1,READ,SELECT,TABLE,public.account_role_map,select account.password, account_role_map.role_id from account inner join account_role_map on account.id = account_role_map.account_id
  • 48. 48 ログを めたらどうするか集 一般的には SIEM などの予兆検知ツール等と連動 可視化して、きちんとログを役立てる Splunk Arcsight
  • 50. 50 まとめ ネットワーク/ OS レベルでもセキュリティを保つ ● 適切な設計・制御を行う/通信の暗号化は必須 !! ● SELinux は有効化しましょう!! ● ( 難しいだろうけれど ) パッケージは最新にしましょう。 DB のセキュリティ ● 適切な設計・制御を行う ● DB Firewall の導入を検討( DAM 製品と通常一体化) ● 可能ならば重要なデータは暗号化を検討。 ● モニタリングのための監査ログも検討(パフォーマンスと兼ね合い)。 ● ログは集めたら可視化・ SIEM 等とも連動。取りっぱなしでは勿体無い 。

Notas do Editor

  1. Hello Everyone Thanks for attending this session. In this session, I’ll quickly explain what is “SCAP”, and make clear what parts of SCAP contents/components are missing for openSUSE, and show how to make some example based on other OS's contents.
  2. Here is my background for security and OSS area. I spent over 15 years for Security Researching and Business. Also I have experience to inplement those kind of Security Product to customer(Big customer to small). And I was working as SELinux(you know) Evangelist 4 years.
  3. OK here is a quickly agenda.
  4. At first. I want to do quick explanation about “What is SCAP” and so on. So, in this room, how many people know about SCAP?