iptables简单运用(1)

linux 5aimiku 3007次浏览 15个评论
目录
[隐藏]

很多人包括我自己在内对于iptables其实都是很蛋疼的。。因为用法太多太多,而且没有一个系统的学习。于是我这里会记录下平时看到想到的关于iptables简单实用的小技巧和方法(长期更新)

iptables:

1.PREROUTING (路由前)
2.INPUT (数据包流入口)
3.FORWARD (转发管卡)
4.OUTPUT(数据包出口)
5.POSTROUTING(路由后)
这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

iptables定义规则的方式:

格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :3个filter nat mangle
COMMAND:定义如何对规则进行管理
chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
CRETIRIA:指定匹配标准
-j ACTION :指定如何进行处理

比如:不允许172.16.0.0/24的进行访问。

iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP

当然你如果想拒绝的更彻底:

iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT

iptables -L -n -v #查看定义规则的详细信息。

接下来放点更实用的东西:

关闭所有的 INPUT FORWARD OUTPUT:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

这个设置只是临时的, 重启服务器还是会恢复原来没有设置的状态
还要使用 service iptables save 进行保存
看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables
可以打开文件编辑 vi /etc/sysconfig/iptables

打开特定端口:

很多人买了VULTR搭建好了SS却无法上网的原因就在于没有开端口,这里给出具体操作办法:比如我打开31415端口(具体操作换成你需要的端口)

iptables -A INPUT -p tcp --dport 31415 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 31415 -j ACCEPT

打完命令后啥都不会发生用iptables -L -n查看是否更改成功
最后别忘记了保存 对防火墙的设置
通过命令:service iptables save 进行保存

对于命令简短说明:

-A 参数就看成是添加一条 INPUT 的规则
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS
到时我们要配置DNS用到53端口 大家就会发现使用udp协议的
而 –dport 就是目标端口 当数据从外部进入服务器为目标端口
反之 数据从服务器出去 则为数据源端口 使用 –sport
j 就是指定是 ACCEPT 接收 或者 DROP 不接收

禁止某个IP访问:

通过命令

 iptables -A INPUT -p tcp -s server ip -j DROP

(这里的TCP或者UDP根据情况更改。如果是 udp 就写udp,这里就用tcp了, -s就是 来源的意思,
ip来源于 xxxx ,-j 怎么做 我们拒绝它 这里应该是 DROP)

对于某个ip进行限速(外租翻墙的小伙伴看过来):

iptables限制某IP的上传速度为1000KB/秒(8Mbps,流入服务器带宽),即在此IP所在的服务器或VPS上wget的速度

iptables -A FORWARD -m limit -d x.x.x.x --limit 700/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -d x.x.x.x -j DROP

取消iptables限速:

iptables -D FORWARD -m limit -d x.x.x.x --limit 700/s --limit-burst 100 -j ACCEPT
iptables -D FORWARD -d x.x.x.x -j DROP

限制下载速度(设置同上):

iptables -A FORWARD -s x.x.x.x -m limit --limit 700/s -j ACCEPT
iptables -A FORWARD -s x.x.x.x -j DROP

双向限速(设置同上):

iptables -A FORWARD -m limit -d x.x.x.x --limit 700/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -d x.x.x.x -j DROP
iptables -A FORWARD -m limit -s x.x.x.x --limit 700/s --limit-burst 100 -j ACCEPT
iptables -A FORWARD -s x.x.x.x -j DROP

我知道你们其实并不想知道这个东西到底是如何实现,语句到底是啥意思,包括我在内也不想。所以在这里和你们说。想改变限速值就改变这里的700/s,如果是1400/s的话就是限速2000KB/S

如果真的想知道,看这里:

接下来是一系列基本命令(有一些我自己都不会用)

范例 iptables -A INPUT …
说明 新增规则到某个规则炼中,该规则将会成为规则炼中的最后一条规则。

范例 iptables -D INPUT –dport 80 -j DROP iptables -D INPUT 1
说明 从某个规则炼中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

范例 iptables -R INPUT 1 -s 192.168.0.1 -j DROP
说明 取代现行规则,规则被取代后并不会改变顺序。

范例 iptables -I INPUT 1 –dport 80 -j ACCEPT
说明 插入一条规则,原本该位置上的规则将会往后移动一个顺位。

范例 iptables -L INPUT
说明 列出某规则炼中的所有规则。

范例 iptables -F INPUT
说明 删除某规则炼中的所有规则。

范例 iptables -Z INPUT
说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。

范例 iptables -N allowed
说明 定义新的规则炼。

范例 iptables -X allowed
说明 删除某个规则炼。 范例 iptables -P INPUT DROP 说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。

范例 iptables -E allowed disallowed
说明 修改某自订规则炼的名称。 常用封包比对参数:

范例 iptables -A INPUT -p tcp
说明 比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp ,意思是指除 tcp 以外的其它类型,包含 udp、icmp …等。如果要比对所有类型,则可以使用 all 关键词,

范例 iptables -A INPUT -s 192.168.1.1
说明 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时也可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/24。

范例 iptables -A INPUT -d 192.168.1.1
说明 用来比对封包的目的地 IP,设定方式同上。

范例 iptables -A INPUT -i eth0
说明 用来比对封包是从哪片网卡进入,可以使用通配字符 + 来做大范围比对,例如:-i eth+ 表示所有的 ethernet 网卡,也可以使用 ! 运算子进行反向比对,例如:-i ! eth0

范例 iptables -A FORWARD -o eth0
说明 用来比对封包要从哪片网卡送出,设定方式同上。

