天天看點

編譯安裝bind與dropbear

本文介紹編譯安裝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 &gt; /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" &gt; /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 &gt; /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>] &amp;&amp; . </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 &amp;&gt; </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>] &amp;&amp; </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>] &amp;&amp; </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>&amp;&gt; </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 &amp;&gt; </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>&amp;&gt; </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 &amp;&gt; </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>] &amp;&amp; </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 ] &amp;&amp; </code><code>touch</code> <code>$lock_file &amp;&amp; </code><code>return</code> <code>0 ) || ( </code><code>rm</code> <code>-rf $lock_file $pid_file &amp;&amp; </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,如需轉載請自行聯系原作者