¿Cómo lanzar pf al inicio?

3

Estoy buscando una forma bastante elegante de lanzar pf - a.k.a. Filtrado de paquetes: proceso en el inicio. Al usar los comandos launchctl o pfctl , se requieren privilegios de raíz y, por lo tanto, es inútil agregarlos a .bash_profile . ¿Existen soluciones alternativas a este problema?

    
pregunta rudicangiotti 07.12.2017 - 01:05

2 respuestas

3

Es posible iniciar procesos al inicio utilizando daemons. Puede crear un demonio, o incluso editar uno ya existente, agregando o modificando respectivamente un archivo .plist dentro de /System/Library/LaunchDaemons o /Library/LaunchDaemons .
En mi caso, al ejecutar macOS Sierra, un daemon para pfctl ya estaba ubicado dentro de una de esas carpetas pero se configuró sin la opción -e ; En consecuencia, en el inicio, el demonio se lanzó sin ningún efecto.
El problema se resolvió agregando la opción mencionada, y algo más a pesar de que no es necesario:

<?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>Disabled</key>
  <false/>
  <key>Label</key>
  <string>com.apple.pfctl</string>
  <key>WorkingDirectory</key>
  <string>/var/run</string>
  <key>Program</key>
  <string>/sbin/pfctl</string>
  <key>ProgramArguments</key>
  <array>
    <string>/sbin/pfctl</string>
    <string>-e</string>
    <string>-f</string>
    <string>/etc/pf.conf</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>StandardErrorPath</key>
  <string>/var/log/pfctl.err</string>
  <key>StandardOutPath</key>
  <string>/var/log/pfctl.out</string>
</dict>
</plist>
    
respondido por el rudicangiotti 14.12.2017 - 20:15
3

Por defecto, pf está silenciado al inicio, existe un daemon de inicio com.apple.pfctl.plist , aunque en / System / Library / LaunchDaemons /. Para habilitar pf durante el arranque, tendría que agregar un interruptor -e en el plist.

Dado que todos los archivos en / System / Library / LaunchDaemons / están protegidos por SIP en macOS 10.11 y posteriores, debes deshabilitarlo primero.

Luego, después de iniciar el sistema principal, edite la lista del demonio de inicio:

sudo nano /System/Library/LaunchDaemons/com.apple.pfctl.plist

y reemplazar

  ...
  <key>ProgramArguments</key>
  <array>
    <string>/sbin/pfctl</string>
    <string>-f</string>
    <string>/etc/pf.conf</string>
  </array>
  ...

con

  ...
  <key>ProgramArguments</key>
  <array>
    <string>/sbin/pfctl</string>
    <string>-e</string>
    <string>-f</string>
    <string>/etc/pf.conf</string>
  </array>
  ...

Reinicia al modo de recuperación y habilita SIP nuevamente.

    
respondido por el klanomath 14.12.2017 - 21:17

Lea otras preguntas en las etiquetas