概要
在目前互联网发展形势下,有非常多的业务需求要从互联网或者VPN之类的非安全区域来访问企业内部的业务生产系统。这给网络框架和网络安全提出了很大的挑战。这种需求相信每一位运维人员都遇到过,而且也深思过。
在这种需求下,怎么去构建一种生产环境下的安全有效的访问途径。本人作为有某三甲医院多年运维经验的工作人员,分享自己的一整套改造经验之谈。有需求的同学们可以借鉴,有高工看见了,也提提建议。
背景
先交代下背景:目前医院信息化作为互联网信息化的一部分,总感觉太保守,一来也是发展迟,发展快,二来是思想不够解放。导致现在信息孤岛严重,发展受限。
相信这张图是医院互联网应用下的普遍网络构架吧。对于网闸这种东西,我是深恶痛绝,太死板,业务限制太大。谁用谁知道
我的思路是这样的,所有非安全域的访问(互联网、VPN)只能访问应用代理服务器(可搭配),而应用代理服务器通过四层、七层代理方式访问真正的内网服务器(涵盖99%的业务访问流程)。 优势是代理配置更灵活、业务应用拓展更灵活。
应用代理架构
nginx+keepalived+nginxwebui 这三款软件可以自行百度下,都是主流稳定产品,具体不介绍了,都是神一样的存在。而且不用花钱的。。。
nginx:反向代理四层、七层应用。
keepalived:对nginx做双活避免宕机。
nginxwebui:图形界面管理nginx(更方便、更安全)。
整体架构拓扑
准备工作:
1、准备两台交换机,最好做个堆叠。
2、准备两台物理服务器(看你预算,生产环境中不建议单台)。安装centos或者openEuler操作系统,,,看你情况。
3、两台物理服务器网卡可以做个bond0做个。
思路
1、基础环境配置
2、编译安装nginx
3、安装nginx图形管理页面nginxwebui
4、配置双活keepalived
5、测试方法
6、升级须知
安装开始
1、基础环境配置 (两个节点配置相同)
① selinux关闭,yum阿里云网络源配置。
② 操作系统防火墙配置:
[root@localhost ~]#firewall-cmd --zone=public --add-port=80/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=443/tcp --permanent
[root@localhost ~]#firewall-cmd --zone=public --add-port=10240/tcp --permanent
[root@localhost ~]#firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
[root@localhost ~]#firewall-cmd --direct --permanent --add-rule ipv4 filter OUTPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
[root@localhost ~]#firewall-cmd --reload
其中80、443端口是常用业务端口,10240是nginxwebui管理页面端口。后两条是因为keepalived使用vrrp协议实现主主,必须得放开。最后重新加载防火墙。。。。
提示:如果你有硬件防火墙,操作系统的防火墙也可以直接关闭。如下:
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl disable firewalld
③yum安装列表:keepalived java-1.8.0-openjdk net-tools curl wget gcc gcc-c++ autoconf automake make openssl openssl-devel pcre pcre-devel zlib-devel 其中包括了keepalived、nginxwebui的环境java包、还有nginx及编译的包等。
可以一次性安装,也可以单个安装,例如
[root@localhost ~]#yum install -y keepalived
2、编译安装nginx(两个节点配置相同)
提示:这里强烈建议编译安装nginx,对于后期nginx的升级、增加模块等有重要作用
①下载nginx(最好选个最新的稳定版本,我这里以“1.22.1”做演示)
http://nginx.org/download
[root@localhost ~]#mkdir /usr/local/nginx #创建一个nginx安装目录
[root@localhost ~]#cp nginx-1.22.1.tar.gz /usr/local/nginx/ #将下载的tar包拷贝进去
[root@localhost ~]#cd /usr/local/nginx/
[root@localhost ~]#tar zxvf nginx-1.22.1.tar.gz #解压tar包
[root@localhost ~]#cd nginx-1.22.1
[root@localhost ~]#./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_secure_link_module --with-http_ssl_module --with-http_sub_module --with-http_v2_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module #先configure 后面跟着安装路径 --with-是需要的模块。。。。基础的模块都带上了,基本够用。
[root@localhost ~]#make & make install #编译及安装
------------------这就算装完了,可以在浏览器中输入http://IP 就能验证了。--------------
[root@localhost ~]#cd /usr/local/nginx/sbin/ #进入nginx安装目录
[root@localhost ~]#./nginx #启动nginx
[root@localhost ~]#./nginx -V #查看版本及模块及安装情况
-----------------下边为了便捷操作,将nginx服务安装到系统服务中去-----------------------
[root@localhost ~]#echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/n