#whois * citypw( Shawn C) * GNU/Linux 安全工程师 * 自由软件狂热分子 * EFF/FSF 会员 * Hardenedlinux 社区 (http://hardenedlinux.org/) 发起人

Similar documents
TX-NR3030_BAS_Cs_ indd

Windows XP

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

PowerPoint 演示文稿

Improved Preimage Attacks on AES-like Hash Functions: Applications to Whirlpool and Grøstl

Logitech Wireless Combo MK45 English

AL-M200 Series

一.NETGEAR VPN防火墙产品介绍

ebook71-8

Microsoft Word - 第四組心得.doc

Linux Ubuntu Part Linux Ubuntu Linux UNIX...19 Linux...19 Linux Linux...21 Linux GNU FSF Open So urce.

CC213

可 愛 的 動 物 小 五 雷 雅 理 第 一 次 小 六 甲 黃 駿 朗 今 年 暑 假 發 生 了 一 件 令 人 非 常 難 忘 的 事 情, 我 第 一 次 參 加 宿 營, 離 開 父 母, 自 己 照 顧 自 己, 出 發 前, 我 的 心 情 十 分 緊 張 當 到 達 目 的 地 後

Microsoft Word - PS2_linux_guide_cn.doc

星河33期.FIT)

川 外 250 人, 上 外 222 人, 广 外 209 人, 西 外 195 人, 北 外 168 人, 中 南 大 学 135 人, 西 南 大 学 120 人, 湖 南 大 学 115 人, 天 外 110 人, 大 连 外 国 语 学 院 110 人, 上 海 外 事 学 院 110 人,

本文由筱驀釹贡献

IP505SM_manual_cn.doc

國立桃園高中96學年度新生始業輔導新生手冊目錄

網路安全:理論與實務 第二版

從詩歌的鑒賞談生命價值的建構

<4D F736F F F696E74202D20312EB9FEB6FBB1F5B9A4D2B5B4F3D1A7D5E7C1BCA3BAC3E6CFF2D1D0BEBFC9FAB8B4CAD4B5C4BDE1B9B9BBAFC3E6CAD4BFBCBACBCCBDCBF7D3EBCAB5BCF92E BBCE6C8DDC4A3CABD5D>

豐 邑 家 族 季 刊 編 者 的 話 No.07 彼 此 相 愛 總 編 輯 : 邱 崇 喆 主 編 : 戴 秋 柑 編 輯 委 員 : 黃 淑 美 盧 永 吉 王 森 生 趙 家 明 林 孟 姿 曾 淑 慧 執 行 編 輯 : 豐 邑 建 設 企 劃 課 出 版 發 行 :

ebook70-5

