一、Linux防火墙的概念
防火墙设置不同网络于网络安全域之间一系列部件组合也不同安全域之间的唯一出口
在内外之间架起一道墙一,以免发生不可预知或潜在的入侵。
传统上来讲防火墙技术分为三类:包过滤,应用代理,状态检测,无论防火墙过程多么复杂,归根结底都在三种技术基础之上进行扩展的。
Linux的防火墙体系主要用于网络,针对tcp /ip数据包实施过滤和限制,属于包过滤防火墙或称为网络防火墙。
在centos7系统中三种防火墙共存:firewalld,iptables,ebtables,默认只用firewalld来管理netfilter子系统。
1、Linux包过滤防火墙概述
netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”
firewalld
CentOS7默认的管理防火墙规则的工具
称为Linux防火墙的“用户态”
包过滤的工作层次
主要是网络层,针对IP数据包
体现在对包内的IP地址、端口等信息的处理上
二、firewalld的概念
1、firewalld的简介
支持网络区域所定义的网络连接以及接口安全的等级支持动态防火墙的管理工具
支持ipv4,ipv6设置防火墙以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
2、拥有两种配置模式
运行时配置:临时的关机或重启电脑就没有了
永久时配置:配好了之一都在
- firewalld数据处理流程
检查数据来源的源地址
若源地址关系到特定的区域,执行该区域制定的规则
若源地址没有关系到特定的区域,执行该区域所制定的规则
- firewalld 的预定义的网络九个区域
区域 | 作用 |
Trusted 信任区域 | 可接受所有网络的连接 |
Pubilc 公共区域 | 区域是添加端口的默认区域 |
Work 工作区域 | |
Home 家庭区域 | |
Internal 内部区域 | |
External 外部区域 dmz |
Block 限制区域 | 拒绝所有传入流量 |
Drop 丢弃区域 | 丢弃所有流量不产生icmp的错误响应 |
- firewalld防火墙的配置方法
1、firewall-config 图形工具
firewall-cmd 命令行工具
cd /etc/firewalld 查看配置文件
- firewalld常用命令
Systemctl start firewalld 启动firewalld防火墙
Systemctl enable firewalld 开机自启动
Systenctl stop firewalld 关闭防火墙
Systenctl disable firwalld 开机不启动防火墙
Systemctl status firewalld 查看防火墙的状态
显示 active (running) 为开启状态 Stopping firewalld 关闭状态
- firewall-cmd 命令
firewall-cmd --list-all 查看防火墙所有配置
Firewall-cmd --list-all-zone 查看防火墙指定的区域
firewall-cmd --get-default-zone 显示接口的默认区域
firewall-cmd --list-all 显示所有默认区域
firewall-cmd --get-zone-of-interface=ens33 显示当前网卡ens33所对应的区域
firewall-cmd --get-active-zone 显示所有激活区域
firewall-cmd --list-services 显示默认区域访问所有服务
firewall-cmd --list-services=http 允许访问http服务
firewall-cmd --zone=internal --add-service=mysql s设置internal(内网)区域允许访问mysql服务
firewall-cmd --list-ports 显示所有端口号
firewall-cmd --zone=internal --add-port=443/tcp 动手指定添加端口
firewall-cmd --zone=internal --remove-port=443/tcp 区域禁止访问端口443
Firewall-cmd --remove-interface=ens33 删除当前ens33网卡所对应的区域
网络拓扑如下
实验要求:
- 网关服务器的网卡ens33分配到external(外部)区域
- 网关服务器的网卡ens37(36)分配到trusted(信任)区域
- 网关服务器的网卡ens38(37)分配到dmz(非军事)区域
- 网站服务器和网关服务器均通过ssh来远程管理,为了安全,将ssh默认端口改为12345
- 网站服务器和互联网测试都开启https,过滤未加密的http流量
- 网站服务器拒绝ping,网关服务器拒绝来自互联网上的ping
一、基本环境配置
(一)、网关服务器配置
1、配置主机名
# echo "bdqn">/etc/hostname
#hostname bdqn
2、配置ip地址
#ifconfig #查看下网卡名
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-ens33 ifcfg-ens37
# cp ifcfg-ens33 ifcfg-ens38
#vim ifcfg-ens33 ip地址为100.1.1.10
#vim ifcfg-ens37 ip地址为192.168.1.1
#vim ifcfg-ens38 ip地址为192.168.2.1
#systemctl restart network
3、开启网关服务器的路由转发功能
# echo "net.ipv4.ip_forward = 1" >/etc/sysctl.conf
4、重新加载
# sysctl -p
(二)、配置网站服务器配置
1、配置网站服务器主机名
#echo “web” >/etc/hostname
2、配置网站服务器的ip地址和网关
# cd /etc/sysconfig/network-scripts/
#vim ifcfg-ens33
....................................
BOOTPROTO=static
..........................
IPADDR=192.168.2.10
GATEWAY=192.168.2.1
#ifdown ens33;ifup ens33
3、查看ip和网关
#ifconfig
#route -n #查看网关
(三)、客户机需要填写正确的网关
二、网站服务器环境搭建
1、挂载系统盘,安装httpd和mod_ssl软件包
# yum -y install httpd mod_ssl
2、启动httpd,并将其设为自动启动
#systemctl start httpd
# systemctl enable httpd
3、创建网站首页测试页index.html
#echo “this is a test web” >/var/www/html/index.html
3、验证firewalld在网站服务器上是否启动并且正在运行
#systemctl status firewalld
#systemctl start firewalld
4、更改ssh的侦听端口为12345,并重启服务(需关闭selinux)
# vim /etc/ssh/sshd_config
# setenforce 0
# systemctl restart sshd
#netstat -anpt
三、在网站服务器上配置firewalld防火墙
- 设置默认区域为dmz区域
# firewall-cmd --set-default-zone=dmz
查看默认区域的端口
Firewall-cmd --list-all
- 为dmz区域打开https 服务和添加tcp的12345端口
# firewall-cmd --zone=dmz --add-service=https --permanent
# firewall-cmd --zone=dmz --add-port=12345/tcp --permanent
port 添加端口
- 禁止ping
firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
- 因为预定义的ssh服务已经更改默认端口,所以将预定义ssh服务移除
# firewall-cmd --remove-service=ssh --zone=dmz --permanent
- 重新加载firewalld配置
# firewall-cmd --reload
- 查看之前的配置
# firewall-cmd --list-all
五、在网关服务器上配置firewalld防火墙
1、验证firewalld在网关上启动并正在运行
#systemctl status firewalld
2、如没有启动,则启动
3#systemctl start firewalld
4、设置默认区域为external区域,并查看配置结果
#firewall-cmd --set-default-zone=external
#firewall-cmd --get-default-zone
5、将ens37网卡配置到trusted区域,将ens38配置到dmz区域
# firewall-cmd --zone=trusted --add-interface=ens36
# firewall-cmd --zone=dmz --add-interface=ens37
6、查看配置情况如下
#firewall-cmd --get-active-zones
7、更改ssh的侦听端口为12345,并重启服务(需关闭selinux)
# vim /etc/ssh/sshd_config
# setenforce 0
# systemctl restart sshd
8、配置external区域添加tcp的12345端口
# firewall-cmd --zone=external --add-port=12345/tcp --permanent
9、配置external区域移除ssh服务
# firewall-cmd --zone=external --remove-service=ssh --permanent
10、禁止external区域ping
# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
11、重新加载防火墙配置
# firewall-cmd –reload
- 在内网测试机上访问网站服务器
1、在内部客户机上ping网站
2、在内部客户机上ssh登录网站
#ssh -p 12345 192.168.2.10
3.访问网站
- 在互联网测试机上测试
1、在互联网测试机上通过ssh登录网关外部接口地址的12345端口
#ssh -p 12345 100.1.1.10
- 在互联网客户端上ping
#ping 100.1.1.10