本文介紹編譯安裝bind與的dropbear
第一部分編譯安裝bind
一、本機環境
<a href="http://s3.51cto.com/wyfs02/M00/22/E5/wKiom1MrIqyyivqnAACzGveoMAk144.jpg" target="_blank"></a>
二、下載下傳
1
<code>#wget http:</code><code>//www.isc.org/downloads/file/bind-9-9-5rc2/?version=tar.gz</code>
三、解壓,編譯
<a href="http://s3.51cto.com/wyfs02/M02/22/E7/wKioL1MrJNGRWLztAAEYXIyPwQU193.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M01/22/E5/wKiom1MrJivyeiXZAABEtibnijs982.jpg" target="_blank"></a>
編譯的時間有點長。
四、建立主配置檔案
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<code># vim /etc/named/named.conf</code>
<code>options {</code>
<code> </code><code>directory </code><code>"/var/named"</code><code>;</code>
<code> </code><code>pid-</code><code>file</code> <code>"/usr/local/bind9/var/run/named.pid"</code><code>;</code>
<code> </code><code>};</code>
<code> </code><code>zone </code><code>"."</code> <code>IN {</code>
<code> </code><code>type</code> <code>hint;</code>
<code> </code><code>file</code> <code>"named.ca"</code><code>;</code>
<code> </code><code>zone </code><code>"localhost"</code> <code>IN {</code>
<code> </code><code>type</code> <code>master;</code>
<code> </code><code>file</code> <code>"named.localhost"</code><code>;</code>
<code> </code><code>allow-transfer { none; };</code>
<code> </code><code>zone </code><code>"0.0.127.in-addr.arpa"</code> <code>IN {</code>
<code> </code><code>file</code> <code>"named.loopback"</code><code>;</code>
五、建立資料檔案
20
21
<code># dig -t NS . @192.168.1.114 > /var/named/named.ca</code>
<code>#vim /var/named/named.localhost</code>
<code>$TTL 86400</code>
<code>@ IN SOA localhost. admin.localhost. (</code>
<code> </code><code>2014032201</code>
<code> </code><code>2H </code>
<code> </code><code>10M</code>
<code> </code><code>7D</code>
<code> </code><code>1D )</code>
<code> </code><code>IN NS localhost.</code>
<code>localhost. IN A 127.0.0.1</code>
<code>#vim /var/named/named.loopback</code>
<code> </code><code>IN NS localhost.</code>
<code>1 IN PTR localhost.</code>
六、導入二進入檔案
<code># echo "export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH" > /etc/profile.d/named.sh</code>
<code># source /etc/profile.d/named.sh</code>
七、建立使用者,授權(如果沒有此使用者)
<code># groupadd -g 53 -r named</code>
<code># useradd -g named -r named</code>
<code># chown root:named /etc/named/* /var/named/*</code>
<code># chmod 640 /etc/named/named.conf /var/named/*</code>
八、啟動,測試
<code># named -u named</code>
八、檢視啟動端口
<a href="http://s3.51cto.com/wyfs02/M02/22/E5/wKiom1MrLj_gIQdiAADlZE4JxAg949.jpg" target="_blank"></a>
九、rndc
<code># rndc-confgen -r /dev/urandom > /etc/named/rndc.conf</code>
<code># chown root:named /etc/named/rndc.conf</code>
<code># chmod 640 /etc/named/rndc.conf</code>
十、把rndc.conf中檔案的後半部分(15至23行)複制到named.conf檔案中并按訓示啟用
<a href="http://s3.51cto.com/wyfs02/M00/22/FC/wKiom1MsgUvSiEfEAAKTcgWO8hQ412.jpg" target="_blank"></a>
十一、寫服務腳本
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<code>#!/bin/bash</code>
<code> </code><code>#</code>
<code> </code><code># description: named daemon</code>
<code> </code><code># chkconfig: - 25 80</code>
<code> </code><code>pidFile=</code><code>/usr/local/bind9/var/run/named</code><code>.pid</code>
<code> </code><code>lockFile=</code><code>/var/lock/subsys/named</code>
<code> </code><code>confFile=</code><code>/etc/named/named</code><code>.conf</code>
<code> </code><code>[ -r </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code> <code>] && . </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>
<code> </code><code>start() {</code>
<code> </code><code>if</code> <code>[ -e $lockFile ]; </code><code>then</code>
<code> </code><code>echo</code> <code>"named is already running..."</code>
<code> </code><code>exit</code> <code>0</code>
<code> </code><code>fi</code>
<code> </code><code>echo</code> <code>-n </code><code>"Starting named:"</code>
<code> </code><code>daemon --pidfile </code><code>"$pidFile"</code> <code>/usr/local/bind9/sbin/named</code> <code>-u named -c </code><code>"$confFile"</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>echo</code>
<code> </code><code>if</code> <code>[ $RETVAL -</code><code>eq</code> <code>0 ]; </code><code>then</code>
<code> </code><code>touch</code> <code>$lockFile</code>
<code> </code><code>return</code> <code>$RETVAL</code>
<code> </code><code>else</code>
<code> </code><code>rm</code> <code>-f $lockFile $pidFile</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code>}</code>
<code> </code><code>stop() {</code>
<code> </code><code>if</code> <code>[ ! -e $lockFile ]; </code><code>then</code>
<code> </code><code>echo</code> <code>"named is stopped."</code>
<code> </code><code># exit 0</code>
<code> </code><code>echo</code> <code>-n </code><code>"Stopping named:"</code>
<code> </code><code>killproc named</code>
<code> </code><code>if</code> <code>[ $RETVAL -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>return</code> <code>0</code>
<code> </code><code>echo</code> <code>"Cannot stop named."</code>
<code> </code><code>failure</code>
<code> </code><code>restart() {</code>
<code> </code><code>stop</code>
<code> </code><code>sleep</code> <code>2</code>
<code> </code><code>start</code>
<code> </code><code>reload() {</code>
<code> </code><code>echo</code> <code>-n </code><code>"Reloading named: "</code>
<code> </code><code>killproc named -HUP</code>
<code> </code><code>#killall -HUP named</code>
<code> </code><code>return</code> <code>$RETVAL</code>
<code> </code><code>status() {</code>
<code> </code><code>if</code> <code>pidof named &> </code><code>/dev/null</code><code>; </code><code>then</code>
<code> </code><code>echo</code> <code>-n </code><code>"named is running..."</code>
<code> </code><code>success</code>
<code> </code><code>echo</code>
<code> </code><code>echo</code> <code>-n </code><code>"named is stopped..."</code>
<code> </code><code>usage() {</code>
<code> </code><code>echo</code> <code>"Usage: named {start|stop|restart|status|reload}"</code>
<code> </code><code>case</code> <code>$1 </code><code>in</code>
<code> </code><code>start)</code>
<code> </code><code>start ;;</code>
<code> </code><code>stop)</code>
<code> </code><code>stop ;;</code>
<code> </code><code>restart)</code>
<code> </code><code>restart ;;</code>
<code> </code><code>status)</code>
<code> </code><code>status ;;</code>
<code> </code><code>reload)</code>
<code> </code><code>reload ;;</code>
<code> </code><code>*)</code>
<code> </code><code>usage</code>
<code> </code><code>exit</code> <code>4</code>
<code> </code><code>;;</code>
<code> </code><code>esac</code>
十二、添加到開機啟動清單
<code>#chkconfig --add named</code>
<code>#chkconfig named on</code>
==================================DNS編譯完裝到此完成==============================
第二部分 編譯Dropbear
一、簡介
Dropbear是一個相對較小的SSH伺服器和用戶端。它運作在一個基于POSIX的各種平台。 Dropbear是開源軟體,在麻省理工學院式的許可證。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系統,如無線路由器
二、功能:
dropbear實作完整的SSH用戶端和伺服器版本2協定。它不支援SSH版本1 的向後相容性,以節省空間和資源,并避免在SSH版本1的固有的安全漏洞。還實施了SCP的。SFTP支援依賴于一個二進制檔案,可以通過提供的OpenSSH或類似的計劃。
三、配置:
1、下載下傳源包
<code># wget https://matt.ucc.asn.au/dropbear/dropbear-2014.63.tar.bz2</code>
2、編譯安裝
<code># tar xf dropbear-2014.63.tar.bz2</code>
<code># cd dropbear-2014.63</code>
<code>#./configure</code>
<code># make PROGRAMS="dropbear dbclient dropbearkey scp"</code>
<code># make PROGRAMS="dropbear dbclient dropbearkey scp" install</code>
3、書寫服務腳本
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<code>#Description: dropbear ssh server script</code>
<code>#chkconfig: 2345 99 9</code>
<code>RunLevel=0</code>
<code>lock_file=</code><code>/var/lock/subsys/dropbear</code>
<code>dropbear=</code><code>/usr/local/sbin/dropbear</code>
<code>dss_key=</code><code>/etc/dropbear/dropbear_dss_host_key</code>
<code>rsa_key=</code><code>/etc/dropbear/dropbear_rsa_host_key</code>
<code>pid_file=</code><code>/var/run/dropbear</code><code>.pid</code>
<code>dropbearkey=</code><code>/usr/local/bin/dropbearkey</code>
<code> </code><code>[ -r </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code> <code>] && </code><code>source</code> <code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>
<code> </code><code>[ -r </code><code>/etc/sysconfig/dropbear</code> <code>] && </code><code>source</code> <code>/etc/sysconfig/dropbear</code>
<code>port=${port:-22722}</code>
<code>keysize=${keysize:-2048}</code>
<code>gendsskey() {</code>
<code> </code><code>[ -d </code><code>/etc/dropbear</code> <code>] || </code><code>mkdir</code> <code>/etc/dropbear</code> <code>&> </code><code>/dev/null</code>
<code> </code><code>if</code> <code>[ ! -e $dss_key ];</code><code>then</code>
<code> </code><code>echo</code> <code>-n </code><code>" dsskey create..."</code>
<code> </code><code>$dropbearkey -t dss -f $dss_key &> </code><code>/dev/null</code>
<code> </code><code>RunLevel=$?</code>
<code> </code><code>if</code> <code>[ $RunLevel -</code><code>eq</code> <code>0 ]; </code><code>then</code>
<code> </code><code>success</code>
<code> </code><code>echo</code>
<code> </code><code>return</code> <code>0</code>
<code> </code><code>else</code>
<code> </code><code>failure</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code>fi</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>-e </code><code>" \033[35mfile exist:\033[0m$dss_key"</code>
<code> </code><code>fi</code>
<code>}</code>
<code>genrsakey() {</code>
<code> </code><code>[ -d </code><code>/etc/dropbear</code> <code>] || </code><code>mkdir</code> <code>/etc/dropbear</code> <code>&> </code><code>/dev/null</code>
<code> </code><code>if</code> <code>[ ! -e $rsa_key ];</code><code>then</code>
<code> </code><code>echo</code> <code>-n </code><code>" rsakey create..."</code>
<code> </code><code>$dropbearkey -t rsa -s $keysize -f $rsa_key &> </code><code>/dev/null</code>
<code> </code><code>RunLevel=$?</code>
<code> </code><code>if</code> <code>[ $RunLevel -</code><code>eq</code> <code>0 ];</code><code>then</code>
<code> </code><code>success</code>
<code> </code><code>echo</code>
<code> </code><code>return</code> <code>0</code>
<code> </code><code>failure</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code>fi</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>-e </code><code>" \033[35mfile exist:\033[0m$rsa_key"</code>
<code> </code><code>fi</code>
<code> </code>
<code>start()</code>
<code>{</code>
<code> </code><code>[ </code><code>"$EUID"</code> <code>!= </code><code>"0"</code> <code>] && </code><code>exit</code> <code>10</code>
<code> </code><code>[ -x $dropbear ] || </code><code>exit</code> <code>5</code>
<code> </code><code>start_port=`</code><code>netstat</code> <code>-an | </code><code>grep</code> <code>LISTEN | </code><code>grep</code> <code>":$port"</code> <code>`</code>
<code> </code><code>if</code> <code>[ </code><code>"$start_port"</code> <code>!= </code><code>""</code> <code>];</code><code>then</code>
<code> </code><code>echo</code> <code>-</code><code>ne</code> <code>" \033[35mdropbear daemon is already running..\033[0m"</code>
<code> </code><code>success</code>
<code> </code><code>echo</code>
<code> </code><code>exit</code> <code>0</code>
<code> </code><code>fi</code>
<code> </code><code>echo</code> <code>-</code><code>ne</code> <code>" \033[35mStarting dropbear service .....\033[0m"</code>
<code> </code><code>daemon --pidfile=</code><code>"$pid_file"</code> <code>$dropbear -p $port -d $dss_key -r $rsa_key</code>
<code> </code><code>RunLevel=$?</code>
<code> </code><code>echo</code>
<code> </code><code>([ $RunLevel -</code><code>eq</code> <code>0 ] && </code><code>touch</code> <code>$lock_file && </code><code>return</code> <code>0 ) || ( </code><code>rm</code> <code>-rf $lock_file $pid_file && </code><code>return</code> <code>1 )</code>
<code>stop()</code>
<code> </code><code>if</code> <code>[ </code><code>"$start_port"</code> <code>== </code><code>""</code> <code>];</code><code>then</code>
<code> </code><code>echo</code> <code>-</code><code>ne</code> <code>" \033[35mdropbear service not Starting..\033[0m"</code>
<code> </code><code>return</code> <code>1</code>
<code> </code><code>echo</code> <code>-</code><code>ne</code> <code>" \033[35mStopping dropbear service\033[0m"</code>
<code> </code><code>killproc dropbear</code>
<code> </code><code>RunLevel=$?</code>
<code> </code><code>if</code> <code>[[ $RunLevel -</code><code>eq</code> <code>0 ]]; </code><code>then</code>
<code> </code><code>rm</code> <code>-rf $lock_file $pid_file $dss_key $rsa_key</code>
<code> </code><code>return</code> <code>0</code>
<code> </code><code>else</code>
<code>reload()</code>
<code> </code><code>echo</code> <code>-n $</code><code>"Reloading dropbear: "</code>
<code> </code><code>killproc -p $pid_file $dropbear -HUP</code>
<code>restart() {</code>
<code> </code><code>stop</code>
<code> </code><code>start</code>
<code>status () {</code>
<code> </code><code>if</code> <code>[[ $start_port != </code><code>""</code> <code>]]; </code><code>then</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[35mdropbear is running..\033[0m"</code>
<code> </code><code>#statements</code>
<code> </code><code>else</code>
<code> </code><code>echo</code> <code>-e </code><code>"\033[35mcurrent dropbear is Stopping..\033[0m"</code>
<code> </code><code>fi</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>genrsakey</code>
<code> </code><code>gendsskey</code>
<code> </code><code>start</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>stop</code>
<code> </code><code>restart)</code>
<code> </code><code>restart</code>
<code> </code><code>reload)</code>
<code> </code><code>reload</code>
<code> </code><code>status)</code>
<code> </code><code>status</code>
<code> </code><code>*)</code>
<code> </code><code>echo</code> <code>$</code><code>"Usage: $0 {start|stop|restart|reload|status|}"</code>
<code> </code><code>RunLevel=2</code>
<code>esac</code>
<code>exit</code> <code>$RunLevel</code>
配置參數檔案
<code>#vim /etc/sysconfig/dropbear</code>
<code>keysize=2048</code>
<code>port=22722</code>
授權,添加開機啟動
<code># chmod +x /etc/init.d/dropbear</code>
<code># chkconfig --add dropbear</code>
<a href="http://s3.51cto.com/wyfs02/M01/22/FC/wKiom1Msi9WR-gosAAEL4r7up50197.jpg" target="_blank"></a>
啟動服務
<a href="http://s3.51cto.com/wyfs02/M02/22/FD/wKioL1MsimfAg5nuAACpYljzqDQ134.jpg" target="_blank"></a>
連接配接測試
<a href="http://s3.51cto.com/wyfs02/M00/22/FD/wKioL1Msi9Gzo-hVAAFIuTDD0jM730.jpg" target="_blank"></a>
檢視程序樹,是否是由dropbear連接配接
<a href="http://s3.51cto.com/wyfs02/M02/22/FC/wKiom1MsjL_xoydWAAHospYCCtk957.jpg" target="_blank"></a>
注:
在此次dropbear編譯安裝生成的檔案都是使用預設路徑安裝,如果要自定義可以使用./configure --help檢視相關屬性。
有了這個工具,就可以在特殊的環境替換ssh了a_c
=======================================完===============================================
PS:
1、這是補上次DNS未寫的部分之一
2、下次将補上DNS的View與Rndc
明天還要上課,果斷的去睡了,各位晚安.GN
本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1381368,如需轉載請自行聯系原作者