[ 13 年 12 月 06 日, 下 午 6 点 24 分 ] Intel Hosts 新 加 入 的 同 学 们, 快 去 听 听 在 线 宣 讲 会 哦, 同 时 完 成 页 面 下 方 有 奖 调 查, 就 有 资 格 参 与 大 奖 抽 取 啦! [ 13 年 12 月 06 日, 下 午

C/C++语言 - C/C++数据

C ONTENTS 目 录 热 点 舆 情 消 息 海 外 来 风 56 Win10 周 年 更 新 再 出 BUG: 竟 没 有 关 机 按 钮 57 谷 歌 为 MacOS 开 发 的 恶 意 软 件 嗅 探 器 即 将 完 成 58 数 据 安 全 公 司 Imperva 财 报 不 佳? 被

1. 請 先 檢 查 包 裝 內 容 物 AC750 多 模 式 無 線 分 享 器 安 裝 指 南 安 裝 指 南 CD 光 碟 BR-6208AC 電 源 供 應 器 網 路 線 2. 將 設 備 接 上 電 源, 即 可 使 用 智 慧 型 無 線 裝 置 進 行 設 定 A. 接 上 電 源

CC213

Microsoft Word - Final Exam Review Packet.docx


ebook70-14


ebook62-1

高中英文科教師甄試心得

软件测试(TA07)第一学期考试

\\Lhh\07-02\黑白\内页黑白1-16.p

蔡 氏 族 譜 序 2

untitled

<4D F736F F D C4EAC0EDB9A4C0E04142BCB6D4C4B6C1C5D0B6CFC0FDCCE2BEABD1A15F325F2E646F63>

<4D F736F F D20B5DAC8FDB7BDBE57C9CFD6A7B8B6D6AEB7A8C2C98696EE7DCCBDBEBF2E646F63>

C 1

1.ai

096STUT DOC

信息安全保障参考文件

CC213

財金資訊-80期.indd

4. 每 组 学 生 将 写 有 习 语 和 含 义 的 两 组 卡 片 分 别 洗 牌, 将 顺 序 打 乱, 然 后 将 两 组 卡 片 反 面 朝 上 置 于 课 桌 上 5. 学 生 依 次 从 两 组 卡 片 中 各 抽 取 一 张, 展 示 给 小 组 成 员, 并 大 声 朗 读 卡

Chapter #

: : : : : ISBN / C53:H : 19.50

錫安教會2015年11月29日分享

区 域 活 动 进 入 中 班 我 们 区 域 的 设 置 和 活 动 材 料 都 有 所 变 化, 同 时 也 吸 引 孩 子 们 积 极 的 参 与 学 习 操 作 区 的 新 材 料 他 们 最 喜 欢, 孩 子 们 用 立 方 块 进 行 推 理 操 作 用 扑 克 牌 进 行 接 龙 游

Lorem ipsum dolor sit amet, consectetuer adipiscing elit

LOVE IS OVER LOVE LOVE LOVE LOVE IS EVERYTHING LOVE LOVE LOVE LOVER'S QUEEN LYDIA MAYBE TOMORROW MEN'S TALK MY DEAR MY FRIEND MY OH MY MY SUMMER DREAM

1 2 3 Speaker Cable 2

C/C++ 语言 - 循环

國立中山大學學位論文典藏

Web

ebook70-21

Microsoft Word - template.doc

2_ Bridegroom fast 1 - v1

linux_for_campus

入學考試網上報名指南

39 屆 畢 業 典 禮

ebook62-8

ebook70-22

2 Edmonton 爱 德 蒙 顿 爱 德 蒙 顿 是 加 拿 大 的 节 日 之 城, 一 年 有 超 过 30 多 个 节 日 城 市 总 人 口 1000 多 万 干 净, 安 全 的 居 住 环 境 友 好 的, 充 满 活 力 的 文 化 社 区 附 近 有 许 多 风 景 优 美 的

ebook 145-6

Microsoft Word 國企國貿.doc

Microsoft Word - unitmtg09.doc

Microsoft Word - 11月電子報1130.doc

Microsoft Word - (web)_F.1_Notes_&_Application_Form(Chi)(non-SPCCPS)_16-17.doc

A9RF716.tmp

新北考區105年國中教育會考簡章

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

105 年 國 中 教 育 會 考 重 要 日 期 項 目 日 期 及 時 間 報 名 1. 集 體 報 名 :105 年 3 月 10 日 ( 星 期 四 ) 至 3 月 12 日 ( 星 期 六 ) 每 日 8:00~12:00 13:30~17:00 2. 個 別 報 名 : 於 上 網 填

C6_ppt.PDF

國立桃園高中96學年度新生始業輔導新生手冊目錄

〇〇考區105年國中教育會考簡章

Microsoft Word doc

() () 5 ( ) ( ) 166

提纲 1 2 OS Examples for 3

< F5FB77CB6BCBD672028B0B6A46AABE4B751A874A643295F5FB8D5C5AA28A668ADB6292E706466>

一 課 後 社 團 名 稱 :B02. 直 排 輪 校 隊 C 班 ( 校 隊 班 ) 二 授 課 教 師 : 劉 輔 人 助 教 : 杜 翊 嘉 世 界 盃 滑 輪 溜 冰 錦 標 賽 世 界 冠 軍 榮 獲 VOUGE 時 尚 雜 誌 專 訪 同 週 一 校 隊 班 介 紹

ebook8-30

自由軟體教學平台

(Microsoft Word - 10\246~\253\327\262\304\244@\264\301\256\325\260T_Version4)

A Community Guide to Environmental Health

在地的網路禮物文化

软件自由法律中心 GPL 软件许可证合规指导

國 立 政 治 大 學 教 育 學 系 2016 新 生 入 學 手 冊 目 錄 表 11 國 立 政 治 大 學 教 育 學 系 博 士 班 資 格 考 試 抵 免 申 請 表 論 文 題 目 申 報 暨 指 導 教 授 表 12 國 立 政 治 大 學 碩 博 士 班 論

2015年4月11日雅思阅读预测机经(新东方版)

文档 9

新・明解C言語入門編『索引』

<D0A1B0E02E707562>

Unix®t Œ fi z.PDF


投影片 1

Linux服务器构建与运维管理

运动员治疗用药豁免申报审批办法

Transcription:

自由软件与 GNU/Linux 安全 Shawn the R0ck

#whois * citypw( Shawn C) * GNU/Linux 安全工程师 * 自由软件狂热分子 * EFF/FSF 会员 * Hardenedlinux 社区 (http://hardenedlinux.org/) 发起人

cat /proc/agenda * 自由软件运动 * 安全理念以及安全编码 * GNU/Linux 安全运维 * 企业安全现状 * 加固案例

cat /proc/agenda * 自由软件运动 * ************** * ************** * ************** * **************

Free( and Open) Software Movement The free software movement is a social and political movement with the goal of ensuring software user's 4 basic freedoms: * The freedom to run the program, for any purpose( freedom 0) * The freedom to study how the program works, and change it so it does your computing as you wish( freedom 1). Access to the source code is a precondition for this. * The freedom to redistribute copies so you can help your neighbor( freedom 2) * The freedom to distribute copies of your modified versions to others(freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Who is RMS? 他是 : * 一名黑客 * 早期 GCC 和 Emacs 的作者 * 自由软件运动发起人 * GNU 项目的发起人 * 自由软件哲学传教士 他还 * 曾经受邀来过 XCON

谁被 RMS 病毒 感染 John Carmack is: - id software 创始人 - 3D 第一人称射击游戏 创始人 ( Wolfenstein 3D) - 自由软件支持者, id software 不断的公开上一代游戏引 擎源代码.?

谁被 RMS 病毒 感染? Dirk Morris: "I originally thought of open source back in 1983 when I was 3 years of age. I made the terrible mistake of communicating my ideas to a beard man at MIT who later went on found the Free Software Foundation and take credit for all my ideas. I am still upset about this and we have not spoken since." - CTO and founder of Untangle - 2007 年, Untangle 以 GPLv2 自由软件许可证公开了 UTM 网关的源代码

自由软件与安全有关 人们一直依赖 故意 忽视自由软件社区和 EFF 对 于闭源软件的不信任的呼声 直到...

谁是对的 Edward Snowden 关于 NSA 的爆料至少证明了一点 RMS 和 EFF 从来没有向公众撒谎!!!

cat /proc/agenda * ************** * 安全理念以及安全编码 * ************** * ************** * **************

什么是安全 安全 : 目的 vs. 敌人 1, 策略 --> C( onfidentiality), I( ntegrity), A( vailability) 2, 威胁建模 --> 对敌人的假设 3, 机制 -> 软件 / 硬件 安全工程与其他工程最大的区别是 * 敌人不会按牌理出牌, 完全的不可预测

理念 信息安全防护基本原则 我们坚信 信息安全... * 不是安装一堆防火墙 * 不是一个产品或者服务... ( by Bruce Scheiner) * 不是一个产品 而是一个持续 不断的过程...( by Bruce Scheiner) * 安全审计不是 " 扫描一堆端口 "

理念 信息安全防护基本原则 续 ) 我们坚信 信息安全... * 是虑 " 你能在不影响业务的情况下组织不被入侵吗 " * 是最薄弱的防线将成为你的短板 * 是你所在企业的资源 ( 机器和人 ) 的风险管理 需要专业技 能 时间管理 实施成本 数据备份 / 恢复的一系列流程 * 是关乎过程 方法论 成本 策略和人 是考虑 " 有人能社工进入公司并且访问计算机 磁盘和磁带..." * 是 24 * 7 * 365... 持续不断.. 并且永不停止

