Linux中安裝使用semanage來修改文本

來源:互聯網
上載者:User

   Selinux極大的增強了Linux系統的安全性,能將使用者權限關在籠子裡,如httpd服務,apache預設只能訪問/var/www目錄,並只能監聽80和443連接埠,因此能有效防範0-day類的攻擊。舉例來說,系統上的 Apache 被發現存在一個漏洞,使得某遠端使用者可以訪問系統上的敏感檔案(比如 /etc/passwd 來獲得系統已存在使用者),而修複該安全性漏洞的 Apache 更新補丁尚未釋出。此時 SELinux 可以起到彌補該漏洞的緩和方案。因為 /etc/passwd 不具有 Apache 的訪問標籤,所以 Apache 對於 /etc/passwd 的訪問會被 SELinux 阻止。

  CentOS系統內建的chcon工具只能修改檔案、目錄等的檔案類型和策略,無法對連接埠、訊息介面和網路介面等進行管理,semanage能有效勝任SELinux的相關配置工作。

  安裝:

  代碼如下:

  # yum -y install policycoreutils-python

  用法:

  semanage命令用來查詢與修改SELinux預設目錄的安全上下文。

  semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec

  semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target

  主要參數:

  -a:添加

  -d:刪除

  -m:修改

  -l:列舉

  -n:不列印說明頭

  -D:全部刪除

  -f:檔案

  -s:使用者

  -t:類型

  r:角色

  基本使用:

  管理登入linux的使用者和SELinux局限的使用者之間的映射。

  代碼如下:

  semanage login [-S store] -{a|d|m|l|n|D} [-sr] login_name | %groupname

  管理原則模組:

  代碼如下:

  semanage module [-S store] -{a|d|l} [-m [--enable | --disable] ] module_name

  管理網路連接埠類型定義

  代碼如下:

  semanage port [-S store] -{a|d|m|l|n|D} [-tr] [-p proto] port | port_range

  例:如apache採用非標準連接埠,需執行如下命令:

  代碼如下:

  emanage port -a -t http_port_t -p tcp port_number

  查看當前允許的httpd連接埠:

  代碼如下:

  # semanage port -l|grep http

  http_cache_port_t tcp 3128, 8080, 8118, 8123, 10001-10010

  http_cache_port_t udp 3130

  http_port_t tcp 8888, 80, 443, 488, 8008, 8009, 8443

  pegasus_http_port_t tcp 5988

  pegasus_https_port_t tcp 5989

  注意:8888是我剛才添加的

  管理網路介面類型定義

  代碼如下:

  semanage interface [-S store] -{a|d|m|l|n|D} [-tr] interface_spec

  管理網路節點類型定義

  代碼如下:

  semanage node [-S store] -{a|d|m|l|n|D} [-tr] [ -p protocol ] [-M netmask] address

  管理檔案中映射定義

  代碼如下:

  semanage fcontext [-S store] -{a|d|m|l|n|D} [-frst] file_spec

  semanage fcontext [-S store] -{a|d|m|l|n|D} -e replacement target

  例:讓 Apache 可以訪問位於非預設目錄下的網站檔案

  首先,用 semanage fcontext -l | grep '/var/www' 獲知預設 /var/www 目錄的 SELinux 上下文:

  代碼如下:

  /var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0

  從中可以看到 Apache 只能訪問包含 httpd_sys_content_t 標籤的檔案。

  假設希望 Apache 使用 /srv/www 作為網站檔案目錄,那麼就需要給這個目錄下的檔案增加 httpd_sys_content_t 標籤,分兩步實現。

  首先為 /srv/www 這個目錄下的檔案添加預設標籤類型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然後用新的標籤類型標註已有檔案:restorecon -Rv /srv/www 之後 Apache 就可以使用該目錄下的檔案構建網站了。

  其中 restorecon 在 SELinux 管理中很常見,起到恢複檔案預設標籤的作用。比如當從使用者主目錄下將某個檔案複製到 Apache 網站目錄下時,Apache 預設是無法訪問,因為使用者主目錄的下的檔案標籤是 user_home_t。此時就需要 restorecon 將其恢複為可被 Apache 訪問的 httpd_sys_content_t 類型:

  代碼如下:

  restorecon -v /srv/www/foo.com/html/file.html

  restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0

  semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" //建立一條規則,指定/web目錄及其下的所有檔案的擴充屬性為httpd_sys_content_t

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.