使用SBD 保护易受攻击的服务不被暴露
经过适当设置后,通过SSH服务,你可以安全地从远程访问服务器,你也许并不喜欢总是在自己的机器上运行着SSH服务器。保卫后门(SBD)这种技术能够建立通向系统的加密连接,这样你就可以远程执行任何操作系统的命令,比如启动SSH或者Web服务器或者重启服务器。 6 o( E6 y) O# q: w& R
$ Y0 }) U0 X5 h z; n6 Y0 Q SBD可以监听任何你想监听的端口。如果你不特别指定某个窗口,那么它就会默认地监听31415端口。该应用的传输协议是SBD,该协议是基于一次一密的乱数本密钥以及按键哈什表信息校验码(HMAC)技术的。 ' @9 `$ M9 n7 K4 @7 C
0 t9 n8 r1 K" D0 Y H; X% D 客户端和服务器端应当拥有相同的密钥,用户才可以接受远程命令。这些密钥就是两份带有随机生成的字符的身份识别文件,该密钥只能在首次连接的时候创建的,人们必需要谨慎使用并保持它的神秘气息。 : ?. [: M0 I9 z. E
" x9 F, g: _$ \; z' B& } 安装和使用 E! j$ |7 b; U o
, C7 u, y4 {1 D/ d4 {
SBD最新的稳定版本是0.5版,是在2005年2月发布的全功能版。下载源代码包,将其解压缩到/usr/local,并编译如下的二进制文件:
' [$ g) i; n3 O3 e# o2 B; I+ E0 s; ^9 d/ m& B
?4 a4 C* |5 Y, q) g- Q( O. Z
/ n- h1 {$ y( I' @: Z$ N
+ |* h G( H1 r$ a7 A8 C3 ?
* @( D: T) Q+ H8 [/ B& U " j: \* ]# U7 `) `6 c; ?
7 }' z0 P7 i* e. O% u$ O- e" H / f6 D8 C0 j) i# W7 W
* W$ N" N. Y8 ?: i' d8 ~ _3 B
/ N5 D1 H9 n- c7 S1 P7 R% b; i* }' \( }% E) O
"# cd /usr/local/1 H! |8 f6 u7 d
"# tar xvfz sbd-0.5.tar.gz- C1 E3 n" e% L- A0 r
"# cd sbd7 n. b6 w# T, a/ n) N0 D
"# g -Wall -O2 -o sbdd ssocket.cpp sha1.cpp utils.cpp sbdd.cpp
2 r0 g0 t' \) G$ T0 x"# g -Wall -O2 -o sbd csocket.cpp sha1.cpp utils.cpp sbd.cpp
& `5 P. N7 y4 T$ e3 C. c5 A) D& b / O0 w9 N/ t& i9 @7 D
; R9 N4 F9 G. @3 I
s" y- Q. Y# Q. \, g @( V8 z2 z9 A Q x$ ~9 T$ k
你得用C 编译器以及上述的开发库才能顺利编译这些二进制代码。你可以参考压缩文件夹中的Readme文件来了解更多关于如何编译SBD和使用方法的说明。 # Z/ g4 u4 }' H4 M w
# o0 e7 g! n" a8 I6 h: C1 S
为了让客户能够成功在服务器上执行远程命令,你需要创建两个身份文件——即客户用的enckey.bits,和服务器用的deckey.bits。你可以在空白文件中输入随机选择的字符,并把它保存成enckey.bits。把该文件复制到deckey.bits就行了。该文件没有字数限制,你用越多字符越好。 7 F, d$ J2 F7 R- e5 Q% W" P
: c, F9 P. T/ G 目录中还有另一个服务器用的随机字符文件叫做athkey.bits,它是用来识别最基本的客户端IP伪装的。文件中的字符只是测试用的,你需要用自己随机生称得字符来创建自己的文件,跟创建enckey.bits和deckey.bits一样。
, N9 X% N$ ^& a$ }$ l
, z2 X2 c0 @& y2 {/ u* h! B 一旦服务器都设定好了,接着就应该把SBD客户端的二进制文件和enckey.bits文件安装或者复制到客户机上。你可以在客户机上运行早已编译过的SBD二进制文件,或者如果这样做行不通的话,你还可以在客户端上建立二进制文件。
& b( n, I9 r( d |) D# a2 j. x# D0 ?/ L6 r+ p5 y( e
你现在可以测试SBD服务器。为了在12345端口启动SBD服务器,可以运行./sbdd 12345。
% t) L# R$ o) K3 }
: G' r. _3 m6 {9 V 要想从远程客户端启动SSH服务器,就运行如:</BR>下命令行:
4 o/ T' N3 [& }0 z& w: M, G7 i7 {+ \. W' A8 c& o' R O4 X
* ~# p8 f9 D z/ m0 {: e2 w , V$ g' U% e* [5 R5 C9 L! H4 B
2 B9 l- A: p+ K! t/ ?7 W
/ K |5 J( B0 P2 D' Q1 l* e" M& Z' c4 r$ V% c0 z+ e# W
; X9 f8 i ]' j& e5 f# O9 k: S
% ?3 F- i7 x; |6 |
5 w9 v0 n# a6 ~5 M3 ~& h* \& z& P& T2 D3 n6 r4 l1 \) k
"$ ./sbd server.IP.address 12345 "/etc/init.d/ssh start"% g3 f, l6 l+ D9 n* S# n9 h% Q5 [
# b8 |. `# B- Y+ P: v
( M0 L t- K4 L+ m& h' n; S
8 g8 c! {- i. Z& v z9 v' Z2 h5 b' n1 C- J6 p
用服务器的真实地址替代server.IP.address项。如果每项都没有问题的话,那么客户机就会显示如下信息: O# y2 d# V% m2 q$ i0 f8 n
+ C5 ^# M8 Z$ g& j6 S$ F$ F! I3 V- d$ t, `+ H2 o! v; v' D1 j3 b" Q4 ~
5 y2 {& Z( U! v! n( E6 l+ z3 Z
$ B4 P+ t1 A) ~5 w8 c4 s
1 X; F9 ~/ Q( R0 y; z7 r- d0 Z8 E. \1 @, X7 m! s$ t% z% ]7 ]
3 K1 q& ]- Y9 u+ d; g# e; O) w
( N, C# D. B; \, K, Q( e, O
+ k: R2 B. _& c+ }
4 U8 g0 B, o) f6 T$ o. s1 M" e Sent: 41 bytes
% G! @/ }4 L& v- X, C r % J/ }0 H8 E' x: ^: _
8 W7 @+ e( ?4 N& r; {$ {! Y 7 O6 N, m3 Q W' q, _
1 N2 e' {& o; N4 H% K: o
这条秘密信息就是你能从SBD得到的唯一的成功标志,如果你要确定SSH服务已经在服务器上启动了,可以检查/var/log/syslog。 " r% I3 a+ z' W' L9 _
$ z4 U$ V3 b" S& l! @' l 如果你的客户端和服务器上没有身份安全密码,你就会看到如下的错误提示: 9 D& x& D! ~0 R4 E* ~; T) h
" l( M ? Q/ Y% @+ t( E0 c% R) i! M) q# W) Y, ^. U" E
% X7 f& i1 N; q
: N- L2 q- E. u* z: d
" @# w" ?# m8 A0 n, P* W5 x 7 b( X9 p, [4 Z7 l% m
4 z6 L, W3 ?: O& A) u( }+ F3 h
) P( L) i. G3 u7 d
( r4 S3 f5 X5 [7 T9 n2 F; `6 h
; l1 C. Y" w+ L* T7 R! Z2 \" o" w- f; d, E* a& ?$ H
sbd: utils.cpp:171: void ComputHMACSHA1Hash(unsigned char*, size_t, char*, size_t,: [) ~( ~8 _) |* G# Y a7 p
unsigned char*): Assertion `secret_siz Aborted (core dumped)
6 I, v; P; t! d0 u& z' B 1 H2 F$ T9 ~# X1 X2 A
& e1 r' @- Q U) w- S+ O
" Z. a0 ]8 _5 T/ h
" e6 G8 c* _2 Q5 w 如果你的SBD服务器并没有运行或者你正在从错误的端口访问,你就会收到如下的错误提示: + a7 `5 d- z9 M. p4 ? C5 s& h
: n* Q/ g1 S/ [1 ?! w# |5 q4 ?' @. R' |1 a7 O0 O4 n
& }# r' p* x, Z4 q) P2 [
( l8 s/ \2 h: |6 G5 s5 e) E! `5 N
' r1 x6 f4 _' S' n, f* M
, r: m6 f) g7 O9 D: o* N
. l! `( m; S6 O& t
- Z0 O/ [' U' K8 ?$ N& P' m5 ] ! `' ?/ ]) S6 L5 z; Z
* q/ I: F5 E* ]4 B! j t8 L. m
Error! Could not connect!5 t0 W! o9 h& h$ {
- u3 [$ r& [ o' V0 [ N, T$ z) { * u: E6 ]* k# |1 ?( b* Q D' d
/ Z8 [" j& V9 m, D3 r, T( q
, c+ f) |/ J! _$ v# X) r$ M 使用SBD,你可以远程执行任何命令,就像你真正登陆到SBD服务器上一样。例如,比起SSH,使用SBD的话,你就不会总是有易受攻击的服务暴露到网上。最好的操作方法就是只有在真正需要的时候才运行那些你很少用的服务。SBD让你少为系统安全操心。 :
点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