
mysql のセキュリティ設定を提供します。攻撃者に対する攻撃面を最小限に抑えた設定で、本番環境に対応した mysql インスタンスをセットアップすることを目的としています。
この cookbook は mysql のセキュリティ設定に焦点を当てており、インストールには mysql cookbook を再利用しています。そのため、Chef で既存の mysql 設定の上にこのハードニング層を追加できます。
この cookbook は os-hardening および ssh-hardening と問題なく連携するように最適化されています。これらがなくても問題なく動作しますが、apt-get update や yum update などの前提条件がすべて満たされていることを確認する必要があります。
サンプルの role は次のようになります。
{
"name": "mysql",
"default_attributes": { },
"override_attributes": { },
"json_class": "Chef::Role",
"description": "MySql Hardened Server Test Role",
"chef_type": "role",
"default_attributes" : {
"mysql": {
"server_root_password": "iloverandompasswordsbutthiswilldo",
"server_debian_password": "iloverandompasswordsbutthiswilldo"
}
},
"run_list": [
"recipe[chef-solo-search]",
"recipe[apt]",
"recipe[mysql::server]",
"recipe[mysql-hardening]"
]
}
このレシピは mysql cookbook のオーバーレイレシピであり、mysql-hardening::hardening を適用します。
以下を runlist に追加し、セキュリティオプションの属性をカスタマイズしてください。
"recipe[mysql::server]",
"recipe[mysql-hardening]"
このハードニングレシピはハードニングをインストールしますが、Mysql、MariaDB、または Percona の既存のインストールを前提としています。mysql cookbook を使用していない場合は、属性を適宜調整する必要があるかもしれません。
node['mysql']['service_name'] = 'default'node['mysql']['data_dir'] = '/var/lib/mysql'node['mysql-hardening']['conf-file'] = '/etc/mysql/conf.d/hardening.cnf'node['mysql-hardening']['user'] = 'mysql'詳細情報は Deutsche Telekom (ドイツ語) および Symantec で既に公開されています。
このセットアップでは、デフォルトで以下のパラメータを設定します。
user = mysql
port = 3306
bind-address = X.Y.Z.W
# via ['mysql']['security']['local_infile']
local-infile = 0
# via ['mysql']['security']['safe_user_create']
safe-user-create = 1
# via ['mysql']['security']['secure_auth']
secure-auth = 1
# via ['mysql']['security']['skip_show_database']
skip-show-database
# via ['mysql']['security']['skip_symbolic_links']
skip-symbolic-links
# via ['mysql']['security']['automatic_sp_privileges']
automatic_sp_privileges = 0
# via ['mysql']['security']['secure-file-priv']
secure-file-priv = /tmp
さらに、以下のパラメータが設定されていないことを保証します。
['mysql']['security']['secure_auth'] による old-passwords の無効化node['mysql']['security']['allow-suspicious-udfs'] による allow-suspicious-udfs の無効化さらに、/var/lib/mysql のパーミッションは mysql ユーザーに制限されます。
# Install dependencies
gem install bundler
bundle install
# Do lint checks
bundle exec rake lint
# Fetch tests
git clone https://github.com/dev-sec/tests-mysql-hardening test/integration
# fast test on one machine
bundle exec kitchen test default-ubuntu-1204
# test on all machines
bundle exec kitchen test
# for development
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
この cookbook には、簡単に開発するための guard ファイルが付属しています。開発中、guard はフォルダを監視し、foodcritic と robocop を実行します。
# list all plugins
bundle exec guard list
# run guard with foodcritic and robocop
bundle exec guard -P Foodcritic Rubocop
Apache License, Version 2.0 (以下「ライセンス」) に基づいてライセンスされています。 ライセンスに準拠する場合を除き、このファイルを使用することはできません。 ライセンスのコピーは以下から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用法で要求される場合、または書面による同意がある場合を除き、 ライセンスに基づいて配布されるソフトウェアは「現状のまま」で配布され、 明示的または黙示的を問わず、いかなる保証も伴いません。 ライセンスに基づく特定の言語による許可および制限については、 ライセンスを参照してください。