安全编码 * 编码安全概述 * C/C++ 代码的安全性 * 编译器加固选项 * 代码审计

编码安全概述 * 指由代码质量问题引发的安全问题

漏洞分类 * 技术性漏洞 * 利用硬件 OS 库等特性进行利用 * 逻辑性漏洞 利用处理业务部分的代码逻辑错误进行 利用

C/C++ 代码的安全性 常见漏洞类型 * 缓冲区溢出 * 整数溢出 * 竞争情况 * 字符串格式化

栈结构

栈缓冲区溢出示例 1

实例...... /* that's our secret phrase */ char origpassword[12] = "Geheim\0"; char userpassword[12]; /* read user input */ gets(userpassword); if(strncmp(origpassword, userpassword, 12)!= 0) { printf("password doesn't match!\n");exit(-1); }

整数溢出

整数溢出示例 #include <stdio.h> #include <string.h> if(s >= 80){ int main(int argc, char *argv[]){ /* [w1] */ printf("oh no you don't!\n"); unsigned short s; return -1; int i; } char buf[80]; printf("s = %d\n", s); if(argc < 3){ return -1; memcpy(buf, argv[2], i); } buf[i] = '\0'; printf("%s\n", buf); i = atoi(argv[1]); s = i; return 0; }

整数溢出示例 绕过边界检查

