Linux的秘密就在這18張圖里面了~
1 Linux安全策略
在生產(chǎn)環(huán)境幾乎都是Linux,為了保護(hù)我們程序,防止我們功能被破壞,會采取一些列的措施,所以提前學(xué)習(xí)和了解這些策略勢必也會為后面的學(xué)習(xí)打下不錯的基礎(chǔ)
常見的攻擊類型有哪些呢
密碼暴力破解
目的比較明確,通過爆破工具破解用戶的密碼,進(jìn)入服務(wù)器獲取資源進(jìn)行系統(tǒng)的破壞。我們可以想象一個字典,字典足夠強(qiáng)大,逐一匹配就可以找到服務(wù)器的密碼
拒絕服務(wù)攻擊
通過大量的請求來占用足夠多的服務(wù)資源,使得網(wǎng)絡(luò)阻塞或者服務(wù)器死機(jī),導(dǎo)致Linux服務(wù)器無法給用戶提供服務(wù)。常見的拒絕服務(wù)攻擊有Dos與分布式拒絕服務(wù)攻擊。黑客通常是利用偽裝的源地址或者控制其他的目標(biāo)機(jī)器發(fā)出大量的連接請求,由于服務(wù)器無法在短時間接受這么多情趣,從而導(dǎo)致系統(tǒng)資源耗盡,服務(wù)掛起
應(yīng)用程序漏洞攻擊
這種情況一般是黑客通過類似掃描工具掃描服務(wù)器可能存在的漏洞,然后根據(jù)漏洞滲入到服務(wù)器進(jìn)行相應(yīng)的破壞,常見比如sql注入,漏洞攻擊,網(wǎng)頁權(quán)限漏洞等
如何進(jìn)行防范呢
徹底的防范是不可能,但是可以盡全力的防范,通常需要一系列的安全設(shè)備和規(guī)則進(jìn)行約束

網(wǎng)絡(luò)傳輸?shù)陌踩?/strong>
常見的網(wǎng)絡(luò)安全設(shè)備有硬件防火墻,網(wǎng)絡(luò)入侵檢測,路由器,交換機(jī)等。防火墻對進(jìn)出網(wǎng)絡(luò)的主機(jī)進(jìn)行規(guī)則匹配,盡量保證合法的主機(jī)進(jìn)入網(wǎng)絡(luò),可是有些攻擊行為是在防火墻允許的范圍內(nèi),這個時候防火墻就無所能及了,就需要諸如IDS設(shè)備來輔助。IDS會對系統(tǒng)的整體運行情況進(jìn)行監(jiān)控,盡全力發(fā)現(xiàn)攻擊企圖,從而保證網(wǎng)絡(luò)系統(tǒng)資源的機(jī)密性,完整性和可用性
操作系統(tǒng)的安全
操作系統(tǒng)安全即服務(wù)器本身的一些安全設(shè)置和優(yōu)化。比如系統(tǒng)內(nèi)核的定期升級,自帶軟件的更新,配置 iptable 規(guī)則,關(guān)閉無關(guān)服務(wù)等
很多常見的病毒程序,防火墻很難阻止,此時如果系統(tǒng)存在殺毒工具也是可以直接破掉第一道防線
應(yīng)用軟件安全
應(yīng)用軟件安全顧名思義即部署在服務(wù)器中應(yīng)用的安全策略配置,比如我們會對數(shù)據(jù)庫進(jìn)行配置防止非規(guī)則內(nèi)的連接數(shù)據(jù)庫等
再比如 ?SQL注入,跨站腳本都屬于應(yīng)用軟件安全漏洞造成的攻擊
那么常用的安全策略有哪些呢
軟件及時更新
這一塊我估計很多人都不會在意,畢竟需要重新安裝比較麻煩,但是很多時候需要更新,是因為有漏洞了,意味著Hack利用這些漏洞就很容易進(jìn)你的系統(tǒng),所以需要尤其注意
端口服務(wù)
一般一個有效的連接,即客戶端和服務(wù)端端口的建立過程。而端口在系統(tǒng)中也是有一些規(guī)則的
在Linux操作系統(tǒng)中,系統(tǒng)定義了65535個端口,這些端口又分為兩個部分,按照1024分割,分為只有 root 用戶才能啟用的端口和客戶端的端口,對于只有root用戶才能啟動的端口:
也就是0-1023的端口,需要 root 才能啟用,因為這些端口預(yù)留給一些預(yù)設(shè)的服務(wù)使用,不經(jīng)常使用的端口最好關(guān)閉,比如 Ftp 的21端口,25的 Mail 服務(wù)端口
客戶端的端口
1024端口以上的通常給客戶端軟件使用,由軟件隨機(jī)分配,對于大于1024的端口不受root的限制,比如默認(rèn)的3306就是數(shù)據(jù)庫的默認(rèn)端口
如何查看端口的狀態(tài)呢?
通過 netstat -tunl 查看

