1. SUDO,PAM配置規(guī)范說明
1.1SUDO配置規(guī)范說明
SUDO 允許root管理員讓普通用戶執(zhí)行一些或者全部的root命令,但是在使用SUDO之前需要root在SUDO配置文件里面進行授權(quán)。
授權(quán)規(guī)則文件:
/etc/sudoers sudo自帶的授權(quán)規(guī)范文件
/etc/sudoers.d 自己創(chuàng)建的sudo授權(quán)規(guī)范文件
配置授權(quán)語法:
user MACHINE=(runas)COMMANDS 被授權(quán)的用戶(如果是組需要加%) 在哪臺主機上獲得授權(quán)=(代表用戶) 命令需絕對路徑
1.2 PAM配置規(guī)范說明
PAM 提供了對所有服務(wù)進行認(rèn)證的中央機制,適用于login,遠程登錄(telnet,rlogin,fsh,ftp,點對點協(xié)議(PPP)),su等應(yīng)用程序中。系統(tǒng)管理員通過PAM配置文件來制定不同應(yīng)用程序的不同認(rèn)證策略;應(yīng)用程序開發(fā)者通過在服務(wù)程序中使用PAM API(pam_xxxx( ))來實現(xiàn)對認(rèn)證方法的調(diào)用;而PAM服務(wù)模塊的開發(fā)者則利用PAM SPI來編寫模塊(主要是引出一些函數(shù)pam_sm_xxxx( )供PAM接口庫調(diào)用),將不同的認(rèn)證機制加入到系統(tǒng)中;PAM接口庫(libpam)則讀取配置文件,將應(yīng)用程序和相應(yīng)的PAM服務(wù)模塊聯(lián)系起來。
PAM模塊文件路徑:
/lib64/security/*.so
服務(wù)(應(yīng)用程序)模塊配置文件路徑:
/etc/pam.d/
特定模塊相關(guān)的設(shè)置文件路徑:
/etc/security/
通用配置文件/etc/pam.conf 格式組成:
application type control module-path arguments
專用配置文件/etc/pam.d/格式組成:
type control module-path arguments
application: 服務(wù)名,如:telnet login ftp 等。
type: 指模塊類型即功能。
control:PAM庫該如何處理與該服務(wù)相關(guān)的PAM模塊的成功或失敗的情況,一個關(guān)鍵詞實現(xiàn)。
- required: 一票否決,表示本模塊必須返回成功才能通過認(rèn)證,但是如果該模塊返回失敗,失敗結(jié)果也不會立即通知用戶,而是要等到同一type中的所有模塊全部執(zhí)行完畢,再將失敗結(jié)果返回給應(yīng)用程序,即為必要條件。
- requisite:一票否決,該模塊必須返回成功才能通過驗證,但是一旦該模塊返回失敗,將不再執(zhí)行同一type內(nèi)的任何模塊,而是直接將控制權(quán)返回給應(yīng)用程序,是一個必要條件。
- -sufficient:一票通過,表明本模塊返回成功則通過身份認(rèn)證的要求,不必再執(zhí)行同一TYPE內(nèi)的其他模塊,但如果本模塊返回失敗可忽略,即為充分條件,優(yōu)先于required和requisite
- optional:表明本模塊是可選的,它的成功與否不會對身份認(rèn)證起關(guān)鍵作用,其返回值一般被忽略
- include :調(diào)用其他的配置文件中定義的配置信息。
module-path: 用來指明本模塊對應(yīng)的程序文件的路徑名。
arguments:用來傳遞模塊參數(shù)。
常用的PAM模塊:
pam_onlogin.so 禁止除root以外的所有用戶登錄
pam_limits.so 限制用戶級別可使用的資源限制
pam_google_authenticator 實現(xiàn)SSH登錄的兩次身份驗證
2. chrony搭建私有ntp服務(wù)
時間同步服務(wù)器配置
[root@10_0_0_30 ~]$yum -y install chrony
[root@10_0_0_30 ~]$vim /etc/chrony.conf
[root@10_0_0_30 ~]$cat /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
pool 2.rocky.pool.ntp.org iburst
pool ntp.aliyun.com iburst #加入阿里云時間服務(wù)器
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
allow 0.0.0.0/0 允許同步的網(wǎng)段
# Serve time even if not synchronized to a time source.
local stratum 10 允許在沒有網(wǎng)絡(luò)的情況下同步時間
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
[root@10_0_0_30 ~]$systemctl restart chronyd.service
客戶端配置
[root@rocky8-2 ~]# yum -y install chrony
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.0.0.130 iburst 獲取時間同步的地址
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
local stratum 10 打開允許斷網(wǎng)狀態(tài)同步時間
# Specify file containing keys for NTP authentication.
keyfile /etc/chrony.keys
# Get TAI-UTC offset and leap seconds from the system tz database.
leapsectz right/UTC
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking
[root@rocky8-2 ~]# systemctl restart chronyd.service
[root@rocky8-2 ~]# chronyc sources -v
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| / 'x' = may be in error, '~' = too variable, '?' = unusable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.0.0.130 3 6 17 21 -3406ns[ +77us] +/- 51ms
3. 說明CDN原理
- 用戶向瀏覽器輸入www.a.com這個域名,瀏覽器第一次發(fā)現(xiàn)本地沒有dns緩存,則向網(wǎng)站的DNS服務(wù)器請求;
- 網(wǎng)站的DNS域名解析器設(shè)置CNAME,指向了www.a.tbcdn.com,請求指向了CDN網(wǎng)絡(luò)中的只能DNS負(fù)載均衡系統(tǒng);
- 只能DNS負(fù)載均衡系統(tǒng)解析域名,把對用戶響應(yīng)速度最快的IP節(jié)點返回給用戶;
- 用戶向該IP節(jié)點(CDN服務(wù)器)發(fā)出請求;
- 由于是第一次訪問,CDN服務(wù)器會通過Cache內(nèi)部專用DNS解析得到此域名的原web站點IP,向原站點服務(wù)器發(fā)起請求,并在CDN服務(wù)器上緩存內(nèi)容;
- 請求結(jié)果發(fā)給用戶。
4. 搭建智能DNS,實現(xiàn)不同地域客戶端解析到不同主機
利用view實現(xiàn)只能DNS
- 配置環(huán)境:
[root@130 /var/named]$hostname -I
10.0.0.130 192.168.122.1
- 分別配置上海和北京的配置文件
named.rfc1912.zones.bj
named.rfc1912.zones.sh
[root@130 /etc]$cat named.rfc1912.zones.bj
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file"magedu.org.zone.bj";
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
[root@130 /etc]$cat named.rfc1912.zones.sh
zone "." IN {
type hint;
file "named.ca";
};
zone "magedu.org" {
type master;
file "magedu.org.zone.sh";
};
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
- 配置acl并且綁定view
[root@130 /etc]$cat named.conf
acl beijingnet {
10.0.0.0/24; 北京網(wǎng)段
};
acl shanghainet {
192.168.0.0/24; 上海網(wǎng)段
192.168.122.0/24
};
options {
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { 10.0.0.138; };
forward only;
forwarders { 10.0.0.130; };
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion yes;
dnssec-enable no;
dnssec-validation no;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view beijingview {
match-clients { beijingnet; };
include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview {
match-clients { shanghainet; };
include "/etc/named.rfc1912.zones.sh";
};
include "/etc/named.root.key";
- 配置對應(yīng)上海和北京數(shù)據(jù)庫
[root@130 /var/named]$cat magedu.org.zone.bj
$TTl 1D
@ IN SOA master admin.magedu.org. (20231012 180 10M 1D 6H)
NS master
master A 10.0.0.130
www A 1.1.1.1
[root@130 /var/named]$cat magedu.org.zone.sh
$TTl 1D
@ IN SOA master admin.magedu.org. (20231012 180 10M 1D 6H)
NS master
master A 10.0.0.130
www A 2.2.2.2
- 重新載入配置文件
# 第一次啟動服務(wù)
systemctl start named
# 不是第一次啟動服務(wù)
rndc reload
- 客戶端測試
[root@138 ]# dig www.magedu.rog @10.0.0.138
www.magedu.rog. 86400 IN A 1.1.1.1
[root@test01 ~]# dig www.test.com @
www.magedu.rog. 86400 IN A 2.2.2.2
5. 解釋DNS解析流程

- 本地計算機會檢查瀏覽器緩存中是否有該域名對應(yīng)的已解析IP地址。 如果緩存中有,則解析過程結(jié)束。
- 如果瀏覽器緩存中沒有數(shù)據(jù),瀏覽器會檢查操作系統(tǒng)緩存中是否有該域名對應(yīng)的DNS解析結(jié)果。
- 當(dāng)前兩個過程無法解析時,必須使用我們網(wǎng)絡(luò)配置中的“DNS服務(wù)器地址”。 操作系統(tǒng)會將這個域名發(fā)送到本地的DNS服務(wù)器。
- 如果本地DNS服務(wù)器仍然無法命中,則直接到根DNS服務(wù)器請求解析。
- 根DNS服務(wù)器向本地DNS域名服務(wù)器返回頂級DNS服務(wù)器地址,該服務(wù)器地址為國際頂級域名服務(wù)器,如.com、.cn、.org等,全球大約只有13個。
- 本地DNS服務(wù)器向上一步獲取的頂級DNS服務(wù)器發(fā)送解析請求。
- 接受請求的頂級DNS服務(wù)器查找并返回域名對應(yīng)的Name Server地址。 這個Name Server是我要訪問的網(wǎng)站的域名提供商的服務(wù)器。
- Name Server服務(wù)器會查詢存儲的域名和IP映射關(guān)系表,然后將查詢到的域名和IP地址等信息連同TTL值一起返回給本地DNS服務(wù)器。
- 返回域名對應(yīng)的IP和TTL值。
- 將分析結(jié)果返回到本地計算機。 本地計算機根據(jù)TTL值將其緩存在本地系統(tǒng)緩存中。
6. iptables 5表5鏈解釋
五表
- filter:過濾規(guī)則表,根據(jù)預(yù)定義的規(guī)則過濾符合條件的數(shù)據(jù)包,屬于默認(rèn)表
- nat:地址規(guī)則轉(zhuǎn)換表
- magle:修改數(shù)據(jù)標(biāo)記位規(guī)則表
- raw:關(guān)閉啟動用的鏈接追蹤機制,加快封包穿越防火墻的速度
- security:用于強制訪問MAC網(wǎng)絡(luò)規(guī)則,由selinux實現(xiàn)
優(yōu)先級由高到低的順序
security>raw>mangle>nat>filter
五鏈 - pre_routing:在對數(shù)據(jù)包做路由選擇之前,將應(yīng)用此鏈中的規(guī)則
- input:收到訪問防火墻本機地址的數(shù)據(jù)包時,將應(yīng)用此鏈中的規(guī)則
- output:當(dāng)防火墻本機向外發(fā)送數(shù)據(jù)包時,將應(yīng)用此鏈中的規(guī)則
- forward:當(dāng)收到需要通過防火墻中轉(zhuǎn)發(fā)給其他地址的數(shù)據(jù)包時,將應(yīng)用此鏈中的規(guī)則,注意如何需要實現(xiàn)forward轉(zhuǎn)發(fā)需要開啟Linux內(nèi)核中的ip_forward功能
- post_routing:在對數(shù)據(jù)包做路由選擇之后,將應(yīng)用此鏈中的規(guī)則
表與鏈關(guān)系 - PREROUTING 的規(guī)則可以存在于:raw表,mangle表,nat表
- INPUT 的規(guī)則可以存在于:mangle表,filter表
- FORWARD 的規(guī)則可以存在于:mangle表,filter表
- OUTPUT 的規(guī)則可以存在于:raw表mangle表,nat表,filter表
- POSTROUTING 的規(guī)則可以存在于:mangle表,nat表
7. iptables/firewalld/nftable 實現(xiàn)主機防火墻。5000-6000端口僅192.168.0.0/24網(wǎng)段內(nèi)的主機訪問
iptables
iptables -A INPUT -p tcp --dport 5000:6000 ! -s 192.168.0.0/24 -j REJECT
8. mysql的各發(fā)行版有哪些 ?
- MySQL Community Server(社區(qū)版):該版本完全免費,但是官方不提供技術(shù)支持。
- MySQL Enterprise Server(企業(yè)版):該版本能夠以很高的性價比為企業(yè)提供數(shù)據(jù)倉庫應(yīng)用,支持 ACID 事物處理,提供完整的提交、回滾、崩潰恢復(fù)和行級鎖定功能,但是該版本需要付費使用,官方提供電話技術(shù)支持。
- MariaDB 由MySQL 初創(chuàng)者開發(fā),很大程度上兼容 MySQL,可以很容易的將數(shù)據(jù)從 MySQL 遷移到 MariaDB 上
9. mysql索引的作用
索引是排序的快速查找的特殊數(shù)據(jù)結(jié)構(gòu),定義作為查詢條件的字段上,又稱為鍵KEY,索引通過儲存引起實現(xiàn)
優(yōu)點
- 索引可以降低服務(wù)器需要燒苗的數(shù)據(jù)量,較少IO次數(shù)
- 索引可以幫助服務(wù)器避免排序和使用臨時表
- 索引可以幫助將隨機I/O轉(zhuǎn)為順序I/O
缺點 - 占用額外空間,影響插入速度
10.mysql btree索引的原理
B-tree索引:B-樹是一種多路自平衡的搜索樹(B樹是一顆多路平衡查找樹)
它類似普通的平衡二叉樹,不同的一點是B-樹允許每個節(jié)點有更多的子節(jié)點。B+tree索引:按順序儲存,每一個葉子節(jié)點到根節(jié)點的距離是相同的;左前綴索引,適合查詢范圍類的數(shù)據(jù)
總結(jié)
B-樹的關(guān)鍵詞和記錄放在一起,葉節(jié)點可以看作是外部節(jié)點,不包含任何信息;B+樹的非葉節(jié)點只有關(guān)鍵詞和指向下一個節(jié)點的索引,記錄只放在葉節(jié)點上。
在B-樹中,越靠近根節(jié)點的記錄查找時間越快,只要找到關(guān)鍵字就可以確定記錄的存在;而B+樹中每一個記錄的查找時間基本相同,都需要從根節(jié)點到葉節(jié)點,并且在葉節(jié)點中再比較一下關(guān)鍵字。在這一點上,B-樹的性能似乎比B+樹好,
而在實際應(yīng)用中,B+樹的性能則更好。由于B+樹的非葉節(jié)點不存放實際數(shù)據(jù),因此每一節(jié)點所能容納的元素數(shù)量比B-樹多,樹高比B-樹小,其優(yōu)點是減少了磁盤的訪問次數(shù)。雖然B+樹找到記錄所需的比較次數(shù)比B-樹多,但一次磁盤訪問的時間相當(dāng)于數(shù)百次內(nèi)存比較的時間,所以實際上B+樹的性能可能會更好,而B+樹的葉節(jié)點也可以用指針連接在一起,方便順序遍歷(例如查看一個目錄下的所有文件,一次磁盤訪問的所有數(shù)據(jù)庫等),這也是B+樹的所有記錄系統(tǒng)使用的數(shù)據(jù)庫和文件。
- B+樹的磁盤讀寫代價更低
B+樹的內(nèi)部結(jié)點并沒有指向關(guān)鍵字具體信息的指針。因此其內(nèi)部結(jié)點相對B-樹更小。
B+樹的查詢效率更加穩(wěn)定。
11. mysql安全加固?
- MySQ初始部署完成后使后mysql_secure_linstallation 安全加固腳本
- 設(shè)置數(shù)據(jù)庫root口令
- 禁止root遠程登錄
- 刪除匿名賬號
- 刪除test庫和對test庫的訪問權(quán)限
- 更新授權(quán)表使授權(quán)表修改生效