赞
踩
需要知道:
关于firewalld
防火墙(Firewall),也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网(US5606668(A)1993-12-15)
防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出
防火墙是系统的第一道防线,其作用是防止非法用户的进入
centos 7中防火墙FirewallD是一个非常的强大的功能了, FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接
以及接口安全等级的动态防火墙管理工具,它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项
它也支持允许服务或者应用程序直接添加防火墙规则的接口
以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启
这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等,而模块的卸载将会破坏状态防火墙和确立的连接
相反,firewall daemon 动态管理防火墙,不需要重启整个防火墙便可应用更改,因而也就没有必要重载所有内核防火墙模块了
不过,要使用 firewall daemon 就要求防火墙的所有变更都要通过该守护进程来实现,以确保守护进程中的状态和内核里的防火墙是一致的
另外,firewall daemon 无法解析由 iptables 和 ebtables 命令行工具添加的防火墙规则*
相关工作原理:
相关区域:
阻塞区域(block) | 任何传入的网络数据包都将被阻止 |
---|---|
工作区域(work) | 相信网络上的其他计算机,不会损害你的计算机 |
家庭区域(home) | 相信网络上的其他计算机,不会损害你的计算机 |
公共区域(public) | 不相信网络上的任何计算机,只有选择接受传入的网络连接 |
隔离区域(DMZ) | 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接 |
信任区域(trusted) | 所有的网络连接都可以接受 |
丢弃区域(drop) | 任何传入的网络连接都被拒绝 |
内部区域(internal) | 信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接 |
外部区域(external) | 不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接 |
提前重置虚拟机,server设置双网卡配置yum源
d端设置网络及网关
firewall的相关设置:
开启:
关闭:
设置开机自启:
利用图形化界面设置:
开启:firewall-config
在里边选取相关参数,设置为permannent,再刷新reload
可以看到成功添加http 及https服务
安装http服务并开启:
利用真机测试:
使用命令管理firewalld防火墙
(1)基本命令的用法
火墙是内核上的插件
firewall-cmd --state | 防火墙状态 |
---|---|
firewall-cmd --get-active-zones | 正在生效的域 |
firewall-cmd --get-default-zone | 默认的域 |
firewall-cmd --zone=public --list-all | public域里的设置,指定的域 |
firewall-cmd --list-all | 默认的域 |
firewall-cmd --set-default-zone=public | 把默认的域设为public |
firewall-cmd --get-zones | 查看所有的域 |
firewall-cmd --get-services | 查看所有可以添加到火墙里的服务 |
使用命令行接口配置防火墙
查看防火墙现在正在使用的网络域,可以看出是public域
二、firewalld的网卡与ip设置
1.网卡设置:
firewall-cmd --permanent --add-interface=eth0 --zone=trusted
永久添加eth0网卡为信任接口
firewall-cmd --permanent --remove-interface=eth0 --zone=public 永久将eth0网卡从信任接口中移除
firewall-cmd --permanent --change-interface=eth0 --zone=public 永久改变eth0为public域
2.ip设定
常用命令:
firewall-cmd --permanent --add-source=172.25.254.xx/24 --zone=trusted 永久添加172.25.254.xx为信任ip
firewall-cmd --permanent --remove-source=172.25.254.xx/24 --zone=trusted 永久将172.25.254.xx从信任ip中移除
在服务端为保证测试效果,移除火墙中的http及https服务
服务端:
systemctl restart httpd
重启httpd服务
firewall-cmd --add-source=192.168.0.xxxx/24 --zone=trusted 添加172.25.254.28为信任ip
注意:不加permannent,重启刷新服务后清除
用此ip去访问可以看到
而用真机看不到,因为火墙里无http
移除名单后发现看不到
4.火墙添加服务:
当默认使用的域为public时:添加回刚才的http服务
发现真机及另一台虚拟机都可以看到
为了接下来的文件添加移除:
修改配置文件添加服务:
vim /etc/firewalld/zones/public.xml
编辑public域配置文件,添加http服务
可以看到之前修改的两个域的配置文件(.old文件为最初的文件,方便恢复,每次修改的是,xml文件)
可以看到https添加成功:
5.火墙中的端口修改
临时修改:
f
irewall-cmd --list-ports 查看火墙上开启的端口
firewall-cmd --add-port=8080/tcp 添加端口
firewall-cmd --list-ports 再次查看,此时已开启
firewall-cmd --remove-port==8080/tcp 删除端口
firewall-cmd --list-ports 再次查看,此时已删除
添加:
移除:
永久修改:(重启服务依旧在)
firewall-cmd --permanent --add-port=8080/tcp 永久添加端口
systemctl restart firewalld.service 重启服务
firewall-cmd --list-ports 查看端口
配置文件添加:
vim /etc/firewalld/zones/public.xml 编辑public域配置文件
添加8080端口(协议、端口)
firewall-cmd --list-ports
查看端口
f
irewall-cmd --permanent --remove-port=8080/tcp 永久删除端口
systemctl restart firewalld.service 重启服务
firewall-cmd --list-ports 查看端口依旧在
5.火墙的两种刷新
f
iewall-cmd --reload 刷新当前火墙状态,但不会断掉已有连接
firewall-cmd --complete-reload 刷新当前火墙状态,但会断掉当前连接
在客户端:
ssh root@192.168.0.168
此时可以正常连接
在服务端:
f
irewall-cmd --permanent --remove-service=ssh 从火墙中删除ssh服务
fiewall-cmd --reload reload刷新火墙状态
此时另一端的ssh没断
服务端:
f`irewall-cmd --complete-reload`
complete-reload刷新火墙状态
此时客户端已经断开连接,不能进行任何操作
注意; cd /lib/firewalld
/函数库
cd services
/服务的配置文件
里边的服务与端口绑定。若修改端口发现服务不能启用
(6)设置策略:现在只想要指定ipssh登陆(服务端指定什么人访问什么服务)
服务端一共有三个动作
accept 接受客户端的请求
reject 拒绝请求,但是给客户端有回应,客户端不再访问
drop 丢弃,没有回应,客户端会一直发数据包,加大负载
增加策略:
此时没有ssh服务,而指定ip可以,其他不行
firewall-cmd --direct --get-all-rules查看规则
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 192.168.0.68 -p tcp --dport 22 -j ACCEPT删除刚才那条规则
firewall-cmd --direct --get-all-rules再次查看
此时也不可以
火墙的三表五链
(1)filter表
input forward output filter表的三条链
内核上开启服务时需要inout从外边传输数据给内核,然后ouput从内核将结果传送出来
而forward时指从本机进来绕过本机服务,从本机出来,经过了内核,但不使用内核服务,不是把数据给内核,只是做转换。
(2)nat表
input postouting preouting output nat表的三条链
input和output都不经过内核
postouting 路由之后,做原地址封装,数据访问目的地主机output时在路由端口做NAT转换,发生在路由之后
preouting 路由之前,数据从目的地主机传回时经过路由,在路由端口转换
(3)mangle表
input prerouting forward postrouting output
mangle表的五条链
**数据传输:**数据input—>prerouting做NAT转换—>forward内核操作—>postrouting—>output
如果要访问某台主机上面的http服务,必须先经过那台主机的内核允许,才可以进行访问 防火墙其实也是在内核上面开启的一个服务 防火墙里面有表格,写一些规则,允许哪个主机访问什么服务,这个表格由iptables进行控制 但是有两种规则:iptables 与 firewalld
第一张表:filter表格:放的是经过内核的ip input output forward
第二张表:nat表格:放的不是经过内核的服务 input output postrouting prerouting
第三张表:备用表格mangle: input output forward postrouting prerouting
7、地址伪装和端口转发
在服务端:
开启地址伪装及ip_forward:
地址伪装作用为包装成合法地址
注意:若未开启:编辑vim /etc/sysctl.conf
在此文件的最后一行输入:
net.ipv4.ip_forward=1
设置转接:firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.68
设置ssh身份转换,即在客户端使用ssh服务访问服务端时自动转移到172.25.254.68的主机
注意:ssh root@172.25.254.168或者ssh root@192.168.0.168 尝试连接到服务端主机,但是此时已经被服务端转至172.25.254.68主机。因此输入密码时应输入172.25.254.29的root用户登录密码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。