Làm cách nào để tôi xem nội dung của gói chính sách SELinux


16

Như tiêu đề đã nói, làm cách nào để tôi xem nội dung của gói chính sách SELinux? Các tập tin kết quả kết thúc bằng .pp. Tôi đang chạy trên centos 6, nhưng tôi đoán nó giống như trên các bản phân phối "tất cả".

Ví dụ

    cp /usr/share/selinux/targeted/cobbler.pp.bz2 ~
    bunzip2 cobbler.pp.bz2 
    MAGIC_SELINUX_CMD cobbler.pp

Câu trả lời:


17

Một mô-đun chính sách SELinux được xây dựng theo các bước sau:

  1. tạo ra một bộ quy tắc chính sách: audit2allow
  2. biên dịch: checkmodule
  3. xây dựng: semodule_package

http://wiki.centos.org/HowTos/SELinux

Giả sử rằng tôi có một postgreylocal.tetệp có nội dung tin tưởng:

module postgreylocal 1.0;
require {
        type postfix_smtpd_t;
        type postfix_spool_t;
        type initrc_t;
        class sock_file write;
        class unix_stream_socket connectto;
}
#============= postfix_smtpd_t ==============
allow postfix_smtpd_t initrc_t:unix_stream_socket connectto;
allow postfix_smtpd_t postfix_spool_t:sock_file write; 

postgreylocal.pp mô-đun chính sách sẽ được tạo với:

# checkmodule -M -m -o postgreylocal.mod postgreylocal.te
# semodule_package -m postgreylocal.mod -o postgreylocal.pp 

Để giải nén mô-đun chính sách này, bạn cần một công cụ có tên là semodule_unpackage để giải nén .modtệp và sau đó sử dụng dismodđể tháo rời mô-đun nhị phân thành biểu diễn văn bản.

Trên Gentoo của tôi, các gói sau cần được cài đặt:

[I] sys-apps/policycoreutils
     Available versions:  [M]2.0.82 [M](~)2.0.82-r1 [M](~)2.0.85 [M](~)2.1.0 {M}(~)2.1.0-r1
     Installed versions:  2.1.0-r1(05:12:27 PM 10/14/2011)
     Homepage:            http://userspace.selinuxproject.org
     Description:         SELinux core utilities

[I] sys-apps/checkpolicy
     Available versions:  [M]2.0.21 [M](~)2.0.23 {M}(~)2.1.0 {debug}
     Installed versions:  2.1.0(01:27:53 PM 10/14/2011)(-debug)
     Homepage:            http://userspace.selinuxproject.org
     Description:         SELinux policy compiler

[I] sys-libs/libsepol
     Available versions:  [M]2.0.41!t [M](~)2.0.42!t {M}(~)2.1.0!t
     Installed versions:  2.1.0!t(01:25:43 PM 10/14/2011)
     Homepage:            http://userspace.selinuxproject.org
     Description:         SELinux binary policy representation library

Đầu tiên, trích xuất mô-đun từ .pptệp:

# semodule_unpackage postgreylocal.pp postgreylocal.mod

và thứ hai, tháo rời với dismod:

# cd checkpolicy-2.1.0/test/
# ls
dismod.c  dispol.c  Makefile
# make
cc -g -Wall -O2 -pipe -I/usr/include   -c -o dispol.o dispol.c
dispol.c: In function ‘main’:
dispol.c:438:8: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
dispol.c:465:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
dispol.c:476:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
dispol.c:500:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
cc   dispol.o  -lfl -lsepol -lselinux /usr/lib/libsepol.a -L/usr/lib -o dispol
cc -g -Wall -O2 -pipe -I/usr/include   -c -o dismod.o dismod.c
dismod.c: In function ‘main’:
dismod.c:913:8: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
dismod.c:982:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
dismod.c: In function ‘link_module’:
dismod.c:787:7: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
cc   dismod.o  -lfl -lsepol -lselinux /usr/lib/libsepol.a -L/usr/lib -o dismod
# ls
dismod  dismod.c  dismod.o  dispol  dispol.c  dispol.o  Makefile

./dismod postgreylocal.pp
Reading policy...
libsepol.policydb_index_others: security:  0 users, 1 roles, 3 types, 0 bools
libsepol.policydb_index_others: security: 0 sens, 0 cats
libsepol.policydb_index_others: security:  2 classes, 0 rules, 0 cond rules
libsepol.policydb_index_others: security:  0 users, 1 roles, 3 types, 0 bools
libsepol.policydb_index_others: security: 0 sens, 0 cats
libsepol.policydb_index_others: security:  2 classes, 0 rules, 0 cond rules
Binary policy module file loaded.
Module name: postgreylocal
Module version: 1.0


Select a command:
1)  display unconditional AVTAB
2)  display conditional AVTAB
3)  display users
4)  display bools
5)  display roles
6)  display types, attributes, and aliases
7)  display role transitions
8)  display role allows
9)  Display policycon
0)  Display initial SIDs

a)  Display avrule requirements
b)  Display avrule declarations
c)  Display policy capabilities
l)  Link in a module
u)  Display the unknown handling setting
F)  Display filename_trans rules

f)  set output file
m)  display menu
q)  quit

Command ('m' for menu):  1
unconditional avtab:
--- begin avrule block ---
decl 1:
  allow [postfix_smtpd_t] [initrc_t] : [unix_stream_socket] { connectto };
  allow [postfix_smtpd_t] [postfix_spool_t] : [sock_file] { write };

Command ('m' for menu):  a
avrule block requirements:
--- begin avrule block ---
decl 1:
commons: <empty>
classes: sock_file{  write } unix_stream_socket{  connectto }
roles  : <empty>
types  : postfix_smtpd_t postfix_spool_t initrc_t
users  : <empty>
bools  : <empty>
levels : <empty>
cats   : <empty>

Command ('m' for menu):  

3
fyi, trên Fedora (17) sedismod. Nó đã có sẵn cùng với checkpolicysemodule_unpackvới cài đặt mặc định. Btw, thông qua semodule_unpackage foo.pp foo.mod foo.fcbạn cũng có thể trích xuất tập tin filecontexts.
maxschlepzig

Các liên kết trong bài viết này là 404. Bạn có thể cập nhật chúng không? Tôi cần cài đặt semodule_unpackagetháo dỡ cho hộp của mình. Cảm ơn!
sffc

dismodcó thể được tìm thấy trong mã nguồn SELinux
mtk

2

Bạn đang nhận được một vấn đề như thế wrong magic number for module package: expected 0xf97cff8f, got 0x39685a42nào?

Các tệp .pp được lưu trữ nội bộ ở định dạng bzip2, vì vậy bạn sẽ cần phải bzip2 -cdk policyfile.pp > policyfile.pp.out TRƯỚC semodule_unpackage policyfile.pp.out policyfile.mod.


2
Các tệp chính sách được biên dịch không được nén bằng BZip2:bzip2: policy.30 is not a bzip2 file.
Grégoire C

1
Các tệp chính sách đã cài đặt được nén dưới dạng bzip2, như filesẽ chứng thực. Mặc dù hậu tố không thay đổi ...
Bob Dalgleish
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.