Linux防火墙FIREWALL

基础命令


 firewall-cmd --state                                      ###查看状态
 firewall-cmd --get-active-zones                           ###查看活跃状态
 firewall-cmd --get-default-zone                           ###查看默认的状态
 firewall-cmd --get-zones                                  ###显示所有域(名称)
 firewall-cmd --zone=public --list-all                     ###列出域为public状态的所有域
 firewall-cmd --get-services                               ###防火墙所有支持的服务,在/usr/lib/firewalld/services/下           
 firewall-cmd --list-all-zones                             ###显示所有域的详细信息
 firewall-cmd --set-default-zone=dmz                       ###设置默认状态为dmz

防火墙访问限制


服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 systemctl stop iptables
 systemctl start firewalld
 yum install httpd -y
 echo "<h1>172.25.254.125</h1>" >/var/www/html/index.html
 systemctl start httpd 
 firewall-cmd --remove-interface=eth1
 firewall-cmd --add-interface=eth1 --zone=trusted 或 firewall-cmd --change-interface=eht1 --zone=trusted

测试

客户端:192.168.0.225,加入网关:192.168.0.125
由于防火墙的存在,我们通过http访问是无法成功的,因此加入防火墙信任区的eth1(192.168.0.125)可以访问,而eth0(172.25.254.125)就无法访问

 http://172.25.254.125
 http://192.168.0.125

这里写图片描述
服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 systemctl restart firewalld                                   ###由于我们刚写的命令都没加--permanent,没有写入到配置文件中,所以重启就还原配置了
 firewall-cmd --add-source=172.25.254.0/24 --zone=trusted      ###添加网段到信任域
 firewall-cmd --remove-source=172.25.254.0/24  --zone=trusted  ###测试完成我们可以把网段移出信任域

测试

客户端:192.168.0.225,加入网关:192.168.0.125

这里写图片描述

真机:172.25.254.56

这里写图片描述

防火墙端口访问


服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 vim /usr/lib/firewalld/services/http.xml                      ###改变防火墙的默认开启端口
  5   <port protocol="tcp" port="8000"/>
 vim /etc/httpd/conf/httpd.conf                                ###改变http端口
  42 Listen 8000
 systemctl restart httpd
 systemctl restart firewalld
 firewall-cmd --add-service=http                               ###添加http到活跃域中

测试

客户端:192.168.0.225,加入网关:192.168.0.125

 http://172.25.254.125:8000

这里写图片描述

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 vim /usr/lib/firewalld/services/http.xml
  5   <port protocol="tcp" port="80"/>
 systemctl restart firewalld

测试

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

  firewall-cmd --add-service=http

客户端:192.168.0.225,加入网关:192.168.0.125
我们开启http服务发现并不能访问,由于我们开启的80端口

这里写图片描述
服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 systemctl restart firewalld
 firewall-cmd --zone=public --add-port=8000/tcp

客户端:192.168.0.225,加入网关:192.168.0.125
从中我们可以发现防火墙开启对应服务的权限就是对应的端口开启,当服务改变端口时,我们开启改变的端口就可以访问服务了

这里写图片描述

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 firewall-cmd --permanent --add-source=172.25.254.0/24 --zone=trusted 

测试

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 firewall-cmd --permanent --remove-service=ssh

客户端:192.168.0.225,加入网关:192.168.0.125

 ssh root@172.25.254.125                                     ###我们可以ssh还可以连接

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 firewall-cmd --reload                                       ###重载,客户端ssh不能连接

这里写图片描述

服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 firewall-cmd --complete-reload                              ###完全重载,客户端ssh连接断了

单个IP访问控制


 vim /etc/httpd/conf/httpd.conf
  42 Listen 80 
 systemctl restart httpd
 firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -s 192.168.0.225 -p tcp --dport 80 -j REJECT                ###剧界192.168.0.225访问80端口
 firewall-cmd --direct --get-all-rules                                                                            ###查看
 发现192.168.0.225 http无法访问
 firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -s 192.168.0.225 -p tcp --dport 80 -j REJECT             ###删除
 firewall-cmd --direct --add-rule ipv4 filter INPUT 0 ! -s 192.168.0.225 -p tcp --dport 80 -j REJECT              ###只有192.168.0.225 http可以访问

地址转发(路由前)


服务器IP:eth0:172.25.254.125,eth1:192.168.0.125

 firewall-cmd --permanent --remove-service=ssh  --zone=trusted                                                  
 firewall-cmd --permanent  --remove-source=172.25.254.0/24 --zone=trusted                                        ###上步和这步为了还原环境
 systemctl restart firewalld                                                                                     ###重启,可以清空之前的临时设置
 firewall-cmd --permanent --add-service=ssh
 firewall-cmd --permanent --zone=public --add-forward port=22:proto=tcp:toport=22:toaddr=172.25.254.56           ###地址转换为172.25.254.56(真机)
 firewall-cmd --permanent --add-masquerade                                                                       ###打开masquerade           
 firewall-cmd  --reload                                                                                          ###重新加载

这里写图片描述

测试

客户端:192.168.0.225,加入网关:192.168.0.125
注意:ssh连接输入的密码为真机(172.25.254.56)的密码

这里写图片描述

我们也可以用w来查看登陆的来源:

这里写图片描述

地址伪装(路由后)


服务器IP:eth0:172.25.254.125,eth1:192.168.0.125
(1)

 firewall-cmd --permanent --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.56               ###删除上面的设置,还原环境
 systemctl restart firewalld

(2)

 firewall-cmd --permanent --remove-masquerade                                                                 ###关闭masquerade
 firewall-cmd --reload
 firewall-cmd --add-rich-rule='rule family=ipv4 masquerade'

测试

我们可以发现上面2种的效果客户端(192.168.0.225)可以ssh真机(172.25.254.56),并且连接的IP为服务器的IP

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wielun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值