一、OpenSSH服務(wù)器
是一種安全通道協(xié)議,主要用來實現(xiàn)字符界面的遠(yuǎn)程登錄、遠(yuǎn)程復(fù)制等功能。SSH協(xié)議對通信雙方的數(shù)據(jù)傳輸進(jìn)行了加密處理,其中包括用戶登錄時輸入的用戶口令。因此SSH協(xié)議具有很好的安全性。
SSH優(yōu)點:
數(shù)據(jù)傳輸是加密的,可以防止信息泄漏
數(shù)據(jù)傳輸是壓縮的,可以提高傳輸速度
OpenSSH 是實現(xiàn) SSH 協(xié)議的開源軟件項目,適用于各種 UNIX、Linux 操作系統(tǒng),CentOS 7 系統(tǒng)默認(rèn)安裝并啟動sshd服務(wù)
SSH客戶端:Putty、Xshell、CRT
SSH服務(wù)端:OpenSSH
服務(wù)名稱: sshd
默認(rèn)端口號:tcp的22端口
服務(wù)端主程序: /usr/sbin/sshd
服務(wù)端配置文件: /etc/ssh/sshd_config
客戶端配置文件: /etc/ssh/ssh_config
二、sshd_config配置文件
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER ##在開啟selinux的系統(tǒng)上,修改ssh端口的要修改selinux規(guī)則,用此命令修改
#Port 22 ##默認(rèn)ssh端口,生產(chǎn)環(huán)境中建議改成五位數(shù)的端口
#AddressFamily any ##地址家族,any表示同時監(jiān)聽ipv4和ipv6地址
#ListenAddress 0.0.0.0 ##監(jiān)聽本機(jī)所有ipv4地址
#ListenAddress :: ##監(jiān)聽本機(jī)所有ipv6地址
HostKey /etc/ssh/ssh_host_rsa_key ##ssh所使用的RSA私鑰路徑
HostKey /etc/ssh/ssh_host_ecdsa_key ##ssh所使用的ECDSA私鑰路徑
HostKey /etc/ssh/ssh_host_ed25519_key ##ssh所使用的ED25519私鑰路徑
SyslogFacility AUTHPRIV ##設(shè)定在記錄來自sshd的消息的時候,是否給出“facility code”
#LogLevel INFO ##日志記錄級別,默認(rèn)為info
#LoginGraceTime 2m ##限定用戶認(rèn)證時間為2min
#PermitRootLogin yes ##是否允許root賬戶ssh登錄,生產(chǎn)環(huán)境中建議改成no,使用普通賬戶ssh登錄
#StrictModes yes ##設(shè)置ssh在接收登錄請求之前是否檢查用戶根目錄和rhosts文件的權(quán)限和所有權(quán),建議開啟
#MaxAuthTries 6 ##指定每個連接最大允許的認(rèn)證次數(shù)。默認(rèn)值是 6
#MaxSessions 10 ##最大允許保持多少個連接。默認(rèn)值是 10
#PubkeyAuthentication yes ##是否開啟公鑰驗證
AuthorizedKeysFile .ssh/authorized_keys ##公鑰驗證文件路徑
# HostbasedAuthentication ##指定服務(wù)器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 進(jìn)行遠(yuǎn)程主機(jī)名匹配時,是否進(jìn)行反向域名查詢
#IgnoreUserKnownHosts no ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 過程中忽略用戶的 ~/.ssh/known_hosts 文件
#IgnoreRhosts yes ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 過程中忽略 .rhosts 和 .shosts 文件
#PermitEmptyPasswords no ##是否允許空密碼
PasswordAuthentication yes ##是否允許密碼驗證,生產(chǎn)環(huán)境中建議改成no,只用密鑰登錄
ChallengeResponseAuthentication no ##是否允許質(zhì)疑-應(yīng)答(challenge-response)認(rèn)證
#KerberosAuthentication no ##是否使用Kerberos認(rèn)證
#KerberosOrLocalPasswd yes ##如果 Kerberos 密碼認(rèn)證失敗,那么該密碼還將要通過其它的認(rèn)證機(jī)制(比如 /etc/passwd)
#KerberosTicketCleanup yes ##是否在用戶退出登錄后自動銷毀用戶的 ticket
#KerberosGetAFSToken no ##如果使用了AFS并且該用戶有一個 Kerberos 5 TGT,那么開啟該指令后,將會在訪問用戶的家目錄前嘗試獲取一個AFS token
GSSAPIAuthentication yes ##是否允許基于GSSAPI的用戶認(rèn)證
GSSAPICleanupCredentials no ##是否在用戶退出登錄后自動銷毀用戶憑證緩存
UsePAM yes ##是否通過PAM驗證
#GatewayPorts no ##是否允許遠(yuǎn)程主機(jī)連接本地的轉(zhuǎn)發(fā)端口
X11Forwarding yes ##是否允許X11轉(zhuǎn)發(fā)
#X11DisplayOffset 10 ##指定sshd(8)X11轉(zhuǎn)發(fā)的第一個可用的顯示區(qū)(display)數(shù)字。默認(rèn)值是10
#X11UseLocalhost yes ##是否應(yīng)當(dāng)將X11轉(zhuǎn)發(fā)服務(wù)器綁定到本地loopback地址
#PrintMotd yes ##指定sshd(8)是否在每一次交互式登錄時打印 /etc/motd 文件的內(nèi)容
#PrintLastLog yes ##指定sshd(8)是否在每一次交互式登錄時打印最后一位用戶的登錄時間
#TCPKeepAlive yes ##指定系統(tǒng)是否向客戶端發(fā)送 TCP keepalive 消息
#UseLogin no ##是否在交互式會話的登錄過程中使用 login(1)
#UsePrivilegeSeparation sandbox ##是否讓 sshd(8) 通過創(chuàng)建非特權(quán)子進(jìn)程處理接入請求的方法來進(jìn)行權(quán)限分離
#PermitUserEnvironment no ##指定是否允許sshd(8)處理~/.ssh/environment以及 ~/.ssh/authorized_keys中的 environment= 選項
#Compression delayed ##是否對通信數(shù)據(jù)進(jìn)行加密,還是延遲到認(rèn)證成功之后再對通信數(shù)據(jù)加密
#ClientAliveInterval 0 ##sshd(8)長時間沒有收到客戶端的任何數(shù)據(jù),不發(fā)送"alive"消息
#ClientAliveCountMax 3 ##sshd(8)在未收到任何客戶端回應(yīng)前最多允許發(fā)送多個"alive"消息,默認(rèn)值是 3
#UseDNS no ##是否使用dns反向解析
#PidFile /var/run/sshd.pid ##指定存放SSH守護(hù)進(jìn)程的進(jìn)程號的路徑
#MaxStartups 10:30:100 ##最大允許保持多少個未認(rèn)證的連接
#PermitTunnel no ##是否允許tun(4)設(shè)備轉(zhuǎn)發(fā)
#Banner none ##將這個指令指定的文件中的內(nèi)容在用戶進(jìn)行認(rèn)證前顯示給遠(yuǎn)程用戶,默認(rèn)什么內(nèi)容也不顯示,"none"表示禁用這個特性
Subsystem sftp /usr/libexec/openssh/sftp-server ##配置一個外部子系統(tǒng)sftp及其路徑
#Match User anoncvs ##引入一個條件塊。塊的結(jié)尾標(biāo)志是另一個 Match 指令或者文件結(jié)尾
AllowUsers ##設(shè)置白名單,需手動添加
DenyUsers ##設(shè)置黑名單,需手動添加
三、SSH服務(wù)端
ssh服務(wù)端主要包括兩個服務(wù)功能:ssh遠(yuǎn)程連接和sftp服務(wù).
作用:SSHD服務(wù)使用SSH協(xié)議可以用來遠(yuǎn)程控制,或在計算機(jī)之間傳送文件
相比較之前用Telent方式傳輸文件要安全很多,因為Telent是明文件傳輸,SSH是加密傳輸
1.查詢版本—— ssh -V
2.SSH遠(yuǎn)程登錄
語法:ssh [遠(yuǎn)程主機(jī)用戶名] @[遠(yuǎn)程服務(wù)器主機(jī)名或IP地址] -p port
語法:ssh -l [遠(yuǎn)程主機(jī)用戶名] [遠(yuǎn)程服務(wù)器主機(jī)名或IP地址] -p port
3.監(jiān)聽端口修改
重啟服務(wù):systemctl restart sshd
使用另一臺客戶機(jī)進(jìn)行遠(yuǎn)程登錄
4.設(shè)置黑白名單
5.遠(yuǎn)程復(fù)制——scp
6.安全性傳輸——sftp
四、SSH服務(wù)的驗證
1.SSH服務(wù)的兩種驗證方式
當(dāng)密碼驗證和密鑰驗證同時開啟時,服務(wù)器會優(yōu)先使用密鑰對驗證
密碼驗證
對服務(wù)器中本地系統(tǒng)用戶的登錄名稱、密碼進(jìn)行驗證。這種方式使用最為簡便,但從客戶端角度來看,正在連接的服務(wù)器有可能會被假冒;從服務(wù)器角度來看,當(dāng)遭遇密碼暴力破解攻擊時防御能力較弱。
密鑰驗證
密鑰對驗證:要求提供相匹配的密鑰才能進(jìn)行驗證通過,通常先在客戶端中創(chuàng)建一對密鑰文件(公鑰和私鑰),然后將公鑰文件放到服務(wù)器中指定位置,遠(yuǎn)程登錄時,系統(tǒng)會使用公鑰和私鑰進(jìn)行加密/解密關(guān)聯(lián)驗證,增加安全性,且可以免密交互登錄。
3.公鑰與私鑰的關(guān)系
公鑰和私鑰是成對生成的,這兩個密鑰互不相同,可以互相加密和解密
不能根據(jù)一個密鑰來推算另一個密鑰
公鑰對外公開,私鑰只有私鑰持有人才知道
4.在客戶端創(chuàng)建密鑰對
通過ssh-keygen 工具為當(dāng)前用戶創(chuàng)建密鑰對文件??捎玫募用芩惴椋篟SA、ECDSA、或DSA等(-t是指定算法類型)
5.免交互驗證
五、TCP Wrappers 訪問控制
在Linux系統(tǒng)中,許多網(wǎng)絡(luò)服務(wù)針對客戶端提供了訪問控制機(jī)制,如Samba、BIND、HTTPD、OpenSSH 等TCP wrappers將TCP服務(wù)程序"包裹"起來,代為監(jiān)聽TCP服務(wù)程序的端口,增加了一個安全檢測過程,外來的連接請求必須先通過這層安全檢測,獲得許可后才能訪問真正的服務(wù)程序。
1.TCP wrappers (TCP封套)
將tcp服務(wù)程序包裹起來,代為監(jiān)聽tcp服務(wù)程序的端口,增加了一個安全檢測過程,外來的連接請求必須通過這層安全檢測,獲得許可后才能進(jìn)訪問真正的服務(wù)程序,TCP Wrappers 是大部分Linux 發(fā)行版默認(rèn)提供的功能
2.TCP Wrappers 保護(hù)機(jī)制的實現(xiàn)方式
1.直接使用tcpd程序?qū)ζ渌?wù)程序進(jìn)行保護(hù),需要運行tcpd程序。
2.由其他網(wǎng)絡(luò)服務(wù)程序調(diào)用libwrap.so.*鏈接庫,不需要運行tcpd程序。此方式的應(yīng)用更加廣泛,也更有效率。
- 使用 ldd 命令可以查看程序的libwrap.so.*鏈接庫
3.TCP Wrappers 訪問策略
-
為各種網(wǎng)絡(luò)服務(wù)程序,針對訪問服務(wù)的客戶端地址進(jìn)行訪問控制,對應(yīng)的策略文件為 /etc/hosts.allow 和 /etc/hosts.deny分別來設(shè)置允許和拒絕訪問
語法:[服務(wù)程序列表]:[客戶端地址列表]文章來源:http://www.zghlxwxcb.cn/news/detail-425288.html -
先檢查 /etc/hosts.allow 文件,密鑰則檢查 /etc/hosts.deny 文件,若都沒有相匹配的策略,則全部允許訪問文章來源地址http://www.zghlxwxcb.cn/news/detail-425288.html
到了這里,關(guān)于Linux基礎(chǔ)——遠(yuǎn)程訪問及控制(SSH)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!