Denegar el acceso de la aplicación al disco duro o al volumen en Windows 7+

12

Quiero negar algunas de las aplicaciones en mi computadora para acceder a ciertas unidades o volúmenes lógicos, pero hasta ahora no pude encontrar una solución.

Antecedentes: mi PC tiene un SSD como unidad de sistema y un Raid-6 de 15 TB con cinco discos duros. El controlador está configurado para girar las unidades después de ~ 10-15 minutos. Esto está bien ya que a veces no necesito acceder a nada en el Raid durante un par de horas o incluso más. Algunas aplicaciones como Adobe Reader acceden a todos los volúmenes lógicos cuando se inician por alguna razón que no puedo comprender. Mi suposición es que todos los volúmenes con una letra de unidad asignada se ven afectados. Eliminar las letras y reasignarlas no es una opción en absoluto;)

¿Cómo puedo restringir el acceso de Adobe Reader u otras aplicaciones a estos volúmenes de mis hosts Raid?

usuario654123
fuente
No sé cómo deshabilitar el acceso para ciertas aplicaciones. Pero sospecho que si hay una herramienta para negar el acceso a SSD para alguna aplicación, perderá la capacidad de abrir archivos de esos volúmenes. Entonces, en este caso, es mejor tratar de averiguar qué función hace que Adobe Reader lea / escriba algo desde / a SSD. Mire la función de "archivos recientes". Tal vez verifica su disponibilidad cada vez.
VIK
Quiero restringir el acceso al Raid, no al SSD. De hecho, no hay nada en ningún volumen en el Raid, eso es de alguna utilidad para Adobe Reader en mi computadora. Entonces, sí, en mi caso, quiero explícitamente perder la capacidad de acceder a cualquier cosa desde Adobe Reader que no esté en el SSD. Sin embargo, es posible que tenga razón sobre la característica "archivos recientes" (aunque en este caso no hay archivos recientes provenientes de esos volúmenes).
user654123
1
¿Qué pasa con una solución radical como usar otro visor de PDF? Esto no resuelve problemas con otras aplicaciones, pero según tengo entendido, Adobe Reader es lo más molesto para usted. en.wikipedia.org/wiki/List_of_PDF_software
VIK
Sí, es la aplicación más molesta :) Esperaba que pudiera haber una solución integrada para ese problema, ya que negar el acceso a Internet a través del firewall de Windows funciona bien para otros programas.
user654123
1
¿Ha considerado ejecutar Reader como un usuario separado que no tiene acceso a esos volúmenes?
TWiStErRob

Respuestas:

6

En Windows, no hay una forma nativa compatible para bloquear el acceso de ciertos procesos a ciertas unidades, lo que va "en contra de la naturaleza actual" de cómo el sistema operativo maneja el acceso a las unidades.

El derecho de acceso está determinado por los derechos del usuario conectado que inicia la aplicación. Entonces, si el desarrollador de software decidió que su software debería buscar en todas las unidades accesibles y no le da la opción de desactivarlo ... bueno, esa es una mala programación que no considera su caso de uso particular. Pero hay algunas soluciones alternativas.

La única solución "segura" es 2, ya que la capa de virtualización de hardware (desde la máquina virtual) puede bloquear cualquier aplicación para intentar acceder por completo al "hardware real". Aunque no he tenido el caso en que la solución 1 no funciona, pero en teoría creo que podría pasarse por alto.

Opción "1" - Deshabilitar las unidades en un "nivel bajo" - No se necesita software adicional

Opcion 1a

Es posible deshabilitar los volúmenes en una capa inferior deshabilitando las unidades por completo, pero esto deshabilitará todos los volúmenes en la unidad. Manualmente, puede hacerlo iniciando diskmgmt.msc, luego haga clic derecho en la unidad y márquela "fuera de línea".

ingrese la descripción de la imagen aquí

Si es necesario, también debería poder hacerlo utilizando un script de línea de comando. Se aplicaría de manera similar a la Opción 3a / b. Puede hacerlo, por ejemplo, mediante cmd como se describe aquí o mediante PowerShell, como se describe aquí .

Opcion 1b

