Увеличение количества открытых файлов в mac high sierra [дубликат]

Creo que muchos detalles de su pregunta podrían aplicarse igualmente a avahi-daemon, que examiné recientemente. (Podría haber pasado por alto otro detalle que difiere ). Ejecutar el demonio avahi -en un chroot tiene muchas ventajas, en caso de que el demonio avahi -se vea comprometido. Estos incluyen:

  1. no puede leer el directorio de inicio de ningún usuario ni extraer información privada.
  2. no puede explotar errores en otros programas escribiendo en /tmp. Hay al menos una categoría completa de tales errores. P.ej.https://www.google.co.uk/search?q=tmp+race+security+bug
  3. no puede abrir ningún archivo de socket de Unix que esté fuera del chroot, en el que otros demonios pueden estar escuchando y leyendo mensajes.

El punto 3 podría ser particularmente bueno cuando no usa dbus o similar... Creo que avahi -daemon usa dbus, por lo que se asegura de mantener el acceso al sistema dbus incluso desde dentro del chroot. Si no necesita la capacidad de enviar mensajes en el dbus del sistema, negar esa capacidad podría ser una buena característica de seguridad.

managing it with systemd unit file

Tenga en cuenta que si el daemon avahi -se volvió a escribir -, podría optar por confiar en systemd para la seguridad y usar, p. ProtectHome. Propuse un cambio al demonio avahi -para agregar estas protecciones como una capa adicional, junto con algunas protecciones adicionales que no están garantizadas por chroot. Puedes ver la lista completa de opciones que propuse aquí:

https://github.com/lathiat/avahi/pull/181/commits/67a7b10049c58d6afeebdc64ffd2023c5a93d49a

Parece que hay más restricciones que podría haber usado si avahi -daemon no usara chroot en sí,algunos de los cuales se mencionan en el mensaje de confirmación. Sin embargo, no estoy seguro de cuánto se aplica esto.

Tenga en cuenta que las protecciones que utilicé no habrían limitado al demonio de abrir archivos de socket de Unix (punto 3 anterior ).

Otro enfoque sería usar SELinux. Sin embargo, estaría vinculando su aplicación a ese subconjunto -de distribuciones de Linux. La razón por la que pensé positivamente en SELinux aquí, es que SELinux restringe el acceso que los procesos tienen en dbus, de una manera fina -. Por ejemplo, creo que a menudo podría esperar que systemdno estuviera en la lista de nombres de bus que necesitaba para poder enviar mensajes a :-).

"Me preguntaba, si usar systemd sandboxing es más seguro que chroot/setuid/umask/..."

Resumen :¿Por qué no ambos? Vamos a decodificar un poco lo anterior :-).

Si piensa en el punto 3, usar chroot proporciona más confinamiento. ProtectHome= y sus amigos ni siquiera intentan ser tan restrictivos como chroot. (Por ejemplo, ninguna de las opciones nombradas de systemd aparece en la lista negra /run, donde tendemos a colocar archivos de socket de Unix ).

chroot muestra que restringir el acceso al sistema de archivos puede ser muy poderoso, pero no todo en Linux es un archivo :-). Hay opciones de systemd que pueden restringir otras cosas, que no son archivos. Esto es útil si el programa está comprometido, puede reducir las funciones del núcleo disponibles para él, en las que podría intentar explotar una vulnerabilidad. Por ejemplo, el daemon avahi -no necesita enchufes bluetooth y supongo que su servidor web no t cualquiera :-). Así que no le des acceso a la familia de direcciones AF _BLUETOOTH. Simplemente incluya en la lista blanca AF _INET, AF _INET6 y tal vez AF _UNIX, usando la opción RestrictAddressFamilies=.

Lea los documentos de cada opción que utilice. Algunas opciones son más efectivas en combinación con otras,y algunos no están disponibles en todas las arquitecturas de CPU. (No porque la CPU sea mala, sino porque el puerto Linux para esa CPU no estaba tan bien diseñado. Creo ).

(Aquí hay un principio general. Es más seguro si puede escribir listas de lo que quiere permitir, no de lo que quiere denegar. Al igual que definir un chroot, le brinda una lista de archivos a los que puede acceder, y esto es más sólido que decir que desea bloquear/home).

En principio, usted mismo podría aplicar todas las mismas restricciones antes de setuid (). Todo es solo código que puede copiar de systemd. Sin embargo, las opciones de unidad de systemd deberían ser significativamente más fáciles de escribir y, dado que están en un formato estándar, deberían ser más fáciles de leer y revisar.

Por lo tanto, recomiendo encarecidamente leer la sección de sandboxing de man systemd.execen su plataforma de destino. Pero si desea el diseño más seguro posible, no tendría miedo de probarchroot(y luego eliminar rootprivilegios )en su programa también . Hay una compensación aquí. El uso de chrootimpone algunas restricciones en su diseño general. Si ya tiene un diseño que usa chroot y parece hacer lo que necesita, eso suena muy bien.

3
07.03.2018, 21:53
1 ответ

Судя по приведенной выше ссылке, для возобновления работы dovecot перезагрузка не потребовалась. Голубятня остановилась, но после этого. Воспроизведено здесь благодаря оригинальному автору по этой ссылке, с «launchctl load xxx» и перезапуском dovecot, на моем Mac OSX 10.14.2 почта снова запустилась. Но я считаю, что потребуется следующее. Ограничение системы (Для вступления в силу требуется перезагрузка)

Для 10,9 (Mavericks ), 10,10 (Yosemite ), 10,11 (El Capitan )и 10,12 (Sierra ):Вы должны создать файл в /Library/LaunchDaemons/limit.maxfiles.plist (владелец :root :колесо, режим :0644):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
        "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>262144</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>

Вы должны изменить номера в соответствии с вашими потребностями. Это «мягкий предел» (262144 )и «жесткий предел» (524288 )соответственно. Для получения дополнительной информации обратитесь к странице руководства, запустив man launchd.plist.

-1
27.01.2020, 21:46

Теги

Похожие вопросы