從上圖可以發(fā)現(xiàn)啟用了22端口,這是默認(rèn)就打開了,我的遠(yuǎn)程工具XSHELL即就是連接的這個端口
如何查看鏈接的狀態(tài)呢
netstat?-tun

如果查看端口對應(yīng)的什么服務(wù),執(zhí)行什么命令呢
netstat?-anlp
服務(wù)與端口是什么關(guān)系
我們可能經(jīng)常聽到什么服務(wù)對應(yīng)什么端口,他們兩是一一對應(yīng)的關(guān)心,沒有服務(wù)運行即沒有端口對應(yīng),那是不是這些服務(wù)都必須使用默認(rèn)的端口呢
當(dāng)然不是,大部分的軟件都會有配置文件,根據(jù)相應(yīng)的配置就好了
一定要記得關(guān)閉不必要的服務(wù)
在Linux中,服務(wù)的啟動和關(guān)閉管理有兩種方式,第一種方式是直接啟動腳本,在 Centos7 之前是在 /etc/init.d 目錄下的服務(wù)啟動和關(guān)閉。在 Centos7 以后,使用systemctl工具來完成,這個在后續(xù)的系統(tǒng)管理會詳細(xì)給大家說說。
如果要啟動 sshd 服務(wù),可以使用下面的命令
systemctl?restart?sshd
另外一種情況是通過超級服務(wù)管理一些常用的網(wǎng)絡(luò)服務(wù),比如 Centos 的超級服務(wù) Xinetd,這個服務(wù)可以管理的服務(wù)如 Vsftpd 等,我們可以通過 /etc/init.d/xinted restart 來完成服務(wù)的重啟
在Linux中,通過 chkconfig 命令或者 systemctl 判斷服務(wù)是否開啟
chkconfig?--list?sushi
我們怎么知道關(guān)閉哪些不必要的服務(wù)呢
這里列出一個表格

還有一些其他的安全設(shè)置
禁止系統(tǒng)響應(yīng)任何從外部來的ping請求
ping通過用來檢查網(wǎng)絡(luò)的連通性,如果能夠ping通,攻擊者就知道這是一個活躍的機(jī)器,那么怎么禁止ping請求呢
echo?"1"?>/proc/sys/net/ipv4/icmp_echo_ignore_all
刪除不必要的用戶組
刪除系統(tǒng)不必要的用戶 userdel username
刪除系統(tǒng)不必要的組 groupdel groupname
關(guān)閉selinux
首先它是內(nèi)核強(qiáng)制訪問控制安全系統(tǒng),,由于它和現(xiàn)在的linux應(yīng)用程序和內(nèi)核模塊有一些兼容問題,如果要查看是否已啟用
通過使用 getenforce,如果要關(guān)閉selinux,修改下面的文件
vi?/etc/sysconfig/selinux
2 說說防火墻
防火墻有硬件防火墻和軟件防火墻,在這里主要介紹軟件防火墻。根據(jù)工作方式的不同又分為封包式防火墻和應(yīng)用層網(wǎng)關(guān)防火墻
硬件防火墻使用專有的操作系統(tǒng),如果按照工作方式來劃分,那么防火墻也分為過濾式防火墻、應(yīng)用層網(wǎng)關(guān)防火墻兩種,后面給大家介紹的 iptable 即屬于過濾式防火墻
Iptable 是 Linux 中內(nèi)嵌好的防火墻軟件,集成在內(nèi)核中,因此效率非常高的。它可以通過你設(shè)置一些封包過濾規(guī)則來定義什么數(shù)據(jù)包可以接受,什么數(shù)據(jù)包剔除
iptable的使用環(huán)境?
保護(hù)自身本機(jī)
windows中有防火墻軟件,iptables類似,在Linux中的位置如下

