1. 總結openssh服務安全加固和總結openssh免密認證原理,及免認證實現(xiàn)過程。
openssh服務安全加固:
1.使用強密碼策略
2.使用公鑰認證
3.修改SSH默認端口
openssh免密認證原理:
1. 客戶端發(fā)起ssh請求,服務器會把自己的公鑰發(fā)送給用戶
2. 用戶會根據(jù)服務器發(fā)來的公鑰對密碼進行加密
3. 加密后的信息回傳給服務器,服務器用自己的私鑰解密,如果密碼正確,則用戶登錄成功
免認證實現(xiàn)過程:
1. 首先在客戶端生成一對密鑰(ssh-keygen)
2. 并將客戶端的公鑰ssh-copy-id 拷貝到服務端
3. 當客戶端再次發(fā)送一個連接請求,包括ip、用戶名
4. 服務端得到客戶端的請求后,會到authorized_keys中查找,如果有響應的IP和用戶,就會隨機生成一個字符串,例如:magedu
5. 服務端將使用客戶端拷貝過來的公鑰進行加密,然后發(fā)送給客戶端
6. 得到服務端發(fā)來的消息后,客戶端會使用私鑰進行解密,然后將解密后的字符串發(fā)送給服務端
7. 服務端接受到客戶端發(fā)來的字符串后,跟之前的字符串進行對比,如果一致,就允許免密碼登錄
2. 總結sudo配置文件格式,總結相關示例。
授權規(guī)則配置文件:
/etc/sudoers
/etc/sudoers.d
安全編輯授權規(guī)則文件和語法檢查工具
/usr/sbin/visudo
sudoers授權規(guī)則格式:
用戶? ? 登入主機=(代表用戶)命令
user host=(runas)? ?command
范例:
[root@rocky8 ~]# vim /etc/sudoers
root ALL=(ALL) ALL
3. 總結PAM架構及工作原理
PAM架構:
PAM提供了對所有服務進行認證的中央機制,適用于本地登錄,遠程登錄,如:telnet,rlogin,fsh,ftp,點對點協(xié)議PPP,su等應用程序中,系統(tǒng)管理員通過PAM配置文件來制定不同應用程序的不同認證策略;應用程序開發(fā)者通過在服務程序中使用PAM API(pam_xxxx( ))來實現(xiàn)對認證方法的調用;而PAM服務模塊的開發(fā)者則利用PAM SPI來編寫模塊(主要調用函數(shù)pam_sm_xxxx( )供PAM接口庫調用,將不同的認證機制加入到系統(tǒng)中;PAM接口庫(libpam)則讀取配置文件,將應用程序和相應的PAM服務模塊聯(lián)系起來
PAM工作原理:
PAM認證一般遵循這樣的順序:Service(服務)→PAM(配置文件)→pam_*.so
PAM認證首先要確定那一項服務,然后加載相應的PAM的配置文件(位于/etc/pam.d下),最后調用認證文件(位于/lib64/security下)進行安全認證
1.使用者執(zhí)行/usr/bin/passwd 程序,并輸入密碼
2.passwd開始調用PAM模塊,PAM模塊會搜尋passwd程序的PAM相關設置文件,這個設置文件一般是在/etc/pam.d/里邊的與程序同名的文件,即PAM會搜尋/etc/pam.d/passwd此設置文件
3.經由/etc/pam.d/passwd設定文件的數(shù)據(jù),取用PAM所提供的相關模塊來進行驗證
4.將驗證結果回傳給passwd這個程序,而passwd這個程序會根據(jù)PAM回傳的結果決定下一個動作(重新輸入密碼或者通過驗證)
4. 總結PAM配置文件格式,總結相關示例, nologin.so, limits,等模塊的使用。
PAM配置文件格式:
專用配置文件/etc/pam.d/格式
type:指模塊類型,即功能
control :PAM庫該如何處理與該服務相關的PAM模塊的成功或失敗情況,一個關健詞實現(xiàn)
module-path: 用來指明本模塊對應的程序文件的路徑名
Arguments: 用來傳遞給該模塊的參數(shù)
總結相關示例:


5. 實現(xiàn)私有時間服務器
服務端配置:
[root@rocky8 ~]# yum -y install chrony
[root@rocky8 ~]# vim /etc/chrony.conf?

[root@rocky8 ~]# systemctl restart chronyd.service

客戶端配置
[root@rocky8-1 ~]# vim /etc/chrony.conf

[root@rocky8-1 ~]# systemctl restart chronyd.service

6. 總結DNS域名三級結構
1、頂級域名(Top-Level Domain,TLD):頂級域名是一個域名的最高層次,通常表示一個國家、地區(qū)或組織類型。例如,.com表示商業(yè)組織,.org表示非贏利組織,.edu表示教育機構,.cn表示中國等。頂級域名還可以分為兩種類型:國家頂級域名(Country-Code Top-Level Domain,ccTLD)和通用頂級域名(Generic Top-Level Domain,gTLD)。
2、二級域名(Second-Level Domain,SLD):二級域名是緊接在頂級域名后面的域名部分,用于區(qū)分不同的組織或實體。例如,在“.com”頂級域名下,“baidu”就是一個二級域名,“baidu.com”就是一個完整的域名。
3、三級域名(Third-Level Domain):三級域名是緊接在二級域名后面的域名部分,通常用于進一步區(qū)分不同的部門、區(qū)域或主機名。例如,在“baidu.com”二級域名下,“www”可以是一個三級域名,“www.baidu.com”就是一個完整的域名。
7. 總結DNS服務工作原理,涉及遞歸和迭代查詢原理
1、用戶在瀏覽器中輸入域名,如www.baidu.com。
2、瀏覽器向本地DNS服務器發(fā)送DNS查詢請求。
3、如果本地DNS服務器已經緩存了該域名對應的IP地址,則直接返回給瀏覽器。
4、如果本地DNS服務器沒有緩存該域名對應的IP地址,則向根域名服務器發(fā)送遞歸查詢請求。
5、根域名服務器返回給本地DNS服務器該域名對應的頂級域名服務器的IP地址。
6、本地DNS服務器向頂級域名服務器發(fā)送迭代查詢請求。
7、頂級域名服務器返回給本地DNS服務器該域名對應的二級域名服務器的IP地址。
8、本地DNS服務器向二級域名服務器發(fā)送迭代查詢請求。
9、二級域名服務器返回給本地DNS服務器該域名對應的主機名的IP地址。
10、本地DNS服務器將IP地址返回給瀏覽器,并將該域名和IP地址緩存起來。
遞歸查詢? 指DNS服務器在收到用戶發(fā)起的請求時,必須向用戶返回一個準確的查詢結果
迭代查詢? ? 不直接回復查詢結果,而是告訴另一臺DNS服務器地址,用戶這樣依次反復查詢
8. 實現(xiàn)私有DNS, 供本地網絡主機作DNS遞歸查詢。
[root@rocky8 ~]# yum -y install bind
[root@rocky8 ~]# systemctl enable --now named
[root@rocky8 ~]# vim /etc/named.conf

[root@rocky8 ~]# rndc reload

用另一臺服務器做客戶端,填DNS:10.0.0.8驗證結果

[root@rocky8-1 ~]# yum -y install bind-utils
[root@rocky8-1 ~]# dig www.baidu.com

9. 總結DNS服務器類型,解析答案,正反解析域,資源記錄定義。
DNS服務器類型:
主DNS服務器
從DNS服務器
緩存DNS服務器(轉發(fā)器)
解析答案:
肯定答案:存在對應的查詢結果
否定答案:請求的條目不存在等原因導致無法返回結果
權威答案:直接由存有此查詢結果的DNS服務器(權威服務器)返回的答案
非權威答案:由其它非權威服務器返回的查詢答案
正反解析域:
正向:FQDN-->IP
反向:IP-->FQDN
資源記錄定義:
name? ? [TTL]? ? IN? ? rr_type? ? ?value
注意:
1.TTL可從全局繼承
2.使用“@”符號可用于引用當前區(qū)域的域名
3.同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
4.同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義,此僅表示通過多個不同的名字可以找到同一個主機
10. 實現(xiàn)DNS主從同步
主DNS服務器配置:
[root@rocky8 ~]# yum -y install bind
[root@rocky8 ~]# vim /etc/named.conf

[root@rocky8 ~]# vim /etc/named.rfc1912.zones

[root@rocky8 ~]# vim /var/named/wang.org.zone

[root@rocky8 ~]# chmod 640 /var/named/wang.org.zone
[root@rocky8 ~]# chgrp named /var/named/wang.org.zone
[root@rocky8 ~]# ll /var/named/wang.org.zone
-rw-r----- 1 root named 152 Jul 14 07:43 /var/named/wang.org.zone
[root@rocky8 named]# yum -y install bind-utils
[root@rocky8 ~]# cd /var/named/
[root@rocky8 named]# named-checkzone wang.org wang.org.zone
[root@rocky8 named]# rndc reload
從服務器配置:
[root@rocky8-1 ~]# yum -y install bind bind-utils
[root@rocky8-1 ~]# vim /etc/named.conf

[root@rocky8-1 ~]# named-checkconf
[root@rocky8-1 ~]# vim /etc/named.rfc1912.zones?

從服務器會自動從主服務器上把/var/named/wang.org.zone拷貝到從服務器上/var/named/slaves/wang.org.slave.zone上,以下是操作
[root@rocky8 named]# systemctl start named? ? ? ? ? ?主服務器啟動服務
[root@rocky8-1 ~]# systemctl enable --now named? ? ? ? 從服務器上啟動服務

[root@rocky8 ~]# vim /var/named/wang.org.zone

[root@rocky8 ~]# rndc reload



11. 實現(xiàn)DNS子域授權
主域DNS服務器:
[root@rocky8 ~]# yum -y install bind bind-utils
[root@rocky8 ~]# vim /etc/named.conf?

[root@rocky8 ~]# vim /etc/named.rfc1912.zones

[root@rocky8 ~]# vim /var/named/wang.org.zone

[root@rocky8 ~]# chgrp named /var/named/wang.org.zone
[root@rocky8 ~]# systemctl start named
[root@rocky8 ~]# named-checkzone wang.org /var/named/wang.org.zone
實現(xiàn)子域DNS服務器:
[root@rocky8-1 ~]# yum -y install bind bind-utils
[root@rocky8-1 ~]# vim /etc/named.conf

[root@rocky8-1 ~]# vim /etc/named.rfc1912.zones

[root@rocky8-1 ~]# cp -p /var/named/named.localhost /var/named/shanghai.wang.org.zone
[root@rocky8-1 ~]# systemctl start named
客戶端進行測試:
[root@rocky8-2 ~]# yum -y install bind-utils

12. 基于acl實現(xiàn)智能DNS

[root@zhao ~]# yum install bind -y
[root@zhao ~]# vim /etc/named.conf


[root@zhao ~]# vim /etc/named.rfc1912.zones.bj

[root@zhao ~]# vim /etc/named.rfc1912.zones.sh

[root@zhao ~]# vim /etc/named.rfc1912.zones.other

[root@zhao ~]# chgrp named /etc/named.rfc1912.zones.bj
[root@zhao ~]# chgrp named /etc/named.rfc1912.zones.sh
[root@zhao ~]# chgrp named /etc/named.rfc1912.zones.other
[root@zhao ~]# vim /var/named/wang.org.zone.bj

[root@zhao ~]# vim /var/named/wang.org.zone.sh

[root@zhao ~]# vim /var/named/wang.org.zone.other

[root@zhao ~]# chgrp named /var/named/wang.org.zone.bj
[root@zhao ~]# chgrp named /var/named/wang.org.zone.sh
[root@zhao ~]# chgrp named /var/named/wang.org.zone.other
systemctl start named #第一次啟動服務
rndc reload #不是第一次啟動服務
#在web服務器1:10.0.0.8/24實現(xiàn)
yum install httpd
echo www.magedu.org in Other > /var/www/html/index.html
systemctl start httpd
#在web服務器2:10.0.0.7/16
echo www.magedu.org in Beijing > /var/www/html/index.html
systemctl start httpd
#在web服務器3:172.16.0.7/16
yum install httpd
echo www.magedu.org in Shanghai > /var/www/html/index.html
systemctl start httpd
客戶端測試
#分別在三臺主機上訪問
#DNS客戶端1:10.0.0.6/24?實現(xiàn),確保DNS指向10.0.0.8
curl www.magedu.org
www.magedu.org in Beijing
#DNS客戶端2:172.16.0.6/16?實現(xiàn),確保DNS指向172.16.0.8
curl www.magedu.org
www.magedu.org in Shanghai
#DNS客戶端3:10.0.0.8?實現(xiàn),,確保DNS指向127.0.0.1
curl www.magedu.org
www.magedu.org in Other
13. 總結防火墻分類
按保護范圍劃分:
主機防火墻:服務范圍為當前一臺主機
網絡防火墻:服務范圍為防火墻一側的局域網
按實現(xiàn)方式劃分:
硬件防火墻:在專用硬件級別實現(xiàn)部分功能的防火墻;另一個部分功能基于軟件實現(xiàn),如:華為,山石hillstone,天融信,啟明星辰,綠盟,深信服, PaloAlto , fortinet飛塔, Cisco, Checkpoint,NetScreen(2004年被 Juniper 用40億美元收購)等
軟件防火墻:運行于通用硬件平臺之上的防火墻的應用軟件,Windows 防火墻 ISA --> Forefront TMG
按網絡協(xié)議劃分:
網絡層防火墻:OSI模型下四層,又稱為包過濾防火墻
應用層防火墻/代理服務器:proxy 代理網關,OSI模型七層
14. 總結iptable 5表5鏈, 基本使用,擴展模塊。
iptables的五表五鏈是Linux防火墻管理的重要概念,它允許用戶根據(jù)不同的需求定制防火墻規(guī)則。這五張表和五條鏈分別是:
五表:
raw表:確定是否對該數(shù)據(jù)包進行狀態(tài)跟蹤。
mangle表:修改IP數(shù)據(jù)包頭(如TTL值),同時也用于為數(shù)據(jù)包設置標記。
nat表:處理網絡地址轉換,以及修改數(shù)據(jù)包中的源、目標IP地址或端口等。
filter表:過濾數(shù)據(jù),確定是否放行該數(shù)據(jù)包。
security表:需要和SELinux結合使用,內置規(guī)則比較復雜,通常都會被關閉。
五鏈:
INPUT鏈:處理入站數(shù)據(jù)包。
OUTPUT鏈:處理出站數(shù)據(jù)包。
FORWARD鏈:處理轉發(fā)數(shù)據(jù)包。
PREROUTING鏈:在進行路由選擇前處理數(shù)據(jù)包。
POSTROUTING鏈:在進行路由選擇后處理數(shù)據(jù)包。
規(guī)則表與規(guī)則鏈的關系:規(guī)則鏈位于規(guī)則表中,規(guī)則表是規(guī)則鏈的集合。默認情況下,有四個規(guī)則表和五種規(guī)則鏈。規(guī)則表間的優(yōu)先順序依次為raw、mangle、nat、filter。規(guī)則鏈間的匹配順序遵循入站數(shù)據(jù)(PREROUTING、INPUT)、出站數(shù)據(jù)(OUTPUT、POSTROUTING)、轉發(fā)數(shù)據(jù)(PREROUTING、FORWARD、POSTROUTING)的順序。
filter表主要涉及INPUT、FORWARD、OUTPUT三條鏈,是iptables命令默認操縱的表,用于數(shù)據(jù)包過濾功能。
nat表主要涉及PREROUTING、OUTPUT、POSTROUTING三條鏈,用于地址轉換功能,如NAT轉換。
mangle表允許在每條鏈上進行修改操作,如修改報文元數(shù)據(jù)或為數(shù)據(jù)包設置防火墻標記等。
raw表提供快速通道功能,優(yōu)先級最高,符合raw表規(guī)則的數(shù)據(jù)包會跳過一些檢查。
security表需要與SELinux結合使用,通常都會被關閉,除非有特定的安全需求。
通過iptables的這些功能,可以靈活地控制網絡流量,實現(xiàn)訪問控制、端口轉發(fā)、地址轉換等多種網絡安全策略
[root@rocky8 ~]# iptables -t nat -vnL? ? ? -t接表
iptables [-t table] {-A|-C|-D} chain rule-specification? ? ? -A接鏈
擴展模塊分為隱式擴展和顯示擴展
隱式擴展:
iptables 在使用-p選項指明了特定的協(xié)議時,無需再用-m選項指明擴展模塊的擴展機制,不需要手動加載擴展模塊
tcp 協(xié)議的擴展選項
REJECT:--reject-with:icmp-port-unreachable默認
RETURN:返回調用鏈
REDIRECT:端口重定向
LOG:記錄日志,dmesg
MARK:做防火墻標記
DNAT:目標地址轉換
SNAT:源地址轉換
MASQUERADE:地址偽裝
顯示擴展:
顯示擴展即必須使用-m選項指明要調用的擴展模塊名稱,需要手動加載擴展模塊
[-m matchname [per-match-options]]
范例:[root@rocky8 ~]# iptables -A INPUT -s 172.16.0.0/16 -d 172.16.100.10 -p tcp -m multiport --dports 22,80 -j ACCEPT
[root@rocky8 ~]# iptables -F? ? ?清楚規(guī)則(默認清楚filter表規(guī)則)
15. 總結iptables規(guī)則優(yōu)化實踐,規(guī)則保存和恢復。
iptables規(guī)則優(yōu)化實踐
1. 安全放行所有入站和出站的狀態(tài)為ESTABLISHED狀態(tài)連接,建議放在第一條,效率更高
2. 謹慎放行入站的新請求
3. 有特殊目的限制訪問功能,要在放行規(guī)則之前加以拒絕
4. 同類規(guī)則(訪問同一應用,比如:http ),匹配范圍小的放在前面,用于特殊處理
5. 不同類的規(guī)則(訪問不同應用,一個是http,另一個是mysql ),匹配范圍大的放在前面,效率更高
6. 應該將那些可由一條規(guī)則能夠描述的多個規(guī)則合并為一條,減少規(guī)則數(shù)量,提高檢查效率
7. 設置默認策略,建議白名單(只放行特定連接)
iptables -P,不建議,容易出現(xiàn)“自殺現(xiàn)象”
規(guī)則的最后定義規(guī)則做為默認策略,推薦使用,放在最后一條
規(guī)則保存:
[root@rocky8 ~]# mkdir /data/backup
[root@rocky8 ~]# iptables-save > /data/backup/rules.bak
規(guī)則恢復:
[root@rocky8 ~]# iptables-restore < /data/backup/rules.bak?

16. 總結NAT轉換原理, DNAT/SDNAT原理,并自行設計架構實現(xiàn)DNAT/SNAT。
NAT、DNAT、SNAT轉換原理:
NAT: network address translation,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四個鏈
請求報文:修改源/目標IP,由定義如何修改
響應報文:修改源/目標IP,根據(jù)跟蹤機制自動實現(xiàn)
NAT的實現(xiàn)分為下面類型:
SNAT:source NAT ,支持POSTROUTING, INPUT,讓本地網絡中的主機通過某一特定地址訪問外部網絡,實現(xiàn)地址偽裝,請求報文:修改源IP
DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地網絡中的主機上的某服務開放給外部網絡訪問(發(fā)布服務和端口映射),但隱藏真實IP,請求報文:修改目標IP
PNAT: port nat,端口和IP都進行修改
自行設計架構實現(xiàn)SNAT:
啟用路由轉發(fā)功能:
[root@rocky8 ~]# sysctl -a |grep ip_forward
net.ipv4.ip_forward = 0
[root@rocky8 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@rocky8 ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@rocky8 ~]# hostname -I
10.0.0.8 192.168.10.131
[root@lan-host ~]# hostname -I
192.168.10.132
[root@rocky8 ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 10.0.0.8



自行設計架構實現(xiàn)DNAT:
[root@lan-host ~]# yum -y install httpd
[root@lan-host ~]# systemctl enable --now httpd
[root@lan-host ~]# hostname -I > /var/www/html/index.html

[root@rocky8 ~]# iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.132:80


17. 使用REDIRECT將90端口重定向80,并可以訪問到80端口的服務
[root@rocky8 ~]# yum -y install httpd
[root@rocky8 ~]# systemctl enable --now httpd
[root@rocky8 ~]# hostname -I > /var/www/html/index.html
[root@rocky8 ~]# iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 90 -j REDIRECT --to-ports 80

18. firewalld常見區(qū)域總結。
drop區(qū)域:任何進入此區(qū)域的包都會被直接丟棄,沒有任何回應。
block區(qū)域:任何進入此區(qū)域的流量都會被拒絕,并返回一個ICMP錯誤消息。
public區(qū)域:用于公共區(qū)域,僅接受那些被選擇的連接。
external區(qū)域:專門用于路由器等具有獨立外部網絡的設備。
dmz區(qū)域:用于放置受限的內部網絡區(qū)域,如企業(yè)的非安全區(qū)域。
work區(qū)域:用于工作區(qū),可以接受選定的傳入連接。
home區(qū)域:用于家庭網絡,可以接受選定的傳入連接。
internal區(qū)域:用于內部網絡,可以接受選定的傳入連接。
trusted區(qū)域:所有進入此區(qū)域的包都會被接受,沒有任何限制。
19. 通過ntftable來實現(xiàn)暴露本機80/443/ssh服務端口給指定網絡訪問"