竞争情况 * TOCTOU(time-of-check-to-time-of-use) 原因 非原子操作 没有正确使用琐 重灾区 文件系统 多线程程序 分布式数据库

避免文件系统中的竞争 * 尽量少使用链接文件名 或者使用 O_NOFOLLOW 禁用链接 * fork(2)+ 降低权限 * chdir(2) 前必须检查上级目录

字符串格式化 * 2000 年左右公布 * printf 系列函数 * 读取 %x, %p * 写入 %n 错误使用方法 : snprintf(buf, sizeof(buf ), user_data) 正确使用方法 : snprintf(buf, sizeof(buf ), %s, user_data)

编译器加固选项 作为 GNU 的三大核心基础组建之一的编 译器集合 GCC 提供了一系列加固选项 MITIGATION 目的是即使开发人 员在开发过程中的各种原因造成了漏洞 但也让攻击者的漏洞利用难度加大

Stack Canary Stack Canary 在压栈过程中加入一个值 在出栈时进行对比 如果被修改说明有漏洞 利用的行为 int fuc_me(int x, int y) /* x? WTH */ { Int v; /* v? */ char buf[256]; int h;... } 原始内存布局 : [High addr...[y].[x].[ret].[frame pointer].[v].[buf].[h]...low addr] 简单 canary 内存布局 : [High addr...[y].[x].[ret].[frame pointer].[canary].[v].[buf].[h]...low addr] 复杂 canary 内存布局 : [High addr...[y].[x].[ret].[frame pointer].[carnary].[buf].[h].[v]...low addr]

Stack Canary GCC 选项 : -fstack-protector, 编译时给部分的函数加入 canary -fstack-protector-all 编译时给所有的函数加入 canary -fstack-protector-strong 更智能 编译时判断 是否有可能会有 stack 数据的操作 如果有就自 动加入 canary

Position-Independent-Executable 在 GNU/Linux 平台上 加载器在加 载 elf 文件后会映射 elf header 到内 存 非 PIE 的文件内核会使用一个等 价于 MMAP_FIXED 的内部 flag PIE 的情况会强制所有进程的代码段 的基地址随机化

PIE 的效果 GCC 选项 : -pie, 代码段随机化 条件 ASLR 支持 void* geteip () { Turn off ASLR return builtin_return_address(0); }; int main(int argc, char** argv){ printf("retaddr: %p\n",geteip()); return 0; } -----------------------------------retaddr: 0xb78d950a retaddr: 0xb77a450a retaddr: 0xb776350a Turn on ASLR

其他加固选项 GCC 选项 : -FORTIFY_SOURCE, 静态以及运行时检 测缓冲区溢出 -z nostack, 不可执行的栈 -z relro, -z relro -z now, read-only relocation GOT( 全局偏移表 ) 变成只读

编译器加固 编译器加固选项能解决漏洞利用的问题 吗 能在多大程度上增加攻击者的成本 2011---$5,000? 最新情况 2015

猎杀 漏洞 主要方法 * 代码审计 需要源代码 * 逆向工程 可以在没有源代码的情况下完成 需要二进制程序 耗时多和需要高水平人员 * Fuzzing 模糊测试 组合利用大量工具

