匹配条件
防火墙里东西最多的就是匹配条件。
它有两个man手册
1.man iptables
2.man iptables-extensions
条件比较常用的是
协议 -p (tcp udp icmp ) 协议一般情况下和端口一起用
IP地址
端口
mac
端口
源端口 --sport
目标端口 --dport
【注意】使用端口必须加协议,使用协议可以不加端口
写一个规则,目标端口80,不加协议直接报错了
加了协议就好了
不加端口,光写tcp范围太大了。一般情况下,加的条件越多,匹配的数据包越精确,品配的数据包的范围越小。
ip地址
源ip -s
加一个源地址条件 (把条件细化了,范围缩写了)
目标ip -d
三个条件都加,这三种是平时用的最多的,源是10,目标端口是22, (这台机器不能访问我的22号端口)
curl命令还能访问,ssh就不可以了
多地址 -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
源地址范围 得加参数
# iptables -t filter -A INPUT -p tcp -m ip-range --src-range 192.168.26.8-192.168.26.39 --dorp 22 -j REJECT
参数不好记,可以看man手册 [man iptables-extensions ]
不能看见这个结果就觉得对了,得把它删掉iptabels -D INPUT 1 删掉再测才能确定是这条防火墙起作用了
目标地址范围 把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
-m是在man手册最开始的位置,把它叫做扩展匹配,不加-m的规则那种是一般的匹配,加-m的是扩展匹配。
端口范围 :
# iptables -t filter -A INPUT -p tcp --dports 22:80 -j REJECT
mac
mac只有源mac,没有目标mac。只能禁止源mac地址。
man iptables-extensions 查看man手册
# 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
arp -a (只要地方ping过我,我的arp解析表就会有地方的mac地址)
nmap
nmap -vv -sP 192.168.26.137
man nmap查看一下帮助
写防火墙
写在只剩下这一个了,然后什么都干不了,因为mac地址被干掉了
在实际生产环境,服务器可能是公网ip,不管它从哪过来,就算它有路由,在不同的网络里面。路由器的接口也是mac地址的。
只允许我ping它,不允许它ping我。在公司可能有这样的需求
# iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.26.10 -j REJECT
# iptables -A OUTPUT -p icmp --icmp-type echo-reply -d 192.168.26.10 -j REJECT