Puede desactivar el controlador de la unidad por completo. Para hacerlo manualmente: comienza diskmgmt.msc, luego haz clic derecho, elige "opciones". Luego vaya a la pestaña "Controlador" y seleccione "Desactivar". La unidad "desaparecerá" en el administrador de discos y ya no será accesible a través del sistema operativo. A menos que el software no ejecute comandos de código de máquina para comunicarse directamente con el hardware, la aplicación no debe tener acceso a las unidades. Al menos en lo que respecta a mi conocimiento de los entresijos de los sistemas operativos.

ingrese la descripción de la imagen aquí

Si es necesario, también debería poder hacerlo utilizando un script de línea de comando. Se aplicaría de manera similar a la Opción 3a / b usando, por ejemplo Devcon.exe,. Puede encontrar una descripción detallada aquí .

Opción 2: uso de un entorno virtual (principalmente con software de terceros)

Si ejecutar la aplicación dentro de un entorno virtual es una opción, existen muchas soluciones:

  • dependiendo de su versión de Windows (se requiere Win7 y superior) y su licencia (no se requiere "Profesional", "Inicio"), puede usar Hyper-V para configurar un entorno virtual sin ningún software de terceros.

  • puede usar un software de terceros para configurar un sistema virtual como VMplayer, Virtual Box, etc. Existen muchas alternativas de software gratuito y de pago. Al usar esta solución, necesitará una segunda licencia para Windows (o la dejará sin licencia, pero luego obtendrá una superposición en la esquina inferior derecha de la pantalla que le indicará que registre Windows). Esto definitivamente evitará que el software acceda a la unidad.

  • podría usar una aplicación "sandbox". Pero dependerá del nivel de virualización que ofrece la aplicación sandbox. En algunos casos, puede resolver el problema; en otros casos, no lo hace. Sandboxie, por ejemplo (el que describe harrymc en su respuesta ), no resuelve el problema con la configuración que describe harrymc en su respuesta (original). Aunque el software puede bloquear el acceso, la unidad seguirá funcionando. Una alternativa sería usar una aplicación de sandbox diferente como Cameyo, etc.

Por cierto, aquí hay un buen artículo sobre la diferencia principal entre los diferentes software de virtualización, especialmente la diferencia entre una máquina virtual "completa" (como Virtual Box) o aplicaciones "semi virtuales" (como Sandboxie).

Opción 3: desmontar solo volúmenes (dejando la unidad "intacta"): no se necesita software adicional, PERO puede que no funcione en su caso

Opción 3a

En lugar de iniciar la aplicación a través de su acceso directo normal, puede escribir un archivo por lotes utilizando el comando mountvolque primero desmonta el volumen no utilizado, luego inicia la aplicación y luego vuelve a montar el volumen una vez que la aplicación ya no accede a la unidad. El proceso de montaje / desmontaje a través de la línea de comandos se describe aquí y aquí . También puede usar diskpartcomo se describe aquí y aquí .

Opción 3b

Alternativamente, puede dejar la unidad desmontada en general y montarla a través de un archivo por lotes que monta la unidad que inicia manualmente cuando sea necesario. Una vez que haya terminado de usarlo, puede desmontarlo manualmente usando un segundo archivo por lotes. Puede automatizar eso al monitorear las solicitudes de acceso al sistema de archivos y montar / desmontar la unidad según sea necesario siguiendo ciertas reglas, por ejemplo, que ciertas aplicaciones no tendrán acceso. Pero no estoy seguro de que la automatización valga la pena el esfuerzo adicional que implica.

Opción 4: restringir el acceso a una letra de unidad (volumen). Simple de hacer, pero se necesitan dos pequeñas herramientas de Microsoft, PERO puede que no funcione en su caso

Si desea hacerlo sin software de terceros pero no le importa usar dos pequeñas herramientas de Microsoft (si aún no lo usa). Prefiero esta solución porque consigue el problema "por la raíz" (diferenciación entre los derechos del usuario y de la aplicación) y es bastante simple y no se necesita ningún software de terceros "grande".