從上圖可以發(fā)現(xiàn),在交互的過程中,首先要經(jīng)過 Linux 自身的 iptables 防火墻,作為第一層的安全過濾,隨后經(jīng)過防火墻的第二層的過濾最終到達(dá)互聯(lián)網(wǎng),所以可以說Linux自帶的iptables是系統(tǒng)安全的最后一道防線。
獨立的Linux主機(jī)對整個網(wǎng)絡(luò)進(jìn)行防護(hù)
如下圖所示,部署在Linux路由器上對整個局域網(wǎng)進(jìn)行安全防護(hù)

從位置來看,位于外網(wǎng)與局域網(wǎng)之間,防火墻在路由器的上面,所以先對進(jìn)入局域網(wǎng)的數(shù)據(jù)包進(jìn)行過濾,這樣不就對局域網(wǎng)主機(jī)進(jìn)行了訪問控制,以此來保護(hù)局域網(wǎng)的安全
多臺Linux主機(jī)對Lan進(jìn)行多層安全防護(hù)
通常局域網(wǎng)劃分了子網(wǎng),在子網(wǎng)錢部署一道Linux防火墻,然后將一些保密的資源放在這個子網(wǎng)里,子網(wǎng)通過設(shè)置第二道Linux防火墻設(shè)置相對更高的安全等級

對DMZ進(jìn)行安全防護(hù)
DMZ區(qū)域通常將互聯(lián)網(wǎng)與局域網(wǎng)隔離開的一個特殊網(wǎng)絡(luò)區(qū)域,通常部署一些不包含機(jī)密信息的服務(wù)器,比如ftp,這樣來自外網(wǎng)的訪問者可以通過Linux防火墻來訪問DMZ的服務(wù),即使DMZ服務(wù)器遭到破壞,也不會影響另一部分網(wǎng)絡(luò)

iptables的基本使用是如何的?
iptables 的前生后世
Linux最早出現(xiàn)的防火墻叫做 ipfw,是基于Linux2.0內(nèi)核的。隨后在 Linux2.2 中推出了ipchains,語法更容易理解且功能更強(qiáng)大,隨后 iptables 在 Linux2.4 出現(xiàn),同時也包含了 ipchains,但是兩者無法兼容,iptables防火墻越來越強(qiáng)大,Linux2.4以后就基本上使用iptables防火墻了
iptables的組成
iptables=ip tables,意味著是IP表的意思,對的,它是由多個表組成,且每個表的用途不一樣,在每個表中定義了很多鏈,通過這些鏈設(shè)置規(guī)則和策略
iptables呢有三種表的選項,管理本機(jī)數(shù)據(jù)進(jìn)出的filter表,管理防火前內(nèi)部主機(jī)的NAT表和改變包頭內(nèi)容的mangle表
先來看看filter進(jìn)行信息表的過濾,分別包含了INPUT、OUTPUT和FORWARD鏈

NAT表主要用于網(wǎng)絡(luò)地址轉(zhuǎn)換,再上一個篇也有說過,它包含了PREROUTING、POSTROUTING和OUTPUT鏈

mangle表包含了一些用于標(biāo)記高級路由的信息報,可以改變包以及包頭內(nèi)容,如TTL、TOS,MARK。它知識在內(nèi)核空間為包設(shè)置一個標(biāo)記而已,這個表內(nèi)置了五個鏈:PREROUTING、POSTROUTING、OUTPUT、INPUT和FORWARD
通過多個路由規(guī)則和預(yù)設(shè)規(guī)則組成了功能鏈,然后多個功能鏈組成功能表,多個功能表組成iptables防火墻
iptables的執(zhí)行過程是怎么樣的呢?
當(dāng)數(shù)據(jù)包到達(dá)Linux主機(jī),首先進(jìn)行 iptables 過濾,如果數(shù)據(jù)包滿足規(guī)則1指定的條件則直接執(zhí)行相應(yīng)的操作,后面的2,3規(guī)則就不再理會

