- 論壇徽章:
- 0
|
反向鏈接:從外網(wǎng)通過(guò)指定的端口用SSH登陸到局域網(wǎng)內(nèi)。
工作原理
我們把具有固定ip地址的服務(wù)器219.238.162.158作為通道,在192.168.1.253上使用逆向ssh連接219.238.162.253的8821端口,到本地的的22端口(sshd)逆向連接成功后,219.238.162.158會(huì)啟動(dòng)一個(gè)進(jìn)程監(jiān)聽(tīng)端口指定的端口(8821),所有到這個(gè)端口的連接會(huì)被重定向到192.168.1.253的22端口上。
配置步驟:
環(huán)境要求:sd或wla平臺(tái)
所需軟件:cpssd_4_0_0_dev_2008_05_23_pageperf.zip jdk-1_5_0_06-linux-i586.bin
安裝:
1 創(chuàng)建用戶chengh
useradd chengh ;passwd ********
2 安裝sd
[chengh@tserver link]$chmod +x link/jdk-1_5_0_06-linux-i586.bin
[chengh@tserver link]$./jdk-1_5_0_06-linux-i586.bin
[chengh@tserver link]$unzip link/cpssd_4_0_0_dev_2008_05_23_pageperf.zip
建立軟鏈接
[chengh@tserver link]$ln -s cpssd cpssd_4_0_1_dev_2008_08_18 cps_home
[chengh@tserver link]$ln -s jdk jdk1.5.0_06 java_home
配置環(huán)境變量
[chengh@tserver link]$cd cps_home/conf
[chengh@tserver link]$vi bash_profile.txt
修改java_home,cps_home的路徑并復(fù)制所有內(nèi)容,如下:
export JAVA_HOME=/mnt/data1/chengh/link/java_home
export CPS_HOME=/mnt/data1/chengh/link/cps_home
export
PATH=$JAVA_HOME/bin:$CPS_HOME/bin:$CPS_HOME/bin/tools:$PATH:/bin:/sbin:/usr/bin:/usr/local/bin
:/usr/sbin:/usr/X11R6/bin:.
export LANG=zh_CN.GBK
alias psg="ps -ef --width 500 |grep"
alias cps="cd $CPS_HOME"
[chengh@tserver link]$cd
[chengh@tserver ~]$ls -a
chengh@tserver ~]$vi .bash_profile
修改成如下內(nèi)容:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/mnt/data1/chengh/link/java_home
export CPS_HOME=/mnt/data1/chengh/link/cps_home
export
PATH=$JAVA_HOME/bin:$CPS_HOME/bin:$CPS_HOME/bin/tools:$PATH:/bin:/sbin:/usr/bin:/usr/local/bin
:/usr/sbin:/usr/X11R6/bin:.
export LANG=zh_CN.GBK
alias psg="ps -ef --width 500 |grep"
alias cps="cd $CPS_HOME"
使環(huán)境變量生效
[chengh@tserver ~]$source .bash_profile #source .bash_profile
修改sd文件屬性及權(quán)限
[chengh@tserver ~]$cd link/cps_home
[chengh@tserver cps_home]$dos2unix ./run_me_first.sh
[chengh@tserver cps_home]$chmod +x ./run_me_first.sh
[chengh@tserver cps_home]$./run_me_first.sh
驗(yàn)證java和sd
[chengh@tserver ~]$java 如果顯示java相關(guān)的參數(shù)則說(shuō)明java配置正確。
[chengh@tserver ~]$cpswork checkdb 顯示BUILD SUCCESSFUL 說(shuō)明正確。
更改site_id,位于cps_home/conf/cps_server.xml
[chengh@tserver link]$cd cps_home/conf
[chengh@tserver conf]$vi cps_server.xml
把site_id改為site_id="chenghlink"保存退出。
生成密鑰:
[chengh@tserver~]$ssh-keygen -t rsa
此時(shí)會(huì)在.ssh/生成兩個(gè)文件id_rsa,id_rsa.pub。
[chengh@tserver~]$vi .ssh/id_rsa.pub 復(fù)制里面的內(nèi)容
登陸到219.238.162.158,并su - ln2下
在/var/www/cps/cps_hack_list.html最后一行添加: chenglink:219.238.162.158:8821:ln2
[ln2@mail~]$cd /var/www/cps
[ln2@mail cps]$vi cps_hack_list.html
[ln2@mail~]$cd
[ln2@mail .ssh]$cd .ssh
[ln2@mail .ssh]$vi authoriaed_keys
把剛才復(fù)制的內(nèi)容粘貼到最后(不能有空格和換行)
/*確認(rèn)cps_home/conf/cps_server.xml里的siteId和/var/www/cps/ssh_hack_list.html里的siteId一致*/
測(cè)試連接:
登錄到192.168.1.253
[chengh@tserver~]$ssh ln2@219.238.162.158
能否連通,提示符變?yōu)閇ln2@mail ~]$ 說(shuō)明連通。
登錄:192.168.1.253
發(fā)起連接:
[chengh@tserver~]$cps_ssh_link
登錄:219.238.162.158
監(jiān)聽(tīng):
[ln2@mail~]$netstat -pa |grep 8821
持續(xù)連接:
切換到192.168.1.253下
[chengh@tserver~]$cd link/cps_home/bin/skel
[chengh@tserver skel]$ vi cps_recoverall.cron
將最后一行注釋掉或添加$CPS_HOME/bin/cps_ssh_link >> $LOGFILE 2>&1
這樣系統(tǒng)會(huì)隨著cps recover的配置,定期監(jiān)測(cè)逆向連接,并在需要的時(shí)候啟動(dòng)或者關(guān)閉
[chengh@tserver skel]$cd ../../conf
[chengh@tserver conf]$vi crontab.txt 復(fù)制里面的內(nèi)容
[chengh@tserver~]$crontab -e 將復(fù)制的內(nèi)容粘貼過(guò)來(lái),并將路徑修改正確。修改后的內(nèi)容如下:
#cps_restart_all.cron,每天定期重啟SD系統(tǒng)
01 8 * * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_restart_all.cron
#cps_report.cron,每天定期發(fā)送郵件
32 08 * * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_report.cron
#cps_recoverall.cron,每幾分鐘監(jiān)控一下系統(tǒng)是否僵死
*/5 * * * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_recoverall.cron
#cps_report_creator.cron,自動(dòng)生成報(bào)表
23 7,13,21 * * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_report_creator.cron
#cps_merge_table_creator.cron,merge表每月滾動(dòng)
0 0 1 * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_merge_table_creator.cron
#cps_jiance.cron 排名上傳
0 * * * * /mnt/data1/chengh/link/cps_home/bin/skel/cps_jiance.cron
最后在219.238.162.158上看能否成功登錄到192.168.1.253
[ln2@mail~]$ssh -p 8821 chengh@192.168.1.253
完成以上的步驟,反向鏈接基本就建立成功了。
注://黃色表示在192.168.1.253下輸入的命令
//綠色表示在219.238.162.158下輸入的命令
工作日志和cps_recoveral.cron使用的相同,$CPS_HOME/logs/cps_recover.cron 修改vi /etc/hosts 把vlocal_ 埴寫到最后,對(duì)應(yīng)著cps_server.xml里的siteId。
Vi$CPS_HOME/bin/cps_ssh_link,SUPPORT_URL=http://211.155.251.253:8100/sysadmin/cps/ssh_hack_list.html一行后面加上?$SITE_ID,可以方便在日志里看到反向的連接情況。
如何關(guān)閉客戶系統(tǒng)上的逆向連接
在www.webcate.net上修改/var/www/cps/ssh_hack_list.html,把客戶系統(tǒng)對(duì)應(yīng)的行注釋掉
配置好了之后,過(guò)了一段時(shí)間無(wú)法在通過(guò)管理服務(wù)器訪問(wèn)了這種情況一般是客戶系統(tǒng)的異常導(dǎo)致逆向連接中斷,但是客戶系統(tǒng)上的進(jìn)程還存在,定期運(yùn)行的.
cps_ssh_hack沒(méi)有發(fā)現(xiàn)錯(cuò)誤處理方法是:
在管理服務(wù)器上中止監(jiān)聽(tīng)那個(gè)端口的sshd進(jìn)程(su到root用戶,用netstat -pa|grep 端口號(hào)),如果存在的話,先kill掉。 修改ssh_hack_list.html,注釋掉對(duì)應(yīng)的行,等幾分鐘,讓客戶系統(tǒng)上的連接進(jìn)程被kill掉。(可以通過(guò)tail文件/etc/httpd/logs/access_log.×××來(lái)監(jiān)控) 恢復(fù)ssh_hack_list.html里面的配置,等幾分鐘,直到逆向連接再次被建立(通過(guò)管理服務(wù)器上看指定的端口是否有新的sshd監(jiān)聽(tīng)) 如果出現(xiàn)Host key verification failed提示,需要?jiǎng)h除/當(dāng)前用戶/.ssh/known_hosts 這個(gè)文件,然后重試。
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u2/87463/showart_1732774.html |
|