黄玮
3 种视角,3 条加固路线
Discovery
)Exploit
)Disclosure
)Patch avaliable
)Patch installed
)0day
的首发(发现)本章《应用程序安全加固》将要介绍和分析的方法重点集中在前述安全加固二维矩阵的应用层,更具体来说包括了操作系统安全加固和运行于操作系统之上的应用程序和信息系统本身的安全加固。
/etc/passwd
和 /etc/shadow
crypt(3)
API 接口加密敏感信息
htpasswd
/ proftpd 的 ftpasswd
# 查看常见口令安全散列函数的存储格式
man 5 crypt
# yescrypt
# \$y\$[./A-Za-z0-9]+\$[./A-Za-z0-9]{,86}\$[./A-Za-z0-9]{43}
# gost-yescrypt
# \$gy\$[./A-Za-z0-9]+\$[./A-Za-z0-9]{,86}\$[./A-Za-z0-9]{43}
# scrypt
# \$7\$[./A-Za-z0-9]{11,97}\$[./A-Za-z0-9]{43}
# bcrypt
# \$2[abxy]\$[0-9]{2}\$[./A-Za-z0-9]{53}
# sha512crypt
# \$6\$(rounds=[1-9][0-9]+\$)?[./0-9A-Za-z]{1,16}\$[./0-9A-Za-z]{86}
# sha256crypt
# \$5\$(rounds=[1-9][0-9]+\$)?[./0-9A-Za-z]{1,16}\$[./0-9A-Za-z]{43}
# sha1crypt
# \$sha1\$[1-9][0-9]+\$[./0-9A-Za-z]{1,64}\$[./0-9A-Za-z]{8,64}[./0-9A-Za-z]{32}
# SunMD5
# \$md5(,rounds=[1-9][0-9]+)?\$[./0-9A-Za-z]{8}\${1,2}[./0-9A-Za-z]{22}
# md5crypt
# \$1\$[^$]{1,8}\$[./0-9A-Za-z]{22}
CVE-2007-2844
(PHP Crypt Function Not Re-entrant)攻击者可以读取启用了SSL/TLS加密的服务器内存里的任意数据,包括但不限于:SSL加密私钥、用户cookie等
password_hash()
(PHP 5.5+) 就是一个 PHP 代码可以使用的口令安全存储的函数AES/3DES
代替脆弱的 DES
外挂轮询技术 | 事件触发技术 | 核心内嵌技术 | |
---|---|---|---|
访问篡改网页 | 可能 | 可能 | 不可能 |
保护动态内容 | 不能 | 不能 | 能 |
服务器负载 | 中 | 低 | 低 |
带宽占用 | 中 | 无 | 无 |
检测时间 | 分钟级 | 秒级 | 实时 |
绕过检测机制 | 不可能 | 可能 | 不可能 |
防范连续篡改攻击 | 不能 | 不能 | 能 |
保护所有网页 | 不能 | 能 | 能 |
动态网页脚本 | 不支持 | 支持 | 支持 |
适用操作系统 | 所有 | 受限 | 所有 |
上传时检测 | 不能 | 受限 | 能 |
断线时保护 | 不能 | 不能 | 能 |
CIA
加固
iptables
的 conntrack
资源耗尽问题CIA
+ AAA
是安全加固的基本目标道
)
DMZ <--> 内网
的访问# 拒绝SQL注入
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"
# 拒绝 Googlebot 访问
SecFilter HTTP_USER_AGENT "Google" nolog,redirect:http://www.google.com
# 拒绝特定命令执行
SecFilter /etc/password
SecFilter /bin/ls
# 拒绝目录遍历
SecFilter "\.\./"
Zone Transfer
Docker
管理员用户组DOCKER_HOST=ssh://USER@HOST
Docker
宿主机环境尽可能最小化进程列表:只保留一个 Docker
守护进程Capabilities
精细化访问控制能力来代替粗粒度的 root/non-root
授权模式
Dockerfile
编写阶段)
Docker Content Trust
Signature Verification 来确保只运行「受信任」镜像防火墙
、入侵检测
和 WAF
类「外围安全产品」,RASP
是「内置到应用程序代码」里的
Suhosin
项目作为一个面向 PHP
引擎的安全加固补丁项目应该算最早的 RASP 解决方案了
OpenRASP 抛弃了传统防火墙依赖请求特征检测攻击的模式,创造性的使用RASP技术(应用运行时自我保护),直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞,尤其适合大量使用开源组件的互联网应用以及使用第三方集成商开发的金融类应用
security checklist
Extensible Configuration Checklist Description Format
by NIST试举⼀例说明“⼈的安全意识和安全能⼒在应用程序安全加固中是不可忽视的重要环节”。