
openssl
:TLS/SSl(libssl,libcryto,openssl),TSL PKI
OpenSSH:
telnet,TCP/23,遠程登錄
認證明文(密碼認證)
數(shù)據(jù)傳輸明文
ssh:Secure Shell ,TCP/22
C/S架構(gòu) 套接字監(jiān)聽
SSH --> SSH
openssh(開源) 即是協(xié)議,又是軟件
ssh V1(中間人攻擊),V2
客戶端:
LINUX:ssh
Windows:putty,SecureCRT(商業(yè)版),SSHsecureShellClient,Xmanger
服務(wù)器端:(linux,unix)
sshd
openssh(ssh,sshd)
ssh--->telnet
ssh:主機密鑰
client-------->server
yes:接受服務(wù)器主機發(fā)來的公鑰
RSA,DSA
客戶端生成臨時對稱密鑰(會話)隨機生成
對稱密鑰使用服務(wù)器的公鑰加密后傳給服務(wù)器,只有服務(wù)器的私鑰可以解密。
賬號和密碼用對稱密鑰加密后傳給服務(wù)器進行認證。
認證通過,建立一個永久的會話通道。
基于口令的認證
基于密鑰的認證
客戶端生成一對密鑰,公鑰傳到服務(wù)器的對應(yīng)用戶的家目錄下,身份認證是客戶端利用自己的私鑰加密一段數(shù)據(jù),服務(wù)器用客戶的公鑰解密??山?,則認證通過。
不允許root直接登錄,而是用普通用戶,在su切換。
安全措施:
- 限定某些臺有限主機能夠登錄
- 在前端vpn,允許vpn的IP地址登錄,先登錄到vpn在ssh到主機。
- 改變端口
- 經(jīng)常換密碼
[root@li ~]# rpm -qa |grep openssh
openssh-clients-5.3p1-84.1.el6.x86_64
openssh-5.3p1-84.1.el6.x86_64 通用組件及庫
openssh-askpass-5.3p1-84.1.el6.x86_64
openssh-server-5.3p1-84.1.el6.x86_64
rpm -qi openssh-5.3p1-84.1.el6.x86_64
netstat -tln
netstat -rn 路由表
UDP 無狀態(tài)
tcp listen
netstat -p process|program
servcie sshd status
lsof -i:22
lsof(list open files)是一個列出當(dāng)前系統(tǒng)打開文件的工具,可以用來恢復(fù)刪除的數(shù)據(jù)。
配置文件
ssh (ssh_conf)
sshd (sshd_conf)
/etc/ssh/
moduli:和密鑰交換,認證有關(guān)的
不同sshv1 dsa ,sshv2 rsa 沒有
注意:權(quán)限 私鑰600 公鑰644
├─sshd─┬─3*[sshd───bash]
│ └─sshd───bash───pstree
sshd主進程,會創(chuàng)建多個子進程
vim /etc/ssh/sshd_conf
配置項格式: var values
修改端口 port 2223
AddressFamily any :IPV4,IPV6哪個地址
ListenAddress 0.0.0.0 都監(jiān)聽 在哪一個地址上監(jiān)聽
KeyRegenerationInterval 1h 密鑰重新生成密鑰的時間
ServerKeyBits 1024 密鑰長度
SyslogFacility AUTHPRIV
LogLevel INFO
LoginGraceTime 2m 登錄的寬限期,建立會話后,要輸賬號和密碼。
PermitRootLogin yes 是否允許root直接登錄。
StrictModes yes 是否使用嚴格限定模式
MaxAuthTries 6 最大可以嘗試輸錯
MaxSessions 10
#RSAAuthentication yes 是否支持RSA認證
#PubkeyAuthentication yes 基于密鑰認證
#AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
#RhostsRSAAuthentication no 主機認證
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
#Banner none 標(biāo)語
#PrintMotd yes 是否打印/etc/motd里的內(nèi)容
#PrintLastLog yes 打印上次登錄 ,不啟用信息泄露。
涉及安全,信息越少越好。
Subsystem sftp /usr/libexec/openssh/sftp-server
和ftps不同。
man sshd_config
kill -L
客戶端:ssh
ssh - OpenSSH SSH client (remote login program)
ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-e escape_char]
[-F configfile] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w
local_tun[:remote_tun]] [user@]hostname [command]
如果不指定用戶,則以當(dāng)前的用戶切換過去。
ssh -l root host
ssh root@host
~/.ssh/known_host 主機密鑰
不登錄主機,僅在主機上執(zhí)行命令,并返回執(zhí)行結(jié)果。
ssh -l username Remotehost ['command'] 可以不用引號
ssh -X
-X Enables X11 forwarding.
-Y Enables trusted X11 forwarding.
執(zhí)行圖形窗口
-p 端口
基于密鑰的認證:
一臺主機為客戶端(基于某個用戶實現(xiàn) ),
1. 生成一對密鑰
ssh-keygen
ssh-keygen -t rsa
密鑰保存在~/.ssh/id_rsa
可以指定密鑰的名稱
2. 將公鑰傳輸至服務(wù)器端某用戶的家目錄下的.ssh/authorized_keys文件中
使用文件傳輸工具傳輸(ssh-copy-id,scp)
ssh-copy-id -i /path/pubkeyname username@host
ssh-copy-id .ssh/id_rsa.pub root@172.16.100.2
scp .ssh/id_rsa.pub root@172.16.0.12:/tmp
ssh root@172.16.0.12 cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
3. 測試登錄
scp
基于ssh的遠程復(fù)制命令,可以實現(xiàn)在主機之間傳輸數(shù)據(jù)。
scp [option] SRC DEST
remote_host:
username@host:file
SYNOPSIS
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2
目錄 -r
-P
-a
ssh-keygen
.ssh的權(quán)限是700
-f filename
Specifies the filename of the key file
ssh-keygen -t rsa -f .ssh /id_rsa
[-N new_passphrase]
-t rsa|dsa
-f /path/
-N 'passwd' 在腳本中使用
ssh-copy-id
ssh-copy-id - install your public key in a remote machine’s authorized_keys
ssh-copy-id [-i [identity_file]] [user@]machine
sftp
總結(jié)
- 密碼要經(jīng)常換
- 使用非默認端口;
- 限制登錄客戶地址
- 禁止管理員直接登錄
- 僅允許有限的用戶登錄
- 使用基于密鑰的認證
- 禁止使用版本1