Как одна версия может контролировать правила брандмауэра ядра Linux?

327
Styne666

Наш маршрутизатор - CentOS, но мы просто используем iptables для изменения правил брандмауэра ядра Linux. Существует скрипт, который находится под контролем версий, который сбрасывает все цепочки / правила, но при этом удаляет все существующие соединения и, как правило, вызывает хаос, если работает в рабочее время. Это означает, что обычный метод изменения правил брандмауэра - использование iptables«на лету». Это может привести к тому, что изменения в брандмауэре не вернутся к управлению версиями.

То, что я пытаюсь выяснить, - это как проверить, не было ли каких-либо изменений в брандмауэре после определенной версии скрипта в Subversion.

Вывод из этого iptables --listвесьма отличается от строки в скрипте, которая обычно выглядит примерно так iptables -A chain -j ACCEPT -s 192.168.1.100.

Есть ли более простой / лучший способ держать правила брандмауэра ядра Linux под контролем версий?

Я открыт для предложений альтернативных инструментов или операционных систем, если они с открытым исходным кодом и хорошо зарекомендовали себя.

0

1 ответ на вопрос

0
Styne666

I realised as soon as I asked this that there are iptables-save and iptables-restore. However I'm not sure at this point how that would work. I'll post it as an answer but I think the real solution is going to be a bit more complicated.

One could use iptables-save which prints the currently loaded chains to stdout. You can also use the -t switch to specify user defined chains. So you could output each chain to a file one by one and version control those. However I can't see an easy way of reloading chains one-by-one as the equivalent iptables-restore doesn't have the an equivalent switch (-t means test instead).

The other limitation of this method I noticed was there is no way to save the built-in chains individually (i.e. INPUT, OUTPUT, and FORWARD). The only way to get those out is by not using the -t switch and dumping everything.

It would need some scripting to wrap this all up into something one could easily save and reload.

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