author:JevonWei
版權聲明:原創做品算法
具體的軟件實現:shell
OpenSSH:ssh協議的開源實現,CentOS默認安裝SSH協議版本安全
v1:基於CRC-32作MAC,不安全;man-in-middle兩種方式的用戶登陸認證:bash
基於password
基於key服務器
OpenSSH相關軟件包:網絡
openssh工具併發
基於C/S結構
Client:ssh,scp,sftp
Windows客戶端:
xshell,putty,securecrt, sshsecureshellclient
Server: sshdless
ssh, 配置文件:dom
/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登陸不顯示檢查提示ssh
格式:ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]當用戶遠程鏈接ssh服務器時,會複製ssh服務器/etc/ssh/ssh_host*key.pub (CentOS7 默認是ssh_host_ecdsa_key.pub)文件中的公鑰到客戶機的~./ssh/know_hosts 中。下次鏈接時,會自動匹配相應私鑰
,不能匹配,將拒絕鏈接
基於密鑰的認證:
(1)在客戶端生成密鑰對
ssh-keygen -t rsa [-P ''] [-f 「~/.ssh/id_rsa"]
(2)把公鑰文件傳輸至遠程服務器對應用戶的家目錄
ssh-copy-id [-i [identity_file]] [user@]host
(3)測試
(4)在SecureCRT或Xshell實現基於key驗證
在SecureCRT 工具—> 建立公鑰—> 生成Identity.pub文件轉化爲openssh 兼容格式(適合SecureCRT ,Xshell不須要轉化格式),
並複製到需登陸主機上相應文件authorized_keys中,注意權限必須爲600,在需登陸的ssh主機上執行:
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重設私鑰口令:#ssh-keygen –p
(6)驗證代理(authentication agent)保密解密後的密鑰
這樣口令就只須要輸入一次
在GNOME中,代理被自動提供給root用戶
不然運行ssh-agent bash
(7)鑰匙經過命令添加給代理
ssh-add
SSH端口轉發可以提供兩大功能:
加密SSH Client端至SSH Server端之間的通信數據
突破防火牆的限制完成一些以前沒法創建的TCP
本地轉發:
-L localport:remotehost:remotehostport sshserver
選項:
-f 後臺啓用
-N 不打開遠程shell,處於等待狀態
-g 啓用網關功能
示例
ssh –L 9527:telnetsrv:23 -N sshsrv
telnet 127.0.0.1 9527
當訪問本機的9527的端口時,被加密後轉發到sshsrv的ssh服務,再解密被轉發到telnetsrv:23
data <- -> localhost:9527 <- -> localhost:XXXXX <- ->
sshsrv:22 <- -> sshsrv:YYYYY <- -> telnetsrv:23
遠程轉發:
-R sshserverport:remotehost:remotehostport sshserver
示例:
ssh –R 9527:telnetsrv:23 –N sshsrv
讓sshsrv偵聽9527端口的訪問,若有訪問,就加密後經過ssh服務轉發請求到本機ssh客戶端,再由本機解密後轉發到telnetsrv:23
Data <- -> sshsrv:9527 <- -> sshsrv:22 <- -> localhost:XXXXX <- -> localhost:YYYYY <- -> telnetsrv:23
動態端口轉發:
當用firefox訪問internet時,本機的1080端口作爲代理服務器,firefox的訪問請求被轉發到sshserver上,由sshserver替之訪問internet
在本機firefox設置代理socket proxy:127.0.0.1:1080
ssh -D 1080 root@sshserver
全部圖形化應用程序都是X 客戶程序
可以經過tcp/ip鏈接遠程X服務器ssh -X user@remotehost gedit
remotehost主機上的gedit工具,將會顯示在本機的X服務器上
傳輸的數據將經過ssh鏈接加密
服務器端:sshd
man sshd_config
配置文件:/etc/ssh/sshd_config(服務端)
/etc/ssh/ssh_config(客戶端)
經常使用參數:
Port 端口號
AddressFamily any 指明可以使用ipv4和ipv6地址
ListenAddress 0.0.0.0 監聽的IP
#SyslogFacility AUTH 意爲日誌存放在/var/log/secure
SyslogFacility AUTHPRIV 日誌級別
#LoginGraceTime 2m 等待鏈接寬限時間2分鐘
#PermitRootLogin yes 禁止root用戶直接登陸
#StrictModes yes 限制模式
#MaxAuthTries 6 密碼輸入錯誤次數爲3時退出
#MaxSessions 10 同一個主機的最大會話數爲10次
#ClientAliveInterval 0 客戶端的活動間隔 (單位:秒) #ClientAliveCountMax 3 客戶端最大活動間隔統計次數
UseDNS yes 使用DNS反向解析IP
PidFile /var/run/sshd.pid PID文件
MaxStartups 最大容許保持多少個未認證鏈接,默認值10
#Banner /etc/ssh.txt ssh鏈接時提示信息文件
PsswordAuthentication yes 基於密碼認證登陸
PermitEmptyPasswords no 基於key認證的登陸
限制可登陸用戶的辦法: AllowUsers user1 user2 user3 容許用戶鏈接 DenyUsers 拒絕用戶 AllowGroups 容許組 DenyGroups DenyUser的優先級大於AllowUsers
要使用默認端口
禁止使用protocol version 1
限制可登陸用戶
設定空閒會話超時時長
利用防火牆設置ssh訪問策略
僅監聽特定的IP地址
基於口令認證時,使用強密碼策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs
使用基於密鑰的認證
禁止使用空密碼
禁止root用戶直接登陸
限制ssh的訪問頻度和併發在線數
作好日誌,常常分析
ssh協議的另外一個實現:dropbear
安裝準備: 一、安裝開發包組: 二、ftp://172.16.0.1/pub/Sources/sources/dropbear/dropbear-2013.58.tar.bz2 安裝: 三、tar xf dropbear-2013.58.tar.bz2, 四、less INSTALL 五、./configure 六、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 七、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install 啓動ssh服務: 八、ls /usr/local/sbin/ /usr/local/bin/ 九、/usr/local/sbin/dropbear -h 十、mkdir /etc/dropbear 十一、dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 十二、dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key 1三、dropbear -p :2222 -F –E #前臺運行 dropbear -p :2222 #後臺運行 客戶端訪問: 1四、ssh -p 2222 root@127.0.0.1 1五、dbclient -p 2222 root@127.0.0.1