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

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

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

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

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

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

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

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

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

NAT表主要用于網絡地址轉換,再上一個篇也有說過,它包含了PREROUTING、POSTROUTING和OUTPUT鏈

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

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

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

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

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

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

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

4 文件權限
通過 ls 命令就可以查看文件以及目錄的權限信息,如果使用 ls -al則還可以查看隱藏文件
為了更加詳細的了解每一行各個段什么意思,我們取出一行

第一列由10個字符組成,其中分為4個部分,拆解如下

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

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

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