From: Konstantin Khorenko <khore...@virtuozzo.com>

ve/kmod/whitelist: Allow iptables/netfilter modules for autoload from CT

For now following modules are allowed by default to be autoloaded
upon indirect request from inside a Container:

* iptables/ip6tables core modules
* netfilters core modules (including nf_tables_inet)
  https://jira.sw.ru/browse/PSBM-99406

* xt_*, ipt_*, ip6t_*, arpt_*,
  nft-chain-*, nft-expr-*, nf-logger-* modules

* ebt* modules: previously we allowed to autoload ebt_* modules only
  upon request from inside a Container but there are several ebtables_*
  modules to be allowed as well, thus allow all ebt* modules for that.
  (Default CentOS7.3 firewalld service inside a CT complains on that)
  https://jira.sw.ru/browse/PSBM-66435

* all nf_* and nft_* modules
  https://jira.sw.ru/browse/PSBM-99536

https://jira.sw.ru/browse/PSBM-127787

Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com>

It's a port of following vz7 commits:
 * 3a4142e      ("ve/kmod: Port autoloading from CT") (partially)
 * f9422b8      ("ve/kmod: Add rules for autoloading (new) nf_tables")
 * ccd1a1d      ("ve/kmod: Add rules for new {ip, ip6, x}table modules")
 * fe6a9073     ("ve/kmod: allow to autoload nf_log_ipv[46]")
 * b221ce6      ("ve/kmod/ebtable: allow to autoload ebtable_* modules
                 from inside a CT")
 * 24f61ddc955f ("ve/kmod: enable autoload for nf_tables_inet module
                 from inside a CT")
 * 0995da4719da ("ve/kmod: make all nf_* and nft_* autoloadable upon
                 request from a CT"))

Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com>
---
 kernel/kmod.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/kernel/kmod.c b/kernel/kmod.c
index 7915397fcf46..7472184200f2 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -202,6 +202,35 @@ EXPORT_SYMBOL(__request_module);
 
 /* ve0 allowed modules */
 static const char * const ve0_allowed_mod[] = {
+       "ip_tables",
+       "ip6_tables",
+       "iptable_filter",
+       "iptable_raw",
+       "iptable_nat",
+       "iptable_mangle",
+       "ip6table_filter",
+       "ip6table_nat",
+       "ip6table_mangle",
+
+       "nf-nat",
+       "nf_conncount",
+       "nf_defrag_ipv4",
+       "nf_defrag_ipv6",
+       "nf_dup_ipv4",
+       "nf_dup_ipv6",
+       "nf_dup_netdev",
+       "nf_flow_table",
+       "nf-flowtable-1",
+       "nf_flow_table_inet",
+       "nf_osf",
+       "nf_reject_ipv6",
+       "nf_socket_ipv4",
+       "nf_socket_ipv6",
+       "nf_synproxy_core",
+
+       "nft-set",
+       "nf_tproxy_ipv4",
+       "nf_tproxy_ipv6",
 };
 
 /*
@@ -223,6 +252,23 @@ bool module_payload_allowed(const char *module)
                        return true;
        }
 
+       /* modules allowed by name/alias masks */
+       if (!strncmp("xt_",             module,  3) ||
+           !strncmp("ip_conntrack",    module, 12) ||
+           !strncmp("ip_nat_",         module,  7) ||
+           !strncmp("ipt_",            module,  4) ||
+           !strncmp("ip6t_",           module,  5) ||
+           !strncmp("arpt_",           module,  5) ||
+           !strncmp("ebt",             module,  4) ||
+           !strncmp("nft-chain-",      module, 10) ||
+           !strncmp("nft-expr-",       module,  9) ||
+           !strncmp("nf_nat",          module,  6) ||
+           !strncmp("nf_log_",         module,  7) ||
+           !strncmp("nf-logger-",      module, 10) ||
+           !strncmp("nf_conntrack",    module, 12) ||
+           !strncmp("nfct-helper-",    module, 12))
+               return true;
+
        return false;
 }
 #endif /* CONFIG_VE */


_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to