目录:
1.防火墙的基本知识
1.1 防火墙的定义
- 防火墙,也称防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网,防火墙是一个由软件和硬件设备组合而成、在内部网和外部网之间、专用网与公共网之间的边界上构造的保护屏障,它按照系统管理员预先定义好的规则来控制数据包的进出,防火墙是系统的第一道防线,主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成,其作用是防止非法用户的进入。保障内网的安全性、保证内外网之间数据的流通性。
- 在网络中,所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种隔离技术,防火墙是在两个网络通讯时执行的一种访问控制尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络,换句话说,如果不通过防火墙,公司内部的人就无法访问Internet,Internet上的人也无法和公司内部的人进行通信,也就是说,如果没有防火墙,内网和外网之间就没办法进行交流。
1.2 防火墙的分类
- 防火墙从诞生开始,已经历了四个发展阶段:基于路由器的防火墙、用户化的防火墙工具套、建立在通用操作系统上的防火墙、具有安全操作系统的防火墙。常见的防火墙属于具有安全操作系统的防火墙。
- 从结构上来分,防火墙有两种:代理主机结构和路由器+过滤器结构;内部网络过滤器(Filter)路由器(Router)Internet。
- 从原理上来分,防火墙则可以分成4种类型:特殊设计的硬件防火墙、数据包过滤型、电路层网关和应用级网关。
1.3 防火墙的工作机制(三表五链)
- 链: 链就是位置,共有五个 : 数据包进路由之前(PREROUTING)、目的地址为本机,进系统(INPUT) 、转发(FORWARD)、原地址为本机,向外发送,出系统(OUTPUT)、发送到网卡之前,出路由(POSTROUTING); 数据包到了该链处,会去对应表中查询设置的规则,然后决定是否放行、丢弃、转发还是修改等等操作。每个链都是一个规则列表,对对应的包进行匹配。
- 表:具有相同功能的规则的集合叫做表。filter表:负责过滤功能,经过内核的; nat表:网络地址转换,不经过内核的 ,实现数据包转发,修改源地址 端口 目标地址 端口,实现地址转换;mangle表:拆解报文,作出修改,封装报文;raw表: 关闭nat表上启用的链接追踪机制。
- 表链关系: 我们所有自定义的规则都是这四种分类中的规则,或者说,所有的规则都存在于这4张表中。
- filter表格:放的是经过内核的ip input output forward
- nat表格:放的不是经过内核的服务 input output postrouting prerouting
- 备用表格mangle: input output forward postrouting prerouting
Firewalld
2.Firewalld的图形化管理和命令管理
2.1 firewalld中的区域
- 通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流,例如,互联网是不可信任的区域,而内部网络是高度信任的区域,网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。
- firewalld的默认区域是public
2.2 图形界面管理firewalld防火墙和命令管理
1 打开firewalld,且开机自启动
systemctl start firewalld
systemctl enable firewalld
2 firwalld图形化管理
firewall-config
3
firewall-cmd --state ##查看防火墙的状态
firewall-cmd --get-active-zones ##查看正在使用的域
firewall-cmd --get-default-zone ##查看系统默认使用的域
firewall-cmd --get-zones ##查看有哪些域
firewall-cmd --zone=public --list-all ##列出公共域里面所有可以支持添加的服务
firewall-cmd --get-services ##列出所有的服务
firewall-cmd --set-defaults-zone=dmz ##更改默认的域
firewall-cmd --list-all-zones ##列出所有的域
firewall-cmd --reload ##不改变现有状态
firewall-cmd --complete-reload ##清除状态信息
2.3 防火墙中的服务
- /lib/firewalld/ 函数库
- 在 /lib/firewalld/services/中,都是防火墙中可以添加的服务,服务和端口是集成在一块的
2.4 服务端指定用户访问服务
firewall-cmd --direct --add-rule ipv4 filter(规则表) INPUT(链) 1(写在第一条) -s(源ip) 172.25.254.25 -p(协议类型) tcp --dport(目的端口) 22 -j(动作)ACCEPT(动作) ##对172.25.60.250上开启22端口,使172.25.60.250可以连接虚拟机
Firewall-cmd --direct --get-all-rules ##查看火墙策略
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.60.250 -p tcp --dport 22 -j ACCEPT ##移除规则
3.firewalld的地址伪装和端口转发
3.1 地址伪装
- 通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改为原始主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网。
- IP地址伪装仅支持ipv4,不支持ipv6。
server:两块网卡
desktop:
desktop:
firewall-cmd --permanent --add-masquerade ##添加伪装功能
firewall-cmd --reload
firewall-cmd --list-all
sysctl -a | grep ip_forward (如果为0,则在/etc/sysctrol.conf 下添加这一行net.ipv4.ip_forward= 1)
测试:
3.2 端口转发
- 可以称之为目的地址转换或端口映射。通过端口转发,将指定IP地址及端口的流量转发到相同计算机上的不同端口,或不同计算机上的端口。一般公司内网的服务器都采用私网地址,然后通过端口转发将使用私网地址的服务器发布到公网上。
- 如果去掉网关,就不能实现端口转发功能。
server:
firewalld-cmd --add-forward-port=proto=tcp:port=22:toport=22:toaddr=1.1.1.251
firewall-cmd --list-all
在真机中测试:172.25.60.250
iptables防火墙
yum install iptables-services-y ##安装火墙服务iptables-services
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
systemctl start iptables.service
systemctl enable iptables.service
4.1 iptables的参数
参数 | 含义 |
---|---|
-t | 指定表名称 |
-n | 不作解析 |
-L | 列出指定表中的策略 |
-F | 清除火墙策略,iptables重启之后还会生成火墙策略 |
-A | 增加策略 |
-p | 网络协议 |
–dport | 端口 |
-s | 数据来源 |
-j | 动作:ACCEPT允许;REJECT拒绝;DROP丢弃 |
-N | 增加链 |
-E | 修改链名称 |
-X | 删除链 |
-D | 删除指定策略 |
-I | 插入 |
-R | 修改策略 |
-P | 修改默认策略 |
iptables -t filter -nL ##不作解析,查看filter表格里面的链( 不跟-t,默认为filter表格)
iptables -t filter - L ##作解析,查看filter表格里面的链
iptables -F ##清除火墙策略,iptables重启之后还会生成火墙策略
iptables -nL
4.2 存储火墙策略的方法
火墙策略文件存储位置/etc/sysconfig/iptables
方法一:
iptables-save > /etc/sysconfig/iptables
方法二:
service iptables save
4.3 Iptables的相关设置
iptables -P INPUT DROP ##修改链的默认行为为DROP
iptables -nL
iptables -P INPUT ACCEPT ##修改链的默认行为为ACCEPT
iptables -nL
iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT ##拒绝22端口的访问
iptables -nL
iptables -D INPUT 2 ##删除第二条策略
iptables -I INPUT 1 -s 172.25.254.26 -p tcp --dprot 22 -j ACCEPT ##策略插入到位置1,允许172.25.254.26访问
iptables -t filter -nL
iptables -S INPUT ##显示所有已添加策略
iptables -N redhat ##新建链
iptables -E redhat haha ##修改链的名称
iptables -X haha ##删除链
4.4 iptables的地址伪装和端口转发
地址伪装(SNAT)
server:两块网卡
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.60.252 ##(在172.25.60.252上面进行伪装)开启地址伪装功能
iptables -t nat -nL
sysctl -a|grep ip_forward
vim /etc/sysctl.conf ##改为1
sysctl -p ##刷新
测试:desktop:1.1.1.251
端口转发(DNAT)
通过DNAT实现党互联网客户访问公司内网服务器时实现时公司的内网地址访问
server:两块网卡
Iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-dest 1.1.1.251 ##添加地址转发功能,从172.25.60.251的22端口进入的都转到1.1.1.251的22端口上去
Iptables -t nat -nL
测试:真机172.25.60.250