舉個例子
假設(shè)目前這個 LInux 可以對外提供 www 的服務(wù),對于網(wǎng)絡(luò) 192.168.50.0/24 中的網(wǎng)絡(luò)主機(jī)開放訪問www服務(wù),但是禁止192.168.50.133訪問www服務(wù),規(guī)則如下
規(guī)則1:禁止192.168.50.133主機(jī)訪問www服務(wù)
規(guī)則2:允許本地網(wǎng)絡(luò)訪問www服務(wù)
這樣子設(shè)置完規(guī)則后,本地的網(wǎng)絡(luò)除了133不能訪問以外,其他的都能訪問。如果反過來
規(guī)則1:允許本地網(wǎng)絡(luò)192.168.50.0/24訪問www服務(wù)
規(guī)則2:禁止192.168.50.133主機(jī)訪問www服務(wù)、
此時的規(guī)則1允許所有主機(jī)訪問Linux服務(wù)器的www服務(wù),自然也包含了133主機(jī),規(guī)則2將顯得毫無意義
iptables的使用語法是怎么樣的呢
啟動和關(guān)閉iptables
servcie?iptables?start//啟動
service?iptables?stop//關(guān)閉
chkconfig?--level?35?iptables?on?//設(shè)置iptables開機(jī)默認(rèn)啟動
iptables的防火墻規(guī)則如何查看以及如何清除修改?
格式:iptabls [-t tables]?-L -vn -FXZ
查看當(dāng)前系統(tǒng)filter表的幾條鏈規(guī)則
iptables?-L?-n
3 用戶以及用戶組的管理
用戶組
Linux是一個真實且多用戶多任務(wù)的操作系統(tǒng),意味著張三王五李四都可以同時使用同一個Linux操作系統(tǒng),但是他們?nèi)齼翰荒芑ハ嘣L問各自的內(nèi)容,不同的用戶有不同的權(quán)限,每個用戶在權(quán)限范圍內(nèi)完成不同的任務(wù),Linux正是通過這樣的權(quán)限劃分和管理實現(xiàn)多用戶的運行機(jī)制
Linux用戶的分類是怎么樣的呢
超級用戶
超級用戶,默認(rèn)為root,具有最高的權(quán)限
普通用戶
只能對自己目錄下的文件進(jìn)行訪問
虛擬用戶
最大的特點是不能訪問登錄系統(tǒng),他們的存在主要是為了方便系統(tǒng)管理,滿足相關(guān)系統(tǒng)進(jìn)程對文件屬性的要求
用戶和組
用戶通過向Linux申請用戶訪問系統(tǒng),這樣可以合理的利用和控制系統(tǒng),同時也可以幫助用戶組織文件,達(dá)到提供對用戶文件的安全性保護(hù)的目的
什么是用戶組呢
有時候需要協(xié)同辦公,假設(shè)一共10個人,讓這10個人對文件的操作具有相同的權(quán)限,需要給每個用戶授權(quán),這樣豈不是太麻煩了,Linux就使用組的概念,讓屬于組的用戶都具有相同的權(quán)限
用戶和組的關(guān)系
用戶和組的關(guān)系可以是一對一,也可以是一對多設(shè)置多對多

一對一:這個組就只有一個用戶
一對多:這個用戶存在于多個組中,具有多個組的共同權(quán)限
多對1:多個用戶存在一個組,具有相同權(quán)限
多對多:多個用戶存在于多個組
用戶的配置文件在哪兒?
用戶和組相關(guān)配置文件,我們分別查看如下幾個文件
/etc/passwd
這個文件是系統(tǒng)用戶配置文件,起格式如下
用戶名:密碼:用戶標(biāo)識號:組標(biāo)識號:注釋描述:主目錄:默認(rèn)shell
看看/etc/passwd是什么樣子

