Linux-firewalld-squid正向代理

原创 麻木  2020-04-13 10:40:30  阅读 1669 次 评论 0 条
摘要:

firewalld

RHEL 7系统中集成了多款防火墙管理工具,其中firewalld(Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于CLI(命令行界面)基于GUI(图形用户界面)的两种管理方式。

image.png

傻眼了?这么多区域?

其实一共就3类

Trusted:裸奔,类似于systemctl stop firewalld

home(internal) ≈work≈public≈external(dmz):拒绝主动发起的除了相对应的流入服务流量,除非与流出流量相关。【类似于隔离期间,小区业主出门买菜的能返回(流出流量相关的返回流量),但是非小区业主,需要有特殊身份和目的方可进入】

block=drop

3.firewall-cmd是firewalld防火墙配置管理工具的CLI(命令行界面)版本。它的参数一般都是以“长格式”来提供的,并且支持自动补齐。

image.png

4.Runtime vs Permanent

Runtime:运行时模式,又称为当前生效模式,而且随着系统的重启会失效。

Permanent:永久模式,重启防火墙后永久生效,及时系统重启。

5.条目生效方式

重启设备或者试用firewall-cmd --reload


之前的服务都是简单粗暴的将防火墙直接关闭后(systemctl stop fireawalld),提供服务,这样太奔放对身体不好!因此需要使用firewall-cmd命令更加精细化的管理。

【CLI】

准备工作:

  •  确保iptables未安装或者服务未启动

  • systemctl status iptables 查看是否开启,我这台没安装iptables所以not be foubd

image.png

  • 如果安装了那可以通过

  • systemctl stop iptables 命令关闭

  •  systemctl start firewalld 开启防火墙

开始操作

 安装apache服务,并对外提供测试页面(漂亮网页)服务。

yum install -y httpd

没提示最后的已安装就是你得yum仓库有问题或者需要

重新挂载:mount /dev/cdrom /mnt 再次尝试安装

image.png

 systemctl start httpd 开启httpd

systemctl status httpd  查询开启状态

image.png

浏览器输入apache服务的ip访问测试页打不开

image.png

image.png

netstat -npl |grep httpd    查看到服务器已经开启了80端口的监听

firewall-cmd  --get-default-zone   查看服务器所在的区域zone

image.png

image.png

使用命令

firewall-cmd --zone=public --query-service=http

查看在public区域是否语序http流量进入?

image.png

答案是no

因此需要使用命令放通http流量

firewall-cmd --zone=public --add-service=http

image.png

再次使用命令

firewall-cmd --zone=public --query-service=http

查看在public区域是否语序http流量进入?

此时为yes


image.png

再次访问,发现可以了

image.png

但是是临时放通!!!

使用命令查看是否是永久放通?

firewall-cmd  --permanent --zone=public --query-service=http

image.png

是no的,需要手动输入命令开启,不然每次都次重启服务都需要再临时关闭一次,极其繁琐!

 firewall-cmd  --permanent --zone=public --add-service=http

 但是此时无法立刻生效,需要使用命令   

firewall-cmd --reload

重启防火墙服务

image.png


重启服务依旧可以访问

firewall-cmd --reload

image.pngimage.png

安装vsftpd服务

yum install -y vsftpd

image.png


不能安装请重新挂载:mount /dev/cdrom   /mnt  或者检查yum仓库repo文件配置:点我查看yum配置文章

查看启动状态为关


systemctl start vsftpd   //启动vsftpd服务

systemctl status vsftpd    //查看服务状态

image.png


netstat -npl |grep vsftpd   

 服务器已经开启了21端口的监听

image.png


但是可以ping通却不可以访问登陆ftp

image.png


firewall-cmd --permanent --zone=public --add-service=ftp  //永久允许ftp连接

firewall-cmd --reload  //重启防火墙

image.png

登陆失败

image.png


关闭SELinux,那么此时就可以进行查看与上传下载了。

setenforce 0

我是用子账户(mamublog)进行登陆上传,可以登陆上传

image.png

安装BIND服务,并对外提供域名解析服务

yum install -y bind-chroot.x86_64

image.png

不能安装请重新挂载:mount /dev/cdrom   /mnt  或者检查yum仓库repo文件配置:点我查看yum配置文章

修改主配置文件

vim /etc/named.conf

image.png

使用

named-checkconf 查看主配置文件修改是否有误,没报错即可

image.png

修改区域配置文件

vim  /etc/named.rfc1912.zones

输入或者复制添加以下内容


zone "mamublog.com" IN {

        type master;

        file "mamu-zone";

        allow-update { none; };

};

image.png

再次使用

named-checkzone 

无报错即可

image.png

cd /var/named 

cp named.localhost mamu-zone  //我们可以从/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。

image.png

更改后wq保存

image.png


systemctl restart named 回车没报错即为重启成功

image.png



netstat -npl |grep dns  查看dns监听端口

image.png

使用另一台电脑win7设置dns为dns服务器地址192.168.192.136

image.png

发现解析不了

image.png

原因是防火墙关处于开启状态,但是并且允许53号端口被访问。

image.png

使用以下命令

firewall-cmd --permanent --zone=public --add-service=dns

firewall-cmd --reload

image.png

firewall-cmd --zone=public --query-service=dns

image.png

再次尝试可以了

image.png


【GUI模式】

我们总是要考虑有些人是非命令敏感形的,更多是图像敏感形式的。所以firewall的GUI格式一定是你的首选。

输入

firewall-config

image.png


几大福利

  1. 它是firewalld防火墙配置管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作,因此可以告别那些令人害喜的长格式命令;

  2. 即使读者没有扎实的Linux命令基础,也完全可以通过它来妥善配置RHEL 7中的防火墙策略;

  3. 功能如下图所示

image.png

可以发现之前手打的配置的内容已经被“同步”过来了

image.png

所以如果需要修改,例如需要放通某个服务(https)

先确认的确未开放


firewall-cmd --zone=public --query-service=https

发现是no即为关闭

image.png

重启防火墙
image.png

firewall-cmd --zone=public --query-service=https

发现是yes即为开启

image.png


【使用GUI开启SNAT模式】

iptables的SNAT模式是在nat表中的POSTROUTING规则链中给完成,配置命令令人绝望。

firewalld的SNAT相对而言比较友好,再结合GUI那简直如虎添翼。

windows 7(仅主机模式)

image.png

自动获取分配到192.168.192.134

image.png

确保能ping通网关,一般.1

image.png


RHEL/CentOS 7(桥接)(仅主机模式)

image.png

image.png

image.png

开启ip转发

image.png

重启防火墙

image.png                   

将仅主机的win7更改Ip为手动,ip一样为刚才获取的,网关改为开启ip转发的电脑ip           

image.png

百度正常打开

image.png

squid部分

使用squid和firewalld

完成一个用户缓存上网的场景,并且针对网址中所有带有ruijie的均禁止访问

1、内网用户经常访问某个网站,

每次访问均需要重新下载,使得效率较低、带宽浪费

2、用户在工作的时候无法总是无心恋战,经常访问一些中继器网站,老板苦不堪言


【解决方法】

1、增大带宽,替换高端设备,管理手段(裁员)

2、使用用户上网行为管理设备

3、使用缓存技术(例如Squid)

啥是squid

 Squid是Linux系统中最为流行的一款高性能代理服务软件,通常用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存。简单来说,Squid服务程序会按照收到的用户请求向网站源服务器请求页面、图片等所需的数据,并将服务器返回的数据存储在运行Squid服务程序的服务器上。当有用户再请求相同的数据时,则可以直接将存储服务器本地的数据交付给用户,这样不仅减少了用户的等待时间,还缓解了网站服务器的负载压力。

        Squid服务程序具有配置简单、效率高、功能丰富等特点,它能支持HTTP、FTP、SSL等多种协议的数据缓存可以基于访问控制列表(ACL)和访问权限列表(ARL)执行内容过滤与权限管理功能,还可以基于多种条件禁止用户访问存在威胁或不适宜的网站资源,因此可以保护企业内网的安全,提升用户的网络体验,帮助节省网络带宽。

正向代理之 标准正向代理模式

18-2(CentOS7)(仅主机模式) 

image.png

18-1(CentOS 7)仅主机模式)(桥接)

