之前的服务都是简单粗暴的将防火墙直接关闭后(systemctl stop fireawalld),提供服务,这样太奔放对身体不好!因此需要使用firewall-cmd命令更加精细化的管理。
准备工作:
确保iptables未安装或者服务未启动
systemctl status iptables 查看是否开启,我这台没安装iptables所以not be foubd
如果安装了那可以通过
systemctl stop iptables 命令关闭
systemctl start firewalld 开启防火墙
安装apache服务,并对外提供测试页面(漂亮网页)服务。
yum install -y httpd
没提示最后的已安装就是你得yum仓库有问题或者需要
重新挂载:mount /dev/cdrom /mnt 再次尝试安装
systemctl start httpd 开启httpd
systemctl status httpd 查询开启状态
浏览器输入apache服务的ip访问测试页打不开
netstat -npl |grep httpd 查看到服务器已经开启了80端口的监听
firewall-cmd --get-default-zone 查看服务器所在的区域zone
使用命令
firewall-cmd --zone=public --query-service=http
查看在public区域是否语序http流量进入?
答案是no
因此需要使用命令放通http流量
firewall-cmd --zone=public --add-service=http
再次使用命令
firewall-cmd --zone=public --query-service=http
查看在public区域是否语序http流量进入?
此时为yes
再次访问,发现可以了
但是是临时放通!!!
使用命令查看是否是永久放通?
firewall-cmd --permanent --zone=public --query-service=http
是no的,需要手动输入命令开启,不然每次都次重启服务都需要再临时关闭一次,极其繁琐!
firewall-cmd --permanent --zone=public --add-service=http
但是此时无法立刻生效,需要使用命令
firewall-cmd --reload
重启防火墙服务
重启服务依旧可以访问
firewall-cmd --reload
yum install -y vsftpd
不能安装请重新挂载:mount /dev/cdrom /mnt 或者检查yum仓库repo文件配置:点我查看yum配置文章
查看启动状态为关
systemctl start vsftpd //启动vsftpd服务
systemctl status vsftpd //查看服务状态
netstat -npl |grep vsftpd
服务器已经开启了21端口的监听
但是可以ping通却不可以访问登陆ftp
firewall-cmd --permanent --zone=public --add-service=ftp //永久允许ftp连接
firewall-cmd --reload //重启防火墙
登陆失败
关闭SELinux,那么此时就可以进行查看与上传下载了。
setenforce 0
我是用子账户(mamublog)进行登陆上传,可以登陆上传
yum install -y bind-chroot.x86_64
不能安装请重新挂载:mount /dev/cdrom /mnt 或者检查yum仓库repo文件配置:点我查看yum配置文章
修改主配置文件
vim /etc/named.conf
使用
named-checkconf 查看主配置文件修改是否有误,没报错即可
修改区域配置文件
vim /etc/named.rfc1912.zones
输入或者复制添加以下内容
zone "mamublog.com" IN {
type master;
file "mamu-zone";
allow-update { none; };
};
再次使用
named-checkzone
无报错即可
cd /var/named
cp named.localhost mamu-zone //我们可以从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。
更改后wq保存
systemctl restart named 回车没报错即为重启成功
netstat -npl |grep dns 查看dns监听端口
使用另一台电脑win7设置dns为dns服务器地址192.168.192.136
发现解析不了
原因是防火墙关处于开启状态,但是并且允许53号端口被访问。
使用以下命令
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload
firewall-cmd --zone=public --query-service=dns
再次尝试可以了
我们总是要考虑有些人是非命令敏感形的,更多是图像敏感形式的。所以firewall的GUI格式一定是你的首选。
输入
firewall-config
几大福利
它是firewalld防火墙配置管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作,因此可以告别那些令人害喜的长格式命令;
即使读者没有扎实的Linux命令基础,也完全可以通过它来妥善配置RHEL 7中的防火墙策略;
功能如下图所示
可以发现之前手打的配置的内容已经被“同步”过来了
所以如果需要修改,例如需要放通某个服务(https)
先确认的确未开放
firewall-cmd --zone=public --query-service=https
发现是no即为关闭
firewall-cmd --zone=public --query-service=https
发现是yes即为开启
firewalld的SNAT相对而言比较友好,再结合GUI那简直如虎添翼。
windows 7(仅主机模式)
自动获取分配到192.168.192.134
确保能ping通网关,一般.1
RHEL/CentOS 7(桥接)(仅主机模式)
开启ip转发
重启防火墙
将仅主机的win7更改Ip为手动,ip一样为刚才获取的,网关改为开启ip转发的电脑ip
百度正常打开
使用squid和firewalld
完成一个用户缓存上网的场景,并且针对网址中所有带有ruijie的均禁止访问
1、内网用户经常访问某个网站,
每次访问均需要重新下载,使得效率较低、带宽浪费
2、用户在工作的时候无法总是无心恋战,经常访问一些中继器网站,老板苦不堪言
【解决方法】
1、增大带宽,替换高端设备,管理手段(裁员)
2、使用用户上网行为管理设备
3、使用缓存技术(例如Squid)
Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。
Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存,可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。
18-2(CentOS7)(仅主机模式)
18-1(CentOS 7)仅主机模式)(桥接)
还原主机到一清二白
不能安装请重新挂载:mount /dev/cdrom /mnt 或者检查yum仓库repo文件配置:点我查看yum配置文章
yum install -y squid
设置18-2(仅主机模式) dns为114.114.114.114
发现设置了公网DNS IP还是无法上网
确保18-1可以正常访问外网(仅主机和桥接)所以可以访问外网
配置18-1的squid服务的主配置文件
vim /etc/squid/squid.conf
systemctl start squid // 启动服务
systemctl enable squid //加入开机启动项
在弹出的对话框中输入18-1 Squid服务器仅主机ip,点击OK保存
在18-2上访问www.ruijie.com.cn进行测试发现不行
systemctl status squid发现服务开着,如果没开则需要输入 systemctl start squid开启服务
使用GUI界面针对内网口对应的区域,永久放通squid服务,并且重启防火墙使其生效
重载防火墙
再次访问发现可以了
18-2 的试了www.baidu.com访问不了,而且其他的https的网站均访问不了
解决办法,代理中勾选:为所有协议使用相同代理
再次访问https网站发现可以了
1、代理无需配置SNAT
2、代理无需开启路由转发功能
1、终端配置麻烦(小白的噩梦)
2、累死代理服务器
透明代理,顾名思义,就是对于用户而言就是透明!!无需做任何额外的配置!
去掉原先的代理,并且确认无法上网!
在18-1上配置SNAT功能,记得重载防火墙
将18-1的内网口加入到另外一个区域,为了便于记忆,加入到internal区域
更改区域为internal
重启防火墙
将内网用户的所有外网流量全部定位到3128端口上
设置端口转发到18-1的仅主机ip,端口3128
弹出的窗口选择no,即internal区域不做SNAT
因为内网口划入squid区域,因此需要针对internal区域开放squid服务,让客户进行透明代理
重启防火墙
修改squid的主配置文件
vim /etc/squid/squid.conf
59行 3128后加入transparent
去掉62行#号注释
使用squid -k parse命令检查主配置文件是否有错误
使用squid -z命令对Squid服务程序的透明代理技术进行初始化。
重启服务 systemctl restart squid
测试
ACL访问控制
在日常工作中,企业员工一般是通过公司内部的网关服务器来访问互联网,当将Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的用武之地。它可以根据指定的策略条件来缓存数据或限制用户的访问。比如很多公司会分时段地禁止员工逛淘宝、打网页游戏,这些禁止行为都可以通过Squid服务程序的ACL功能来实现。
Squid服务程序的ACL是由多个策略规则组成的,它可以根据指定的策略规则来允许或限制访问请求,而且策略规则的匹配顺序与防火墙策略规则一样都是由上至下;在一旦形成匹配之后,则立即执行相应操作并结束匹配过程。为了避免ACL将所有流量全部禁止或全部放行,起不到预期的访问控制效果,运维人员通常会在ACL的最下面写上deny all或者allow all语句,以避免安全隐患。
squid服务程序的这种ACL功能模式是比较粗犷暴力的,客户端访问的任何网址中只要包含了某个关键词就会被立即禁止访问,但是这并不影响访问其他网站。
在18-1的squid主配置文件/etc/squid/squid.conf中一个acl
vim /etc/squid/squid.conf
26以及34行加入命令实现访问控制
acl deny_ruijie url_regex -i rujie
http_access deny deny_ruijie
acl名为deny_ruijie ,内容意思是,在url中包含关键词如果包含ruijie,那么就被拒绝
重启服务后进行测试
systemctl restart squid
Ctrl+shift+del清除缓存,再次访问www.ruijie.com.cn
百度还可以正常访问