Linux下的防篡改技巧-1
Auth: winger@gnusec
今天介绍LINUX下文件防篡改的功能
何为防窜改
防篡改
即防止数据在使用和存储的过程中被非法篡改的手段.
从上图就可以看出, 数据的篡改可能发生在任意一个环节. 只要一个环节出了问题, 就可能影响到整个数据的运作流程. 那如何防范呢?
勤劳人的人会去修补加固每一个环节, 而
聪明的人会先钉死一个环节.
所以无论用什么手段, 只要能矫正
数据篡改攻击, 那具体实现就没有什么高下之分了.
我们可以将篡改攻击的防御策略分为三个阶段:
阶段 |
防御策略 |
文件篡改前 |
做好备份和数据监控, 根据策略阻止和记录非法篡改行为 |
文件篡改中 |
即时感知异常行为, 即时反馈与CACHE操作 |
文件篡改后 |
切断数据流链条, 即时恢复,快速响应报告 |
要做到完善防御体系就必须同时具备前中后三点的防御能力, BUT LIFE-IS-SHORT ~
简单的防传篡改
今天我们就用用 chattr
这个LINUX自带的神器来为我们的WEB服务器做一次权限加固.
众所周知LINUX安全加固的一切基础就是权限分配.
所以在这之前,先让我们看几条企业网络安全铁律:
- 权限最小化
- 库站分离
- 上传下载区域和代码区域分离
- 变动最小化
其实这些问题都可以用良好的架构来规避, 但实际生产中, 由于资源和部署的各种问题, 很多时候只能委曲求全.
假如你的上传下载目录和网站代码在一个文件夹下, 你就会很担心, 有人利用上传漏洞, 获取WEBSHELL, 再接着篡改你的网站文件. 这时候,除了要控制上传目录不可解析脚本外, 还要进一步的锁定所有的网站代码. 这样入侵者就算通过其他的途径获取了WEBSHELL, 也无法进一步利用你的网站.
chattr
在LINUX中, 为了允许添加数据,防止更改或者删除等,文件和文件夹可以设定了特定的控制属性。例如,你可以在关键的系统文件或者文件夹中启用属性,然后没有任何用户,包括root,可以删除或者修改它,比如不允许使用像dump这样的命令等备份工具去备份一个特定的文件或者文件夹,等等。这些属性只可以在ext2,ext3或者ext4文件系统中的文件和文件夹上设定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| 1 chattr:设置文件的底层属性
语法格式:chattr [option] [file]
option:
+:在原有参数的基础上,追加参数 -:在原有参数基础上,移除参数 -a:设定只能想文件中添加数据,而不能删除。 -i:设定后,不能对文件进行删除写入改名等等操作 -R:递归处理 -V:显示执行过程
注意:设定这些参数,必须在root权限下。
1.1 实例1:设定i参数,使得在root权限下无法直接删除
~$ touch test ~$ sudo chattr +i test ~$ lsattr test ----i--------e- test ~$ sudo rm test [sudo] password for hic: rm: 无法删除"test": 不允许的操作
1.2 实例2:设定a参数,使得只能向文件中添加内容
~# chattr +a test ~# man lsattr > test bash: test: 不允许的操作 ~# man chattr >> test
2 lsattr:显示文件的底层属性
语法格式:lsattr [option] [file]
option:
-a:显示所有文件属性 -d:仅显示目录属性 -R:递归显示
~$ lsattr -a test ----i--------e- test
|
下面我们就用 chattr
真正的实战一番
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| [test@CentOS-S1 html]$ uname -a Linux CentOS-S1 2.6.32-71.el6.i686 [root@CentOS-S1 html] /var/www/html
[root@CentOS-S1 html] -------------e- index.php [root@CentOS-S1 html] -rw-rw-r--. 1 test test 15 3月 9 13:31 index.php
[root@CentOS-S1 html]
[root@CentOS-S1 html] ----i--------e- index.php
[root@CentOS-S1 html] rm:是否删除普通文件 "index.php"?y rm: 无法删除"index.php": 不允许的操作
[root@CentOS-S1 html] -------------e- 2013.php -------------e- fm.php -------------e- upload/Ur503skA.jpeg -------------e- upload/5JD31FQSBJ09.jpg ----i--------e- index.php -------------e- lib/su.php -------------e- lib/s6.php -------------e- lib/s1.php -------------e- lib/shell.php -------------e- lib/s2.php -------------e- lib/s4.php -------------e- lib/s3.php -------------e- lib/s5.php -------------e- t.php -------------e- winger2.php ----i--------e- winger.php
[root@CentOS-S1 html] [root@CentOS-S1 html] ----i--------e- 2013.php ----i--------e- fm.php ----i--------e- upload/Ur503skA.jpeg ----i--------e- upload/5JD31FQSBJ09.jpg ----i--------e- index.php ----i--------e- lib/su.php ----i--------e- lib/s6.php ----i--------e- lib/s1.php ----i--------e- lib/shell.php ----i--------e- lib/s2.php ----i--------e- lib/s4.php ----i--------e- lib/s3.php ----i--------e- lib/s5.php ----i--------e- t.php ----i--------e- winger2.php ----i--------e- winger.php
[root@CentOS-S1 html] ----i--------e- ./template ----i--------e- ./winger.php ----i--------e- ./t.php ----i--------e- ./lib ----i--------e- ./index.php ----i--------e- ./css ----i--------e- ./view ----i--------e- ./2013.php ----i--------e- ./fm.php ----i--------e- ./upload ----i--------e- ./winger2.php
[root@CentOS-S1 html] touch: 无法创建"upload/123.txt": 权限不够
[root@CentOS-S1 html]
[root@CentOS-S1 html] ----i--------e- ./template ----i--------e- ./winger.php ----i--------e- ./t.php ----i--------e- ./lib ----i--------e- ./index.php ----i--------e- ./css ----i--------e- ./view ----i--------e- ./2013.php ----i--------e- ./fm.php -------------e- ./upload ----i--------e- ./winger2.php
[root@CentOS-S1 html] [root@CentOS-S1 html] 123.txt 5JD31FQSBJ09.jpg Ur503skA.jpe
[test@CentOS-S1 html]$ echo gege>index.php bash: index.php: 权限不够
|
现在这个网站的安全性就有了非常大的提升. 如果还嫌不够. 可以把chattr
重命名. 做个蜜罐程序替代. 这样就算有高人进入你的服务器, 也发现了问题, 等他想进一步解锁文件的时候, 也会被你抓到. ( ̄▽ ̄)”
要想赢得战争你只能比敌人更~~贼.
说完了”克敌机先”下一篇我们说说”亡羊补牢”
REF
1
2