本文介绍编译安装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,如需转载请自行联系原作者