Contents
  1. 1. 操作系统安全
    1. 1.1. 操作系统安全问题
    2. 1.2. 操作系统防护措施
  2. 2. 数据库安全
    1. 2.1. 数据库安全问题
    2. 2.2. 数据库防护措施
  3. 3. 应用系统安全
    1. 3.1. 应用系统安全问题
    2. 3.2. 应用系统防护措施

操作系统安全

操作系统安全问题

  • 系统帐号密码攻击。用户帐号密码被破解导致:1. 破坏系统文件。2. 安装恶意软件(间谍软件、病毒软件)。3. 比特币勒索。

操作系统防护措施

  • 设置系统防火墙
    • 仅开放必要端口,如:22 for SSH,80 for HTTP,443 for https,VPS 端口等。其它端口设置 IP 白名单。
  • 系统帐号保护
    • 设置高强度 root 密码。
    • 定期更新 root 密码。
    • 不使用 root 帐号登录。
  • 远程登录保护
    • 修改 SSH 默认端口。
    • SSH 登录使用公钥登录。定期更换公钥。
    • 关闭 root 登录。
    • 关闭密码登录功能。
    • 系统防火墙设置 SSH 登录 IP 白名单。

数据库安全

数据库安全问题

  • 登录帐号攻击。用户帐号被破解导致:1. 用户隐私信息泄露。2. 数据库被删除或篡改。3. 比特币勒索。

数据库防护措施

  • 一般保护
    • 修改数据库默认端口。
  • 数据保护
    • 定期异地备份数据库。
    • 重要的隐私信息加密存储。
  • 帐号保护
    • 设置高强度 root 密码。
    • 不使用 root 帐号登录数据库。
    • 不同数据库设置不同的用户帐号。
    • 不要把帐号密码明文写在项目配置文件中。
  • 远程登录保护
    • 设置数据库远程登录 IP 白名单。
    • 远程登陆使用公钥登录。
    • 使用 MySQL 代理。写一个 LUA 检查脚本,错误登录频率限制,三次错误登录 IP 加入黑名单。
    • 不使用远程登录数据库。通过 SSH 登录服务器,从而本地访问数据库。

应用系统安全

应用系统安全问题

  • 登录帐号攻击。1. 字典攻击或暴力攻击,获取用户的帐号密码。从而获取用户隐私,执行恶意操作。
  • 网络通信安全攻击。1. 监听网络通信数据。2. 篡改网络数据。3. 网站伪造。钓鱼网站。
  • XSS 攻击。1. 页面注入恶意脚本<script>,获取用户的 Cookie 信息,从而登录用户帐号。2. 让原始用户执行不当操作。如 <img src="http://mybank.com/transfermoney?amount=1000&toaccount=14512">
  • SQL 注入攻击。1. 执行未授权的恶意 SQL。如';<some SQL statement>;--2. 跳过登录密码验证。
  • DOS / DDoS 攻击。1. 拒绝服务攻击,大量请求服务器,导致正常用户无法使用网站应用。

应用系统防护措施

  • 一般保护
    • 使用加密的域名解析服务,不暴露服务器 IP 地址。
    • 使用 Nginx 代理,隐藏应用端口。
    • 应用端口仅能被代理服务器访问,系统防火墙设置应用端口访问的 IP 白名单。
    • 定期备份应用的数据文件。
    • 使用审计追踪用户行为。检查、分析和阻止恶意行为。
  • 登录保护
    • 错误登录频率限制。要求输入验证码。
    • 使用 Tow-Factor 认证,如:短信验证码。
    • 异地登录邮件提醒。
  • 网络通信保护
    • 使用 HTTPS 协议通信。
    • 客户端用户密码加密和加盐传输。
  • XSS 攻击防护
    • 不允许用户输入的文本显示为 HTML 标签。
    • 阻止 XSS 攻击运行在其它网站。1. HTTP 请求头的 referer 检查。2. 不仅仅通过 cookie 中的session 来识别用户,判断用户 session 需要检查是否为原始用户认证通过的 IP 地址。
    • 添加和修改操作使用 HTTP POST 请求。
  • SQL 注入防护
    • Java 数据库操作使用 PreparedStatement 对象。
  • DoS / DDoS 防护
    • 异常高频率访问 IP ,使用 Fail2ban 进行限制和加入黑名单。
  • 部署入侵侦测系统。记录和分析恶意攻击行为。
  • 部署蜜罐系统。检测未知的攻击,识别潜在风险。

References

[1] 5 Linux SSH Security Best Practices To Secure Your Systems

[2] Preventing brute-force attacks on MySQL? - serverfault

[3] Database System Concepts - Section 9.7: Application Security

Contents
  1. 1. 操作系统安全
    1. 1.1. 操作系统安全问题
    2. 1.2. 操作系统防护措施
  2. 2. 数据库安全
    1. 2.1. 数据库安全问题
    2. 2.2. 数据库防护措施
  3. 3. 应用系统安全
    1. 3.1. 应用系统安全问题
    2. 3.2. 应用系统防护措施