
Ce cookbook chef fournit une configuration de sécurité pour mysql.
Fournit des configurations de sécurité pour mysql. Il est destiné à mettre en place des instances mysql prêtes pour la production, configurées avec une surface d'attaque minimale pour les attaquants.
Ce cookbook se concentre sur la configuration de sécurité de mysql et réutilise le cookbook mysql pour l'installation. Vous pouvez donc ajouter cette couche de durcissement au-dessus de votre configuration mysql existante dans Chef.
Nous avons optimisé ce cookbook pour qu'il fonctionne sans difficulté avec et . Il fonctionnera bien sans, mais vous devez vous assurer que toutes les préconditions comme ou sont remplies.
apt-get updateyum updateUn rôle d'exemple peut ressembler à :
{
"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]"
]
}
Cette recipe est une recipe de superposition pour le cookbook mysql) et applique mysql-hardening::hardening
Ajoutez ce qui suit à votre runlist et personnalisez les attributs des options de sécurité
"recipe[mysql::server]",
"recipe[mysql-hardening]"
Cette recipe de durcissement installe le durcissement mais s'attend à une installation existante de Mysql, MariaDB ou Percona. Si vous n'utilisez pas le cookbook mysql, vous devrez peut-être adapter les attributs :
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'Des informations complémentaires sont déjà disponibles chez Deutsche Telekom (allemand) et Symantec
Cette configuration définit les paramètres suivants par défaut
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
De plus, elle garantit que les paramètres suivants ne sont pas définis
['mysql']['security']['secure_auth']node['mysql']['security']['allow-suspicious-udfs']En outre, les permissions de /var/lib/mysql sont limitées à l'utilisateur 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
Ce cookbook est livré avec un fichier guard pour faciliter le développement. Pendant le développement, guard surveille les dossiers et exécute footcritic et robocop.
# list all plugins
bundle exec guard list
# run guard with foodcritic and robocop
bundle exec guard -P Foodcritic Rubocop
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.