[分享] nftables技术分享@Debian Jessie (I)

楼主: Debian (Debian)   2014-07-13 18:03:26
本技术分享一共分为四章
第一章 绪言
第二章 环境简介
第三章 nftables简易规则介绍
第四章 实作nftables与开机加载规则分享
本文(I)将介绍第一章至第三章,
第四章将于(II)进行介绍。
第一章 绪言
由于netfilter已经宣布了nftables及将自kernel 3.13版本后,
陆续的取代使用许久的iptables。
手边刚好有了一台没有任何用途使用中的电脑,
故便帮各位Debian的使用者们,
对nftables进行了简单的测试。
第二章 环境简介
本次的测试硬件与软件环境如下:
DHCP浮动ip网段
某不知名Intel Core Duo 双核心单执行绪CPU乙颗
G31芯片组主机板
RTL8168 ethernet芯片网卡乙张
Debian Jessie 64bit boot up with SystemD
由于本次使用的硬件仅为单网卡的电脑,
故本次测试的nftables范围,
就没有包含到了使用NAT的规则部份。
第三章 nftables简易规则介绍
由于近日以来,
部份勇于尝试新鲜的linux distro,
皆提供了其发行板所使用的套件库内nftables可安装packages,
并release了nftables相关的wiki文件[1][2],
很可惜的,
在下必须向各位说声抱歉,
目前debian官方并未提供详细的nftables wiki相关文件,
不过由于netfilter的官方文件[3]与诸多先进们曾留下的howto笔记中[4][5],
我们仍可以透过这些资讯,
来进行一个基本的nftables study。
于debian jessie中,
目前我们已经可由apt套件库安装上nftables,
# apt-get install nftables
在安装好nftables后,
我们可以看一下/etc/nftables的目录,
所有最基本的nftables设定皆放在此目录中。
#ls -l| /etc/nftables
您会看到类似像是这样的画面:
-rwxr-xr-x 1 root root 217 5月 28 15:42 bridge-filter
-rwxr-xr-x 1 root root 207 5月 28 15:42 inet-filter
-rwxr-xr-x 1 root root 202 5月 28 15:42 ipv4-filter
-rwxr-xr-x 1 root root 94 5月 28 15:42 ipv4-mangle
-rwxr-xr-x 1 root root 160 5月 28 15:42 ipv4-nat
-rwxr-xr-x 1 root root 206 5月 28 15:42 ipv6-filter
-rwxr-xr-x 1 root root 98 5月 28 15:42 ipv6-mangle
-rwxr-xr-x 1 root root 164 5月 28 15:42 ipv6-nat
各位其实可以发现,
iptables中我们可以设定的规则,
都可以在nftables上的设定档中来进行设定。
此次我们仅测试到的是ipv4与ipv6的基本功能,
我们便使用ipv4-filter与ipv6-filter这两个档案进行汇入
汇入的方式很简单,
我们可以下这两个指令,
将ipv4与ipv6的规则迅速的汇入。
# nft -f /etc/nftables/ipv4-filter
# nft -f /etc/nftables/ipv6-filter
此时您可以使用这两个指令来去察看ipv4与ipv6的现存设定
# nft list table ip filter
# nft list table ip6 filter
这时您看到的画面,
与您直接cat /etc/nftables/ipv4-filter,
以及cat /etc/nftables/ipv6-filter这两个指令看到的画面,
会看到相同的东西。
先来个简单又实用的example!
若挡了所有input的连线,
但电脑仍然需要上网,
则势必要让主动连外的封包可以回来:
# nft add rule ip filter input ct state established accept
同样的若要是在ipv6的环境下,
也可以加入在ipv6的规则中:
# nft add rule ip6 filter input ct state established accept
在linux上使用ssh来远端连线是很基本的需求,
使用nfs进行传送档案更不用说了,
故依照我们的需求开port也是很理所当然的事情。
假设本机的ssh port在4444,
那么以下的这条规则就可以帮各位开好了ssh使用的port:
# nft add rule ip filter input tcp dport 4444 accept
当所需要开启的port不只一个,
在nftables中可以很简单的使用multi port的方式,
以一条规则开启多个port,
假设今天要开启3333、4444以及5555这3个tcp的port,
那么只要下这一个指令就可以一气呵成。
# nft add rule ip filter input tcp dport {3333,4444,5555} accept
阻挡某一个ip也是很基本的需求,
假设今天要阻挡来自于ip 1.2.3.4的电脑的连线:
# nft add rule ip filter input ip saddr 1.2.3.4 drop
阻挡某个mac address的网卡的连线,
当然也不会是太困难的事情!
假设今天要阻挡来自00:11:22:33:44:55这个mac address的网卡的连线:
# nft add rule ip filter input ether saddr 00:11:22:33:44:55 drop
其余部份于(II)继续进行介绍!
参考文献
[1] http://wiki.gentoo.org/wiki/Nftables
[2] https://wiki.archlinux.org/index.php/nftables
[3] http://wiki.nftables.org/wiki-nftables/index.php/Main_Page
[4] https://home.regit.org/netfilter-en/nftables-quick-howto/
[5] http://kernelnewbies.org/nftables_examples
作者: scott260202 (Cake)   2014-07-13 18:57:00
先推,可是好懒得学新东西(倒 旧机器的也不太敢动
作者: kadok (kadok)   2014-07-13 21:09:00
有网页版的吗?
作者: Adama (So Say We All.)   2014-07-13 21:51:00
可以动态开port吗?
作者: kadok (kadok)   2014-07-16 17:17:00
这文看起来像是在个人blog笔记 还是其他阅读版本
楼主: Debian (Debian)   2014-07-17 14:37:00
@kadok:本篇分享目前只有在本版公开贴出,并没有在其他blog或是网站公开贴出,若您想要转录至其他blog也非常欢迎!欢迎随意转录取用。

Links booklink

Contact Us: admin [ a t ] ucptt.com