
Problema: iptables
no puede ser cambiado. En mi computadora puedo ejecutar iptables -F
. iptables -L
muestra que está sonrojado.
Cuando algún paquete entra o sale de la máquina, ¡todas las reglas vuelven! El mismo comportamiento ocurre si hago un iptables-restore < new_settings
. Están allí por un segundo, pero una vez que llega un paquete, iptables
se revierte.
Estoy usandodebian 8el sistema operativo fue una actualización dedebian 7. Originalmente es la computadora de otra persona.
Lo que he comprobado, pensando que sería una de estas cosas:
iptables-persistent
no está presente/etc/iptables/
no existe- Cuando miro
systemctl
los procesos ni siquiera hay nadaip
en su nombre.
/# systemctl --all | grep ip run-rpc_pipefs.mount loaded active mounted /run/rpc_pipefs systemd-initctl.socket loaded active listening /dev/initctl Compatibility Named Pipe
- No hay ningún
# firewalld
en el sistema.
¿Dónde podemos encontrar servicios o algo que esté cambiando las configuraciones del sistema?
Respuesta1
Quizás podrías usar audit
. Fedora lo habilita de forma predeterminada e inunda el diario con líneas NETFILTER_CFG.
Vea esta pregunta:
Auditoría de cambios en la configuración de iptables en ejecución
En el ejemplo que se muestra, el proceso relevante es iptables
, lo que puede no resultar muy útil. Sin embargo, también registra ppid
el proceso principal (así como lo obvio pid
).
En caso de que el proceso padretambiénsale inmediatamente...
Puede utilizar fácilmente la contabilidad de procesos ( acct
paquete) para rastrear los nombres de cada proceso saliente ( lastcomm
comando). Sin embargo, esa es menos información de la que podría pensar. Estoy pensando en "bash" aquí.
Podría ser mejor ejecutar fatrace
para rastrear los archivos abiertos, lo que incluye la ejecución del programa. Simplemente no intente canalizarlo, por ejemplo, a través de grep; no podrá generar ningún resultado, no sé por qué.
También hay unpágina enexecsnoop
. Si puede utilizar ese programa, o cualquiera de las alternativas que sugiere, sería la más fácil de interpretar.
Técnicamente no lo he permitido fork()
. Pero no se me ocurre una buena razón por la que fork()
no lo harías exec()
para crear reglas de netfilter.
Respuesta2
TL;DRCuando tenga problemas extraños con los archivos de configuración que cambian todo el tiempo, verifique sus /etc/network/if-*.d
archivos, si ya ha verificado systemd
las configuraciones.
Resulta que otra opción donde algo puede cambiar el iptables
comando (o realmente cualquier cosa) es en las carpetas if-up.d
o if-down.d
que se ocupan de realizar cambios según la conectividad a Internet.
Había /etc/network/
una carpeta para ambos if-pre-up.d
, if-up.d
etc.
Cada uno contiene un conjunto de scripts que se ejecutarán cuando if-*
se cumpla la condición. Entonces, cada vez que cambiaban las conexiones a Internet (lo que parecía ser un cambio en el archivo iptables
), se ejecutaba un script que /sbin/iptables-restore < /etc/network/iptables
restablecía los iptables con el archivo iptables
en formato /etc/network/
.