1、遠(yuǎn)程連接服務(wù)器
遠(yuǎn)程連接服務(wù)器對(duì)于管理員來(lái)說(shuō),是一個(gè)很有用的操作。它使得對(duì)服務(wù)器的管理更為方便。不過(guò)方便歸方便,但開(kāi)放的讓全世界都可以嘗試連接你的主機(jī)并不是什么好事,因?yàn)榭赡軙?huì)有安全性問(wèn)題。
1.1、什么是遠(yuǎn)程連接服務(wù)器
遠(yuǎn)程連接服務(wù)器通過(guò)文字或圖形接口的方式來(lái)遠(yuǎn)程登錄系統(tǒng),讓你在遠(yuǎn)程的終端前面登錄Linux主機(jī)已取得可操作主機(jī)的接口(Shell),而登陸后的操作感覺(jué)上就像坐在系統(tǒng)前面一樣!
用 SSH/Telnet/VNC 等方式取得的文字或者圖形 Shell 能夠進(jìn)行很多系統(tǒng)管理的任務(wù),與單純的 FTP 能進(jìn)行的工作當(dāng)然不同。
遠(yuǎn)程連接服務(wù)器的功能:
1、分享 Unix-Like 主機(jī)的運(yùn)算能力;
2、服務(wù)器類型(Server),有限度的開(kāi)放連接;
3、工作站類型(Workstation),只對(duì)內(nèi)網(wǎng)開(kāi)放;
1.2、有哪些可供登錄的類型
文字接口和圖形接口,明文傳輸和加密傳輸
文字接口明文傳輸:Telnet、RSH,目前已少用;
文字接口加密:SSH為主;
圖形接口:XDMCP、VNC、XRDP等
2、SSH服務(wù)器
SSH(Secure Shell Protocol),它可以通過(guò)數(shù)據(jù)包加密技術(shù)將等待傳輸?shù)臄?shù)據(jù)包加密后在傳輸?shù)骄W(wǎng)絡(luò)上,因此數(shù)據(jù)信息就比較安全。
在默認(rèn)狀態(tài)下,SSH協(xié)議本身提供兩個(gè)服務(wù)器功能。
一個(gè)是類似 Telnet 的遠(yuǎn)程連接使用 Shell 的服務(wù)器,即俗稱的SSH;
另一個(gè)就是類似 FTP 服務(wù)的 Sftp-Server,提供更安全的 FTP 服務(wù)
2.1、連接加密技術(shù)
目前常見(jiàn)的數(shù)據(jù)包加密技術(shù)通常是所謂的 ?“非對(duì)稱密鑰系統(tǒng)” 來(lái)處理的。主要是通過(guò)兩把不一樣的公鑰(Public)和私鑰(Private)來(lái)進(jìn)行加密與解密的過(guò)程。由于這兩把鑰匙的作用是提供數(shù)據(jù)加解密的,所以在同一個(gè)方向的連接中,這把鑰匙當(dāng)然是需要成對(duì)的。
公鑰(Public Key):提供給遠(yuǎn)程主機(jī)進(jìn)行數(shù)據(jù)加密行為,也就是說(shuō)大家都能取得你的公鑰來(lái)將數(shù)據(jù)加密;
私鑰(Private Key):遠(yuǎn)程主機(jī)使用你的公鑰加密的數(shù)據(jù),在本地端就只能使用來(lái)進(jìn)行解密。由于私鑰很重要,因此私鑰是不能夠外流的,只能保護(hù)在自己的主機(jī)上。
由于每臺(tái)主機(jī)都應(yīng)該有自己的密鑰(公鑰與私鑰),且公鑰用來(lái)加密而私鑰用來(lái)解密,其中私鑰不可外流,但因?yàn)榫W(wǎng)絡(luò)是雙向的,所以,每個(gè)人應(yīng)該都要有對(duì)方的“公鑰”才對(duì)!
1、服務(wù)器建立公鑰文件;公鑰私鑰的產(chǎn)生2、客戶端主動(dòng)連接要求;
3、服務(wù)器傳送公鑰給客戶端;
4、客戶端記錄/對(duì)比服務(wù)器的公鑰數(shù)據(jù)及計(jì)算自己的公私鑰;(客戶端的密鑰是隨機(jī)運(yùn)算產(chǎn)生于本次連接當(dāng)中的,所以這次的連接與下次的連接密鑰可能會(huì)不一樣啦!此外客戶端的用戶主目錄下:~/.ssh/know_hosts 中會(huì)記錄曾經(jīng)連接過(guò)的主機(jī)的 Public Key,用于確認(rèn)·我們自己已經(jīng)連接上正確的服務(wù)器。如果想要產(chǎn)生新的密鑰則 rm ?/etc/ssh/ssh_host*
5、返回客戶端的公鑰數(shù)據(jù)到服務(wù)器;
6、服務(wù)器接受私鑰開(kāi)始雙向加解密。
2.2、啟動(dòng)SSH服務(wù)
SSHD可以同時(shí)提供Shell和FTP,而且都是架構(gòu)在 Port 22 上面的
2.3、SSH客戶端連接程序 —— Linux用戶
2.3.1、SSH:直接登錄遠(yuǎn)程主機(jī)的指令
如果不填寫賬號(hào)的話,那么會(huì)以本地端計(jì)算機(jī)的賬號(hào)來(lái)嘗試登陸遠(yuǎn)程。
ssh ?192.168.1.1
ssh ?hahaha@192.168.1.1
ssh ?-f ?hahaha@192.168.1.1 ?shutdown -h ?now
2.3.2、服務(wù)器公鑰記錄文件:~/.ssh/known_hosts
當(dāng)你登錄遠(yuǎn)程服務(wù)器時(shí),本機(jī)會(huì)主動(dòng)接收到服務(wù)器的Public Key去比對(duì) ~/.ssh/known_hosts有無(wú)相關(guān)公鑰。
2.3.3、模擬FTP的文件傳輸方式:SFTP
SSH是登錄遠(yuǎn)程服務(wù)器進(jìn)行工作,那如果你只是想要從遠(yuǎn)程服務(wù)器下載或者上傳文件呢?那就不使用SSH啦,而必須使用SFTP或SCP。這兩個(gè)指令都是使用SSH的通道(port :22),只是模擬成FTP與復(fù)制的操作而已。
sftp ?student@192.168.1.1
2.3.4、文件異地直接復(fù)制:SCP
通常使用SFTP是因?yàn)榭赡懿恢婪?wù)器上面已存在的文件名信息,如果已經(jīng)知道服務(wù)器上的文件名,那么最簡(jiǎn)單快捷的方式是使用SCP這個(gè)命令。
scp ?/home/aaa/test.txt ?zhang@192.168.1.1:/home/zhang
scp ?zhang@192.168.1.1:/home/zhang/AAA.txt ?/home/aaa/
3、SSHD服務(wù)器詳細(xì)配置
基本上,所有的SSHD服務(wù)器的詳細(xì)配置都放置在 /etc/ssh/sshd_config 配置文件中。同時(shí)請(qǐng)注意,配置文件里只要未被修改的值即為默認(rèn)值,你可以依據(jù)它來(lái)修改。建議取消root登錄并將SSH版本設(shè)定為2.
vim ?/etc/ssh/sshd_config
將遠(yuǎn)程連接禁止root登錄:
#PermitRootLogin ?yes ? ?改為 ? ?PermitRootLogin ? ?no;
#Protocol 2
SSH限制被嘗試次數(shù):
MaxAuthTries ?6;
在限定的次數(shù)里面密碼認(rèn)證失敗的話將會(huì)被強(qiáng)制斷開(kāi)連接。
關(guān)閉UseDNS加速SSH登錄:
經(jīng)常登錄SSH的朋友可以感覺(jué)出,每次登錄SSH時(shí)總是要停頓一下才能連接上,這是因?yàn)镺penSSH服務(wù)器有一個(gè)DNS查找選項(xiàng)UseDNS在默認(rèn)情況下是打開(kāi)的;
UseDNS選項(xiàng)打開(kāi)的狀態(tài)下,當(dāng)客戶端試圖登錄SSH服務(wù)器時(shí),服務(wù)器端先根據(jù)客戶端的IP地址進(jìn)行DNS PTR反向查詢客戶端主機(jī)名,然后根據(jù)查詢出的客戶端主機(jī)名進(jìn)行DNS正向A記錄查詢,驗(yàn)證與其原始IP地址是否一致,這是防止客戶端欺騙的一種措施,但一般我們的IP不會(huì)有PTR記錄,打開(kāi)這個(gè)選項(xiàng)不過(guò)是在白白浪費(fèi)時(shí)間而已,不如將其關(guān)閉。
UseDNS no;
SSH限制IP登錄幾種方法:
1、修改 etc/hosts.allow 和 etc/hosts.deny 文件;
2、修改 /etc/ssh/sshd_config 文件,加入 Allowusers:用戶名@IP(只允許某用戶從哪個(gè)Ip登錄)。
?Allowusers *@192.168.1.111?
PermissionRootLogin no
#這兩者可以保證只能從你允許的IP登錄你的服務(wù)器;
4、制作不用密碼可立即登錄的SSH用戶
利用Key不輸入密碼遠(yuǎn)程連接主機(jī),具體流程
1、客戶端建立兩把鑰匙:利用命令為 ssh-keygen;
2、客戶端放置好私鑰文件:將 Private Key 放在用戶主目錄內(nèi)的 .ssh/ 里面即可,“.ssh”文件夾權(quán)限為700,私鑰權(quán)限為600且屬于用戶自己,否則在未來(lái)密鑰對(duì)比的過(guò)程中將出現(xiàn)問(wèn)題。
3、將公鑰放置到服務(wù)器端中:將 Public Key 放置在你想要用來(lái)登錄的那個(gè)用戶的主目錄內(nèi)的 .ssh/authorized_keys文件里,也可以用追加的方式寫入。
ssh-keygen ?[ -t ?rsa | dsa ],之后會(huì)生成公鑰和私鑰;
將公鑰上傳到需要遠(yuǎn)程連接的服務(wù)器上:
scp ?~/.ssh/id_rsa.pub ?zhang@192.168.203.129:~;
cat ?id_rsa.pub ?>> .ssh/authorized_keys;將公鑰寫入
.ssh 目錄的權(quán)限是700,authorized_keys權(quán)限是644
步驟關(guān)鍵:
Client必須制作出Public和Private這兩把Key,且Private Key需要放到 ~/.ssh/ 內(nèi);
Server必須要有Public Key,且放置到用戶主目錄下的 ~/.ssh/authorized_keys,同時(shí)目錄的權(quán)限(.ssh)必須是700而文件權(quán)限必須是644,同時(shí)文件的屬主和屬組都必須與該賬號(hào)吻合才行。
當(dāng)你還想要登錄其他遠(yuǎn)程主機(jī)時(shí),只要將你的Public Key(id_rsa.pub)文件copy到其他主機(jī)上去,并且將內(nèi)容添加到 ~/.ssh/authorized_keys中即可。
5、簡(jiǎn)易安全設(shè)置
SSHD 所謂的安全其實(shí)指的是SSHD的數(shù)據(jù)是加密過(guò)的,所以它的數(shù)據(jù)在Internet上面?zhèn)鬟f時(shí)是比較安全的。至于SSHD這個(gè)服務(wù)本身就不是那樣安全了。所以如果要將SSHD對(duì)Internet開(kāi)放可登錄的權(quán)限的話,那么,就盡量局限在幾個(gè)小范圍內(nèi)的IP或主機(jī)名(如你們公司的出口IP),這很重要。
1、服務(wù)器軟件本身的設(shè)置強(qiáng)化:/etc/ssh/sshd_config,禁止root登錄,禁止某個(gè)用戶登錄,禁止某個(gè)用戶組登錄;
2、/etc/hosts.allow 和 /etc/hosts.deny
hosts.allow--->sshd :127.0.0.1 192.168.0.0/255.255.0.0
hosts.deny--->sshd:ALL
3、iptables數(shù)據(jù)包過(guò)濾防火墻
6、SSH服務(wù)器的高級(jí)應(yīng)用
6.1、在非標(biāo)準(zhǔn)端口啟動(dòng)SSH(默認(rèn)端口:22)
vi ?/etc/ssh/sshd_config
# Port 22(這是默認(rèn)信息)----> Port 23(修改為23端口,但一定要注意,不要將端口開(kāi)在某些周知的端口上,如80那些)
或者兩端口共存,即sshd監(jiān)聽(tīng)這兩個(gè)端口:
Port ?22
Port ?23
非標(biāo)準(zhǔn)端口連接:
ssh ?-p ?23 ?zhang@192.168.209.129
6.2、以 rsync 進(jìn)行同步鏡像備份
rsync 是一個(gè)相當(dāng)棒的異地備份系統(tǒng)的指令,可以達(dá)到類似鏡像(mirror)的功能
rsync 第一次備份的時(shí)候需要花費(fèi)比較長(zhǎng)的時(shí)間,因?yàn)槭状我獋浞菟械奈募5窃俅蝹浞菸募臅r(shí)候,僅會(huì)復(fù)制有差異的數(shù)據(jù)。這個(gè)很重要的哈!
因?yàn)?rsync ?是通過(guò) SSH 來(lái)傳輸數(shù)據(jù)的,所以你可以針對(duì) 某個(gè)用戶制作出免密碼登錄的SSH密鑰!如此一來(lái),往后異地備份系統(tǒng)就能夠自動(dòng)地以 crontab 來(lái)進(jìn)行備份了。
rsync ?的三種傳輸方式:
1、在本機(jī)上直接運(yùn)行,用法幾乎與 cp 一模一樣,例如:
rsync ?-av ?/etc ?/tmp ?將/etc/ 的數(shù)據(jù)備份到 /tmp/etc 內(nèi)
2、通過(guò) rsh 或 ssh 的信道在Server / Client 之間進(jìn)行傳輸數(shù)據(jù),例如:
rsync -avz user@ip:/test /test #先做無(wú)秘鑰就可直接使用了
#rsync ?-av ?-e ?ssh ?user@ip:/etc ?/tmp ?將遠(yuǎn)程Server的/etc 數(shù)據(jù)備份到本地 /tmp/etc
3、直接通過(guò) rsync ?提供的服務(wù)(daemon)來(lái)傳輸,此時(shí) rsync ?主機(jī)需要啟動(dòng) 873 Port
你必須要在Server端啟動(dòng) rsync,看 /etc/xinetd.d/rsync;
你必須編輯 /etc/rsyncd.conf 配置文件;
你必須設(shè)置定義Client端連接的密碼數(shù)據(jù);
在 Client端可以利用: rsync ?-av ?user@hostname::/dir/path ?/local/path ?注意是兩個(gè)冒號(hào)
6.3、通過(guò)SSH通道加密原本無(wú)加密的服務(wù)
重點(diǎn)回顧:
遠(yuǎn)程連接服務(wù)器可以讓用戶在任何一臺(tái)計(jì)算機(jī)登錄主機(jī),以便使用主機(jī)的資源來(lái)管理與維護(hù)主機(jī);
Telnet與RSH都是以明文方式傳輸數(shù)據(jù),當(dāng)數(shù)據(jù)在Internet上面?zhèn)鬏敃r(shí)較不安全;
SSH由于使用密鑰系統(tǒng),因此數(shù)據(jù)在Internet上傳輸時(shí)時(shí)加密過(guò)的,所以比較安全;
但SSH還是屬于比較危險(xiǎn)的服務(wù),請(qǐng)不要對(duì)整個(gè)Internet開(kāi)放SSH的可登錄權(quán)限,可利用iptables 規(guī)范可登錄的范圍;
SSH的Public Key 放在服務(wù)器端,而Private Key 放在Client端;
使用SSH時(shí),盡量使用類似E-mail的方式來(lái)登錄,即:ssh ?username@hostname;
Client端可以比對(duì)Server傳來(lái)的Public Key的一致性,利用的文件為 ~user/.ssh/known_hosts;
SSH的Client端軟件提供SSH、SCP、SFTP等程序;
制作不需要密碼的SSH賬號(hào)時(shí),可利用ssh-keygen ?-t ?rsa 來(lái)生成Public Key和Private Key;
上述指令所生成的Public Key必須要上傳到Server的 ~user/.ssh/authorized_keys;
rsync ?可通過(guò)SSH 的服通道或 rsync ?--daemon 的方式來(lái)連接傳輸,其主要功能可以通過(guò)類似鏡像備份來(lái)僅備份新的數(shù)據(jù),因此傳輸數(shù)據(jù)相當(dāng)快。