探究Linux防火墙系统中的Iptables Mark标记技术 (linux iptables mark)
翻译成中文,这个标题是在。这篇文章将深入探讨这个技术,包括它的工作原理、如何使用它以及如何更好地保护您的Linux服务器。
我们需要了解什么是Iptables和Mark标记技术。Iptables是一个Linux系统中的防火墙工具,它允许您通过设置输入、输出和转发规则来限制网络流量。Mark标记技术是一个功能,它允许您将流量与特定的标记相关联。这些标记可用于根据流量类型或其他标识符选择特定的Iptables规则。
在Linux系统中,Iptables是常规的防火墙工具。它的强大之处在于,它可以配置许多不同类型的规则。例如,它可以拦截特定来源或目标地址的流量,它也可以允许或禁止特定端口的流量。Iptables还可以配置规则,以允许或限制特定协议或特定的应用程序流量。
标记技术是一种增强的功能。通过给流量打上标记,管理员可以创建与标记相关的规则,以更细致地控制流量。例如,管理员可以为每个不同的应用程序分配不同的标记。这些标记允许管理员针对每个应用程序做出适当的防火墙规则配置。
Iptables Mark标记技术的核心在于uiptables命令。这个命令允许管理员创建、修改和删除Iptables规则。为了使用标记技术,管理员需要使用uiptables命令在过滤链中创建一条新规则,并将该规则与特定的标记相关联。例如,管理员可以创建一个新规则,该规则允许所有标记为“web”的数据包流量通过。这样的规则可以通过以下命令创建:
iptables -A FORWARD -m mark –mark 0x4e -j ACCEPT
这个命令将创建一个新规则,允许标记为0x4e的所有数据包通过。管理员还可以使用更高级的技巧,例如在选定的应用程序启动时动态更新iptables规则。
要保持服务器的安全,需要谨慎地选择标记技术。如果管理员不正确地配置标记规则,可能会导致意外的安全漏洞。例如,如果管理员不正确地配置规则,允许来自可疑机器的进入流量,标记技术就会为黑客留下可能攻击的通道。
使用Iptables Mark标记技术需要一些技术知识。管理员需要了解如何为不同应用程序分配不同的标记,如何正确设置标记规则,以及如何验证这些规则是否按照预期工作。因此,如果您是一位Linux系统管理员,则需要投入足够的时间来了解这种技术。
Iptables Mark标记技术为Linux系统管理员提供了一种更高级的方式来保护服务器。通过使用标记技术,管理员可以根据流量类型或其他标识符精确地控制防火墙规则。虽然标记技术需要一些额外的技术知识,但它可以提供更好的安全性和防御性。因此,如果您是Linux系统管理员,则应了解和使用此技术。
相关问题拓展阅读:
- 在linux上的iptables防火墙上怎么设置信任MAC地址访问端口
- linux中如何控制端口流量
在linux上的iptables防火墙上怎么设置信任MAC地址访问端口
iptables -A INPUT -p all –dport 80 -m mac –mac-source \ > 01:01:01:01:02:01 -j ACCEPT 搞定。MAC你自己写咯
端口操作相关示例: 6.1 添加端口(1) 允许源地址为x.x.x.x/x的主机通过22(ssh)端口.iptables -A INPUT -p tcp -s x.x.x.x/x –dport 22 -j ACCEPT (2)允许80(http)端口的数据包进入iptables -A INPUT -p tcp –dport 80 -j ACCEPT (3)允许110(pop3)端口的数据包进入,如果不加这规则,就只能通过web页面来收信(无法用OE或Foxmail等来收)iptables -A INPUT -p tcp –dport 110 -j ACCEPT (4) 允许25(tp)端口的数据包进入,如果不加这规则,就只能通过web页面来发信(无法用OE或Foxmail等来发)iptables -A INPUT -p tcp –dport 25 -j ACCEPT (5)允许21(ftp)端口的数据包进入(传数据)iptables -A INPUT -p tcp –dport 21 -j ACCEPT (6)允许20(ftp)端口的数据包进入(执行ftp命令,如dir等) iptables -A INPUT -p tcp –dport 20 -j ACCEPT (7)允许53(dns)端口的数据包进入(tcp)
iptables -A INPUT -p tcp –dport 53 -j ACCEPT (8)允许53(dns)端口的数据包进入(udp)
iptables -A INPUT -p udp –dport 53 -j ACCEPT (9)允许ICMP包通过,也就是允许ping iptables -A INPUT -p icmp -j ACCEPT(10)利用 iptables 对连接状态的支持iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT(11)把INPUT链的默认规则设置为DROPiptables -P INPUT DROP
1.看看你的iptables脚本在哪个目录下,找到改一下。/etc/sysconfig/iptables 2.例如绑定命令如下-A FORWARD -s 192.168.10.XXX -m mac ! –mac-source 00:13:21:25:E5:C8 -j DROP你可以将-A改成-D,删除此命令
linux中如何控制端口流量
配置网卡
建立一台虚拟机,并安装完成后以桥接的方式在虚拟机上面添加两张网卡。分别为eth0和eth1。
eth0: a.b.c.d(外网的上网地址)
eth1: 172.16.44.1(做为内网的网关)
Tip
原先我使用eth0:0的这种虚拟网卡的形式去配置一直不成功,后来使用双网卡的时候一直忘了把eth0:0这张虚拟网卡删掉导致了限速配置一直不成功,浪费了大轮颂把的青葱。
配置iptables nat
#开启ip_forward
echo “1”>/proc/sys/net/ipv4/ip_forward
#清除原来的防火墙规则
iptables -F
iptables -t nat -F
iptables -t mangle -F
#添加nat转发
iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE
通腊洞郑过执行上面的代码后,局域网内的电脑就可以上网了。
端口转发
由于我的内网还挂了网站,所以要开启80端口的转颤孝发。
iptables -t nat -I PREROUTING -p tcp -d a.b.c.d –dport 80 -j DNAT –to 172.16.44.210:80
iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 –dport 80 -j SNAT –to 172.16.44.1
这条命令指定外网地址a.b.c.d的80端口转发到172.16.44.210:80上。由于是双网卡,所以需要做一下回路。
下载限速
下载限速要在eth1上面做,判断数据包的目的地址来做限制。tc包括三部分:队列、类、过滤器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比较复杂一点,而且据说性能没htb好。
#删除原来的tc规则队列
tc qdisc del dev eth1 root
#添加tc规则队列
tc qdisc add dev eth1 root handle 10: htb default 256
#生成根类
tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit
#支类列表用于限制速度
#这里的rate指的是保证带宽,ceil是更大带宽。
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1
#添加支类规则队列
#采用sfq伪随机队列,并且10秒重置一次散列函数。
tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10
#建立网络包过滤器,设置fw。
tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10
#在iptables里面设定mark值,与上面的handle值对应。
iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK –set-mark 1
通过上面的代码就可以限制172.16.44.130这台机子的到400kbps。
Tip
经过实际测试这里的kbps实际上就是KB/S每秒千字节。另一个单位是kbit,这个才是每秒千比特。这里的172.16.44.130也可以写成一个网段,比如:172.16.44.0/24
上传限速
上传限速的原理其实跟下载的差不多,只不过限制的网卡不同,要在eth0上过滤来源地址去限制。
#删除原来的tc规则队列
tc qdisc del dev eth0 root
#添加tc规则队列
tc qdisc add dev eth0 root handle 20: htb default 256
#生成根类
tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit
#支类列表用于限制速度
tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1
#添加支类规则队列
tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10
#建立网络包过滤器
tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10
iptables -t mangle -A PREROUTING -s 172.16.44.130 -j MARK –set-mark 2
Tip
跟下载不同的是POSTROUTING要改成PREROUTING,-d改成-s。
观察连接数
通过iptables的nat连接可以通过下面的代码查看。至于统计连接数可以写代码实现,也可以利用awk,grep等工具。反正里面的内容就是文本,处理起来也比较简单。
cat /proc/net/ip_conntrack
写在结尾
到此上网、端口转发和流量限制都已经实现。下次再考虑配置个dhcp server和dnasq。至于一些路由器其它诸如mac地址绑定,限制上网等用到的时候再去研究研究。
关于linux iptables mark的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。