詳細(xì)說說這些都是什么意思
用戶名:用戶賬戶
密碼:為了保護(hù)用戶隱私,這里面存放的都是一個特殊字符,加密的用戶密碼存放在/etc/shadow中
用戶標(biāo)識號:用戶的UID,每個用戶都會有一個UID且唯一,0是超級用戶的標(biāo)識,1-99由系統(tǒng)保留,
作為普通用戶,UID從500開始,用戶的權(quán)限和角色也是根據(jù) UID 而定,如果把普通用戶的 UID 設(shè)置為0,將擁有root權(quán)限,這個非常的危險
組標(biāo)識號:組的GID,記錄用戶所在組,對應(yīng)于/etc/group文件的一條記錄
主目錄:用戶登錄默認(rèn)所處的目錄
默認(rèn)shell:默認(rèn)使用的用戶解析器,用戶的所有操作都是通過shell傳遞給內(nèi)核的
為了保證用戶的密碼安全,使用了/etc/shadow

用戶名:與/etc/passwd的用戶名相同的含義
加密密碼:存放的是加密以后的用戶密碼字符串,如果字段是* !等,對應(yīng)的用戶不能登錄系統(tǒng)
最后一次的修改時間:表示從某個時間起,到用戶最近一次修改密碼的間隔天數(shù)
最小間隔時間:兩次修改密碼之間的最小時間間隔
最大時間間隔:兩次修改密碼之間的最大時間間隔
警告時間:系統(tǒng)開始警告到密碼正式失效的時間
不活動時間:表示用戶密碼作廢以后多少天,系統(tǒng)禁止這個用戶
失效時間:用戶的賬號生存期
/etc/group是干啥的
組名:用戶組的名稱,組名不能重復(fù)
密碼:存放用戶組加密后密碼字串,默認(rèn)設(shè)置在/etc/shadow文件中,而這里的x代替
組標(biāo)識號:Gid與/etc/passwd中組標(biāo)識號對應(yīng)
組內(nèi)用戶列表:多個用戶使用逗號分隔

/etc/default/useradd文件
為什么我們通過 useradd 命令創(chuàng)建一個用戶后,默認(rèn)在 /home 下且使用的shell是 /bin/bash ,看看 /etc/default/useradd 就明白了

/etc/default/useradd 定義了新建用戶的一些默認(rèn)屬性,比如用戶的主目錄,使用 shell 等,通過更改增額文件就可以改變新建用戶的默認(rèn)屬性值
用戶的管理工具有哪些?
groupadd命令
groupadd用來新建用戶組,其語法格式如下所示
groupadd?-g?gid?group
這里的選項 -g 表示指定新建用戶組的GID,這個GID必須唯一
選項-o:一般和-g同時使用,表示新用有的一直y戶組gid和系統(tǒng)已y
此時創(chuàng)建一個lan_group1用戶組和lan——group2用戶組
group?-g?1110?lan_group1
Group?-g?1120?lan_group2
More?/etc/group|?grep?lan_group1

groupdel命令
groupdel用于刪除用戶組
groupdel 名稱
如果刪除lan_group1
groupdel?lan_group1
詳細(xì)說說useradd/usermod等命令
useradd
如果在使用useradd的時候,不使用任何的參數(shù),那么系統(tǒng)首先會讀取配置文件/etc/login.defs和/etc/default/useradd,然后根據(jù)這兩個配置文件來添加用戶。隨后想/etc/passwd和/etc/group添加用戶和用戶組記錄,同時會在/etc/passwd中添加隊以ing的加密文件。接著系統(tǒng)就會在/etc/default/useradd中增加用戶主目錄,這樣一個主目錄就算建立了。
useradd的基本使用和常用選項
-u uid:唯一用戶標(biāo)識號
-g group:指定用戶登錄的默認(rèn)組
-d home:指定新建用戶的默認(rèn)主目錄,如果不指定在,則會在etc/default/useradd中創(chuàng)建用戶主目錄
-e expire:指定用戶的賬號過期時間
如何更改用戶的賬戶屬性信息
通過usermod修改用戶的賬戶信息。
usermod?-u?-g?-G?-d?.....
常用的選項
-u uid:指定用戶新uid,唯一
-d 主目錄:修改用戶登陸的主目錄
-c 注釋:修改用戶的注釋信息
-f:失效日
如果要刪除用戶呢
通過userdel刪除用戶,指定"-r"參數(shù)不僅刪除用戶,還會刪除用戶的主目錄
好了舉一個完整一點的例子
添加一個用戶lan_linux,所屬用戶組為base_linux,附加用戶組為forme_linux,同時指定用戶的默認(rèn)主目錄為/opt/base_linux
添加用戶test,指定UID為666,默認(rèn)shell為/bin/sh,指定用戶組為上面的
修改用戶test的主用戶組為test_modify,同時修改test的附加組

