Explicit proxy是Fortigate firewall集成的众多优秀的功能之一,下面说下Explict防火墙的简单配置。文章中仅介绍部署web proxy的部分,FTP proxy的配置过程类似,这里就先略过。
背景:
最近使用中国联通的网络访问国外的一些工作常用站点非常困难,网页响应时间长,甚至无法加载网页等。
某些部门的同事需要下载国外的同事发来的一些文件,很多是通过国外的云服务共享的,比如dropbox,google docs,onedrive等等;
某部门同事工作常用的站点,比如webex.com,netsuite.com,微软的CRM站点;
外企常用的搜索引擎google.com等等。大家都知道靠baidu是搜索新的有价值的技术资料是非常困难的;
解决方案:
代理;
×××;
在国外的office提供VM给国内的用户远程使用等等;
这里笔者之前主要使用的是代理服务器,SQUID for windows,没有使用Linux版本的SQUID主要是因为公司熟悉Linux的同事并不多,怕以后维护比较困难。我之前的SQUID配置了NTLM验证,公司内通过Domain环境管理,所以为用户开放权限比较方便。由于SQUID for windows的版本非常旧了,更新到2.7之后就不更新了。碰巧前端时间刚刚帮公司更换了Fortigate的NGFW,经过国外的同事提示,NGFW内置了Explicit proxy,非常有新鲜感。也正好有脱离SQUID的想法,所以研究了起来。
配置步骤,大概分为以下几个部分:
启用explicit feature;
启用WAN Optimization feature;
配置Explicit proxy使用的端口;
在需要的interface启用explicit proxy web支持;
配置explicit proxy使用的service;
配置explicit policy;
配置RADIUS验证用户,方便权限管理;
配置windows NPS作为RADIUS服务器;
在Active Directory中建立相应的group,用于分配权限;
环境信息:
FortiGate 200D;
FortiOS 5.2;
使用56789作为explicit proxy的服务端口;
使用windows Active Directory,通过windows NPS设置RADIUS server验证用户;
以下是具体的配置过程:
启用Explicit feature,启用后的效果如下图:
配置Explicit Proxy使用的服务端口,如下图所示;
选择监听explicit proxy请求的interface;
可以直接在上一步界面点击listen on interfaces右侧的编辑按钮,或者system->Network->Interfaces;
首先将本地网络启用explicit proxy feature,这是必须的一步;
笔者这里将explicit proxy设置在国外HQ,国内的网络和HQ通过LAN-2-LAN ×××连接,所以我需要将这个LAN-2-LAN ×××的interface启用explicit web proxy;
笔者这里为LAN网络;
双击LAN;
勾选enable explicit web proxy;
其他的interface中同理进行勾选;
配置explicit web proxy使用的service;
笔者这里做了个实验,测试了仅开放向internet转发目的端端口为80和443端口的请求,以提高安全性,但具体安全性如何还不了解;
系统默认的webproxy服务一般是这两点:
笔者定义了两个服务:
下图的service名为webproxy-80,service type为explicit proxy,这点需要注意。目的端的端口填写80。同理再新建一个service,端口设置为443即可;
允许任何服务的请求;
仅响应目的端口为80和443的请求;
允许所有协议请求;
允许向任何目的端口的请求;
配置Explicit web proxy的用户组:
这里希望大家已经在Active Directory中建立好了响应的用户组,笔者的用户组的名称为ProxyUser_CN,并且将需要使用explicit web proxy的用户都加入了该组;
然后需要指定RADIUS的相关信息;
system->User & Device->Authentication->RADIUS servers;
新建一个RADIUS server,为这个RADIUS取个名字,输入RADIUS服务器的FQDN或者是IP地址;
输入您在RADIUS服务器中设置的secret,这里笔者推荐您使用windows NPS自带的secret生成器生成的长度为64bit的高复杂度secret,并且妥善保存;
其他项目不变,点击ok即可;
System->User & Device->User->User Groups
新建一个User group,为该group命名;
type为Firewall;
添加remote server为我们上一步新建的RADIUS server;
其他项目保持不变,保存设置即可;
配置Explicit policy,这里是整个配置过程的一个特别需要注意过程。并不是因为这个过程有多难或多不好理解,而是因为这里通过GUI无法完成配置,因为通过FW本身的GUI节目无法配置policy需要使用的服务。笔者曾将这个问题作为一个bug提交给客服,但support给的回复是配置service的开关是隐藏功能,仅仅能通过cli进行配置。笔者对这个回答并不买账,原因是如果您用Forti Manager的话,通过Forti Manager的管理界面就可以在GUI下配置该policy需要使用的service。
具体的配置过程,大家可以参考官方的文档介绍,我这里将我配置的命令粘贴如下,供大家参考:
FW # config firewall explicit-proxy-policy FW (explicit-proxy-p~icy) # edit 0 new entry '0' added FW (0) # set proxy web FW (0) # set dstintf wan1 FW (0) # set srcaddr 需要使用proxy的网络地址 FW (0) # set dstaddr all FW (0) # set action accept FW (0) # set service webproxy-80 webproxy-443 这里是我们上一步建立的两个service。就是这条在FortiOS 5.2中无法通过GUI实现; FW (0) # set webcache enable FW (0) # set identity-based enable FW (0) # set ip-based disable FW (0) # set active-auth-method basic FW (0) # config identity-based-policy FW (identity-based-p~icy) # edit 0 new entry '0' added FW (0) # set groups 您定义的AD组的名称; FW (0) # set schedule always FW (0) # set utm-status enable,非必要条目 FW (0) # set webfilter-profile 您自定义的策略,本条非必要; FW (0) # set profile-protocol-options default ,非必要条目; FW (0) # end FW (0) # end
到这里FW端的配置工作就基本结束了,剩下的就是测试FW和RADIUS之间的连接性。这里笔者建议大家通过cli进行测试,测试命令为:diagnose test authserver radius radius-name authentication-protocol username password关于配置Windows NPS作为Explicit web proxy的RADIUS服务器的过程,由于这个过程适用于Fortigate防火墙的很多功能的验证,我们稍后单独写一篇文章,敬请期待。