Cómo proteger el servidor MySQL para el caso de robo de hardware

2

Estoy configurando un nuevo servidor MySQL en la oficina. La aplicación cliente, que se conecta desde la misma LAN, ahora está en prueba beta. Así que todavía puedo cambiar el sistema de autenticación y otras cosas allí. Actualmente decidí compilar la cadena de clave privada en la aplicación.

El cliente primero proporciona la clave y se conecta a la cuenta raíz en DB. Luego, se solicita un hash de contraseña (en particular) a la base de datos, según el nombre de usuario ingresado. Si el hash es igual al hecho con el contenido del cuadro de contraseña, la aplicación real se inicia.

Decidí encriptar todos los datos almacenados allí (use LVM, básicamente), pero mi jefe está muy preocupado por el caso en que el servidor es robado juntos con la computadora portátil de un empleado (algunos buenos tipos tienen una contraseña PostIt está en los bordes de la pantalla).

Agradecería cualquier información sobre:

  • Restricción de las conexiones del cliente a un determinado período de tiempo (7 AM-7PM, de lunes a viernes).
  • Restringiendo cualquier conexión o mejor, incluso iniciando sesión en CentOS (o cualquier otra distribución, si tiene sugerencias) por la ubicación .

Lo único que me vino a la mente por ahora, es que la impresora compartida y un pequeño FTP para mantener las cosas escaneadas pueden desempeñar un papel para asegurarnos de que el servidor todavía esté en nuestra red y no sea robado ni tomado de la oficina . Por ejemplo, puedo verificar el nombre (modelo) de la impresora y verificar la suma de hash de algún archivo que descargo rápidamente desde FTP.

Si es una solución adecuada, brinde detalles sobre cómo manipular la seguridad del servidor. Al igual, puedo hacer un script que devolvería 1 o 0 en caso de que se cumpla con el requisito de FTP / impresora, pero ¿cómo uso el resultado de esta comprobación?

    
pregunta mekkanizer 16.12.2017 - 23:08
fuente

3 respuestas

0

No veo cómo restringir las veces que un cliente puede iniciar sesión tiene mucha relevancia para el problema que intenta resolver. También está cerrando la puerta para ejecutar el servicio a través de Internet si alguna vez se expande más allá de su LAN.

Agregar un servidor de descanso simple proporcionaría una manera fácil de aplicar reglas de acceso abstractas a la aplicación (de hecho, me cuesta entender por qué diseñaría una solución contra hardware específico en lugar de al menos modelar el acceso alrededor de un modelo basado en la nube). , incluso si terminas implementándolo en tu propio hardware).

Las personas que son demasiado valiosas (especialmente en las pequeñas empresas de software) sobre su propiedad intelectual son un tema recurrente aquí y en otros lugares en Internet; socavando a sus clientes legítimos pero ignorando las amenazas reales del robo de propiedad intelectual. Si la pregunta es realmente acerca de la seguridad de los datos que se intercambian después de este apretón de manos bizantino, entonces debería hablar con alguien que entiende esto mucho mejor en lugar de publicar una pregunta en Internet sobre algo relacionado tangencialmente con el problema real. / p>

  

El cliente primero proporciona la clave y se conecta a la cuenta raíz

OMG, no.

Realmente me cuesta entender por qué en cualquier aplicación consideraría usar root como una cuenta de servicio, y mucho menos una en la que esté tan preocupado por la seguridad. MySQL tiene la facilidad de transferir permisos de manera muy granular junto con un mecanismo de separación de privilegios.

Cualquier control que aplique a través de iptables, procedimientos almacenados o dentro de la lógica de la aplicación de un servidor REST en el host se omite fácilmente si alguien tiene el control físico del dispositivo. El cifrado de disco resuelve esto. Supongo que su mención de notas post-it y portátiles significa que espera dar la frase de cifrado del disco a mucha gente. Eso es fácil de resolver: no le des a nadie la contraseña. Podría ir y comprar un producto caro como CyberArk AIM para servir la frase de contraseña a pedido, pero ¿por qué? Es trivial colocar la frase de contraseña en otro lugar y escribir un script de shell de 10 líneas para recuperar la frase de contraseña a través de SSH / Https (o incluso otra instancia de MySQL a la que se accede a través de un túnel) validando el host cifrado usando un certificado de par de llaves / cliente y aplicando su hora / ubicación reglas en el host del servidor de frase de contraseña. Y el servidor de frase de contraseña debe residir en una ubicación física diferente para abordar su modelo de amenaza establecido.

Si esto suena similar al modelo de su servidor FTP, entonces preste atención a la diferencia: el servidor de frase de contraseña está en otra parte y el método de autenticación entre el servidor mysql y el servidor de frase de contraseña es seguro. Si alguien puede robar el servidor mysql y una computadora portátil, puede robar el servidor FTP.

    
respondido por el symcbean 16.02.2018 - 00:35
fuente
0

Sugerencia para su problema:

  • Asegúrese de que la zona horaria esté configurada correctamente y que ejecute ntpdate/ntpd en su máquina para mantener la hora sincronizada.
  • Aplique reglas de iptables basadas en la hora y el día.

iptables -A INPUT -m time --timestart 07:00 --timestop 19:00 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT

  • Para obtener información sobre el soporte de GeoIP con Linux netfilter, consulte: enlace

En otra nota, te sugiero que habilites Google Authenticator (teléfono / notificaciones push) o Yubikey integrado con PAM, para lograr un esquema de autenticación multifactor.

    
respondido por el William Sandin 17.12.2017 - 12:03
fuente
0

Al tener una unidad de disco duro de texto claro en su servidor, alguien detectará qué secuencias de comandos se ejecutarán durante el inicio, y la solución de detección de hashing de su impresora se evitará en ningún momento.

Si un servidor es robado físicamente, a menudo se apaga. Si tiene encriptación de alta definición completa, que necesita una clave para ingresar cuando se inicia; nadie podrá arrancar tus saques; eso elimina el riesgo de que alguien extrapole cualquier formulario de datos allí. Habilitar el cifrado completo del disco, sería mi primera recomendación.

Creo que el modelo de tratamiento de su arquitectura cliente / servidor es inherentemente defectuoso; alguien podría robar una computadora portátil (o tener una ejecución remota de código sin tener que tomar físicamente una computadora portátil), extraer la clave y tener acceso de raíz a su base de datos MySQL; y también cualquier información allí (nombres de usuario, contraseña / hashes, datos del cliente, etc.).

Recomiendo un inicio de sesión basado en SSL, donde cada usuario tiene su propio par de certificados (aumenta la auditoría y la responsabilidad), y si cree que hay algún juego sucio; Puedes revocar el certificado. Los inicios de sesión SSL se pueden encontrar en enlace

Espero que esto ayude,

    
respondido por el ndrix 17.12.2017 - 22:12
fuente

Lea otras preguntas en las etiquetas