解决运维痛点服务器去外网ip

DevOpSec
• 阅读 434

背景

在我们做业务或网络运维的过程中肯定会接触到外网ip,外网ip是服务和外界连接的桥梁,由此可见外网ip很重要,但与此同时它的存在也同样会带来安全上的隐患。下面我们来看看常见的安全问题。

第一:核弹级bug Log4j,相信很多人都有所耳闻了,通过日志触发执行远程调用。 如果有外网那么黑客的代码就能在服务器上执行下载黑客程序执行与黑客服务器建立连接,此时你的业务服务器上便有了后门,也即服务器被入侵。

第二:上网行为控制,服务器有外网,即使我们限制了服务器所有端口不对外,那我们怎么限制服务不能连外网,或者有小伙伴登录服务器copy数据到外网,我们怎么能够发现和规避这类问题。通过上网行为管理和流量分析也能实现,维护设备成本和投入金钱太多。

外网ip又不能不用,该怎么办好呢? 那就把服务器ip去掉吧! 原则上:是服务器上不能绑定外网ip,即使有外网ip出网目标ip必须在白名单里。

问题

基于上面两点原因我们需要把有外网ip的服务器去外网ip。 那问题题来了:

  1. 去除外网ip我们的业务怎么被访问?
  2. 服务器上运行的业务需要连外网怎么办?
  3. 去了外网ip我们怎么的登录服务器进行管理?
  4. 已知业务有连接的外网的域名通过代理后包ssl 协议版本问题,研发没有时间升级http client包,这种情况怎么解决?
  5. 已知业务有连接外网ip的情况,且ip也是动态变化的,这种情况怎么解决呢?
  6. 跨region没有外网怎么管控?

下面就给大家一一解答。

去除外网ip使用技术

  1. 正向代理:解决内部服务上网问题
  2. 反向代理:解决服务被外部用户访问问题
  3. 边界防火墙:解决服务端口暴漏问题
  4. VPC/VPN:解决业务隔离和办公网、region直接访问问题
  5. iptables:解决服务器允许白名单ip进出网络,其他外部ip 禁止进出网络

业务逻辑图

解决运维痛点服务器去外网ip

上面这张图是很常见的业务被访问和业务出外网的一张架构图

  1. 橙色线是业务被外网用户访问的流量到业务的过程,通过防火墙,然后进过正向代理到达内部业务
  2. 绿色线是业务访问外网的流量过程,通过正向代理,然后经过防火墙出外网
  3. 蓝色线也是业务主动访问外网的流量过程,它与绿线不同的是他没有经过正向代理直接通过本机外网ip通过防火墙出的外网

1和2 业务机器没有外网ip业务能正常运转,3业务运行的主机上有外网ip,在运维工作中你肯定想把外网ip从主机上摘掉,但往往因为各种原因拿不掉(参看上面6个问题4、5)。

解决问题

首先第一问题:去除外网ip我们的业务怎么被访问?

通过反向代理的方式解决

大家看上面图,针对对外提供WEB服务的业务,流量通过黄色箭头流入经过边界防火墙,负载均衡器,反向代理,主机上的防火墙,最终到业务。

外网IP是绑在负载均衡器上,内部代理、业务机器均没有外网ip,所以这种情况业务机器如果主动外网请求是出不了外网的。

第二个问题:服务器上运行的业务需要连外网怎么办?

通过正向代理的方式+域名和ip白名单解决

图中绿色代表业务连外网流量,业务发起外网请求,经过正向代理,边界防火墙出外网,外网IP是绑定在正向代理服务器上的或者出口网关上。

业务机器均没有外网ip,所以这种情况业务机器如果主动外网(不在白名单中的)请求是出不了外网的。

第三个问题:去了外网ip我们怎么的登录服务器进行管理?

通过VPN隧道解决

图中红色代表通过办公区连接线上服务器进行管理时,是通过点对点隧道进行建联管理业务机器的。 外网ip是在IPSecVPN设备上的,业务机器均无外网ip。

第四个问题:已知业务有连接的外网的域名通过代理后包ssl 协议版本问题,研发没有时间升级http client包,这种情况怎么解决?

通过iptables方式解决,默认所有外网不允许访问

这种情况是业务需要第三方服务,比如调用推送服务、验证码服务、地图服务等,业务是java技术栈,项目使用的事httpclient jar包或者引用三方SDK里内嵌httpclient jar包比较旧报ssl 错误不能通过自建代理出外网。

解决办法:可以在虚机上绑定公网ip,通过脚本检测域名ip,增加防火墙策略,允许域名ip出公网,内网ip段可以相互通信,其他ip DROP。

比如内部网段有:10.10.0.0/16192.168.0.0/16,假如说域名对应的公网ip是114.114.114.114,防火墙策略如下:

iptables -I INPUT -s 10.10.0.0/16 -j ACCEPT
iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -I INPUT -s 114.114.114.114 -j ACCEPT
iptables -A INPUT -j DROP    #注意这里是-A

iptables -I OUTPUT -s 10.10.0.0/16 -j ACCEPT
iptables -I OUTPUT -s 192.168.0.0/16 -j ACCEPT
iptables -I OUTPUT -s 114.114.114.114 -j ACCEPT
iptables -A OUTPUT -j DROP    #注意这里是-A

,追加不是-I插入,-I默认是在行首插入

注意: 需要增加定时任务,检测域名ip变化增加防火墙策略。 这里是防止如果业务使用第三方更换ip后会影响业务。 通过定时任务方式将域名解析的新ip加白到防火墙会有一定的延迟性,需要和业务方沟通一个合理的延迟时间,业务方做好重试。

