分类: LINUX
2008-04-23 08:25:48
[root@scarecrow ~]# cat dev/ipsec/setkey.scarecrow.test spdflush; flush; spdadd 192.168.147.130 192.168.147.132 any -ctx 1 1 "system_u:object_r:default_t:s0" -P in ipsec esp/transport//require; spdadd 192.168.147.132 192.168.147.130 any -ctx 1 1 "system_u:object_r:default_t:s0" -P out ipsec esp/transport//require; |
你可以使用setkey –DP在每一台机器上查看SPD条目,注意条目的上下文字段。
在其他机器上重复设置setkey文件,注意你不能在标签中使用默认的default_t,它是一个展示发生什么事情的例子,它不是用来创建SA的标签,它将用于一个规则来查看哪个SPD条目与一个域匹配,这将在后面解释。
运行setkey –f收到一个错误的结果:
[root@scarecrow ~]# setkey -f dev/ipsec/setkey.scarecrow.test The result of line 8: Permission denied. The result of line 14: Permission denied. |
查看拒绝信息:
[root@scarecrow ~]# tail /var/log/audit/audit.log | grep AVC type=AVC msg=audit(1179150979.762:33): avc: denied { setcontext } for pid= 21632 comm="setkey" scontext=root:system_r:unconfined_t:s0-s0:c0.c1023 tcontext=system_u:object_r:default_t:s0 tclass=association type=AVC msg= audit(1179150979.895:34): avc: denied { setcontext } for pid=21632 comm= "setkey" scontext=root:system_r:unconfined_t:s0-s0:c0.c1023 tcontext= system_u:object_r:default_t:s0 tclass=association |
非常好,它告诉我们可以在哪个IPSec SPD上设置标签了,现在在两台机器上设置许可模式并再次运行setkey,将会成功。
[root@poisonivy ~]# ./client 192.168.147.132 Received: Hello, root:system_r:unconfined_t:SystemLow-SystemHigh from root: system_r:unconfined_t:-SystemHigh |
你可以使用setkey –D来查看新创建的SA,注意每个条目中上下文的字段。希望下面这张图能传达SA是如何标记的,注意连接的每一边都有2个SA,一个标记入站一个标记出站,出站SA在每个系统上总是本地域,入站SA在每个系统上总是远程域。
我很感谢Chris Ashworth制作这张图,它比我想象的更简单易懂。
这就论证了当服务端调用getpeercon()时它看到了root:system_r:unconfined_t:SystemLow-SystemHigh,客户端看到了root:system_r:unconfined_t:-SystemHigh,使用runcon在不同上下文中运行客户端可以看到更多的不同之处:
[root@poisonivy ~]# runcon -t httpd_t ./client 192.168.147.132 Received: Hello, root:system_r:httpd_t:SystemLow-SystemHigh from root: system_r:unconfined_t:-SystemHigh |