从业10年的运维工程师关于安全的心得和总结

作为一个运维工程师,最核心的一项工作内容和目标就是保障整个运维项目的安全性,包括数据和网络的安全。本文已过去多年的从业经验,通过一下3个层面聊一下在运维工作中的安全的重要性。

一,系统/服务层面

a.升级所有系统到最新版本,如果可以的,最好升级到最新的内核

b.系统优化及初步安全

1)同步系统时间。如计划任务每隔5分钟同步一次时间服务器

2)关闭所有不需要的服务及端口

3)修改默认的ssh端口

4)使用iptables或者firewall

5)使用selinux

6)打开文件句柄优化

7)通过 chatter命令,锁定系统关键的文件,如/etc/passwd,或者/etc/rc.local ,或者是网站的关键的程序文件

8)denyHosts防止ssh暴力破解(详细的介绍)

 

c.1)web安全,已nginx为例,使用非root运行服务;隐藏nginx的版本号;启用black_ip_list,安全的security.conf配置文件;使用https+http2,使用.htaccess文件(这里有非常详细的介绍)

2)动态程序:已php为例,关闭所有不需要的或者比较危险的函数;隐藏php的版本号;用socket启动服务非端口;只给需要执行动态程序的目录及文件权限

3)数据库:已MySQL为例,采用主从同步和读写分离(方案有使用mycat,或者直接使用公共服务器如PolarDB MySQL)

4)使用nosql(如redis等),提高用户访问数据库的访问速度,这样用户的体验就更加好

5)存储:使用GlusterFS或者ceph作为分布式存储,可以有多个副本,实现数据的安全及完整性

d.随时关注安全动态,及时升级有重大漏洞的服务

e.监控系统,如Zabbix或者Prometheus

f.实现服务的容器化,如docker和k8s(kubernetes)

 

二,网络层面

a.所有服务内网化,将服务与互联网隔离开来,如果你公司有自己的服务器(建议使用虚拟化技术,如vmware vsphere或者xenserver),同时也有公有云,已阿里云为例,可以通过IPsec隧道高速网络连接本地IDC和阿里云(一般使用VPC搭建的网络架构),组成一个混合云。

 

b.为了抵挡DDOS,CC等网络攻击,使用高防IP,并关联到公司项目最前端的服务器上(一般是代理服务器),具体的服务厂商有(国外,可以选cloudflare,国内有网宿科技,快快网络)。到此为止,整个项目架构中的所有服务都内网化了,外网是不可能访问所有的节点,包括代理服务器。

b1对外提供带有负载均衡的四层服务

当业务流量较大,一台ECS不能支持全部访问流量,需要多台ECS才能支持时,您只需要最简单的负载均衡功能。此时,您可创建一个公网负载均衡实例,配置四层(TCP/UDP)监听,并在后端挂载多台ECS来搭建整个业务架构

b2对外提供带有负载均衡的七层服务

除了基本的流量分发,当您希望将不同的业务流量分发到不同的后端服务器时,可以使用七层负载均衡的域名和URL转发功能来实现。此时,您可创建一个公网负载均衡实例,配置七层(HTTP/HTTPS)监听,并在后端挂载多台ECS来搭建整个业务架构。

我使用的是将L4和L7的代理结合的方案,一般是L4在最前端

c.使用OPENVPN实现远程办公,一般是给运维和需要连接到公司内网的各部门同事的.(也可以使用其他的vpn,如ikuai也不错)

三,代码层面

a.严防sql注入,xss跨站脚本攻击等,一定要使用安全的代码(这一项主要是针对开发人员)

b.审计所有服务器的的所有用户的操作(可以使用三方软件或者自己写脚本实现)

c.使用堡垒机(如jumpserver),并精细授权用户(如开发,原则上是不给他们直接连接服务器的权限,但是如果有特殊需求,可以给核心开发人员部分权限,具体就看他的需求)

d.websacn代码(可以自己做,前提是自己懂或者使用三方的服务如360,网址:https://webscan.360.cn/,以前使用是免费的,现在都要收费了)

e.实现CI/CD,目前最普遍的方案是gitlab和jenkins(如果是java或者微服务,需要如maven等更多的软件支持)

从业10年的运维工程师关于安全的心得和总结
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Scroll to top
0
Would love your thoughts, please comment.x
()
x