范例 iptables -A INPUT -p tcp –sport 22
说明 用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:–sport 22:80,表示从 22 到 80 埠之间都算是符合条件,如果要比对不连续的多个埠,则必须使用 –multiport 参数。比对埠号时,可以使用 ! 运算子进行反向比对。

范例 iptables -A INPUT -p tcp –dport 22
说明 用来比对封包的目的地埠号,设定方式同上。

范例 iptables -p tcp –tcp-flags SYN,FIN,ACK SYN
说明 比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二部分则列举前述旗号中哪些有被设定,未被列举的旗号必须是空的。TCP 状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对。比对旗号时,可以使用 ! 运算子进行反向比对。

范例 iptables -p tcp –syn
说明 用来比对是否为要求联机之 TCP 封包,与 iptables -p tcp –tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用 ! 运算子,可用来比对非要求联机封包。

范例 iptables -A INPUT -p tcp -m multiport –source-port 22,53,80,110
说明 用来比对不连续的多个来源埠号,一次最多可以比对 15 个埠,可以使用 ! 运算子进行反向比对。

范例 iptables -A INPUT -p tcp -m multiport –destination-port 22,53,80,110
说明 用来比对不连续的多个目的地埠号,设定方式同上。

范例 iptables -A INPUT -p tcp -m multiport –port 22,53,80,110
说明 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为 80 但目的地埠号为 110,这种封包并不算符合条件。

范例 iptables -A INPUT -p icmp –icmp-type 8
说明 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。请打 iptables -p icmp –help 来查看有哪些代码可以用。

范例 iptables -A INPUT -m limit –limit 3/hour
说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。 除了每小时平均一次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封包数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。

范例 iptables -A INPUT -m limit –limit-burst 5
说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封包将被直接丢弃。使用效果同上。

范例 iptables -A INPUT -m mac –mac-source 00:00:00:00:00:01
说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting 规则炼上,这是因为封包要送出到网卡后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到哪个网络接口去。 范例 iptables -t mangle -A INPUT -m mark –mark 1 说明 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最大不可以超过 4294967296。

范例 iptables -A OUTPUT -m owner –uid-owner 500
说明 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出去,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。

范例 iptables -A OUTPUT -m owner –gid-owner 0
说明 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。

范例 iptables -A OUTPUT -m owner –pid-owner 78
说明 用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。

范例 iptables -A OUTPUT -m owner –sid-owner 100 说明 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时机同上。


本文版权:霜之哀伤 转载请注明iptables简单运用(1)
喜欢 (5)or分享 (0)
5aimiku
关于作者:
一条自以为上了大学就脱离苦海的咸鱼,业余喜欢打游戏,平时喜欢折腾各种东西,喜欢ACG,喜欢宅。
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(15)个小伙伴在吐槽
  1. Araragi
    五层叠加了 但是zcom也是限速的啊,我试过啊而且conoha和z.com的机子根本就是一样的
    Araragi2016-09-17 13:04 回复
    • 5aimiku
      机房一样。但是z.com限流量不限速啊。。难道大半年没用又开始限速了?
      5aimiku2016-09-17 15:09 回复
      • Araragi
        我记得我挂磁链的时候被限速了的 可能是因为挂的是本子
        Araragi2016-09-17 21:27 回复
        • 5aimiku
          啧。我仿佛看到了E站的身影。那么问题来了。。为啥我开ss站那么多人用也没检测到限速。。。
          5aimiku2016-09-17 22:05 回复
          • Araragi
            玄学,我当时收到的邮件是 また、100Mbpsの共有となりますので、他のお客様 影響懸念がある場合には制限させていただく場合は ございます。 また、対象となるのは、インバウンド、アウトバウンド 両方となります。 然后我就删了机器,没想到现在z.com已经不卖VPS了..
            Araragi2016-09-18 00:14
          • 5aimiku
            不是不卖了。。而是貌似机子开完了
            5aimiku2016-09-18 01:11
  2. Araragi
    楼主有没有对特定端口限速的办法啊,合租不限速容易玩崩..
    Araragi2016-09-16 19:36 回复
    • 5aimiku
      对于特定端口的话可以使用sspanel
      5aimiku2016-09-16 22:53 回复
    • 5aimiku
      而且合租。。有多少人啊。需要限速。除非小带宽的线路
      5aimiku2016-09-16 22:55 回复
      • Araragi
        不是,是那种占带宽久了要限速的 我试着建过sspanel v3然后登入了下后台发现连节点都加不上其实是我不会搭
        Araragi2016-09-16 23:10 回复
        • 5aimiku
          这个嘛。唉。其实我都是一直用ssp V3魔改的。端口我并没有研究过单纯用iptables控制。不过理论上是可以的。这个ip限速纯粹是写着玩的。
          5aimiku2016-09-16 23:12 回复
        • 5aimiku
          说起来。。限速这个东西。。我怎么感觉像conoha啊。。这东西还不如z.com呢
          5aimiku2016-09-16 23:22 回复
          • Araragi
            就是conoha,虽然限速但是壁纸好萌啊 现在想想我好像只搭了前端 因为后端一点反应都没有
            Araragi2016-09-16 23:50
          • 5aimiku
            噫。conoha这东西我里面还有1000多日元都不想用直接丢了。z.com和conoha一样的机房没啥区别但是人家就不限速
            5aimiku2016-09-17 02:23
  3. 看了好几遍。啊。我自己都觉得这篇文章搞的好。我都想夸自己一下233
    5aimiku2016-06-03 18:59 回复