1. 總結openssh服務安全加固和總結openssh免密認證原理,及免認證實現過程。
1.僅使用SSHv2 協議
2.關閉或者延遲壓縮
Compression no
3.限制身份驗證最大嘗試次數
MaxAuthTries 3
4.禁用root賬戶登入
PermitRootLogin no
5.顯示最後一次登入的日期和時間
PrintLastLog yes #使用者可以意識到未經授權的賬戶登入事件
6.結束空閒的SSH會話
ClientAliveInterval 900 #設定超時間隔(以秒為單位),在此間隔後,如果未從客戶端接收到任何資料,sshd服務端將透過加密的通道傳送訊息請求客戶端回應。預設值為0,表示不會執行該操作
ClientAliveCountMax 0 #設定客戶端探活訊息(上文所述操作)的數量,如果傳送客戶端探活訊息達到此閾值,則sshd服務端將斷開客戶端連線,從而終止會話。
7.指定白名單使用者
AllowUsers user #只允許user使用者ssh登入
8.禁用空密碼
PermitEmptyPasswords no
9.禁用基於受信主機的無密碼登入
IgnoreRhosts yes
10.禁用基於已知主機的訪問
IgnoreUserKnownHosts yes
#在身份驗證時忽略已知主機
11.禁用X11Forwarding
X11Forwarding no
12.使用非常規埠
Port 9212
13.將服務繫結到指定IP
ListenAddress 10.0.0.5
#預設情況下,SSH會監聽本機上配置的所有IP地址,但是你應該指定SSH繫結在特定的IP,最好是在專用VLAN中的地址。
14.保護SSH金鑰
ls -l /etc/ssh/*key
chmod 0600 /etc/ssh/*key
15.保護主機公鑰
ls -l /etc/ssh/*pub
chmod 0644 /etc/ssh/*pub
16.檢查使用者特定的配置檔案
StrictModes yes
#StrictModes設定ssh在接收登入之前是否檢查使用者home目錄和rhosts檔案的許可權和所有權,StrictModes為yes必需保證存放公鑰的資料夾的擁有者與登陸使用者名稱是相同的。
17.防止特權升級
UsePrivilegeSeparation sandbox
18.使用金鑰進行身份驗證
PubkeyAuthentication yes
19.禁用不使用的身份驗證方法(按需選擇)
禁用 GSSAPI 認證
GSSAPIAuthentication no
禁用Kerberos認證
KerberosAuthentication no
禁用口令認證
PasswordAuthentication no
禁用金鑰認證
PubkeyAuthentication no
20.使用符合FIPS 140-2標準的密碼
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
21.使用符合FIPS 140-2標準的MAC
MACs hmac-sha2-256,hmac-sha2-512
22.配置白名單或主機防火牆過濾傳入的SSH連線
使用iptables;Firewalld;UFW過濾SSH連線
2. 總結sudo配置檔案格式,總結相關示例。
user host=(runas) command #基本格式
例子:
root ALL=(ALL) AL
user: 執行命令者的身份
host: 透過哪些主機
(runas):以哪個使用者的身份
command: 執行哪些命令
使用者別名 (User_Alias)
User_Alias ADMINS = a,b
Runas 別名 (Runas_Alias)
#定義使用者可以使用 sudo -u 切換到的目標使用者別名
Runas_Alias WEBADMINS = www-data, nginx
主機別名 (Host_Alias)#
需要提前在hosts中定義,或者寫ip
/etc/hosts
127.0.0.1 localhost
192.168.1.10 web01
192.168.1.11 web02
192.168.1.12 web03
Host_Alias WEBSERVERS = web01, web02, web03
命令別名 (Cmnd_Alias)
Cmnd_Alias SHUTDOWN = /sbin/shutdown, /sbin/reboot
總結:ADMINS WEBSERVERS=(root) SHUTDOWN
#允許ADMINS的使用者 透過WEBSERVERS裡的主機以root許可權的方式允許SHUTDOWN裡的命令
3. 總結PAM架構及工作原理
PAM(模組)
是一個靈活的認證框架,用於在 UNIX 和 Linux 系統中提供可配置的認證機制。PAM 允許系統管理員透過修改配置檔案來改變認證過程,而無需修改應用程式本身。
#模組是linux核心中的一部分,程式只需要透過呼叫模組去使用核心功能
PAM架構:
應用程式、PAM-API、PAM平臺、PAM-SPI、PAM模組、PAM配置
工作原理
應用程式透過api使用PAM平臺去呼叫PAM模組程式。
4. 總結PAM配置檔案格式,總結相關示例, nologin.so, limits,等模組的使用。
PAM配置格式(#如果程式複雜才需要配置檔案)
application type control module-path arguments
application:指服務名,如:telnet、login、ftp等,服務名字“OTHER”代表所有沒有在該檔案中明確
配置的其它服務
type:指模組型別,即功能
control :PAM庫該如何處理與該服務相關的PAM模組的成功或失敗情況,一個關健詞實現
module-path: 用來指明本模組對應的程式檔案的路徑名
Arguments: 用來傳遞給該模組的引數
模組型別
Auth 賬號的認證和授權
Account 帳戶的有效性,與賬號管理相關的非認證類的功能,如:用來限制/允許使用者對某個服務
的訪問時間,限制使用者的位置(例如:root使用者只能從控制檯登入)
Password 使用者修改密碼時密碼複雜度檢查機制等功能
Session 使用者會話期間的控制,如:最多開啟的檔案數,最多的程序數等
-type 表示因為缺失而不能載入的模組將不記錄到系統日誌,對於那些不總是安裝在系統上的模組有
用
control
1.required:模組的成功驗證是必需的。如果驗證失敗,則 PAM 將立即返回失敗,並且不會繼續執行後續模組。如果驗證成功,則繼續執行後續模組。
2.sufficient:如果模組成功驗證,則 PAM 將立即返回成功,並且不會繼續執行後續模組。如果驗證失敗,則繼續執行後續模組。如果所有的 sufficient 模組都失敗,則認證失敗。
3.requisite:類似於 required,但是如果驗證失敗,則 PAM 將立即返回失敗,並且不會繼續執行後續模組。如果驗證成功,則繼續執行後續模組。
4.optional:模組的成功驗證是可選的。即使驗證失敗,PAM 也會繼續執行後續模組。通常與 required 或 sufficient 搭配使用。
5.include:包含另一個 PAM 配置檔案中的配置。這允許在配置中重用其他服務的配置。
module-path
模組檔案所在絕對路徑
**Argument **
debug :該模組應當用syslog( )將除錯資訊寫入到系統日誌檔案中
no_warn :表明該模組不應把警告資訊傳送給應用程式
use_first_pass :該模組不能提示使用者輸入密碼,只能從前一個模組得到輸入密碼
try_first_pass :該模組首先用前一個模組從使用者得到密碼,如果該密碼驗證不透過,再提示使用者
輸入新密碼
use_mapped_pass 該模組不能提示使用者輸入密碼,而是使用對映過的密碼
expose_account 允許該模組顯示使用者的帳號名等資訊,一般只能在安全的環境下使用,因為洩漏
使用者名稱會對安全造成一定程度的威脅
例子:
pam_securetty.so(限制root使用者)
#檢查 /etc/securetty 檔案中的終端與root終端是否一致
auth required pam_securetty.so
#/etc/pam.d/login
#限制 root 使用者只能從指定終端登入
pam_time.so(限制登入時間)
account required pam_time.so
#/etc/pam.d/login
#限制普通使用者登入實時間
pam_nologin.so(普通使用者登入限制)
啟用在pamd下建立nologin即可 普通使用者無法遠端登入
account required pam_nologin.so
#/etc/pam.d/sshd
#普通使用者無法登入。
pan.limits.so(資源限制)
它透過配置檔案 /etc/security/limits.conf 和 /etc/security/limits.d/ 目錄下的檔案,控制使用者程序的資源使用,從而幫助管理員防止資源濫用,維護系統穩定性。
配置檔案格式
<domain> <type> <item> <value>
domain:可以是使用者名稱、使用者組名(前面加 @),或者 *(表示所有使用者)。
type:可以是 soft(軟限制)或 hard(硬限制)。
item:要限制的資源型別。
value:限制值。
例子:
# 限制所有使用者最大開啟檔案數為 1024
* - nofile 1024
# 限制使用者 zz 的最大程序數為 100
zz - nproc 100
# 限制所有使用者的最大虛擬記憶體大小為 500000 KB
* soft as 500000
5. 實現私有時間伺服器
yum install chrony #安裝chrony
allow 0.0.0.0/0 #設定誰都可以同步
local stratum 10 #允許沒有外網也可以同步
#在自定義主機安裝chrony,在/etc/chrony.conf做以上配置
server 192.168.1.130 iburst #在其他機上新增自定義NTP伺服器的IP地址
chronyc sources #時間同步
#安裝ntp也可,按照安裝的時間同步自行調整
6. 總結DNS域名三級結構
域名系統的三級結構是指域名的層次化結構,從根域名(根層)到頂級域名(TLD),再到次級域名(SLD),最後到子域名。
假設有一個完整的域名 www.baidu.com:
根域名:``
頂級域名:com
次級域名:example
主機名(主機名是子域名的一個特例):www
7. 總結DNS服務工作原理,涉及遞迴和迭代查詢原理
DNS查詢
主機透過根伺服器或本地dns伺服器去尋找域名,而每個根伺服器地址背後都有多個伺服器節點在全球不同地點執行。
遞迴查詢:當一個客戶端向 DNS 伺服器請求解析一個域名時,如果這個 DNS 伺服器沒有快取結果,
它會代表客戶端向其他 DNS 伺服器進行查詢,直到獲取到結果或者確定無法解析。在這個過程中,客戶端只需要傳送一次請求,然後等待最終結果1。
迭代查詢:在這種查詢中,DNS 伺服器不會代替客戶端進行查詢。相反,如果 DNS 伺服器沒有快取結果,
它會告訴客戶端下一個可以查詢的 DNS 伺服器的地址。客戶端隨後會向這個新的 DNS 伺服器傳送查詢請求。這個過程會重複進行,直到找到答案或者所有路徑都已嘗試過。
簡單來說,遞迴查詢是一種端到端的查詢,客戶端發出請求後,由 DNS 伺服器負責整個查詢過程。而迭代查詢則需要客戶端參與多次查詢,每次都是向不同的 DNS 伺服器請求資訊,直到找到最終結果。在實際應用中,這兩種查詢方法可能會結合使用。
8. 實現私有DNS, 供本地網路主機作DNS遞迴查詢。
yum install named
#還需要配置named.conf 和配置域名解析
9. 總結DNS伺服器型別,解析答案,正反解析域,資源記錄定義。
DNS伺服器
1.根DNS伺服器
位於DNS層級的頂端,儲存指向頂級域(TLD)伺服器的指標。
共有13組根伺服器。
2.頂級域DNS伺服器
管理頂級域(如 .com、.org、.net 等)的DNS伺服器。
根伺服器將請求轉發到TLD伺服器,TLD伺服器再將請求轉發到權威DNS伺服器
3.權威DNS伺服器
儲存域名dns記錄
當查詢到達權威伺服器時,它直接返回域名的IP地址或其他資源記錄。
4.遞迴DNS伺服器
接收客戶端的DNS查詢,並負責找到最終的IP地址。
如果自己沒有記錄,它會依次查詢根DNS、TLD DNS和權威DNS伺服器
5.快取DNS伺服器
儲存主機最近查詢過的DNS記錄,減少查詢時間和網路負載
DNS解析答案
肯定 #直接返回域名的ip和資源記錄
否定 #未找到或查詢域名不存在
權威 #由權威dns伺服器返回
非權威 #由快取dns伺服器返回
正向解析和反向解析域
正向解析域:將域名轉換為IP地址
反向解析域:將ip地址轉為域名
資源記錄定義
A記錄:將域名對映到IPv4地址。
AAAA記錄:將域名對映到IPv6地址。
CNAME記錄:為一個域名設定別名。
MX記錄:指定接收電子郵件的郵件伺服器。
NS記錄:指定管理該域的權威DNS伺服器。
PTR記錄:用於反向DNS查詢,將IP地址對映到域名。
TXT記錄:儲存任意文字資料,常用於驗證和描述性資訊。
SRV記錄 :定位提供特定服務的伺服器。
10. 實現DNS主從同步
/etc/named.rfc1912.zones檔案
主dns伺服器:
zone "zz.org"{
type master;
file "zzchongxin.org.zone";
}
副dns伺服器:
zone "zz.org"{
type slave;
masters {192.168.1.130}
file "slaves/zzchongxin.org.zone";
#不需要將主dns伺服器複製到副dns伺服器slave裡邊,會自動cp;從伺服器檔案放在slaves裡
}
資料檔案zzchongxin.org.zone
$TTL 86400 #儲存時間
@ IN SOA dns admin.zz.com. (202405111458 10M 5M 1D 1W)
NS dns1
NS dns2
dns1 A 192.168.1.130
dns2 A 192.168.1.128
www A 192.168.1.129
#注意需要將檔案屬性修改
chmod 640 zz.org.zone
chgreo named zz.org.zone #更改許可權屬性讓其他人無法訪問,只有root修改和named讀取
11. 實現DNS子域授權
/etc/named.rfc1912.zones檔案
#在原基礎上將子域都交給另外一個dns伺服器解析;只要使用者在主伺服器查詢,則轉發到子域的dns伺服器
gx NS gxdns
gxdns A 192,168,10.11
在192.168.10.111上建立dns解析,按需配置,只有上述兩行需要在主域新增
12. 基於acl實現智慧DNS
#複製兩份/etc/named.rfc1912.zones,分別命名pro和test
zone "zz.org"{
type master;
file "zzchongxin.org.zone.test";
}
zone "zz.org"{
type master;
file "zzchongxin.org.zone.pro";
}
#複製兩份資料庫分別命名為pro和test
$TTL 86400 #儲存時間
@ IN SOA dns admin.zz.com. (202405111458 10M 5M 1D 1W)
NS dns1
dns1 A 192.168.1.130
www A 192.168.1.129
################################################################
$TTL 86400 #儲存時間
@ IN SOA dns admin.zz.com. (202405111458 10M 5M 1D 1W)
NS dns1
dns1 A 192.168.1.130
www A 192.168.10.111
acl test_net {
10.1.1.0/24
192.168.10.0/24
}
acl pro_net{
11.1.1.0/24
196.168.1.0/24
}
view tset_view {
match-clients {tset_net;};
include "/etc/named.rfc1912.zones.test"
}#新增了view 則所有區域要放在view裡
view pronet_view {
match-clients {pro_net;};
include "/etc/named.rfc1912.zones.pro"
}
13. 總結防火牆分類
按保護範圍劃分:
主機防火牆:服務範圍為當前一臺主機
網路防火牆:服務範圍為防火牆一側的區域網
按實現方式劃分:
硬體防火牆:在專用硬體級別實現部分功能的防火牆;另一個部分功能基於軟體實現,如:華為,
山石hillstone,天融信,啟明星辰,綠盟,深信服, PaloAlto , fortinet飛塔, Cisco, Checkpoint,
NetScreen(2004年被 Juniper 用40億美元收購)等
軟體防火牆:執行於通用硬體平臺之上的防火牆的應用軟體,Windows 防火牆 ISA --> Forefront
TMG
按網路協議劃分:
網路層防火牆:OSI模型下四層,又稱為包過濾防火牆
應用層防火牆/代理伺服器:proxy 代理閘道器,OSI模型七層
應用層防火牆
Netfilter(後續linux防火牆都由它延申)
Netfilter 是 Linux 核心中的一個框架,用於操作網路資料包
1.IPTables:
IPTables 是基於 Netfilter 的命令列工具,用於設定、維護和檢查 IPv4 和 IPv6 資料包過濾規則。
2.Nftables:
Nftables 是 Netfilter 專案的繼任者,旨在取代 IPTables、IP6Tables、ARPTables 和 EBTables。
Nftables 提供一個統一的框架來進行資料包過濾、網路地址轉換等。
3.Firewalld:
Firewalld 是一個動態管理防火牆工具。
提供了更為簡單和靈活的防火牆管理方式,支援動態更新而無需重新載入防火牆規則。
4.UFW
UFW 是 Ubuntu 發行版中預設的防火牆工具,設計簡潔易用。
主要用於簡化 IPTables 規則的管理
14. 總結iptable 5表5鏈, 基本使用,擴充套件模組。
五表:
filter:過濾規則表,根據預定義的規則過濾符合條件的資料包,預設表
nat:network address translation 地址轉換規則表
mangle:修改資料標記位規則表
raw:關閉啟用的連線跟蹤機制,加快封包穿越防火牆速度
security:用於強制訪問控制(MAC)網路規則,由Linux安全模組(如SELinux)實現
五鏈:
INPUT鏈:處理進入本機的資料包。
OUTPUT鏈:處理從本機發出的資料包。
FORWARD鏈:處理需要本機轉發的資料包(即本機作為路由器時)。
PREROUTING鏈:在進行路由選擇之前修改資料包,如DNAT(Destination NAT,目的網路地址轉換)。
POSTROUTING鏈:在進行路由選擇之後修改資料包,如SNAT(Source NAT,源網路地址轉換)。
例子:
iptables -A INPUT -s 10.0.0.1 -j REJECT #拒絕來自10.0.0.1的包
擴充套件模組
隱式擴充套件(不需要寫模組而是選項)
tcp 協議的擴充套件選項
[!] --source-port, --sport port[:port]:匹配報文源埠,可為埠連續範圍
[!] --destination-port,--dport port[:port]:匹配報文目標埠,可為連續範圍
[!] --tcp-flags mask comp
mask 需檢查的標誌位列表,用,分隔 , 例如 SYN,ACK,FIN,RST
comp 在mask列表中必須為1的標誌位列表,無指定則必須為0,用,分隔tcp協議的擴充套件選項
例子:
--tcp-flags SYN,ACK,FIN,RST SYN #表示要檢查的標誌位為SYN,ACK,FIN,RST四個,其中
SYN必須為1,餘下的必須為0,第一次握手
--tcp-flags SYN,ACK,FIN,RST SYN,ACK #第二次握手
udp 協議的擴充套件選項
[!] --source-port, --sport port[:port]:匹配報文的源埠或埠範圍
[!] --destination-port,--dport port[:port]:匹配報文的目標埠或埠範圍
**icmp擴充套件 **
[!] --icmp-type {type[/code]|typename}
type/code
0/0 echo-reply icmp應答
8/0 echo-request icmp請求
顯示擴充套件
multiport擴充套件
多埠號
例子:
iptables -R INPUT 1 -p tcp -m multiport --dports 22,80 -j ACCEPT
iprange擴充套件
ip範圍
例子:
iptables -A INPUT -m iprange --src-range 10.0.0.6-10.0.0.10 -j ACCEPT
mac擴充套件
mac地址(不需要目標地址,因為目標不是自己則拋棄)
例子:
iptables -A INPUT -s 172.16.0.100 -m mac --mac-source 00:50:56:12:34:56 -j ACCEPT
string擴充套件
字串匹配
--algo {bm|kmp} 字串匹配檢測演算法
bm:Boyer-Moore
kmp:Knuth-Pratt-Morris
--from offset 開始偏移
--to offset 結束偏移
[!] --string pattern 要檢測的字串模式
[!] --hex-string pattern 要檢測字串模式,16進位制格式
例子:
iptables -A OUTPUT -p tcp --sport 80 -m string --algo kmp --from 62 --string "google" -j REJECT #出去帶有google拒絕
time擴充套件
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
--timestart hh:mm[:ss] 時間
--timestop hh:mm[:ss]
[!] --monthdays day[,day...] 每個月的幾號
[!] --weekdays day[,day...] 星期幾,1 – 7 分別表示星期一到星期日
--kerneltz:核心時區(當地時間),不建議使用,CentOS 7版本以上系統預設為 UTC
注意: centos6 不支援kerneltz ,--localtz指定本地時區(預設)
connlimit擴充套件
連線數
--connlimit-upto N #連線的數量小於等於N時匹配
--connlimit-above N #連線的數量大於N時匹配
例子:
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 2 -j REJECT
limit擴充套件
報文控制(比如限制能接收多少個包)
例子:
iptables -I INPUT -d 172.16.100.10 -p icmp --icmp-type 8 -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
state擴充套件
/proc/net/nf_conntrack
根據狀態匹配
NEW:新發出請求;連線追蹤資訊庫中不存在此連線的相關資訊條目,因此,將其識別為第一次發
出的請求
ESTABLISHED:NEW狀態之後,連線追蹤資訊庫中為其建立的條目失效之前期間內所進行的通訊
狀態
RELATED:新發起的但與已有連線相關聯的連線,如:ftp協議中的資料連線與命令連線之間的關
系
INVALID:無效的連線,如flag標記不正確
UNTRACKED:未進行追蹤的連線,如:raw表中關閉追蹤
例子:
jiptables -A INPUT -m state --state ESTABLISHED -J ACCEPT
iptables -A INPUT -m state --state NEW -J REJECT
#先將所以使用者都可以進入,然後拒絕新使用者
15. 總結iptables規則最佳化實踐,規則儲存和恢復。
最佳化:
1.優先放行已建立連線
#在規則鏈的開頭,放行所有狀態為 ESTABLISHED 的入站和出站連線,提高效率。
2.謹慎放行新入站請求
3.限制特殊目的的訪問
#在放行規則之前,新增拒絕規則以限制特定訪問
4.特定規則放在前面
#同類規則中,匹配範圍小的規則(如特定 IP)放在前面。
5.不同類規則中匹配範圍大的放前面
#對不同類規則,匹配範圍大的規則放在前面。
6.合併相似規則
#將多個可以用一條規則描述的規則合併,減少規則數量。
7.設定預設策略為白名單方式
#透過在規則鏈最後設定預設策略為白名單方式,僅放行特定連線。
規則儲存
sudo iptables-save > /etc/iptables/ruules_1
規則恢復
cento6
規則覆蓋儲存至/etc/sysconfig/iptables檔案中
cento7及以上
iptables-restore < /etc/iptables/ruules_1
16. 總結NAT轉換原理, DNAT/SDNAT原理,並自行設計架構實現DNAT/SNAT。
NAT轉換原理:
簡單的說同過DNAT和SNAT的應用去轉換公網和內網的訪問,不然它們之間連線,而是透過NAT防火牆去轉發。公網訪問只能訪問NAT防火牆無法得知確切的內網地址,而內網需要再NAT防火牆透過NAT防火牆的ip地址去訪問公網。
DNAT/SNAT
根據匹配規則來修改資料包的ip地址
DNAT:公網經過NAT防火牆,如果資料包匹配 DNAT 規則,防火牆或路由器將資料包的目標地址修改為內部伺服器的私有 IP 地址。
SNAT:內網訪問外網經過NAT防火牆,如果資料包匹配 SNAT 規則,防火牆或路由器將資料包的源地址修改為公共 IP 地址。
#注意: 需要開啟 ip_forward
框架
NAT防火牆:
192.168.1.130(內網)
192.168.10.111(外網)
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #開啟轉發核心引數
sysctl -p
/etc/sysconfig/network-scripts/ifcfg-xxxx
eth0
DEVICE=eht0
BOOTPROTO=dhcp
OMBOOT=yes #虛擬機器的網路設為192.168.1.0/24
eth1
NAME=eth1
DEVICE=eht1
BOOTPROTO=static
IPADDR=192.168.10.111
PREFIX=24
OMBOOT=yes
nmcli connection reload #更新ip配置
sudo nmcli connection up eth0 #如果上述無法成功則使用這個
nmcli connection show #檢視現有連線
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j SNAT --to-source 192.168.10.111 #設定SNAT轉發 除了內網其他都轉發
iptables -t nat -A PREROUTING -d 192.168.10.111 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.128:80 #蛇者DNAT,將內網ip對映到NAT埠
ip addr show eth0 #驗證
ip route show #驗證
外網機
192.168.10.100/24
#設為僅主機
etc/netplan(ubnutuu)
network:
ethernets:
addresses:
- 192.168.10.100/24
ens33:
#dhcp4: true
version: 2
內網機
192.168.1.131 1機
192.168.1.128 2機
eth0
DEVICE=eht0
BOOTPROTO=dhcp
GETWAY=192.168.1.130
OMBOOT=yes #虛擬機器的網路設為192.168.1.0/24
結果:
SNAT
DNAT
17. 使用REDIRECT將90埠重定向80,並可以訪問到80埠的服務
iptables -t nat -A PREROUTING -p tcp --dport 90 -j REDIRECT --to-port 80
18. firewalld常見區域總結。
firewalld 預設有 9 個 zone,預設的 zone 為 public,zone 可以理解為 firewalld 的單位、規則集。
drop(丟棄)
所有傳入的網路資料包都被丟棄,不會回應任何請求。
只有出站連線被允許。
block(限制)
類似於 drop 區域,但會向傳入請求傳送拒絕訊息。
適用於不希望與網路通訊,但希望對方知道請求被拒絕的情況。
public(公共)
允許有限的傳入連線(例如,SSH),大多數服務被拒絕。
external(外部)
適用於在防火牆後使用路由(如 NAT)的外部網路。
允許有限的傳入連線,適合用作閘道器的外部介面。
dmz(非軍事區)
允許對特定服務的訪問,例如 Web 伺服器。
work(工作區)
拒絕除和傳出流量相關的,以及ssh,ipp-client,dhcpv6-client預定義服務之外的其它所有傳入流量
home(家庭)
預設信任較多,允許大多數服務,適用於裝置較多的家庭網路。
internal(內部)
適用於受信任的內部網路。
trusted(信任)
所有網路連線都被信任,允許所有流量進出。
19. 透過ntftable來實現暴露本機80/443/ssh服務埠給指定網路訪問
nft add table inet filter #建表
nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }
#在 inet 表中建立一個 filter 鏈,掛鉤在輸入位置,優先順序為 0,預設策略為 drop
規則:
nft add rule inet filter input iif lo accept
#允許本地流量
nft add rule inet filter input ct state established,related accept
#允許已經建立的連線
nft add rule inet filter input ip saddr 192.168.1.0/24 tcp dport { 80, 443, 22 } accept
#允許來自特定網路的 HTTP (80), HTTPS (443) 和 SSH (22) 流量
nft list table inet filter #檢視inet表規則