
Проблема: iptables
не может быть изменено. На моем компьютере я могу запустить iptables -F
. iptables -L
показывает, что он очищен.
Когда какие-либо пакеты приходят или выходят из машины, все правила возвращаются! То же самое происходит, если я делаю iptables-restore < new_settings
. Они существуют в течение секунды, но как только пакет приходит, iptables
они возвращаются.
я используюдебиан 8ОС была обновлением сдебиан 7. Изначально это чужой компьютер.
Я проверил и думаю, что это будет что-то из этого:
iptables-persistent
нет/etc/iptables/
не существует- Когда я смотрю на процессы , в их названии
systemctl
нет ничего, что содержало быip
/# 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
# firewalld
В системе нет .
Где можно найти службы или что-то еще, что меняет конфигурации системы?
решение1
Возможно, вы могли бы использовать audit
. Fedora включает его по умолчанию, и он заполняет журнал строками NETFILTER_CFG.
См. этот вопрос:
Аудит изменений в текущей конфигурации iptables
В показанном примере соответствующий процесс — iptables
, что может быть не очень полезно. Однако он также записывает ppid
, родительский процесс (а также очевидный pid
).
В случае, если родительский процесстакженемедленно выходит...
Вы могли бы легко использовать учет процессов ( acct
пакет) для отслеживания имен каждого выходящего процесса ( lastcomm
команда). Однако это меньше информации, чем вы могли бы подумать. Я имею в виду "bash" здесь.
Может быть, лучше запустить fatrace
для отслеживания открытых файлов, что включает выполнение программ. Только не пытайтесь передать это, например, через grep - это не сгенерирует никакого вывода, я не знаю почему.
Также естьстраница наexecsnoop
. Если вы можете использовать эту программу или любую из предлагаемых ею альтернатив, это будет наиболее простым для интерпретации.
Технически я не допустил fork()
. Но я не могу придумать веской причины, по которой вы бы fork()
этого не допустили exec()
, чтобы создать правила netfilter.
решение2
TL;DRесли у вас возникли странные проблемы с постоянно меняющимися файлами конфигурации, проверьте свои /etc/network/if-*.d
файлы, если вы уже проверили systemd
конфигурации.
Оказывается, еще один вариант, где что-то может изменить iptables
команду (или что угодно), находится в папках if-up.d
или if-down.d
, которые вносят изменения на основе подключения к Интернету.
Там /etc/network/
была папка для if-pre-up.d
, if-up.d
, и т.д.
Каждый содержит набор скриптов для запуска при if-*
выполнении условия. Таким образом, всякий раз, когда менялись интернет-соединения (что, казалось, было любым изменением в iptables
), он запускал скрипт, который /sbin/iptables-restore < /etc/network/iptables
сбрасывал iptables с файлом iptables
в /etc/network/
.