代码审计 * 工作乏味而且耗费大量时间 * 难以估算工作时间 * 需要有特定语言的知识背景 * 重点观察有输入的地方

代码审计原则 * 不要假设 假设会把你引向错误的方向 * 抽象层出错概率高 多人用 但思路不 同 * 每次阅读大约 200-400 行代码 * 最高效的审计每小时大概阅读 500 行代 码 * 每 90 分钟必须休息一段时间

排查隐患函数 1990s 后期 代码审计中经常出现用于寻 找滥用 strcpy() 的潜在缓冲区漏洞 : # grep strcpy *.c 2000s 业界又成这样了 寻找字符串格 式化漏洞 : # grep E e printf\s*\([^ ]+ [,\)] *.c

异常处理完善 简单的 read(2) 的比较完善例子 返回值小于 LEN 重新计算没有读取的 buf 然后继续 read(2) 如果由于信号阻断 继续尝试 loop terminates

带符号的整数 if(x > y) 如果一个是 unsigned 另外一个也会 是 if(x > 16) 16 是 signed >MAX_INT 溢出 if(x > 16U) 16 是 unsigned

字符串格式化 printf(input); 不安全 printf( %s, input); 安全 sprintf(tmp, %s, input); printf(tmp); 不安全

Off by One char msg[5] for (i = 0; i <= 5; i++) //use msg; 应该 i<5 类似情况 增量过多 错误的边界检查 sizeof!= strlen

i++ vs ++i x = i++ - 5;?? x = ++i 5;??

cat /proc/agenda * ************* * ************* * GNU/Linux 安全运维 * ************* * **************

安全部署 --- 防范已知威胁 安全部署 ( 基线 ) 不应该是安全检查列表的 另一 面 描述 而应该是对所有有可能影响安全因素的详 细配置清单 * 服务器 /PC 安全修复更新 ( 防 NDAY 漏洞利用 ) * 密码策略 * 业务分离 * 防火墙规则 ( 5 元组或者 IDS/IPS?) * 审计 * 根据业务场景的安全部署!!!

安全补丁 Debian 检查需要安全修复包 sudo apt-get upgrade -s grep -i security OpenSuSE 发行版检查需要安全修复的包 sudo zypper lp awk '{ if ($7=="security"){ if ($11=="update") {print $13} else{ print $11 }}}' sed 's/:$//' grep -v "^$" sort uniq RHEL/CentOS( 6.4) 检查需要安全修复的包和明细 sudo yum list-security grep RHSA sudo yum info-security RHSA-NUMBER

安全补丁 客户关心的问题 * 安全威胁程度 * 是否影响业务 * Workaround?

安全部署检查 --- 安全审计 * SSH 安全配置 * SSL/TLS 安全链路 * UNIX 通配符陷阱 * 异常进程 / 流量 * GNU/Linux 链接器威胁 * ETC

SSH 传统基线 known_hosts 保存相关服务器的签 名 所以必须把主机名 hash HashKnownHosts yes SSH 协议 v1 不安全 Protocol 2 如果没用 X11 转发的情况 X11Forwarding no 关闭 rhosts IgnoreRhosts yes 关闭允许空密码登录 PermitEmptyPasswords no 最多登录尝试次数 MaxAuthTries 5 禁止 root 登录 PermitRootLogin no

后棱镜时代的 SSH 尴尬

SSH 基线整改

OpenSSH 新基线选型 KX 选择标准 ECDH 曲线的 NIST 安全标准被污染 排除 DH 密钥强度 (<=1024) 排除 SHA1 认证选择标准 DSA 强度过低排除 ECDSA 被 NIST 安全标准污染 只能信任 >=2048 的 RSA

OpenSSH 新基线选型 对称算法选型标准 算法本身的安全性 排除 RC4 和 DES 密钥强度至少 128-bit 块加密情况下至少 128-bit 的 block Cipher mode 推荐 AE 认证模式 +CTR MAC 选型标准 MD5 和 SHA1 被排除 必须先加密再 MAC 不带 -etm 被排除 密钥强度至少 128-bit