Básicamente, agrega un usuario sin acceso a la unidad y luego inicia el programa con esos derechos limitados (seguirá iniciando sesión como usuario habitual, no utilizará la cuenta restringida para iniciar sesión).

  • Agregar una cuenta de usuario.

  • Restrinja el acceso de la nueva cuenta de usuario a la unidad mediante el Control de acceso de Windows para el sistema de archivos. Aquí hay un buen tutorial que incluye capturas de pantalla.

  • Luego, inicie el software con esos derechos. Puede, por ejemplo, usar PsExec.exe para hacer eso o Process Explorer, así es como . Tendrá que descargar uno de esos dos desde el sitio web de Microsoft, si aún no los tiene.

Albin
fuente
4

Propongo una solución que usa Sandboxie . No tengo su entorno, así que probé la ejecución Acrobat.exeen un entorno limitado donde D:estaba bloqueado su acceso . Al abrir en Acrobat el menú Archivo> Abrir , obtengo esto:

imagen

Tenga en cuenta que Acrobat ni siquiera puede encontrar la etiqueta del disco D:, por lo que se ve obligado a mostrarla de manera poco convincente y a cómo se bloquea cuando hago clic en "Disco local (D :)".

Los pasos que utilicé fueron:

  • Sandboxie instalado
  • En Sandboxie Control, haga clic con el botón derecho en el sandbox predeterminado y elija Configuración de Sandbox
  • Abra la rama de Acceso a recursos> Acceso a archivos y haga clic en Acceso bloqueado
  • Haga clic en Agregar programa y agregue Acrobat (el mío era C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\Acrobat.exe)
  • Haga clic en Agregar y agregar discoD:
  • Haga clic en Aceptar
  • En Sandboxie Control, abra la rama de Inicio de programa> Carpetas forzadas
  • Haga clic en Agregar carpeta
  • Agregue la carpeta donde reside Acrobat (el mío era C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat)
  • Haga clic en Aceptar

De ahora en adelante, todos los programas que se inician desde la carpeta Acrobat están obligados a ejecutar sandboxed, y específicamente Acrobat.exese bloquea el acceso al disco D:. Es posible que deba abrir otras restricciones de sandbox si Acrobat tendrá algunas dificultades para ejecutarse dentro del sandbox.

No sé si esto también bloqueará la llamada específica de la API de Windows que Acrobat usa para provocar la activación del disco, pero podría valer la pena intentarlo.

Sandboxie es un producto excelente y versátil que recomiendo, gratis para un sandbox predeterminado. Para múltiples sandboxes es payware, pero el precio de la licencia de por vida es muy razonable (pagué). Por ejemplo, instalo productos que pruebo en un sandbox y luego puedo eliminarlos con un solo clic, y no necesito un desinstalador.


Otra solución de aislamiento es mediante el uso de Adobe Reader dentro de un contenedor Docker . Los contenedores Docker son pequeños y funcionan como máquinas virtuales, pero sin necesidad de crear la máquina, ya que los contenedores ya preparados se descargan de la galería Docker.

Puede usar Chocolatey como administrador de paquetes.

Chocolatey tiene muchos paquetes preconstruidos disponibles con Adobe Reader en Adobe Acrobat Reader DC 2018.011.20063 .

Con Docker, es posible un aislamiento absoluto con respecto a los recursos, y por otro lado, uno puede compartir recursos como carpetas de una manera completamente nativa.

harrymc
fuente
2
@WackGet: ¿Algún comentario?
harrymc
Él dice que no funciona, el disco todavía gira, al menos en su caso de uso. Me pregunto, ¿Sandboxie te da la opción de ocultar recursos en la capa de hardware? Aún no lo he instalado.
Albin
@WackGet: Sandboxie tiene más configuraciones disponibles en sus archivos de configuración. Pero primero: ¿los discos se activan en el momento en que se inicia Adobe, o solo cuando se usa el menú Archivo> Abrir ?
harrymc
Además de la pregunta anterior, agregué otra opción de aislamiento liviano, usando Docker. Los contenedores Docker son pequeños y funcionan como máquinas virtuales, pero sin necesidad de crearlos, ya que los contenedores están listos y se descargan de la galería Docker.
harrymc
Interesante elección. ¿A qué aplicación Docker te refieres ya que es más bien una solución de desarrollador / empresa? Desafortunadamente, los productos de Docker que miré no son de uso gratuito (solo es posible el software de prueba) ... pero tal vez pasé por alto algo.
Albin