123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365 |
- ## <summary>Various web servers.</summary>
- ########################################
- ## <summary>
- ## Create a set of derived types for
- ## httpd web content.
- ## </summary>
- ## <param name="prefix">
- ## <summary>
- ## The prefix to be used for deriving type names.
- ## </summary>
- ## </param>
- #
- template(`apache_content_template',`
- gen_require(`
- attribute httpdcontent, httpd_exec_scripts, httpd_script_exec_type;
- attribute httpd_script_domains, httpd_htaccess_type;
- attribute httpd_rw_content, httpd_ra_content;
- type httpd_t, httpd_suexec_t;
- ')
- ########################################
- #
- # Declarations
- #
- ## <desc>
- ## <p>
- ## Determine whether the script domain can
- ## modify public files used for public file
- ## transfer services. Directories/Files must
- ## be labeled public_content_rw_t.
- ## </p>
- ## </desc>
- gen_tunable(allow_httpd_$1_script_anon_write, false)
- type httpd_$1_content_t, httpdcontent; # customizable
- typealias httpd_$1_content_t alias httpd_$1_script_ro_t;
- files_type(httpd_$1_content_t)
- type httpd_$1_htaccess_t, httpd_htaccess_type; # customizable;
- files_type(httpd_$1_htaccess_t)
- type httpd_$1_script_t, httpd_script_domains;
- domain_type(httpd_$1_script_t)
- role system_r types httpd_$1_script_t;
- type httpd_$1_script_exec_t, httpd_script_exec_type; # customizable;
- corecmd_shell_entry_type(httpd_$1_script_t)
- domain_entry_file(httpd_$1_script_t, httpd_$1_script_exec_t)
- type httpd_$1_rw_content_t, httpdcontent, httpd_rw_content; # customizable
- typealias httpd_$1_rw_content_t alias { httpd_$1_script_rw_t httpd_$1_content_rw_t };
- files_type(httpd_$1_rw_content_t)
- type httpd_$1_ra_content_t, httpdcontent, httpd_ra_content; # customizable
- typealias httpd_$1_ra_content_t alias { httpd_$1_script_ra_t httpd_$1_content_ra_t };
- files_type(httpd_$1_ra_content_t)
- ########################################
- #
- # Policy
- #
- can_exec(httpd_$1_script_t, httpd_$1_script_exec_t)
- allow httpd_$1_script_t httpd_$1_ra_content_t:dir { list_dir_perms add_entry_dir_perms setattr_dir_perms };
- allow httpd_$1_script_t httpd_$1_ra_content_t:file { append_file_perms read_file_perms create_file_perms setattr_file_perms };
- allow httpd_$1_script_t httpd_$1_ra_content_t:lnk_file read_lnk_file_perms;
- allow httpd_$1_script_t { httpd_$1_content_t httpd_$1_script_exec_t }:dir list_dir_perms;
- allow httpd_$1_script_t httpd_$1_content_t:file read_file_perms;
- allow httpd_$1_script_t { httpd_$1_content_t httpd_$1_script_exec_t }:lnk_file read_lnk_file_perms;
- manage_dirs_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_lnk_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_fifo_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_sock_files_pattern(httpd_$1_script_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- files_tmp_filetrans(httpd_$1_script_t, httpd_$1_rw_content_t, { dir file lnk_file sock_file fifo_file })
- allow { httpd_t httpd_suexec_t } httpd_$1_content_t:dir list_dir_perms;
- allow { httpd_t httpd_suexec_t } { httpd_$1_content_t httpd_$1_htaccess_t }:file read_file_perms;
- allow { httpd_t httpd_suexec_t } httpd_$1_content_t:lnk_file read_lnk_file_perms;
- tunable_policy(`allow_httpd_$1_script_anon_write',`
- miscfiles_manage_public_files(httpd_$1_script_t)
- ')
- tunable_policy(`httpd_builtin_scripting',`
- manage_dirs_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_fifo_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_lnk_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- manage_sock_files_pattern(httpd_t, httpd_$1_rw_content_t, httpd_$1_rw_content_t)
- allow httpd_t httpd_$1_ra_content_t:dir { list_dir_perms add_entry_dir_perms setattr_dir_perms };
- allow httpd_t httpd_$1_ra_content_t:file { append_file_perms read_file_perms create_file_perms setattr_file_perms };
- allow httpd_t httpd_$1_ra_content_t:lnk_file read_lnk_file_perms;
- ')
- tunable_policy(`httpd_builtin_scripting && httpd_tmp_exec',`
- can_exec(httpd_t, httpd_$1_rw_content_t)
- ')
- tunable_policy(`httpd_enable_cgi',`
- allow httpd_$1_script_t httpd_$1_script_exec_t:file entrypoint;
- domtrans_pattern({ httpd_t httpd_suexec_t httpd_exec_scripts }, httpd_$1_script_exec_t, httpd_$1_script_t)
- ')
- tunable_policy(`httpd_enable_cgi && httpd_tmp_exec',`
- can_exec(httpd_$1_script_t, httpd_$1_rw_content_t)
- ')
- tunable_policy(`httpd_enable_cgi && httpd_unified',`
- allow httpd_$1_script_t { httpd_$1_content_t httpd_$1_ra_content_t }:file entrypoint;
- allow httpd_$1_script_t { httpd_$1_content_t httpd_$1_ra_content_t }:dir manage_dir_perms;
- allow httpd_$1_script_t { httpd_$1_content_t httpd_$1_ra_content_t }:file manage_file_perms;
- ')
- tunable_policy(`httpd_enable_cgi && httpd_unified && httpd_builtin_scripting',`
- filetrans_pattern(httpd_t, httpd_$1_content_t, httpd_$1_rw_content_t, { file dir fifo_file lnk_file sock_file })
- ')
- ')
- ########################################
- ## <summary>
- ## Role access for apache.
- ## </summary>
- ## <param name="role">
- ## <summary>
- ## Role allowed access
- ## </summary>
- ## </param>
- ## <param name="domain">
- ## <summary>
- ## User domain for the role.
- ## </summary>
- ## </param>
- #
- interface(`apache_role',`
- gen_require(`
- attribute httpdcontent;
- type httpd_user_content_t, httpd_user_htaccess_t;
- type httpd_user_script_t, httpd_user_script_exec_t;
- type httpd_user_ra_content_t, httpd_user_rw_content_t;
- ')
- role $1 types httpd_user_script_t;
- allow $2 httpd_user_htaccess_t:file { manage_file_perms relabel_file_perms };
- allow $2 httpd_user_content_t:dir { manage_dir_perms relabel_dir_perms };
- allow $2 httpd_user_content_t:file { manage_file_perms relabel_file_perms };
- allow $2 httpd_user_content_t:lnk_file { manage_lnk_file_perms relabel_lnk_file_perms };
- allow $2 httpd_user_ra_content_t:dir { manage_dir_perms relabel_dir_perms };
- allow $2 httpd_user_ra_content_t:file { manage_file_perms relabel_file_perms };
- allow $2 httpd_user_ra_content_t:lnk_file { manage_lnk_file_perms relabel_lnk_file_perms };
- allow $2 httpd_user_rw_content_t:dir { manage_dir_perms relabel_dir_perms };
- allow $2 httpd_user_rw_content_t:file { manage_file_perms relabel_file_perms };
- allow $2 httpd_user_rw_content_t:lnk_file { manage_lnk_file_perms relabel_lnk_file_perms };
- allow $2 httpd_user_script_exec_t:dir { manage_dir_perms relabel_dir_perms };
- allow $2 httpd_user_script_exec_t:file { manage_file_perms relabel_file_perms };
- allow $2 httpd_user_script_exec_t:lnk_file { manage_lnk_file_perms relabel_lnk_file_perms };
- userdom_user_home_dir_filetrans($2, httpd_user_content_t, dir, "public_html")
- userdom_user_home_dir_filetrans($2, httpd_user_content_t, dir, "web")
- userdom_user_home_dir_filetrans($2, httpd_user_content_t, dir, "www")
- filetrans_pattern($2, httpd_user_content_t, httpd_user_htaccess_t, file, ".htaccess")
- filetrans_pattern($2, httpd_user_content_t, httpd_user_script_exec_t, dir, "cgi-bin")
- filetrans_pattern($2, httpd_user_content_t, httpd_user_ra_content_t, dir, "logs")
- tunable_policy(`httpd_enable_cgi',`
- domtrans_pattern($2, httpd_user_script_exec_t, httpd_user_script_t)
- ')
- tunable_policy(`httpd_enable_cgi && httpd_unified',`
- domtrans_pattern($2, httpdcontent, httpd_user_script_t)
- ')
- ')
- ########################################
- ## <summary>
- ## Read user httpd script executable files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_user_scripts',`
- gen_require(`
- type httpd_user_script_exec_t;
- ')
- allow $1 httpd_user_script_exec_t:dir list_dir_perms;
- read_files_pattern($1, httpd_user_script_exec_t, httpd_user_script_exec_t)
- read_lnk_files_pattern($1, httpd_user_script_exec_t, httpd_user_script_exec_t)
- ')
- ########################################
- ## <summary>
- ## Read user httpd content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_user_content',`
- gen_require(`
- type httpd_user_content_t;
- ')
- allow $1 httpd_user_content_t:dir list_dir_perms;
- read_files_pattern($1, httpd_user_content_t, httpd_user_content_t)
- read_lnk_files_pattern($1, httpd_user_content_t, httpd_user_content_t)
- ')
- ########################################
- ## <summary>
- ## Execute httpd with a domain transition.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- #
- interface(`apache_domtrans',`
- gen_require(`
- type httpd_t, httpd_exec_t;
- ')
- corecmd_search_bin($1)
- domtrans_pattern($1, httpd_exec_t, httpd_t)
- ')
- ########################################
- ## <summary>
- ## Execute httpd server in the httpd domain.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- #
- interface(`apache_initrc_domtrans',`
- gen_require(`
- type httpd_initrc_exec_t;
- ')
- init_labeled_script_domtrans($1, httpd_initrc_exec_t)
- ')
- #######################################
- ## <summary>
- ## Send generic signals to httpd.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_signal',`
- gen_require(`
- type httpd_t;
- ')
- allow $1 httpd_t:process signal;
- ')
- ########################################
- ## <summary>
- ## Send null signals to httpd.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_signull',`
- gen_require(`
- type httpd_t;
- ')
- allow $1 httpd_t:process signull;
- ')
- ########################################
- ## <summary>
- ## Send child terminated signals to httpd.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_sigchld',`
- gen_require(`
- type httpd_t;
- ')
- allow $1 httpd_t:process sigchld;
- ')
- ########################################
- ## <summary>
- ## Inherit and use file descriptors
- ## from httpd.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_use_fds',`
- gen_require(`
- type httpd_t;
- ')
- allow $1 httpd_t:fd use;
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to read and
- ## write httpd unnamed pipes.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_rw_fifo_file',`
- gen_require(`
- type httpd_t;
- ')
- dontaudit $1 httpd_t:fifo_file rw_fifo_file_perms;
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to read and
- ## write httpd unix domain stream sockets.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_rw_stream_sockets',`
- gen_require(`
- type httpd_t;
- ')
- dontaudit $1 httpd_t:unix_stream_socket { read write };
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to read and
- ## write httpd TCP sockets.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_rw_tcp_sockets',`
- gen_require(`
- type httpd_t;
- ')
- dontaudit $1 httpd_t:tcp_socket { read write };
- ')
- ########################################
- ## <summary>
- ## Read all appendable content
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_all_ra_content',`
- gen_require(`
- attribute httpd_ra_content;
- ')
- read_files_pattern($1, httpd_ra_content, httpd_ra_content)
- read_lnk_files_pattern($1, httpd_ra_content, httpd_ra_content)
- ')
- ########################################
- ## <summary>
- ## Append to all appendable web content
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_append_all_ra_content',`
- gen_require(`
- attribute httpd_ra_content;
- ')
- append_files_pattern($1, httpd_ra_content, httpd_ra_content)
- ')
- ########################################
- ## <summary>
- ## Read all read/write content
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_all_rw_content',`
- gen_require(`
- attribute httpd_rw_content;
- ')
- read_files_pattern($1, httpd_rw_content, httpd_rw_content)
- read_lnk_files_pattern($1, httpd_rw_content, httpd_rw_content)
- ')
- ########################################
- ## <summary>
- ## Manage all read/write content
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_manage_all_rw_content',`
- gen_require(`
- attribute httpd_rw_content;
- ')
- manage_dirs_pattern($1, httpd_rw_content, httpd_rw_content)
- manage_files_pattern($1, httpd_rw_content, httpd_rw_content)
- manage_lnk_files_pattern($1, httpd_rw_content, httpd_rw_content)
- ')
- ########################################
- ## <summary>
- ## Read all web content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_all_content',`
- gen_require(`
- attribute httpdcontent, httpd_script_exec_type;
- ')
- read_files_pattern($1, httpdcontent, httpdcontent)
- read_lnk_files_pattern($1, httpdcontent, httpdcontent)
- read_files_pattern($1, httpd_script_exec_type, httpd_script_exec_type)
- read_lnk_files_pattern($1, httpd_script_exec_type, httpd_script_exec_type)
- ')
- #######################################
- ## <summary>
- ## Search all apache content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_search_all_content',`
- gen_require(`
- attribute httpdcontent;
- ')
- allow $1 httpdcontent:dir search_dir_perms;
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete
- ## all httpd content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_manage_all_content',`
- gen_require(`
- attribute httpdcontent, httpd_script_exec_type;
- ')
- manage_dirs_pattern($1, httpdcontent, httpdcontent)
- manage_files_pattern($1, httpdcontent, httpdcontent)
- manage_lnk_files_pattern($1, httpdcontent, httpdcontent)
- manage_dirs_pattern($1, httpd_script_exec_type, httpd_script_exec_type)
- manage_files_pattern($1, httpd_script_exec_type, httpd_script_exec_type)
- manage_lnk_files_pattern($1, httpd_script_exec_type, httpd_script_exec_type)
- ')
- ########################################
- ## <summary>
- ## Set attributes httpd cache directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_setattr_cache_dirs',`
- gen_require(`
- type httpd_cache_t;
- ')
- allow $1 httpd_cache_t:dir setattr_dir_perms;
- ')
- ########################################
- ## <summary>
- ## List httpd cache directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_list_cache',`
- gen_require(`
- type httpd_cache_t;
- ')
- list_dirs_pattern($1, httpd_cache_t, httpd_cache_t)
- ')
- ########################################
- ## <summary>
- ## Read and write httpd cache files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_rw_cache_files',`
- gen_require(`
- type httpd_cache_t;
- ')
- allow $1 httpd_cache_t:file rw_file_perms;
- ')
- ########################################
- ## <summary>
- ## Delete httpd cache directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_delete_cache_dirs',`
- gen_require(`
- type httpd_cache_t;
- ')
- delete_dirs_pattern($1, httpd_cache_t, httpd_cache_t)
- ')
- ########################################
- ## <summary>
- ## Delete httpd cache files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_delete_cache_files',`
- gen_require(`
- type httpd_cache_t;
- ')
- delete_files_pattern($1, httpd_cache_t, httpd_cache_t)
- ')
- ########################################
- ## <summary>
- ## Read httpd configuration files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_read_config',`
- gen_require(`
- type httpd_config_t;
- ')
- files_search_etc($1)
- allow $1 httpd_config_t:dir list_dir_perms;
- read_files_pattern($1, httpd_config_t, httpd_config_t)
- read_lnk_files_pattern($1, httpd_config_t, httpd_config_t)
- ')
- ########################################
- ## <summary>
- ## Search httpd configuration directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_search_config',`
- gen_require(`
- type httpd_config_t;
- ')
- files_search_etc($1)
- allow $1 httpd_config_t:dir search_dir_perms;
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete
- ## httpd configuration files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_manage_config',`
- gen_require(`
- type httpd_config_t;
- ')
- files_search_etc($1)
- manage_dirs_pattern($1, httpd_config_t, httpd_config_t)
- manage_files_pattern($1, httpd_config_t, httpd_config_t)
- read_lnk_files_pattern($1, httpd_config_t, httpd_config_t)
- ')
- ########################################
- ## <summary>
- ## Execute the Apache helper program
- ## with a domain transition.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_domtrans_helper',`
- gen_require(`
- type httpd_helper_t, httpd_helper_exec_t;
- ')
- corecmd_search_bin($1)
- domtrans_pattern($1, httpd_helper_exec_t, httpd_helper_t)
- ')
- ########################################
- ## <summary>
- ## Execute the Apache helper program with
- ## a domain transition, and allow the
- ## specified role the Apache helper domain.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- ## <param name="role">
- ## <summary>
- ## Role allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_run_helper',`
- gen_require(`
- attribute_role httpd_helper_roles;
- ')
- apache_domtrans_helper($1)
- roleattribute $2 httpd_helper_roles;
- ')
- ########################################
- ## <summary>
- ## Read httpd log files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_read_log',`
- gen_require(`
- type httpd_log_t;
- ')
- logging_search_logs($1)
- allow $1 httpd_log_t:dir list_dir_perms;
- read_files_pattern($1, httpd_log_t, httpd_log_t)
- read_lnk_files_pattern($1, httpd_log_t, httpd_log_t)
- ')
- ########################################
- ## <summary>
- ## Append httpd log files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_append_log',`
- gen_require(`
- type httpd_log_t;
- ')
- logging_search_logs($1)
- allow $1 httpd_log_t:dir list_dir_perms;
- append_files_pattern($1, httpd_log_t, httpd_log_t)
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to append
- ## httpd log files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_append_log',`
- gen_require(`
- type httpd_log_t;
- ')
- dontaudit $1 httpd_log_t:file append_file_perms;
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete
- ## httpd log files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_manage_log',`
- gen_require(`
- type httpd_log_t;
- ')
- logging_search_logs($1)
- manage_dirs_pattern($1, httpd_log_t, httpd_log_t)
- manage_files_pattern($1, httpd_log_t, httpd_log_t)
- read_lnk_files_pattern($1, httpd_log_t, httpd_log_t)
- ')
- #######################################
- ## <summary>
- ## Write apache log files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_write_log',`
- gen_require(`
- type httpd_log_t;
- ')
- logging_search_logs($1)
- write_files_pattern($1, httpd_log_t, httpd_log_t)
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to search
- ## httpd module directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_search_modules',`
- gen_require(`
- type httpd_modules_t;
- ')
- dontaudit $1 httpd_modules_t:dir search_dir_perms;
- ')
- ########################################
- ## <summary>
- ## List httpd module directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_list_modules',`
- gen_require(`
- type httpd_modules_t;
- ')
- allow $1 httpd_modules_t:dir list_dir_perms;
- ')
- ########################################
- ## <summary>
- ## Execute httpd module files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_exec_modules',`
- gen_require(`
- type httpd_modules_t;
- ')
- allow $1 httpd_modules_t:dir list_dir_perms;
- allow $1 httpd_modules_t:lnk_file read_lnk_file_perms;
- can_exec($1, httpd_modules_t)
- ')
- ########################################
- ## <summary>
- ## Read httpd module files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_module_files',`
- gen_require(`
- type httpd_modules_t;
- ')
- libs_search_lib($1)
- read_files_pattern($1, httpd_modules_t, httpd_modules_t)
- ')
- ########################################
- ## <summary>
- ## Execute a domain transition to
- ## run httpd_rotatelogs.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- #
- interface(`apache_domtrans_rotatelogs',`
- gen_require(`
- type httpd_rotatelogs_t, httpd_rotatelogs_exec_t;
- ')
- corecmd_search_bin($1)
- domtrans_pattern($1, httpd_rotatelogs_exec_t, httpd_rotatelogs_t)
- ')
- ########################################
- ## <summary>
- ## List httpd system content directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_list_sys_content',`
- gen_require(`
- type httpd_sys_content_t;
- ')
- list_dirs_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- files_search_var($1)
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete
- ## httpd system content files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_manage_sys_content',`
- gen_require(`
- type httpd_sys_content_t;
- ')
- files_search_var($1)
- manage_dirs_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- manage_files_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- manage_lnk_files_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete
- ## httpd system rw content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_manage_sys_rw_content',`
- gen_require(`
- type httpd_sys_rw_content_t;
- ')
- apache_search_sys_content($1)
- manage_dirs_pattern($1, httpd_sys_rw_content_t, httpd_sys_rw_content_t)
- manage_files_pattern($1,httpd_sys_rw_content_t, httpd_sys_rw_content_t)
- manage_lnk_files_pattern($1, httpd_sys_rw_content_t, httpd_sys_rw_content_t)
- ')
- ########################################
- ## <summary>
- ## Execute all httpd scripts in the
- ## system script domain.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- #
- interface(`apache_domtrans_sys_script',`
- gen_require(`
- attribute httpdcontent;
- type httpd_sys_script_t;
- ')
- tunable_policy(`httpd_enable_cgi && httpd_unified',`
- domtrans_pattern($1, httpdcontent, httpd_sys_script_t)
- ')
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to read and
- ## write httpd system script unix
- ## domain stream sockets.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_rw_sys_script_stream_sockets',`
- gen_require(`
- type httpd_sys_script_t;
- ')
- dontaudit $1 httpd_sys_script_t:unix_stream_socket { read write };
- ')
- ########################################
- ## <summary>
- ## Execute all user scripts in the user
- ## script domain.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- #
- interface(`apache_domtrans_all_scripts',`
- gen_require(`
- attribute httpd_exec_scripts;
- ')
- typeattribute $1 httpd_exec_scripts;
- ')
- ########################################
- ## <summary>
- ## Execute all user scripts in the user
- ## script domain. Add user script domains
- ## to the specified role.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed to transition.
- ## </summary>
- ## </param>
- ## <param name="role">
- ## <summary>
- ## Role allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_run_all_scripts',`
- gen_require(`
- attribute httpd_exec_scripts, httpd_script_domains;
- ')
- role $2 types httpd_script_domains;
- apache_domtrans_all_scripts($1)
- ')
- ########################################
- ## <summary>
- ## Read httpd squirrelmail data files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_squirrelmail_data',`
- gen_require(`
- type httpd_squirrelmail_t;
- ')
- allow $1 httpd_squirrelmail_t:file read_file_perms;
- ')
- ########################################
- ## <summary>
- ## Append httpd squirrelmail data files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_append_squirrelmail_data',`
- gen_require(`
- type httpd_squirrelmail_t;
- ')
- allow $1 httpd_squirrelmail_t:file append_file_perms;
- ')
- ########################################
- ## <summary>
- ## Search httpd system content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_search_sys_content',`
- gen_require(`
- type httpd_sys_content_t;
- ')
- files_search_var($1)
- allow $1 httpd_sys_content_t:dir search_dir_perms;
- ')
- ########################################
- ## <summary>
- ## Read httpd system content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_sys_content',`
- gen_require(`
- type httpd_sys_content_t;
- ')
- allow $1 httpd_sys_content_t:dir list_dir_perms;
- read_files_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- read_lnk_files_pattern($1, httpd_sys_content_t, httpd_sys_content_t)
- ')
- ########################################
- ## <summary>
- ## Search httpd system CGI directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_search_sys_scripts',`
- gen_require(`
- type httpd_sys_content_t, httpd_sys_script_exec_t;
- ')
- search_dirs_pattern($1, httpd_sys_content_t, httpd_sys_script_exec_t)
- ')
- ########################################
- ## <summary>
- ## Create, read, write, and delete all
- ## user httpd content.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_manage_all_user_content',`
- gen_require(`
- type httpd_user_content_t, httpd_user_content_rw_t, httpd_user_content_ra_t;
- type httpd_user_htaccess_t, httpd_user_script_exec_t;
- ')
- manage_dirs_pattern($1, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t }, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t })
- manage_files_pattern($1, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t httpd_user_htaccess_t }, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t httpd_user_htaccess_t })
- manage_lnk_files_pattern($1, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t }, { httpd_user_content_t httpd_user_content_rw_t httpd_user_content_ra_t httpd_user_script_exec_t })
- ')
- ########################################
- ## <summary>
- ## Search system script state directories.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_search_sys_script_state',`
- gen_require(`
- type httpd_sys_script_t;
- ')
- allow $1 httpd_sys_script_t:dir search_dir_perms;
- ')
- ########################################
- ## <summary>
- ## Read httpd tmp files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- #
- interface(`apache_read_tmp_files',`
- gen_require(`
- type httpd_tmp_t;
- ')
- files_search_tmp($1)
- read_files_pattern($1, httpd_tmp_t, httpd_tmp_t)
- ')
- ########################################
- ## <summary>
- ## Do not audit attempts to write
- ## httpd tmp files.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain to not audit.
- ## </summary>
- ## </param>
- #
- interface(`apache_dontaudit_write_tmp_files',`
- gen_require(`
- type httpd_tmp_t;
- ')
- dontaudit $1 httpd_tmp_t:file write_file_perms;
- ')
- ########################################
- ## <summary>
- ## Execute CGI in the specified domain.
- ## </summary>
- ## <desc>
- ## <p>
- ## This is an interface to support third party modules
- ## and its use is not allowed in upstream reference
- ## policy.
- ## </p>
- ## </desc>
- ## <param name="domain">
- ## <summary>
- ## Domain run the cgi script in.
- ## </summary>
- ## </param>
- ## <param name="entrypoint">
- ## <summary>
- ## Type of the executable to enter the cgi domain.
- ## </summary>
- ## </param>
- #
- interface(`apache_cgi_domain',`
- gen_require(`
- type httpd_t, httpd_sys_script_exec_t;
- ')
- domtrans_pattern(httpd_t, $2, $1)
- apache_search_sys_scripts($1)
- allow httpd_t $1:process signal;
- ')
- ########################################
- ## <summary>
- ## All of the rules required to
- ## administrate an apache environment.
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain allowed access.
- ## </summary>
- ## </param>
- ## <param name="role">
- ## <summary>
- ## Role allowed access.
- ## </summary>
- ## </param>
- ## <rolecap/>
- #
- interface(`apache_admin',`
- gen_require(`
- attribute httpdcontent, httpd_script_exec_type;
- attribute httpd_script_domains, httpd_htaccess_type;
- type httpd_t, httpd_config_t, httpd_log_t;
- type httpd_modules_t, httpd_lock_t, httpd_helper_t;
- type httpd_var_run_t, httpd_passwd_t, httpd_suexec_t;
- type httpd_suexec_tmp_t, httpd_tmp_t, httpd_rotatelogs_t;
- type httpd_initrc_exec_t, httpd_keytab_t;
- ')
- allow $1 { httpd_script_domains httpd_t httpd_helper_t }:process { ptrace signal_perms };
- allow $1 { httpd_rotatelogs_t httpd_suexec_t httpd_passwd_t }:process { ptrace signal_perms };
- ps_process_pattern($1, { httpd_script_domains httpd_t httpd_helper_t })
- ps_process_pattern($1, { httpd_rotatelogs_t httpd_suexec_t httpd_passwd_t })
- init_startstop_service($1, $2, httpd_t, httpd_initrc_exec_t)
- apache_manage_all_content($1)
- miscfiles_manage_public_files($1)
- files_search_etc($1)
- admin_pattern($1, { httpd_keytab_t httpd_config_t })
- logging_search_logs($1)
- admin_pattern($1, httpd_log_t)
- admin_pattern($1, httpd_modules_t)
- admin_pattern($1, httpd_lock_t)
- files_lock_filetrans($1, httpd_lock_t, file)
- admin_pattern($1, httpd_var_run_t)
- files_pid_filetrans($1, httpd_var_run_t, file)
- admin_pattern($1, { httpdcontent httpd_script_exec_type httpd_htaccess_type })
- admin_pattern($1, { httpd_tmp_t httpd_suexec_tmp_t })
- apache_run_all_scripts($1, $2)
- apache_run_helper($1, $2)
- ')
- ########################################
- ## <summary>
- ## Unlink httpd_var_lib_t files
- ## </summary>
- ## <param name="domain">
- ## <summary>
- ## Domain that can unlink the files
- ## </summary>
- ## </param>
- #
- interface(`apache_unlink_var_lib',`
- gen_require(`
- type httpd_var_lib_t;
- ')
- files_search_var_lib($1)
- allow $1 httpd_var_lib_t:dir { write remove_name };
- allow $1 httpd_var_lib_t:file unlink;
- ')
|