Linux运维的安全防护
文档随时会更新,最新更新时间:20190901
此文档是一个可以实际操作的实时更新的Linux运维安全相关的实施清单,用于对linux运维相关安全防护的计划 > 实施 > 检查 > 改进
1 安全原则
在实施安全措施之前规定一些基本安全原则,做到心中有丘壑,眉目作山河
- 信息和系统安全防御是多层面的纵深防御,按从外层到内层的顺序,主要包括5层:物理安全防御 > 网络安全防御 > 主机安全防御 > 应用安全防御 > 数据安全保护
- 最小权限法则,给予用户、程序、系统最小的仅能完成其功能的权限
- 尽量使用白名单而不是黑名单
- 使用入侵检测系统及早发现黑客的攻击行为
- 定期扫描系统漏洞、Rootkit、病毒
- 培养运维人员的安全意识,编写运维安全文档统一安全规范
2 物理安全防御
第一层的防御就是物理层防御,不论机房大小都应该重视
- 机房锁上门,避免有人拿大锤进机房砸了服务器、路由器、交换机、空调
- 使用 UPS,防止断电引起的服务器停机
网络安全防御
网络是能摸到你服务器的最直接的触手,需要严加防范
- 使用网络防火墙,在网络边界使用硬件防火墙如juniper、cisco等品牌的硬件防火墙,在操作系统层使用软件防火墙如 iptables,进行细粒度的网络访问控制
- 对于部署到公有云的网络安全防御,要尽量尽量减少暴露的云服务器和端口的数量,使用安全组设置服务器的网络访问控制
- 使用堡垒机,如开源的 jumpserver
- 防御 DDos 攻击,使用云厂商提供的 DDos 防御服务,使用 CDN 加大承载能力
- 搭建 VPN,连接不同地域的网络或服务器,用于远程办公人员使用,或者连接不同的局域网
- 网络安全问题的分析工具,可以使用 tcpdump、wireshark
3 主机安全防御
突破了网络防御的触手到达了你的服务器,别让他继续下去
3.1 Linux用户安全管理
- 禁止 root 用户 ssh 登陆服务器,建立单独的用户用于 ssh 登陆,使用密钥登陆而不是密码
- 用户密码要保证复杂度杜绝弱口令,使用弱密码工具 John ther ripper 或 hydra 检查弱密码
- 安全的配置 sudo,赋予不同用户满足需求的最小权限
- 限定可以使用su的用户,防止未授权的用户切换成root
3.2 文件系统安全
- 使用 sXid 监控 SUID 和 SGID 类型文件的变化
- 使用 extundelete 恢复已删除的文件
- 使用 srm 和 dd 命令安全擦除敏感文件
4 Linux 应用安全
Linux 应用安全主要包括安装在 Linux 上的应用的相关安全设置,根据一项调查显示网站高危漏洞最常见的是跨站脚本攻击、SQL 注入、PHP 错误信息泄漏,数据库运行时错误等
- 使用开源web防火墙(WebApplication Firewll,WAF),Apache 可以使用 ModSecurity,Nginx 可以使用 NAXSI,共有用可以购买云WAF防火墙
- 使用 HTTPS 避免中间人攻击和防止网络上的嗅探,
- PHP 安全配置
- 注意 PHP 开发框架的漏洞
- 配置文件中禁止错误信息显示
- 禁止 PHP 打开远程文件
- 禁止PHP包含远程文件
- 在 Cookie 中设置 “HTTPonly” 属性等一系列安全配置
- Tomcat 安全配置
- 删除 webapps 目录下默认应用
- 为 Tomcat 设置专用的启动用户
- 关闭 WAR 包自动部署
- 自定义错误页面
- MySQL 安全
- 部署在仅有内网的服务器上
- 通过防火墙设置为仅 Web 服务器可访问
- 使用独立的普通用户运行 MySQL 服务
- 删除安装后的测试数据库
- 用户授权采用授权最小化原则
- 定期备份数据,防止数据丢失
使用 Linux 安全扫描工具
- 使用网络扫描工具 masscan、nmap 扫描和发现对外开放的端口并识别端口对应的应用
- 使用开源 Web 漏洞扫描工具如 Nikto2、OpenVAS 扫描 Web 漏洞
- 使用 SQLMap 进行 SQL 注入渗透测试
部署入侵检测系统
- 使用开源入侵检测系统 OSSEC 或商业入侵检测系统青藤云、安骑士
- 使用Kippo搭建SSH蜜罐捕获入侵记录
Linux RootKit和病毒木马检查
- 使用 Chkrootkit、Rkhunter 扫描 Rootkit 和检查系统关键文件
- 使用 ClamAV 扫描病毒木马
- 使用 LDM 检查 Webshell
安全日志收集
- 搭建 Syslog-ng 收集远程服务器的安全日志
威胁情报收集
- 通过威胁情报网站收集威胁情报,比较著名的有 微步在线威胁情报社区、360威胁情报中心、IBM威胁情报中心
入侵后检测
如果所有的防御手段失效,被攻击后要及时排查处理
- 检测常用程序是否被替换,有则修复
- 使用 chkrootkit 和 rkhunter 扫描 Rootkit
- 使用 ClamAV 扫描病毒
- 检测隐藏目录和文件
- 查看近期登陆记录
- 查看是否有异常进程、隐藏进程、查看异常进程打开的端口及文件
- 检查网络连接和监听端口,特别注意本季主动连接到外部地址的连接
- 查看arp记录是否正常
- 检查安全日志、应用日志、bash_history
- 检查是否有Webshell
- 重装系统,更改原密码