win7ca伺服器搭建
㈠ CA證書與DHCP服務
1、創建私有CA並進行證書申請。
1 :創建 CA 私鑰
$ openssl genrsa -des3 -out ca.key 4096
2 :生成 CA 的自簽名證書,其實 CA 證書就是一個自簽名證書
$ openssl req -new -x509 -days 365 -key ca.key -outca.crt
3 :生成需要頒發證書的私鑰
$ openssl genrsa -des3 -out server.key 4096
4 :生成要頒發證書的證書簽名請求
Ps:證書簽名請求當中的 Common Name 必須區別於 CA 的證書裡面的 Common
Name
$ openssl req -new -key server.key -out server.csr
5 :創建一個ext文件,內容如下
keyUsage = nonRepudiation, digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName=@SubjectAlternativeName
[ SubjectAlternativeName ]
DNS.1=abc.com
DNS.2=*.abc.com
6 :用 2 創建的 CA 證書給 4 生成的 簽名請求 進行簽名
$ openssl x509 -req -days 365 -extfile http.ext -inserver.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
7 :最終會得到一下幾個文件
ca.crt: 這個是ca證書,客戶端信任該證書意味著會信任該證書頒發出去的所有證書
ca.key: ca證書的密鑰
server.key: 伺服器密鑰,需要配置的
server.csr: 證書簽名請求,通常是交給CA機構,這里我們就自己解決了
server.crt: 伺服器證書,需要配置的
2、總結ssh常用參數、用法
ssh命令是ssh客戶端,允許實現對遠程系統經驗證地加密安全訪問。ssh客戶端配置文件是:/etc/ssh/ssh_config
ssh
命令配合的常見選項:
-p port
:遠程伺服器監聽的埠
ssh 192.168.1.8 -p 2222
-b
指定連接的源IP
ssh 192.168.1.8 -p 2222 -b 192.168.1.88
-v
調試模式
ssh 192.168.1.8 -p 2222 -v
-C
壓縮方式
-X
支持x11轉發支持將遠程linux主機上的圖形工具在當前設備使用
-t
強制偽tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2 ssh
remoteserver3
-o option
如:-oStrictHostKeyChecking=no
-i
指定私鑰文件路徑,實現基於key驗證,默認使用文件:~/.ssh/id_dsa,
~/.ssh/id_ecdsa,/.ssh/id_ed25519
,/.ssh/id_rsa等
3、總結sshd服務常用參數。伺服器端的配置文件: /etc/ssh/sshd_config
常用參數:
Port #
埠號
ListenAddress ipLoginGraceTime 2m #
寬限期
PermitRootLogin yes #
默認ubuntu不允許root遠程ssh登錄
StrictModes yes #
檢查.ssh/文件的所有者,許可權等
MaxAuthTries 6
MaxSessions 10 #
同一個連接最大會話
PubkeyAuthentication yes #
基於key驗證
PermitEmptyPasswords no #
空密碼連接
PasswordAuthentication yes #
基於用戶名和密碼連接
GatewayPorts no
ClientAliveInterval 10 #
單位:秒
ClientAliveCountMax 3 #
默認3
UseDNS yes #
提高速度可改為no
GSSAPIAuthentication yes #
提高速度可改為no
MaxStartups #
未認證連接最大值,默認值10
Banner /path/file
以下可以限制可登錄用戶的辦法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
ssh
服務的最佳實踐建議使用非默認埠禁止使用protocol version 1
限制可登錄用戶設定空閑會話超時時長利用防火牆設置ssh訪問策略僅監聽特定的IP地址基於口令認證時,使用強密碼策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom| head -c 12|
xargs
使用基於密鑰的認證禁止使用空密碼禁止root用戶直接登錄限制ssh的訪問頻度和並發在線數經常分析日誌
4、搭建dhcp服務,實現ip地址申請分發
一、配置DHCP伺服器
1、安裝DHCP伺服器軟體
[root@centos01 ~]# mount /dev/cdrom /mnt/<!--掛載操作系統光碟-->
mount: /dev/sr0 防寫,將以只讀方式掛載
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*<!--刪除系統自動yum源-->
[root@centos01 ~]# yum -y install dhcp<!--安裝DHCP服務 -->
2、建立主配置文件dhcpd.conf
[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf<!--編輯主配置文件-->
:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example<!--讀取默認配置文件-->
ddns-update-style none;<!--禁用DNS動態更新-->
option domain-name "benet.com";<!--指定默認搜索域-->
option domain-name-servers 202.106.0.10, 202.106.0.20;
<!--指定DNS伺服器地址-->
default-lease-time 600;<!--默認租約時間-->
max-lease-time 7200;<!--最大租約時間-->
1)/etc/dhcp/dhcpd.conf文件的配置構成
在主配置文件dhcpd.conf中,可以使用聲明、參數、選項這三種類型的配置,各自的作用和表現形式如下所述:
聲明:用來描述dhcpd伺服器中對網路布局的劃分,是網路設置的邏輯范圍。常見的聲明是subnet、host,其中subnet聲明用來約束一個網段。host聲明用來約束一台特定主機。
參數:由配置關鍵字和對應的值組成,總是以「;」(分號)結束,一般位於指定的聲明範圍之內,用來設置所在范圍的運行特性(如默認租約時間、最大租約時間等)。
選項:由「option」引導,後面跟具體的配置關鍵字和對應的值,也是以「;」結束,用於指定分配給客戶機的各種地址參數(如默認網關地址、子網掩碼、DNS伺服器地址等)。
2)確定dhcpd服務的全局配置
為了使配置文件的結構更加清晰、全局配置通常會放在配置文件dhcod.conf的開頭部分,可以是配置參數,也可以是配置選項。常用的全局配置參數和選項如下所述:
ddns-update-style:動態DNS更新模式。用來設置與DHCP服務相關聯的DNS數據動態更新模式。在實際的DHCP應用中很少用到該參數。將值設為「none」即可。
default-lease-time:默認租約時間。單位為秒,表示客戶端可以從DHCP伺服器租用某個IP地址的默認時間。
max-lease-time:最大租約時間。單位為秒,表示允許DHCP客戶端請求的最大租約時間,當客戶端未請求明確的租約時間時,伺服器將採用默認租約時間。
option domain-name:默認搜索區域。未客戶機指定解析主機名時的默認搜索域,該配置選項將體現在客戶機的/etc/resolv.conf配置文件中,如「search benet.com」。
option domain-name-servers:DNS伺服器地址。為客戶端指定解析域名時使用的DNS伺服器地址,該配置選項同樣將體現在客戶機的/etc/resolv.conf配置文件中,如「nameserver 202.106.0.20」。需要設置多個DNS伺服器地址時,以逗號進行分隔。
3)確定subnet網段聲明
一台DHCP伺服器可以為多個網段提供服務,因此subnet網段聲明必須有而且可以有多個。例如,若要DHCP伺服器為192.168.100.0/24網段提供服務,用於自動分配的IP地址范圍為192.168.100。100~192.168.100.200,為客戶機指定默認網關地址為192.168.100.254,則ke可以修改dhcpd.conf配置文件,參考以下內容調整subnet網段聲明:
[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf<!--編輯主配置文件-->
subnet 192.168.100.0 netmask 255.255.255.0 {<!--聲明網段地址-->
range 192.168.100.100 192.168.100.200;<!--設置地址池,可以有多個-->
option routers 192.168.100.254;<!--指定默認網關地址-->
}
4)確定host主機聲明
host聲明用於設置單個主機的網路屬性,通常用於為網路列印機或個別伺服器分配固定的IP地址(保留地址),這些主機的共同特點是要求每次獲取的IP地址相同,以確保服務的穩定性。
host聲明通過host關鍵字指定需要使用保留地址的客戶機名稱,並使用「hardware ethernet」參數指定該主機的MAC地址,使用「fixed-address」參數指定保留給該主機的IP地址。例如,若要為列印機prtsvr(MAC地址為00:0C:29:0D:BA:6B)分配固定的IP地址192.168.100.101,可以修改dhcpd.conf配置文件,參考以下內容在網段聲明內添加host主機聲明。
C:\Users\Administrator>getmac
物理地址 傳輸名稱
=================== =======================================================
00-0C-29-0D-BA-6B \Device\Tcpip_{92E3F48B-40F0-4A0D-9604-6386AAAE3233}<!--客戶端獲取MAC地址-->
[root@centos01 ~]# vim /etc/dhcp/dhcpd.conf
host win7 {
hardware ethernet 00:0C:29:0D:BA:6B;<!--客戶機的MAC地址-->
fixed-address 192.168.100.101;<!--分配給客戶機的IP地址-->
}
3、啟動dhcpd服務
在啟動dhcpd服務之前,應確認提供DHCP伺服器的網路介面具有靜態指定的固定IP地址,並且至少有一個網路介面的IP地址與DHCP伺服器中的一個subnet網段相對應,否則將無法正常啟動dhcpd服務。例如,DHCP伺服器的IP地址為192.168.100.10,用於為網段192。168.100.0/24內的其他客戶機提供自動分配地址服務。
安裝dhcp軟體包以後,對應的系統服務腳本位於/usr/lib/systemd/system/dhcpd.service,可以使用systemd服務進行控制。例如,執行以下操作可以啟動dhcpd服務,並檢查UDP的67埠是否在監聽,以確認DHCP伺服器是否正常。
[root@centos01 ~]# systemctl start dhcpd<!--啟動dhcp服務-->
[root@centos01 ~]# systemctl enable dhcpd<!--設置服務開機自動啟動-->
[root@centos01 ~]# netstat -anptu | grep 67<!--監聽DHCP服務埠號-->
udp 0 0 0.0.0.0:67 0.0.0.0:* 2102/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 1064/dnsmasq
注意:需要關閉、重啟dhcpd服務時,只要將上述操作命令中的「start」改為「stop」或「restart」即可。
二、使用DHCP客戶端
1、windows客戶端
ipconfig /renew<!--可以為主機重新獲取新的IP地址-->
ipconfig /release<!--釋放IP地址-->
tracert IP地址<!--可以測試從當前主機到目的主機經過的網路節點-->
route print<!--查看路由表-->
2、Linux客戶端
在Linux客戶機中可以設置使用DHCP的方式獲取地址。只需要編輯對應網卡的配置文件,修改或添加「BOOTPROTO=dhcp」配置行,並重新載入配置文件或者重新啟動network服務即可。例如,執行以下操作可修改網卡配置文件,並重新載入配置以通過DHCP方式自動獲取地址:
[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=ens32
DEVICE=ens32
ONBOOT=yes
[root@centos02 ~]# ifdown ens32 ; ifup ens32
[root@centos02 ~]# systemctl restart network
在Linux客戶機中,還可以使用dhclient工具來測試DHCP伺服器。若直接執行「dhclient」命令,則dhclient將嘗試為除回環介面lo以外的所有網路介面通過DHCP方式申請新的地址,然後自動轉入後台繼續運行。當然,測試時可以指定一個具體的網路介面,並結合「-d」選項使其在前台運行,測試完畢後按Ctrl+C組合鍵終止。例如,執行「dhclient -d ens32」命令後,可以為網卡ens32自動獲取新的IP地址,並顯示獲取過程。
[root@centos02 ~]# dhclient -d ens32
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens32/00:0c:29:97:5c:9f
Sending on LPF/ens32/00:0c:29:97:5c:9f
Sending on Socket/fallback
DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 4 (xid=0x5364e17f)
DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 6 (xid=0x5364e17f)
DHCPDISCOVER on ens32 to 255.255.255.255 port 67 interval 14 (xid=0x5364e17f)<!--DHCP發現-->
DHCPREQUEST on ens32 to 255.255.255.255 port 67 (xid=0x5364e17f)<!--DHCP請求-->
DHCPOFFER from 192.168.100.10<!--DHCP提供-->
DHCPACK from 192.168.100.10 (xid=0x5364e17f)<!--DHCP確認-->
bound to 192.168.100.102 -- renewal in 229 seconds.
............<!--按Ctrl+C組合鍵終止-->
客戶端需要通過dhclient命令釋放獲取的IP租約時,可以結合「-r」選項。例如,執行以下的「dhclient -r ens32」將會釋放之前為網卡ens32獲取的IP租約。此時再通過執行「ifconfig ens32」命令就看不到分配的IP地址了。
[root@centos02 ~]# dhclient -r ens32
㈡ 如何搭建一套Azure AD與ADFS集成身份的環境
1. 一個公網IP地址,這個公網IP地址是需要發布ADFS服務,從而在從Azure
AD重定向到ADFS服務時能找到。實際環境中,可以使用ADFS Proxy或者Windows Application
Proxy,或者其他反向代理將ADFS發布出來。測試環境中,我們會Azure的虛擬機,因為Azure虛擬機所在的Cloud
Service提供了一個公網地址。
2. 一個公網證書,這是客戶端通過https的ADFS服務時需要的證書,測試環境中我們就不適用公網證書了,使用自建的CA伺服器,缺點是客戶端訪問會報證書錯誤,或者得提前在客戶端安裝證書,但這不影響實際功能使用。
3. DC
4. ADFS
5. 公網域名
以下測試環境中需要使用Azure,至少需要一個Azure訂閱,具體步驟如下
1. 首先登陸Azure的門戶,在網路中創建一個虛擬網路
2. 創建完成後,我們創建2個Server 2012 r2 虛擬機,一台為DC,一台為ADFS。在虛擬機的設置里,網路選擇我們剛剛創建的CorpNet,針對ADFS,我們需要在埠上把HTTPS和HTTP都打開。
3. 在創建過程中,我們先下載一下Azure的PowerShell組件,我們需要為這兩個虛擬機固定一下IP地址。
註:Azure Powershell是需要.net framework 4.5的,所以如果你目前的PC是Win7或者更老版本的話,請安裝.NET framework 4.5
4.
使用MSTSC遠程登陸創建好的DC和ADFS,查看這兩台伺服器的目前分配得到的IP地址,這是用我們創建的CorpNet的DHCP分配的,我們需要
讓他們固定使用這兩個IP,以免在虛擬機重啟後得到不一樣的IP。特別是DC,我們必須保證DC和上面的DNS始終是用一個IP地址。
5. 記錄下來後打開我們安裝好的Azure PowerShell,首先連接到我們的Azure賬戶
如果是中國的Azure
Add-AzureAccount -Environment azurechinacloud
如果是Global的Azure
Add-AzureAccount
6. 登錄後,使用以下命令設定固定IP,替換你自己的虛擬機名字以及IP地址。
Get-AzureVM -Name corp-dc -ServiceName corp-dc| Set-AzureStaticVNetIP -IPAddress 10.0.0.6 | Update-AzureVM
Get-AzureVM -Name corp-adfs -ServiceName corp-adfs | Set-AzureStaticVNetIP -IPAddress 10.0.0.5 | Update-AzureVM
注: 這里我們設定的是固定的內部IP,Azure支持設定固定的外部IP地址,這里不詳細介紹,具體方法請參閱http://msdn.microsoft.com/en-us/library/azure/dn690120.aspx
7. 設置完成後,我們在DC上,安裝DC、DNS的角色。忽略關於DNS的非靜態IP的報錯。
8. 安裝完成後,在伺服器管理器中選擇將此台伺服器提升為域控。創建一個新的域。其中在域名這一塊,填入你公網域名相同的名字,或者子域名。
我擁有jashuang.cn,我這里使用了子域名corp1.jashuang.cn作為我的域,你也可以使用一級域名。
然後一路下一步直到安裝。
9. 安裝完成後重啟DC。
10. 然後我們在DC上安裝我們的證書服務,然後一路下一步直到安裝。
11. 安裝完成後,選擇配置,在角色服務上,選擇證書頒發機構,然後一路下一步,然後選擇配置。
12. 完成後,我們需要新建一張SSL的證書,用戶ADFS的HTTPS通信。運行命令certsrv.msc,在證書模板上右擊,選擇管理
13. 在新窗口招到web伺服器證書,右擊選擇復制模板。在常規標簽項,命名為ADFS SSL。
進入安全選項卡,添加 domain users,domain computers,許可權選擇注冊和讀取
進入使用者名稱 選項卡, 使用者名稱格式變為:公用名,勾選 DNS 名
14. 回到證書頒發機構,右擊證書模板,點擊新建要頒發的證書模板,選擇ADFS SSL
15. 然後,運行命令domain.msc,打開域和信任管理窗口,我們需要添加UPN名。右擊Active Directory域和信任關系,選擇屬性。在UPN標簽項填入我們的域名,點擊添加 – > 應用 – > 完成。
15. 到此,我們把DC配置完成了。現在先登錄到Azure的門戶,打開我們之前創建的虛擬網路,在配置選項里,我們需要指定虛擬網路的DNS,將他指向DC,再添加一個指向Azure public DNS的記錄(否則外網無法解析),然後點擊保存。
16. 重啟一下ADFS。然後將ADFS加入域中。重啟後使用域管理員登錄。
17. 現在我們在ADFS的HOST文件(路徑C:)中加2條DNS記錄,按照自己的域名和DC名以及IP地址加入這兩條記錄,主要是為了防止DNS解析出現問題時能找到DC。
corp1.jashuang.cn 10.0.0.6
corp-dc.corp1.jashuang.cn 10.0.0.6
18. 之後需要安裝之前我們的證書。打開 MMC, 點擊文件-添加、刪除管理單元,選擇計算機賬戶, 選擇本地計算機,點擊確定,右擊 個人,點擊 所有任務—申請新證書,一直點擊下一步,在證書注冊中選擇ADFS SSL。然後選擇注冊
19 安裝證書完成後,在DC伺服器上打開Powershell,運行以下命令。
Add-kdsrootKey –effectivetime (get-date).addhours(-10)
New-adserviceaccount fsgmsa –dnshostname corp-adfs.corp1.jashuang.cn –serviceprincipalnames http/corp-adfs.corp1.jashuang.cn
20. 然後回到ADFS,在ADFS上安裝ADFS角色
21. 完成後,點擊配置ADFS。在指定服務屬性里,選擇我們之前導入的證書,在服務賬號選擇fsgmsa,然後一直下一步直到配置完成。
23. 配置完成後,安裝Web伺服器角色,這主要是為了安裝IIS管理器。
24. 安裝完成後,打開IIS管理器, 右擊Default Website,選擇編輯綁定,點擊添加,然後添加HTTPS,證書選擇之前我們導入的證書。
22. 配置完成後,可以打開IE,輸入以下網址,嘗試登錄,簡單測試ADFS是否正常。