MongoDB es una base de datos no relacional y su seguridad de base de datos es muy similar a la versión anterior a mysql 5.7. La base de datos se acaba de instalar
Una vez inicializados el software y los ejemplos, la base de datos no es segura en absoluto. En resumen, el mongodb recién inicializado no tiene restricciones de seguridad, si los datos
La biblioteca está en la red pública y cualquier máquina puede conectarse a la base de datos a través de cualquier cliente de mongo a través de Internet. Por lo tanto, ponerlo en producción en MongoDB.
Anteriormente, MongoDB necesitaba fortalecerse en términos de seguridad. Aquí, introduzca la contraseña de usuario de la arquitectura Mongodb con un maestro, un esclavo y un arbitraje.
modificar.
1. Inicie sesión en la biblioteca principal del clúster de base de datos de mongodb y cree un usuario de supergestión
db.createUser (
{
usuario: "firstset",
pwd: "primer conjunto",
roles: [{rol: "userAdminAnyDatabase", db: "admin"}]
}
);
2. Modifique la contraseña de zhul, verifique el proceso de mogodb, preste atención al número de puerto
ps -ef | grep mongod
mongo 10836 1 0 09:02? 00:00:03 mongod --dbpath / opt / mongo / data / dns_repset1 --port 10001 --replSet firstset --oplogSize 512 --rest --fork --logpath /opt/mongo/logs/firstset/firstset.log --logappend --nojournal --directoryperdb --keyFile / opt / mongo / keyfile / keyfile
mongo 10997 9767 0 09:09 pts / 3 00:00:00 grep --color = auto mongod
3. Modifique la contraseña de zhul y verifique si la base de datos actual está conectada sin contraseña
[archivo de claves mongo @ mongo1] $ mongo --port 10001
Versión de shell de MongoDB: 3.2.11-49-g52b68fa
conectándose a: 127.0.0.1:10001/test
firstset: PRIMARY> show dbs
2019-10-24T09: 09: 31.298 + 0800 E CONSULTA [hilo1] Error: fallaron las bases de datos de la lista: {
"ok": 0,
"errmsg": " no autorizado por el administrador para ejecutar el comando {listDatabases: 1.0}",
"código": 13
}:
_getErrorWithCode@src/mongo/shell/utils.js: 25: 13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js: 62: 1
shellHelper.show@src/mongo/shell/utils.js: 761: 19
shellHelper@src/mongo/shell/utils.js: 651: 15
@ (shellhelp2): 1: 1
firstset: PRIMARIO> salir
adiós
A través de la verificación, la base de datos actual ha probado la verificación de autenticación de seguridad del archivo de claves, y el inicio de sesión sin contraseña se negará a ejecutar ningún comando.
4. Modifique la contraseña de zhul. Si conoce la contraseña del usuario modificado, puede iniciar sesión con la contraseña de la cuenta o puede cancelar las restricciones de seguridad del archivo de claves.
Después de iniciar sesión sin contraseña, modifique la contraseña del usuario relevante y luego habilite la autenticación de seguridad del archivo de claves
[archivo de claves mongo @ mongo1] $ mongo -u firstset -p firstset --port 10001
Versión de shell de MongoDB: 3.2.11-49-g52b68fa
conectándose a: 127.0.0.1:10001/test
El servidor tiene advertencias de inicio:
2019-10-24T09: 02: 45.827 + 0800 I CONTROL [principal] ** ADVERTENCIA: --el reposo se especifica sin --httpinterface,
2019-10-24T09: 02: 45.827 + 0800 I CONTROL [principal] ** habilitando la interfaz http
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: El servidor se inicia con la interfaz del servidor web y el control de acceso.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** Las interfaces web (rest, httpinterface y / o jsonp) son inseguras
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** y debe desactivarse a menos que sea necesario para compatibilidad con versiones anteriores.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: / sys / kernel / mm / transparent_hugepage / enabled es 'siempre'.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** Sugerimos configurarlo en 'nunca'
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: / sys / kernel / mm / transparent_hugepage / defrag es 'siempre'.
2019-10-24T09: 02: 46.024 + 0800 I CONTROL [initandlisten] ** Sugerimos configurarlo en 'nunca'
2019-10-24T09: 02: 46.024 + 0800 I CONTROL [initandlisten]
firstset: PRIMARY> show dbs;
administración 0.000GB
dns_testdb 0,004 GB
0.008GB local
firstset: PRIMARY> db.updateUser ("firstset", {pwd: "rootroot"});
firstset: PRIMARIO> salir
adiós
5. Verifique la modificación de la contraseña
- Se rechazó el inicio de sesión con nombre de usuario o contraseña incorrectos
[archivo de claves mongo @ mongo1] $ mongo -u firstset -p firstset --port 10001
Versión de shell de MongoDB: 3.2.11-49-g52b68fa
conectándose a: 127.0.0.1:10001/test
2019-10-24T09: 11: 35.167 + 0800 E CONSULTA [hilo1] Error: Error de autenticación. :
DB.prototype._authOrThrow@src/mongo/shell/db.js: 1441: 20
@ (autenticación): 6: 1
@ (autenticación): 1: 2
excepción: el inicio de sesión falló
- La operación se puede realizar normalmente después de iniciar sesión con el nombre de usuario y la contraseña correctos
[archivo de claves mongo @ mongo1] $ mongo -u firstset -p rootroot --port 10001
Versión de shell de MongoDB: 3.2.11-49-g52b68fa
conectándose a: 127.0.0.1:10001/test
El servidor tiene advertencias de inicio:
2019-10-24T09: 02: 45.827 + 0800 I CONTROL [principal] ** ADVERTENCIA: --el reposo se especifica sin --httpinterface,
2019-10-24T09: 02: 45.827 + 0800 I CONTROL [principal] ** habilitando la interfaz http
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: El servidor se inicia con la interfaz del servidor web y el control de acceso.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** Las interfaces web (rest, httpinterface y / o jsonp) son inseguras
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** y debe desactivarse a menos que sea necesario para compatibilidad con versiones anteriores.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: / sys / kernel / mm / transparent_hugepage / enabled es 'siempre'.
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** Sugerimos configurarlo en 'nunca'
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten]
2019-10-24T09: 02: 46.023 + 0800 I CONTROL [initandlisten] ** ADVERTENCIA: / sys / kernel / mm / transparent_hugepage / defrag es 'siempre'.
2019-10-24T09: 02: 46.024 + 0800 I CONTROL [initandlisten] ** Sugerimos configurarlo en 'nunca'
2019-10-24T09: 02: 46.024 + 0800 I CONTROL [initandlisten]
firstset: PRIMARY> show dbs;
administración 0.000GB
dns_testdb 0,004 GB
0.008GB local
firstset: PRIMARY> use admin
cambió a db admin
firstset: PRIMARY> mostrar colecciones;
system.users
system.version
primer conjunto: PRIMARIO> db.system.users.find ();
{"_id": "test.firstset", "user": "firstset", "db": "test", "credentials": {"SCRAM-SHA-1": {"iterationCount": 10000, "salt" : "ISdrb4a3Cc0A59vXEUxjOg ==", "storedKey": "qPn44VuZrJ6QwWzOMBq90vZ5eAo =", "serverKey": "rz + CDSlpXHKvUDGg0PCnG2GZCjk = "b"}, "roles" }]}
firstset: PRIMARIO> use dns_testdbuse dns_testdb
cambiado a db dns_testdb
firstset: PRIMARY> mostrar colecciones;
test_collection
primer conjunto: PRIMARIO> db.test_collection.findOne ();
{
"_id": ObjectId ("5d8434a5b138ddafc446e13b"),
"nombre": "vaca",
"user_id": 48149,
"booleano": falso,
"added_at": ISODate ("2019-09-20T02: 08: 37.116Z"),
"número": 1743
}
firstset: PRIMARIO>
primer conjunto: PRIMARIO> rs.status ();
{
"conjunto": "primer conjunto",
"fecha": ISODate ("2019-10-24T01: 13: 15.006Z"),
"myState": 1,
"término": NumberLong (7),
"heartbeatIntervalMillis": NumberLong (2000),
"miembros": [
{
"_id": 0,
"nombre": "192.168.192.251:10001",
"salud": 1,
"estado": 1,
"stateStr": "PRIMARIO",
"tiempo de actividad": 630,
"óptimo": {
"ts": marca de tiempo (1571879490, 1),
"t": NumberLong (7)
},
"OptimalDate": ISODate ("2019-10-24T01: 11: 30Z"),
"choiceTime": marca de tiempo (1571879010, 1),
"choiceDate": ISODate ("2019-10-24T01: 03: 30Z"),
"configVersion": 1,
"self": verdadero
},
{
"_id": 1,
"nombre": "192.168.192.252:10001",
"salud": 1,
"estado": 2,
"stateStr": "SECUNDARIO",
"tiempo de actividad": 566,
"óptimo": {
"ts": marca de tiempo (1571879490, 1),
"t": NumberLong (7)
},
"OptimalDate": ISODate ("2019-10-24T01: 11: 30Z"),
"lastHeartbeat": ISODate ("2019-10-24T01: 13: 13.320Z"),
"lastHeartbeatRecv": ISODate ("2019-10-24T01: 13: 13.259Z"),
"pingMs": NumberLong (0),
"syncingTo": "192.168.192.251:10001",
"configVersion": 1
},
{
"_id": 2,
"nombre": "192.168.192.250:10001",
"salud": 1,
"estado": 7,
"stateStr": "ÁRBITRO",
"tiempo de actividad": 593,
"lastHeartbeat": ISODate ("2019-10-24T01: 13: 13.301Z"),
"lastHeartbeatRecv": ISODate ("2019-10-24T01: 13: 13.185Z"),
"pingMs": NumberLong (0),
"configVersion": 1
}
],
"ok": 1
}
firstset: PRIMARIO>
Para la configuración de autenticación de archivos de claves de MongoDB, consulte:
Http://blog.itpub.net/29357786/viewspace-2130594/