image.png

image.png

还原主机到一清二白


不能安装请重新挂载:mount /dev/cdrom   /mnt  或者检查yum仓库repo文件配置:点我查看yum配置文章

yum install -y squid

image.png

image.png

设置18-2(仅主机模式) dns114.114.114.114

image.png

发现设置了公网DNS IP还是无法上网

image.png

确保18-1可以正常访问外网(仅主机和桥接)所以可以访问外网

image.png

 配置18-1的squid服务的主配置文件

vim  /etc/squid/squid.conf

image.png

systemctl start squid    // 启动服务

systemctl enable squid    //加入开机启动项

配置18-2的Firefox浏览器代理

在弹出的对话框中输入18-1 Squid服务器仅主机ip,点击OK保存

123.gif

 在18-2上访问www.ruijie.com.cn进行测试发现不行

 image.png



systemctl status squid发现服务开着,如果没开则需要输入 systemctl start squid开启服务

image.png

使用GUI界面针对内网口对应的区域,永久放通squid服务,并且重启防火墙使其生效

image.png

重载防火墙

image.png

再次访问发现可以了

image.png


18-2 的试了www.baidu.com访问不了,而且其他的https的网站均访问不了

image.png

image.png

解决办法,代理中勾选:为所有协议使用相同代理

image.png

