firewalld
firewalld
是一個數據包過濾軟件,和iptables
屬於同一類型。
啓動和關閉
# 開啓
systemctl start firewalld
# 關閉
systemctl stop firewalld
# 查看狀態
systemctl status firewalld
# 開機禁用
systemctl disable firewalld
# 開機啓用
systemctl enable firewalld
# 查看服務是否開機啓動
systemctl is-enabled firewalld
基本配置
# 查看版本
firewall-cmd --version
# 查看幫助
firewall-cmd --help
# 顯示狀態
firewall-cmd --state
# 查看區域信息
firewall-cmd --get-active-zones
# 查看指定接口所屬區域
firewall-cmd --get-zone-of-interface=eth0
# 拒絕所有通信數據包(謹慎操作,除非你在服務器旁邊,如果使用ssh客戶端連接的話,會再也無法連接上)
firewall-cmd --panic-on
# 取消拒絕所有通信數據包
firewall-cmd --panic-off
# 查看是否拒絕所有通信數據包
firewall-cmd --query-panic
規則配置
# 開發80端口(--permanent 表示永久生效,沒有此參數重啓後失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 關閉80端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 開放20000-20010這個範圍內的端口
firewall-cmd --zone=public --add-port=20000-20010/tcp --permanent
# 更新防火牆規則
firewall-cmd --reload
# 查看80端口是否處於開放狀態
firewall-cmd --zone=public --query-port=80/tcp
# 查看所有打開的端口
firewall-cmd --zone=public --list-ports
firewall-cmd --list-all
rich-rule設置(需要更新規則後生效)
# 針對 11.122.133.144 開放30000端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="11.122.133.144" port protocol="tcp" port="30000" accept'
# 針對 11.122.133.144 關閉30000端口
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="11.122.133.144" port protocol="tcp" port="30000" reject'
# 開放所有端口給11.122.133.144
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="11.122.133.144" accept'
# 查看所有rich-rule
firewall-cmd --zone=public --list-rich-rules
# 移除一個rich-rule規則
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="11.122.133.144" port protocol="tcp" port="30000" accept'
SELinux
簡介
SELinux 全稱:Security-Enhanced Linux(安全增強型Linux),它是 Linux 的一個安全子系統,也就是說它是 Linux 內核模塊,主要由美國國家安全局開發。其主要作用是最大限度地減小系統中服務進程可訪問的資源,這裏介紹一下兩個機制:
DAC機制:
在沒有使用 SELinux 的操作系統中,決定一個資源是否能被訪問的因素是:某個資源是否擁有對應用戶的權限(讀、寫、執行)。只要訪問這個資源的進程符合以上的條件就可以被訪問。而最致命問題是,root 用戶不受任何管制,系統上任何資源都可以無限制地訪問。這種權限管理機制的主體是用戶,也稱爲自主訪問控制(DAC)
MAC機制:
在使用了 SELinux 的操作系統中,決定一個資源是否能被訪問的因素除了上述因素之外,還需要判斷每一類進程是否擁有對某一類資源的訪問權限。在SELinux中沒有root這個概念,安全策略是由管理員來定義的,任何軟件都無法取代它。這意味着那些潛在的惡意軟件所能造成的損害可以被控制在最小。這樣一來,即使進程是以 root 身份運行的,也需要判斷這個進程的類型以及允許訪問的資源類型才能決定是否允許訪問某個資源。進程的活動空間也可以被壓縮到最小。即使是以 root 身份運行的服務進程,一般也只能訪問到它所需要的資源。即使程序出了漏洞,影響範圍也只有在其允許訪問的資源範圍內。安全性大大增加。這種權限管理機制的主體是進程,也稱爲強制訪問控制(MAC)
基本概念
主體(Subject) :可以完全等同於進程
對象(Object):被主體訪問的資源。可以是文件、目錄、端口、設備等
政策和規則(Policy & Rule):系統中通常有大量的文件和進程,爲了節省時間和開銷,通常我們只是選擇性地對某些進程進行管制。而哪些進程需要管制、要怎麼管制是由政策決定的。一套政策裏面有多個規則,部分規則可以按照需求啓用或禁用。規則和政策可以在配置文件(/etc/selinux/config
)中配置,目前有3套政策:
targeted
:對大部分網絡服務進程進行管制。這是系統默認使用的政策minimum
:以targeted
爲基礎,僅對選定的網絡服務進程進行管制mls
:多級安全保護。對所有的進程進行管制。這是最嚴格的政策,配置難度非常大。一般不用,除非對安全性有極高的要求
安全上下文(Security Context、安全環境)
安全上下文我自己把它分爲「進程安全上下文」和「文件安全上下文」。一個「進程安全上下文」一般對應多個「文件安全上下文」。只有兩者的安全上下文對應上了,進程才能訪問文件。它們的對應關係由政策中的規則決定。文件安全上下文由文件創建的位置和創建文件的進程所決定。而且系統有一套默認值,用戶也可以對默認值進行設定。需要注意的是,單純的移動文件操作並不會改變文件的安全上下文。
更多內容請參考:https://www.phpyuan.com/235739.html
配置
查看SELinux狀態
getenforce
# 或者
sestatus
臨時關閉SELinux
setenforce 0
臨時開啓SELinux
setenforce 1
永久關閉SELinux
打開SELinux的配置文件vi /etc/SELinux/config
,將SELinux=enforcing
更改爲 SELinux=disabled
,然後重啓操作系統即可。此時再無法臨時打開。