匹配条件

防火墙里东西最多的就是匹配条件。

它有两个man手册  

1.man iptables

2.man iptables-extensions  

条件比较常用的是

协议   -p    (tcp   udp    icmp )   协议一般情况下和端口一起用

IP地址

端口

mac

端口

   源端口         --sport

  目标端口      --dport 

【注意】使用端口必须加协议,使用协议可以不加端口

写一个规则,目标端口80,不加协议直接报错了

centos iptables 21端口 iptables 端口范围_mac地址

 加了协议就好了

centos iptables 21端口 iptables 端口范围_服务器_02

centos iptables 21端口 iptables 端口范围_运维_03

 不加端口,光写tcp范围太大了。一般情况下,加的条件越多,匹配的数据包越精确,品配的数据包的范围越小。

ip地址

   源ip   -s

加一个源地址条件  (把条件细化了,范围缩写了)

centos iptables 21端口 iptables 端口范围_mac地址_04

   目标ip  -d

三个条件都加,这三种是平时用的最多的,源是10,目标端口是22, (这台机器不能访问我的22号端口)

centos iptables 21端口 iptables 端口范围_运维_05

curl命令还能访问,ssh就不可以了

centos iptables 21端口 iptables 端口范围_运维_06

多地址   -s   用逗号隔开就行

# iptables -t filter -A INPUT -p tcp -s 192.168.26.8, 192.168.26.28, 192.168.26.39 --dorp 22 -j REJECT

centos iptables 21端口 iptables 端口范围_mac地址_07

源地址范围    得加参数

# iptables -t filter -A INPUT -p tcp -m ip-range --src-range 192.168.26.8-192.168.26.39 --dorp 22 -j REJECT

centos iptables 21端口 iptables 端口范围_运维_08

参数不好记,可以看man手册  [man iptables-extensions  ]

centos iptables 21端口 iptables 端口范围_mac地址_09

centos iptables 21端口 iptables 端口范围_运维_10

不能看见这个结果就觉得对了,得把它删掉iptabels -D INPUT 1 删掉再测才能确定是这条防火墙起作用了

centos iptables 21端口 iptables 端口范围_mac地址_11

目标地址范围     把src换成dst   (目标端口是22的全部都拒绝)

# iptables -t filter -A INPUT -p tcp -m iprange --dst-range 192.168.26.8-192.168.26.39 --dorp 22 -j REJECT

多端口       -m multiport      

# iptables -t filter -A INPUT -p tcp -m multiport --dports 22,23,80 -j REJECT

# iptables -t filter -A INPUT -p tcp -m multiport --dports 22,23,80-100 -j REJECT

centos iptables 21端口 iptables 端口范围_服务器_12

-m是在man手册最开始的位置,把它叫做扩展匹配,不加-m的规则那种是一般的匹配,加-m的是扩展匹配。

centos iptables 21端口 iptables 端口范围_服务器_13

端口范围   : 

# iptables -t filter -A INPUT -p tcp --dports  22:80 -j REJECT

mac  

mac只有源mac,没有目标mac。只能禁止源mac地址。

man iptables-extensions  查看man手册

centos iptables 21端口 iptables 端口范围_服务器_14

# iptables -A INPUT -m mac --source-mac 55:08:2F:28:11:00 -j DROP   (得知道对方mac地址)

怎么不登录它机器,看到它的mac地址?

arp协议,地址解析协议,addres resolve protocol。专门用来解决ip和mac之间的关系的。在同一个局域网生效,在局域网进行广播,广播是不能穿越路由的。

apring 192.168.26.10

centos iptables 21端口 iptables 端口范围_运维_15

 arp -a  (只要地方ping过我,我的arp解析表就会有地方的mac地址)

centos iptables 21端口 iptables 端口范围_源地址_16

nmap

nmap -vv -sP 192.168.26.137

centos iptables 21端口 iptables 端口范围_运维_17

 man nmap查看一下帮助

centos iptables 21端口 iptables 端口范围_服务器_18

写防火墙

centos iptables 21端口 iptables 端口范围_mac地址_19

centos iptables 21端口 iptables 端口范围_mac地址_20

 

centos iptables 21端口 iptables 端口范围_运维_21

centos iptables 21端口 iptables 端口范围_源地址_22

 写在只剩下这一个了,然后什么都干不了,因为mac地址被干掉了

centos iptables 21端口 iptables 端口范围_mac地址_23

 在实际生产环境,服务器可能是公网ip,不管它从哪过来,就算它有路由,在不同的网络里面。路由器的接口也是mac地址的。

只允许我ping它,不允许它ping我。在公司可能有这样的需求

# iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.26.10 -j REJECT

centos iptables 21端口 iptables 端口范围_运维_24

centos iptables 21端口 iptables 端口范围_运维_25

 # iptables -A OUTPUT -p icmp --icmp-type echo-reply -d 192.168.26.10 -j REJECT

centos iptables 21端口 iptables 端口范围_源地址_26

centos iptables 21端口 iptables 端口范围_mac地址_27