
Este cookbook de chef proporciona configuración de seguridad para mysql.
Proporciona configuraciones de seguridad para mysql. Está pensado para configurar instancias de mysql listas para producción que estén configuradas con una superficie mínima para los atacantes.
Este cookbook se centra en la configuración de seguridad de mysql y reutiliza el mysql cookbook para la instalación. Por lo tanto, puedes añadir esta capa de hardening sobre tu configuración existente de mysql en Chef.
Hemos optimizado este cookbook para que funcione con y sin complicaciones. Funcionará bien sin ellos, pero debes asegurarte de que se cumplan todas las precondiciones como o .
apt-get updateyum updateUn rol de ejemplo podría ser:
{
"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]"
]
}
Esta recipe es una recipe de superposición para el mysql cookbook) y aplica mysql-hardening::hardening
Añade lo siguiente a tu runlist y personaliza los atributos de las opciones de seguridad
"recipe[mysql::server]",
"recipe[mysql-hardening]"
Esta recipe de hardening instala el hardening pero espera una instalación existente de Mysql, MariaDB o Percona. Si no estás usando el mysql cookbook, es posible que necesites adaptar los atributos:
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'Ya hay más información disponible en Deutsche Telekom (alemán) y Symantec
Esta configuración establece los siguientes parámetros por defecto
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
Además, garantiza que los siguientes parámetros no estén establecidos
['mysql']['security']['secure_auth']node['mysql']['security']['allow-suspicious-udfs']Además, el permiso de /var/lib/mysql está limitado al usuario 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
Este cookbook incluye un archivo guard para facilitar el desarrollo. Durante el desarrollo, guard vigila las carpetas y ejecuta footcritic y 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.