SSL/TLS 检查 检测 SSLv2 gnutls-cli -d 5 -p 443 --priority "NORMAL:-VERS-TLS1.2:VERS-TLS1.1:-VERS-TLS1.0:-VERS-SSL3.0" www.google.com 检测 SSLv3(POODLE) gnutls-cli -d 5 -p 443 --priority "NORMAL:-VERS-TLS1.2:VERS-TLS1.1:-VERS-TLS1.0" www.google.com grep -i version 检测 TLSv1.1 openssl s_client -tls1_1 -connect www.google.com:443 grep -i protocol 检测 TLSv1.2 openssl s_client -tls1_2 -connect www.google.com:443 grep -i protocol 安全重协商 显示 Safe gnutls-cli -d 5 -p 443 www.google.com renegotiation succeeded 公钥长度检测 gnutls-cli -p 443 www.google.com grep -i key 检测是否存在较弱的 ciphersuites openssl s_client -cipher NULL,EXPORT,LOW,DES -connect www.google.com:443

SSL/TLS 检查 PFS( Perfect Forward Secrecy) openssl s_client -cipher EDH,EECDH -connect www.google.com:443 抗 CRIME 攻击 ( 显示 Compression: NULL gnutls-cli www.google.com -p 443 grep -i compress 检测 OpenSSL 的 heartbeat openssl s_client -tlsextdebug -connect www.google.com:443 grep -i heart POODLE( 显示 "alert inappropriate fallback") openssl s_client -ssl3 -fallback_scsv -connect www.google.com:443 grep -i "alert ina"

SSL/TLS 部署 : 社区最佳实践

SSL/TLS 部署 : 社区最佳实践 Preferen Ciphersuite ce Protocols PFS 非常重要 Browser support 1 ECDHE-RSAAES256-GCMSHA384 TLSv1.2 ECDH,P-256,256bits Firefox( 33.1 or later). IE 11. Chrome( 32 or later) 2 ECDHE-RSAAES256-SHA384 TLSv1.2 ECDH,P-256,256bits... 3 ECDHE-RSAAES256-SHA TLSv1,T LSv1.1,T LSv1.2 ECDH,P-256,256bits... 4 DHE-RSA-AES256GCM-SHA384 TLSv1.2 DH,2048bits... 5 DHE-RSA-AES256SHA256 TLSv1.2 DH,2048bits... 6 DHE-RSA-AES256SHA TLSv1,T LSv1.1,T LSv1.2 DH,2048bits... 7 AES256-GCMSHA384 TLSv1.2 N/A Firefox( 33.1 or later). IE 11. Chrome( 32 or later)

SSL/TLS 部署 : 社区最佳实践 Preferen Ciphersuite ce Protocols PFS 非常重要 Browser support............... 16 AES128-GCMSHA256 TLSv1.2 N/A Firefox( 27 or later). IE 11. Chrome( 30 or later) 17 AES128-SHA256 TLSv1.2 N/A Firefox( 27 or later). IE 11. Chrome( 30 or later) 18 AES128-SHA TLSv1,TL N/A Sv1.1,TL Sv1.2 Firefox( 27 or later). IE( 8 or later). Chrome( 30 or later) 19 ECDHE-RSA-DESCBC3-SHA TLSv1,TL ECDH,P-256,256bits Sv1.1,TL Sv1.2 Firefox( 27 or later). IE 11. Chrome( 30 or later) 20 EDH-RSA-DESCBC3-SHA TLSv1,TL Sv1.1,TL Sv1.2 Firefox( 27 or later). IE 8. Chrome( 30 or later) 21 DES-CBC3-SHA TLSv1,TL N/A Sv1.1,TL Sv1.2 DH,2048bits Firefox( 27 or later). IE( 8 or later). Chrome( 30 or later)

链接器陷阱 审计方法

UNIX 通配符陷阱 审计方法 find / -path /proc -prune -name "-*"

UNIX 文件审计 Audit method Description find / -path /proc -prune -name "-*" WildCards is a powerful feature in UNIX-like platform, but it can be exploited by attackers: http://www.defensecode.com/public/defensecode_unix_wildca rds_gone_wild.txt find / -path /proc -prune -o -perm -2! -type l -ls World-writable file audit find /var/log -perm -o=r! -type l World-readable file audit, correct permission: chmod 640 /var/log/ find / -path /proc -prune -o -nouser -o -nogroup Check if files without owners egrep -v '.*:\* :\!' List avaiable users /etc/shadow awk -F: '{print $1}'

UNIX 文件审计 2 Audit method Description find / -path /proc -prune -o -user account -ls Check which files belong to whom. Then delete the user correctly: userdel -r account grep -v ':x:' /etc/passwd List which users are unavaiable cat /etc/shadow cut -d: -f 1,2 grep '!' List expired passwords ls -l /boot The correct permission should be 644 at least. 600 would be better. find / -xdev -user root \( -perm -4000 -o -perm -2000 \) Files with suid or sgid flags objdump -x $i grep -i path Check if some stupid mistakes has been made.

Linux 内核安全配置 net.ipv4.tcp_syncookies SYN 洪水攻击防护 建议设置为 1 开启 SYNPROXY(Debian 8/CentOS 7 支持 ) N/A net.ipv4.tcp_max_orphans 默认 65536 值调大能防止简单 DOS 攻 击 每个 ORPHAN 消耗大约 64k 的内存 65535 相当于 4GB 内存 kernel.randomize_va_space 地址随机化 0: 关闭 1: 针对 stack VDSO 数 据区和 mmap()'ed 的随机化 2: 增加 heap 的随机化 kernel.kptr_restrict 内核符号限制访问 类似 CVE-2014-0196 的 exploit 对于这一项就很难做到 通杀 vm.mmap_min_addr 内存映射最小地址 防止 NULL DEREF 攻 击 默认 4096 建议 65536

深度加固 --- 遏制未知威胁 为什么需要系统层加固 业务系统 (CS/Web) GNU/Linux 中的 SUID 程序 利用 GCC 的 mitigation 机制对生产环境的服务 程序进行用户空间的加 固

MAC/RBAC 但仅仅靠用户空间加固并不能解决所有问题... SELinux/Apparmor/SMACK/TOMOYO --- 深入内核层的安全加固机 制 通过结合应用系统行为的安全策略配置 遏制漏洞利用 以 Apparmor 的白名单配置为例 : /home/jim/a.out { #include <abstractions/base> /home/jim/a.out mr, /home/jim/hello r, /home/jim/world w, network stream, }

深度加固 --- 终极 加固 但是 对于真正面临复杂安全环境 确实需要高级安 全防护能力的机构 最极端的加固防御是 PaX/Grsecurity 对于注重完美的 老派 old school 黑客社区而 言 没有 PaX/Grsecurity 的定制方案是不完美的, 对 于商业客户而言 是否定制是一种选择

内核加固方案对比 功能 SELinux Apparmor PaX/Grsecurity 强制访问控制 (MAC) 支持 支持 支持 审计 支持 支持 支持 阻止用户态运行时代码生成 依赖规则 不支持 支持 自动阻止 ptrace 程序调试 依赖规则 不支持 支持 配合其他 LSM 一起使用 不支持 不支持 支持 降低内核本身的信息泄漏风险机制 不支持 不支持 支持 防御内核任意代码执行 不支持 不支持 支持 防御内核直接访问用户态内存空间 不支持 不支持 支持

内核加固方案对比 功能 SELinux Apparmor PaX/Grsecurity 防御内核引用计数器溢出 不支持 不支持 支持 内核重要函数指针以及重要数据结构的只 读 不支持 不支持 支持 在内核早期启动和运行中增加 entropy 不支持 不支持 支持 减少敏感数据在内核停留的时间 不支持 不支持 支持 随机化用户进程的栈 不支持 不支持 支持 加固 ASLR 防止信息泄漏和 entropy 减 少 不支持 不支持 支持 遏制针对用户态和内核态的爆破 不支持 不支持 支持 防御 64-bit 内核栈溢出漏洞 不支持 不支持 支持

内核加固方案对比 SELinux 优势 RedHat 商业支持 CentOS/Fedora 社 区支持 在最大程度上防御用户态漏洞 劣势 规则难以编写 维护和调试成本较高 无法防御内核漏洞

内核加固方案对比 AppArmor 优势 SUSE/Canonical 商业支 持 Ubuntu/OpenSuSE 社区支持 中等程度上防御用户态漏洞 编写规则简单 维护和调试成本低 劣势 无法防御内核漏洞

内核加固方案对比 PaX/Grsecurity 优势 强大的社区支持 Debian/Gentoo 防御未知 (0Day) 漏洞利用的能力 能防御内核本身的漏洞 劣势 没有商业 GNU/Linux 发行版原生支持 业务回归测试成本较高

Hardenedlinux 社区建议 * 如果你是 Five-Eye 成员国的政府部门 你应该使用 SELinux * 如果你是普通个人用户 你可以使用 AppArmor * 如果你是重视安全的个人用户 Anarchist/ 自由软件狂 热分子 和企业用户 请考虑使用 AppArmor 或者 PaX/Grsecurity * 如果你需要保护 critical 环境的基础设施 你应该使用 PaX/Grsecurity

cat /proc/agenda * ************** * ************** * ************** * 企业安全现状 * **************

网络安全技术进化 1990s Packet Firewall Stateful Firewall(ipfw, iptables) 2000s IDS/IPS(Snort, Suricata) 2004 追求功能的 UTM( Untangle) 2010s 追求性能的 NGFW 未知威胁防御

假设对吗 我们有一堆设备 很安全

往往故事发展成这样 我们有一堆设备 很安全

绝望的守护者

面对 丧尸 式的攻击 单点防御还有效吗

纵深防御是唯一的选择 纵深防御典范 _ 魔戒之刚铎首都 (Minas Tirith)

纵深防御是堆积木

自由软件组合能做什么

Know Your Enemy 知己知彼 百战不殆 未来攻防的关键 威胁情报搜集与分析 OSINT OPSEC 安全事件高发区 代码质量缺陷 运维失误

攻击者到底是谁

攻击者到底是谁

公开情报搜集 GCHQ 对公开情报的搜集目标

公开情报搜集 漏洞的公开情报对同样重要

RedHat 的漏洞风险评估 Red Hat 的公开漏洞信息库 https://access.redhat.com/security/cve / 关注 Important 和 Critical

已知漏洞评估失误 Cybersec consultant sucks? Who we should listen to? 0Ld sch00l hackers? Or xyz-certified-random-it-guy? 漏洞利用 "BadIRET" 分析 (CVE-2014-9322, Linux 内核提权 ) http://hardenedlinux.org/system-security/2015/07/05/badiret-analysis.html 后续故事 数字军火级别的 "BadIRET" 漏洞利用 (CVE-2014-9322) http://hardenedlinux.org/system-security/2015/07/05/badiret-exp.html

已知漏洞评估 只关注公开漏洞利用的情况已经无法满足企业需 求 多维度分析 利用难度 是否有公开利用 漏洞信息评估 军火成本

推荐读物 * For further reading/hacking. * Book * The HACKER Ethic and the Spirit of Information Age *Documentary film * Revolution OS * The best security ezine * Phrack

关注我们 * Hardenedlinux 社区 http://hardenedlinux.org * 使用自由软件的方案加固一切 * 狂热的自由软件玩家以及 Anarchy(Anarchy 翻译成 反权威主 义 更准确 ) * 关注企业安全

cat /proc/agenda * ************** * ************** * ************** * ************** * 加固案例

网络产品加固 场景 加固方案 硬件 : x86_64 3.14.x with UDEREF Debian 8 GNU/Linux 物理机安全 常规安全部署 + STIG-complianced 所有应用运行在 container/docker 容器的逃逸成本远远低于虚拟机 所以使用 PaX/Grsecurity + RBAC 中 防御逃逸 ElasticSearch 防护 Sheild 插件 未完成的版本 http://hardenedlinux.org/system-security/2015/09/06/hardeninges-in-docker-with-grsec.html

感谢 & 引用 感谢 Phreaker 分享的塔防理论和 Thomas Biege 提供的部分素 材 http://hardenedlinux.org/systemsecurity/2015/06/09/debian-security-chklist.html http://hardenedlinux.org/cryptography/2015/07/28/ssl-tls -deployment-1.4.html http://grsecurity.net/ https://www.nth-dimension.org.uk/pub/btl.pdf http://www.defensecode.com/public/defensecode_unix_wi ldcards_gone_wild.txt https://www.ibm.com/developerworks/rational/library/11proven-practices-for-peer-review/

Questions? Thanks! Any ideas about free software security? Drop me a line: <Shawn the R0ck, citypw(at)gmail.com>