再次访问https网站发现可以了

image.png


使用代理的优点

1、代理无需配置SNAT

2、代理无需开启路由转发功能

缺点

1、终端配置麻烦(小白的噩梦)

2、累死代理服务器

正向代理之 透明正向代理模式

透明代理,顾名思义,就是对于用户而言就是透明!!无需做任何额外的配置!

去掉原先的代理,并且确认无法上网!

image.png


在18-1上配置SNAT功能,记得重载防火墙

image.png


18-1的内网口加入到另外一个区域,为了便于记忆,加入到internal区域

image.png


更改区域为internal

image.png


重启防火墙

image.png

将内网用户的所有外网流量全部定位到3128端口上

image.png


设置端口转发到18-1的仅主机ip,端口3128

image.png

弹出的窗口选择no,即internal区域不做SNAT

image.png

image.png

因为内网口划入squid区域,因此需要针对internal区域开放squid服务,让客户进行透明代理

image.png

重启防火墙

image.png



 修改squid的主配置文件

vim /etc/squid/squid.conf

59行 3128后加入transparent

去掉62行#号注释

image.png


使用squid -k parse命令检查主配置文件是否有错误

image.png

使用squid -z命令对Squid服务程序的透明代理技术进行初始化。

image.png

重启服务 systemctl restart squid

image.png

 测试

image.png



ACL访问控制

在日常工作中,企业员工一般是通过公司内部的网关服务器来访问互联网,当将Squid服务程序部署为公司网络的网关服务器后,Squid服务程序的访问控制列表(ACL)功能将发挥它的用武之地。它可以根据指定的策略条件来缓存数据或限制用户的访问。比如很多公司会分时段地禁止员工逛淘宝、打网页游戏,这些禁止行为都可以通过Squid服务程序的ACL功能来实现。

Squid服务程序的ACL是由多个策略规则组成的,它可以根据指定的策略规则来允许或限制访问请求,而且策略规则的匹配顺序与防火墙策略规则一样都是由上至下;在一旦形成匹配之后,则立即执行相应操作并结束匹配过程。为了避免ACL将所有流量全部禁止或全部放行,起不到预期的访问控制效果,运维人员通常会在ACL的最下面写上deny all或者allow all语句,以避免安全隐患。

禁止员工访问域名中带有ruijie的网站

squid服务程序的这种ACL功能模式是比较粗犷暴力的,客户端访问的任何网址中只要包含了某个关键词就会被立即禁止访问,但是这并不影响访问其他网站。

首先,确保可以打开

image.png

 在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,那么就被拒绝

image.png

 重启服务后进行测试

systemctl restart squid

Ctrl+shift+del清除缓存,再次访问www.ruijie.com.cn

image.png

百度还可以正常访问

image.png



打赏 支付宝打赏 微信打赏
 您阅读本篇文章共花了: 

本文地址:https://www.mamublog.cn/post/112.html
版权声明:本文为原创文章,版权归 mamublog 所有,欢迎分享本文,转载请保留出处!

推荐文章

发表评论


表情

还没有留言,还不快点抢沙发?