第五个问题: 已知业务有连接外网ip的情况,且ip也是动态变化的,这种情况怎么解决呢?

通过iptables方式和业务方配合解决,默认所有外网不允许访问

场景:A业务从三方代理服务商那里拿过来一堆ip,然后B业务使用这些ip访问一些数据,那这种通过正向代理nginx出去也是不好实现的。

解决运维痛点服务器去外网ip

流程:

  1. A业务通过正向代理访问三方代理服务接口
  2. 代理访问转发A业务请求,访问三方代理访问拿到ip 列表
  3. A业务调用server接口增加和删除ip 信息,然后等待2s
  4. server将新增和删除的ip发布到redis
  5. client端从订阅redis channel 拿ip
  6. 拿到ip后通过iptables 增加或删除防火墙规则
  7. A业务将新增IP写入DB
  8. B业务从数据库里拿取可用的IP
  9. B业务通过此代理ip发起抓取数据请求,因为iptables有允许出入网的规则所以业务能正常通过此代理ip抓取数据

解决办法: 通过上述流程我们可以知道,我们需要实现serverclient段对B业务所在机器上的防火墙规则进行增删,只允B业务许连接已知的ip

这里需要和A业务开发一起完成,A业务是可用ip代理池的维护者。

第六个问题:跨region没有外网怎么管控?

通过云平台提供产品或者IpsecVPN

云平台会提供Region联通产品,比如阿里云云企业网,优刻得云跨域通道,还有通用解决方案IpsecVPN。

注意:在做可用区VPC网段划分时网段不要重合,否则后面不同VPC联通路由上会有问题。

点赞
收藏
评论区
推荐文章
固定ip地址
在把皕杰报表部署到LINUX上时,我们有的时候需要自动获取ip来实现连接,但平时我们为了方便,可以把我们的ip改为固定的ip,这样访问的时候也会方便许多。设置里面打开WLAN——网络和共享中心——更改适配器设置——右键点击连的WIFI属性——TCP/IPv4属性选取自动获取ip地址,就会自动获取ip。选取使用下面的ip:IP地址:192.168.1.29 
Stella981 Stella981
3年前
FastDFS V6.0支持双IP特性介绍
  很高兴地告诉大家,经过半个多月的开发和测试,FastDFSv6.0发布,欢迎大家下载使用。   v6.0支持双IP,trackerserver和storageserver均支持双IP。v6.0新增特性说明如下:支持双IP,一个内网IP,一个外网IP,支持NAT方式的内网和外网双IP,解决跨机房或混合云部署问题。  双IP
Stella981 Stella981
3年前
SecureCRT 跳板机 内网直连
使用场景阿里云有10台服务器,只有一台开通了外网(同样也适用于在家办公时需要访问到公司内网):想通过阿里云内网IP以SSH方式访问另外9台服务器想通过阿里云内网IP以浏览器方式访问服务器中运行的web服务想通过阿里云内网IP以本机直连的方式链接服务器或某个
Stella981 Stella981
3年前
OPNsense端口转发设置
在OPNsense中,有时我们需要通过外网访问内部的服务器,或进行SSH通信,这就要用到防火墙的端口转发功能。下面以从外网SSH内部主机来进行示例,要访问的内部主机IP:192.168.100.100,通过WAN1接口进行访问。登录OPNsense的管理界面,导航到防火墙NAT端口转发页面,点击右上角的添加按钮,添加一条新的端口转发条目。
Wesley13 Wesley13
3年前
MySQL添加新用户、为用户创建数据库、为新用户分配权限
登录MySQLmysqlurootp添加新用户允许本地IP访问localhost,127.0.0.1createuser'test'@'localhost'identifiedwith加密方式(mysql\_native\_password)by'123456';允许外网IP访问creat
Wesley13 Wesley13
3年前
NFS远程目录挂载
服务端IP:192.168.0.177客户端IP:192.168.0.1751、NFS服务端配置。查看nfsutils是否安装rpmqanfsutils yuminstallnfsutilsyuminstallrpcbind (注:如果安装不成功,肯定是连接不了外网)(1)修改
Wesley13 Wesley13
3年前
Hyper
HyperV端口映射有时候我们为了让局域网或外网用户直接远程访问或访问虚拟机里的服务,可以将实机端口直接映射到HyperV的虚拟机里面,省去很多麻烦。下面是hyperv共享IP端口映射一些常用命令共享IP端口映射一些常用命令查询端
Easter79 Easter79
3年前
Springboot2整合Kafka
依赖<dependency<groupIdorg.springframework.kafka</groupId<artifactIdspringkafka</artifactId</dependency配置spring:kafka:bootstrapservers:外网ip:9092
专注IP定位 专注IP定位
2年前
关于TCP/IP协议漏洞的安全措施
摘要:我们介绍了TCP/IP协议中常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP连接欺骗。面对TCP/IP协议中存在的漏洞我们要采取什么样的安全措施去预防和解决呢?首先从架构角度来说:IPSec与TLS最常用的两种安全架构,可以利IPSec、TLS安全架构在不同的协议层来保护数据传输的安全性。一、IPSecIPSec 是一组用来在网络
frp + Nginx实现内网穿透 配置多个子域名访问内部服务
缘起公司搬家,新家不能装专线,静态ip消失,改为动态IP了,这样内部服务器在外网就没法访问了,所幸我们有一台云服务器,有公网ip。这里只提示写这篇博客的原因,下面的操作是在我个人腾讯云服务器(带公网ip)和个人PC上测试使用,亲测通过。公司阿里云服务器是生
DevOpSec
DevOpSec
Lv1
懂开发的运维,懂安全的运维。公众号:DevOpSec
文章
57
粉丝
6
获赞
26