SELinux ilke paketinin içeriğini nasıl görüntülerim


16

Başlığın dediği gibi, bir SELinux politika paketinin içeriğini nasıl görüntülerim? Ortaya çıkan dosyalar .pp ile biter. Centos 6 üzerinde koşuyorum, ama sanırım "tüm" dağıtımlarda da aynı şekilde.

Örneğin

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

Yanıtlar:


17

Bir SELinux ilke modülü aşağıdaki adımlarla oluşturulur:

  1. bir dizi politika kuralı oluşturun: audit2allow
  2. derlemek: checkmodule
  3. inşa etmek: semodule_package

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

postgreylocal.teBelows içerikli bir dosyam olduğu varsayılarak :

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 ilke modülü aşağıdakilerle oluşturulacaktır:

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

Bu ilke modülünü açmak için, dosyayı ayıklamak üzere semodule_unpackage adlı bir araca ihtiyacınız var .modve sonra dismodikili modülü metinsel gösterime ayırmak için kullanın .

Gentoo'mda aşağıdaki paketlerin yüklenmesi gerekiyor:

[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

İlk olarak, modülü .ppdosyadan çıkarın :

# semodule_unpackage postgreylocal.pp postgreylocal.mod

ve ikincisi, ile sökün 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, Fedora'da (17) öyle sedismod. Bu birlikte zaten var checkpolicyve semodule_unpackvarsayılan yükleme ile. Btw, semodule_unpackage foo.pp foo.mod foo.fcsizin aracılığınızla filecontexts dosyasını ayıklayabilirsiniz.
maxschlepzig

Bu gönderideki bağlantılar 404'tür. Güncelleyebilir misiniz? Ben yüklemeniz gerekir semodule_unpackage ve DISMOD benim kutusu için. Teşekkürler!
sffc

dismodSELinux kaynak kodunda bulunabilir
mtk

2

Gibi bir sorun mu yaşıyorsunuz wrong magic number for module package: expected 0xf97cff8f, got 0x39685a42?

.pp dosyaları dahili olarak bzip2 biçiminde saklanır, bu nedenle bzip2 -cdk policyfile.pp > policyfile.pp.out ÖNCE yapmanız gerekir semodule_unpackage policyfile.pp.out policyfile.mod.


2
Derlenmiş ilke dosyaları BZip2 ile sıkıştırılmamıştır:bzip2: policy.30 is not a bzip2 file.
Grégoire C

1
Yüklenen ilke dosyaları da kanıtlanacak şekilde bzip2 olarak sıkıştırılır file. Sonek değiştirilmemesine rağmen ...
Bob Dalgleish
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.