linux accept 修改数据包,linux防火墙之牛刀小试

上一篇文章“iptables之语法初步”有说到iptables的基本命令,配合实际的操作指令应该可以实现基本的iptables操作。那么如果要实现将规则应用于实际的生产环境中,还需要了解以下的内容。

uid-29792372-id-5394856.html

匹配注意:

? Ip地址或者主机名(主机名必须可以解析)

? 端口号码或者是服务名字22 or ssh( 对应到/etc/service )

? 排除可以用“!”

? 一段端口可以用“:” 比如‘0:1024’

? 子网掩码可以使用vlsn或者cidr的方式

cidr: 10.0.1.0/24 vlsn :10.0.1.0/255.255.255.0

一:按网络接口匹配

-i

例如:

-i eth0匹配是否从网络接口 eth0 进来-i ppp0  匹配是否从网络接口 ppp0 进来

-o 匹配数据流出的网络接口

例如:

-o eth0

-o ppp0

二:按来源目的地址匹配

-s

可以是 IP、NET、DOMAIN,也可空(任何地址)

例如:

-s 192.168.0.1匹配来自 192.168.0.1 的数据包

-s 192.168.1.0/24匹配来自 192.168.1.0/24 网络的数据包

-s 192.168.0.0/16匹配来自 192.168.0.0/16 网络的数据包

-d

可以是 IP、NET、DOMAIN,也可以空

例如:

-d 202.106.0.20匹配去往 202.106.0.20 的数据包

-d 202.106.0.0/16匹配去往 202.106.0.0/16 网络的数据包

-d 匹配去往域名 的数据包

三:按协议类型匹配

-p

可以是 TCP、UDP、ICMP 等,也可为空

例如:

-p tcp

-p udp

-p icmp --icmp-type 类型

ping: type 8pong: type 0

四:按来源目的端口匹配

--sport

可以是个别端口,可以是端口范围

例如:

--sport 1000匹配源端口是 1000 的数据包

--sport 1000:3000匹配源端口是 1000-3000 的数据包(含1000、3000)

--sport :3000匹配源端口是 3000 以下的数据包(含 3000)

--sport 1000:匹配源端口是 1000 以上的数据包(含 1000)

--dport

可以是个别端口,可以是端口范围

例如:

--dport 80匹配源端口是 80 的数据包

--dport 6000:8000匹配源端口是 6000-8000 的数据包(含6000、8000)

--dport :3000匹配源端口是 3000 以下的数据包(含 3000)

--dport 1000: 匹配源端口是 1000 以上的数据包(含 1000)

例1、端口匹配

-p udp --dport 53

匹配网络中目的地址是 53 的 UDP 协议数据包

例2、地址匹配

-s 10.1.0.0/24 -d 172.17.0.0/16

匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包

例3、端口和地址联合匹配

-s 192.168.0.1 -d -p tcp --dport 80

匹配来自 192.168.0.1,去往 的 80 端口的 TCP 协议数据包。

注意:

1、--sport、--dport 必须联合 -p 使用,必须指明协议类型是什么

2、条件写的越多,匹配越细致,匹配范围越小

uid-29792372-id-5394856.html

一:-j ACCEPT

通过,允许数据包通过本链而不拦截它, 类似 Cisco 中 ACL 里面的 permit 。

例如:

允许所有访问本机 IP 的数据包通过

二:-j DROP

丢弃,阻止数据包通过本链而丢弃它,类似 Cisco 中 ACL 里的 deny。

例如:

阻止来源地址为 192.168.80.39 的数据包通过本机

三:-j SNAT

-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链)

源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池(一组连续的 IP 地址)

例如:

将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT。

同上,只不过修改成一个地址池里的 IP。

四:-j DNAT

-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 链)

目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池(一组连续的 IP 地址)。

例如:

把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1

五:-j MASQUERADE

-j MASQUERADE 动态源地址转换(动态 IP 的情况下使用)

例如:

将源地址是 192.168.0.0/24 的数据包进行地址伪装

uid-29792372-id-5394856.html

uid-29792372-id-5394856.html

uid-29792372-id-5394856.html

uid-29792372-id-5394856.html

uid-29792372-id-5394856.html

牛刀小试

uid-29792372-id-5394856.html

一、

假设在防火墙主机执行“iptables -A INPUT -p icmp -j DROP”指令,请问192.168.2.15及192.168.0.20哪一台主机可以ping到防火墙主机?

二、

假设在防火墙主机上执行“iptables -A INPUT -i eth0 -p icmp -d 192.168.0.2 -j DROP”命令,请问192.168.2.15及192.168.0.20哪一台主机可以ping到防火墙主机的192.168.0/2这个IP?

三、

假设在防火墙主机有WEB Server正在执行中,且我们在防火墙主机上执行“iptables -A INPUT -i eth1 --dport 80 -s 192.168.0.0/24 -j REJECT”指令,请问在上图中哪些主机可以访问到该WEB Server?

四、

假设192.168.2.5主机为WEB Server,且我们在防火墙主机上执行“iptables -A INPUT -i eth1 -p tcp -d 192.168.2.5 --dport 80 -j REJECT”指令,请问192.168.0.20及192.168.2.15哪一台主机可以方问到该WEB Server?

五、

假设192.168.2.5及192.168.0.10主机都为WEB Server,且我们在防火墙主机上执行“iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport -j REJECT”命令,请问:192.168.0.20可以该问到哪一台WEB Server?192.168.2.15可以该问到哪一台WEB Server?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值