最新消息:

通过 modprobe 彻底禁用 netfilter

kernel admin 4933浏览 0评论

要禁用 iptables 很简单,曲线救国,禁用掉模块就好了:
$ cat /etc/modprobe.d/blacklist-iptables.conf
alias ip_tables off

alias iptable off
alias iptable_nat off
alias iptable_filter off

alias nf_nat off
alias nf_conntrack_ipv4 off
alias nf_conntrack off
alias nf_defrag_ipv4 off

alias x_tables off

alias xt_limit off
alias xt_tcpudp off
alias xt_multiport off

alias ipt_REJECT off
alias ipt_LOG off

再启用上面的文件之前,记得先把 iptables 规则清空、rmmod 掉对应的模块。这也是另外一种防止 『dropping packet』 的方式。
netfilter 的模块在 /lib/modules/2.6.32-38-server/kernel/net/ipv4/netfilter/ 里面。

通过 systool 可以看到被加载模块的 section:
# systool  -v -m ip_tables
Module = “ip_tables”

Attributes:
initstate           = “live”
refcnt              = “1”
srcversion          = “DC18D42211BCD06DB350605”

Sections:
.bss                = “0xffffffffa0032d60”
.data               = “0xffffffffa00328e0”
.data.read_mostly   = “0xffffffffa0032980”
.exit.text          = “0xffffffffa00324fc”
.gnu.linkonce.this_module= “0xffffffffa0032b00”
.init.text          = “0xffffffffa000c000”
.note.gnu.build-id  = “0xffffffffa0032568”
.parainstructions   = “0xffffffffa0032650”
.ref.text           = “0xffffffffa0032550”
.rodata             = “0xffffffffa00325a0”
.rodata.str1.1      = “0xffffffffa00325c8”
.rodata.str1.8      = “0xffffffffa0032680”
.strtab             = “0xffffffffa000cf78”
.symtab             = “0xffffffffa000c0c0”
.text               = “0xffffffffa002f000”
__kcrctab           = “0xffffffffa0032770”
__ksymtab           = “0xffffffffa0032740”
__ksymtab_strings   = “0xffffffffa0032788”
__mcount_loc        = “0xffffffffa00327c0”
查看当前模块的所有的详细情况:
$ modprobe -c | less

module 也有  Alias 一说,因此 “alias my-mod really_long_modulename” 意味着你可以使用 “modprobe my-mod” 而非 “modprobe really_long_modulename” 来加载模块。所以上面的 off 就好理解了。

跟 module 相关的还有个 blacklist 概念:
$ cat /etc/modprobe.d/blacklist-iptables.conf
blacklist ip_tables

blacklist iptable
blacklist iptable_nat
blacklist iptable_filter

blacklist nf_nat
blacklist nf_conntrack_ipv4
blacklist nf_conntrack
blacklist nf_defrag_ipv4

blacklist x_tables

blacklist xt_limit
blacklist xt_tcpudp
blacklist xt_multiport

blacklist ipt_REJECT
blacklist ipt_LOG

这个可以在系统启动的时候禁止加载这个模块,但是,尽管启动的时候禁掉了,但是如果在进入系统之后执行:
# iptables -L -n

系统又会自动加载诸如:
iptable_filter          1841  0
ip_tables              18201  1 iptable_filter
x_tables               22361  1 ip_tables
等模块,因此这种方式并不是很好。顺便提一句,使用 “blacklist” 可能会遇到依赖的问题,因此使用下面这个方式会比上面的这个更好:
install MODULE_NAME /bin/false

ref:

https://wiki.archlinux.org/index.php/Kernel_modules

 

转载请注明:爱开源 » 通过 modprobe 彻底禁用 netfilter

您必须 登录 才能发表评论!