目录
1. 传输层禁止访问
2. 应用层访问控制
访问控制有两个方式,一种是在OSI模型的四层传输层,一种是在第七层应用层。
主机防火墙就是在四层传输控制,nginx就是在七层应用控制。
1. 传输层禁止访问
在进行访问控制前,先开启防火墙
systemctl start firewalld.service
比如我先查看我的虚拟机系统连接了那些 ip 地址
可以看到192.168.164.1,这是NAT模式的网卡的网关,也就是们的物理机其实是使用的VMnet8 虚拟网卡的ip地址进行连接的,如果我通过防火墙将这个ip地址给封了,那么再建立新的ssh连接应该就连不上这个虚拟机了。
直接在终端执行下面的命令行进行访问禁止
firewall-cmd --add-rich-rule='rule family=ipv4 source address="192.168.164.1" drop'
连接看效果
ssh 连接不上
之前部署的网站也访问不了
这是因为我在传输层直接把 ip 禁止了,想要恢复访问的话就关闭防火墙
systemctl stop firewalld.service
或者释放出来
firewall-cmd --remove-rich-rule='rule family=ipv4 source address="192.168.164.1" drop'
2. 应用层访问控制
在进行访问控制前,先将防火墙关闭
systemctl stop firewalld.service
allow 允许;加入白名单,允许访问
deny 拒绝;拉黑的,加入黑名单,被禁止访问
比如我在我的 a.fly.com 网站进行访问控制,就直接在 server 配置文件中加入 allow、deny
deny 192.168.164.1; # 黑名单,不允许192.168.61.1访问这个网站
allow 0.0.0.0/0; # 白名单,0.0.0.0/0表示所有ip都在白名单
然后进行访问查看效果,控制成功
可以查看日志,
cat /var/log/nginx/error.log
七层禁止、没有首页html文件、文件没有读取权限,比如nginx访问某些文件,用的nginx用户身份,如果某个网站的文件,nginx用户没有读取权限,那么也是403