一、 硬件、软件选型
确认需求,分析可能面临的安全问题
记录各硬件寿命、保证散热、确保性能冗余
使用商业正版、开源的软件,不从互联网安装系统,从源头保证系统安全
购买专业售后支持
服务器配置双电源模块,并使用UPS不间断电源,确保数据安全
二、 操作系统
1. 选择稳定内核
带奇数的内核版本(即2.3、2.5、2.7 等)是实验性的开发版内核。稳定的发行版内核的版本号是偶数(即 2.4、2.6、2.8 等)
2. 自定义ISO:标准化系统
出于安全和性能的考虑,我们可以从一个Launchapd PPA源和任何第三方软件仓库中自己选择软件的最新版本,也可以移除很少使用的软件
3. 通过编译方式安装软件,并及时更新系统及软件,并测试新的更新
通过编译安装的软件,能干净的删除和再次部署,不用担心不干净的卸载所带来的问题;及时更新系统,确保没有已知的漏洞;所有的更新和软件,先在测试服务器上测试,没问题后再更新生产环境
4. 图形界面
某些应用可能需要图形界面来进行配置,我们可以利用ssh的X11转发linux服务器应用程序的图形部分,而不是给服务器安装图形界面,可提高安全性及性能
5. 系统启动安全
通过编辑GRUB启动标签可以轻松的进入单用户模式从而修改root密码
GRUB的密码设置可分为全局密码和菜单密码
为了防止他人通过GRUB修改root密码大家需要设置一个全局密码。在splashimage这个参数的下一行可以加上password=密码,保存后重新启动计算机后生效
虽然我们设置了全局密码,但是如果他人得到了全局密码后仍然可以修改GRUB启动标签从而修改root密码;这样我们就可以设置菜单密码,只需要在title的下一行加上password=密码,然后保存退出。这样即使有了全局密码也必需输入菜单密码才能够引导系统。
此外,如果直接对GRUB进行明文加密也是非常不安全的,所以就要使用MD5对其进行加密。在终端中输入grub-md5-crypt回车,这时系统会要求输入两次相同的密码,之后系统便会输出MD5码。大家只需要将生成的MD5密文复制下来,然后在按照password --md5 MD5密文这个格式设置全局或者菜单密码,保存退出,重启计算机即可。
6. 防火墙:iptales、ufw
防火墙中关键要素有:源IP、目的IP、协议、源端口、目的端口、网卡,通过对这几个要素的配置,能有效控制来自外部的攻击及内部的资料泄漏
7. 远程登录ssh
1) 修改ssh端口
默认情况下,SSH监听连接端口22,攻击者使用端口扫描软件就可以看到主机是否运行有SSH服务,将SSH端口修改为大于1024的端口是一个明智的选择,因为大多数端口扫描软件(包括nmap)默认情况都不扫描高位端口。
2) ssh密钥认证:可有效抵御字典功击
3) 禁止root用户登录
如果一个攻击者获得root权限登陆到你的系统,相对他获得一个普通用户权限能造成更大的破坏,配置SSH服务器不允许root用户通过SSH登陆
4) ssh白名单:仅允许指定用户可登录、指定IP可访问服务器
5) 重试次数:一段时间内,超过登录失败重试次数后,不允许登录
6) 连接超时:超过特定时间后,断开空闲的ssh连接
7) 极端安全措施:ssh审计、端口敲门、动态端口
8. 用户名、密码
复杂用户名和密码
使用LDAP服务器集中管理服务器的用户名和密码,并动态更改、
9. sudo权限
因为root用户权限太高,所以我们配置特定用户才能su为root,并指定sudo用户可用的命令
10. 资源限制
限制每个用户可使用的资源,包括:磁盘空间、网络IO...
11. 连接记账:跟踪当前用户当前对话、用户登录和退出的活动、操作历史记录
12. 入侵检测
Intrusion Detection System(入侵检测系统)是对入侵行为的发觉,其通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象
13. 反端口扫描
我们可以通过防火墙限制自己系统中什么端口开放,什么端口不开放。对于外部的人们来说,这些信息都是保密的。黑客为了得到您机器中开放的端口,往往会进行各种方式的扫描,这样的扫描软件在互联网上也随处都是。一般的扫描活动都是进行入侵的前奏,对安全是极大的危险。
反扫描工具可以实时发现并分析记录对本机的扫描
14. 安全审记:Tripwire
Tripwire 报告自它上次运行以来发生的更改,您可以将之与以前的运行报告进行比较。如果文件已更改、删除或添加,那么需要系统管理员的进一步调查,判断是正当更改还是一些应用程序或用户的强迫更改日志分析
15. 日志分析
审核和记录系统的事件是非常重要的,利用日志分析工具可以自动地检查日志文件,发现违反安全规则以及异常的活动,然后把这些信息 email 给系统管理员
16. SELinux
通过 SELinux 所实现的强制访问控制(或者说是 MAC),使用 MAC,操作系统中的许可由进程所属的用户/组 ID 以及正要被访问的对象(文件)所属的用户/组 ID 来管理。另外,使用 MAC,Linux 会强制为每个单独的进程执行这些策略,它们会控制进程可以做什么事情
17. 日常操作自动化
通过cron任务计划自动维护,并将相关结果发送邮件
三、 文件系统
RAID、lvm逻辑卷快照、ecryptfs加密、分布式存储GFS:利用各技术的优势保证存储数据安全
文件校验:md5sum、shasum,通过文件校验技术确保使用的是安全的文件
权限控制:通过查找777、无主文件,确保重要文件的安全;查看高权限用户组中的用户,确保无异常用户加入
四、 应用程序、数据库
应用程序
1. 自动化:通过版本控制、自动化部署,方便错误回滚
2. 高可用:主从、主主、负载均衡集群
3. 程序相互调用统一域名、端口,便于集中管理
4. 应用程序的容器:利用半虚拟化lxc,为每个应用程序配置单独的容器,确保其它程序及系统的安全
5. 程序后台运行nohup,防止当前会话中断
6. 加密传输
调用命令、传输文件时应加密,防止中间人攻击及数据泄漏
7. 在应用程序中设置路径别名,隐藏实际路径
数据库
1. 连接安全
通过修改my.cnf文件,修改端口,禁用反向域名解析,限制访问的客户端,确保数据库不对外开放
2. 设置复杂的root密码,由DBA创建库并为每个数据库配置单独的用户和密码
3. 使用安全
不使用select*等会导致数据库性能急剧下降的查询命令
4. 脚本备份、数据库主从、读写分离、验证备份是否有效
数据是 Unix/Linux 系统中最重要的组成部分 ,但是数据的备份与同步却是最容易被忽略的任务。通过定期的数据备份与同步,可以在磁盘出现故障时,最大程度的降低数据损失。当用户误操作导致数据损坏或者丢失时,可以快速恢复
五、 网络架构
1. 硬件防火墙
2. 堡垒机
堡垒机的核心思路是逻辑上将人与目标设备分离,建立“人-〉主账号(堡垒机用户账号)-〉授权—>从账号(目标设备账号)的模式;在这种模式下,基于唯一身份标识,通过集中管控安全策略的账号管理、授权管理和审计,建立针对维护人员的“主账号-〉登录—〉访问操作-〉退出”的全过程完整审计管理,实现对各种运维加密/非加密、图形操作协议的命令级审计
3. 内部域名服务器:通过域名集中管理各机器之间的访问
4. 内外网隔离
5. 三层交换机:通过VLAN ID,只允许指定机器相互通信
6. 负载均衡、主从备份、分布式,确保服务及数据能正常使用
六、 监控
短信、邮件、电话提醒、正常时定期提醒、异常提醒
监控参数:
温度、CPU负载、磁盘容量及负载、内存容量及负载、网卡负载
系统登录地点、人数、进程数
应用程序存活状态、应用程序参数监控(连接数...)、应用程序异常提醒
定期端口扫描、漏洞扫描
七、 预案和文档记录
1. 标准化操作方法和流程:标准有助于实现更好的治理、更强的系统安全性和更有弹性的业务运营,能有效防止人工失误
2. 知识库、应急预案:加强从业人员的知识积累,通过预案快速反应
3. 记录历史故障现象和解决办法并不定期进行故障演练,以快速解决问题