4 文件權(quán)限
通過 ls 命令就可以查看文件以及目錄的權(quán)限信息,如果使用 ls -al則還可以查看隱藏文件
為了更加詳細(xì)的了解每一行各個段什么意思,我們?nèi)〕鲆恍?/p>
第一列由10個字符組成,其中分為4個部分,拆解如下

文檔類型,其中d表示目錄,l 表示軟連接。當(dāng)為 - 表示是文件,為 c 表示字符設(shè)備文件
接下來的三個部分,3個字符為一組,r-讀,w-寫,x-執(zhí)行
第二個部分 user 部分,是對文檔所有者權(quán)限的設(shè)定,rwx 表示用戶對 xxx 有讀寫執(zhí)行的所有權(quán)
group部分,是文檔所屬用戶組權(quán)限的設(shè)定
other部分是對文檔所有者之外的其他用戶的權(quán)限設(shè)定
第二列表示文檔的連接數(shù),表示有多少文件執(zhí)行一個inode
第三列表示文檔所屬的用戶和用戶組
第四列是文檔的大小
第五列表示最后一次修改的日期
第六列是文檔名稱
這些權(quán)限如何去修改呢
通過chown改變文件和目錄的權(quán)限,所有者包含了用戶和用戶組。
使用方法:chown -R y 用戶名稱 文件 目錄
-R: 進(jìn)行遞歸式的權(quán)限更改,意味著將目錄下所喲肚餓文件,子目錄都更新為指定的用戶組權(quán)限,這個操作需要多多謹(jǐn)慎
如果需要修改訪問的權(quán)限呢?
使用 chmod 來改變文件或目錄的訪問權(quán)限。使用方法有兩種,一種是字母和操作符表達(dá)式的字符設(shè)定法,另一種是包含數(shù)字的數(shù)字設(shè)定法
先來看第一種---字符設(shè)定法
語法:chmod [who] [+ | - | =] [mode] 文件名
下面詳細(xì)說一下各個選項的含義
who表示操作的對象,可以是下面字母中的任何一個
如果是u,則代表用戶,即文件或者目錄的所有者
如果為g,則代表用戶組,即文件或目錄所屬組
如果為o,表示其他用戶,
如果為a,表示所有用戶
操作符有哪些
“+”表示添加某個權(quán)限
“-”表示取消某個權(quán)限
“=”表示賦予給定可執(zhí)行的權(quán)限,其中可以是可讀,可寫,可執(zhí)行
mode表示可以執(zhí)行的權(quán)限,其中可以是r,w,x以及他們的組合
文件名可以是以空格分開的文件列表,支持通配符
案例
修改文件test.log文件,使其所有者具有所有權(quán)限,用戶組和其他用戶具有只讀權(quán)限

數(shù)字設(shè)定法
即上面的r用數(shù)字4代替,w用2代替,x用1代替,所以如果想讓文件的屬主擁有讀寫權(quán)限,可以通過4+2的方式來實現(xiàn),
755:第一個 7代表文件所有者的權(quán)限,通過4+2+1得到。第二個5標(biāo)識文件所屬組的權(quán)限,通過4+0+1實現(xiàn)
舉個例子
修改文件test.log的權(quán)限為644

5 總結(jié)
今天從Linux的安全策略,防火墻到用戶的基本管理和文件的權(quán)限,當(dāng)我們知道怎么用了以后,是不是就需要去了解他是怎么個設(shè)計理念呢,我們下期再見!
