a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 101|回复: 0

[综合辅导] Linux认证辅导:保护你们的Ubuntu服务器

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导:保护你们的Ubuntu服务器/ X" F2 ]( d& D# n4 H2 A/ b+ B" i
保护你的Ubuntu服务器
- s) B" X2 Q( W安全是相对的,使用本文介绍的这些方法不能绝对保证你的服务器是“安全的”,但可以肯定的是它比以前更安全,也比大多数服务器要安全,至少菜鸟级的黑客是无法攻破的;安全是一个持续的过程,它不是一蹴而就的,我们认为,在安全领域是需要一点偏执精神的。, C3 I# T, _. x9 v" Y  R
本文所列举的这些保护措施在Ubuntu Server 10.04(Lucid)和10.10(Maverick)中测试通过,如果你想让你的新Ubuntu服务器变得坚不可摧,你应该仔细阅读本文。$ \" N% c# \7 S* Q0 A9 w. R
Ubuntu服务器设计优良,并有定期更新,相对来说是比较安全的,Ubuntu安全团队表示会不断努力,保护Ubuntu的安全,将会定期提供安全更新。
  [+ x, A  a! W2 j! ^% d( x4 y' b· 不打开端口
+ r) m8 e' G3 h1 i6 w* @% g- T5 H· 基于角色的管理
* |# h+ d3 d) `' T- H· 无X服务器
( c# O4 `5 k: A4 S; e! z· 安全更新
1 ^. @# m& Z$ e; c: [. |7 o· 内核和编译器保护
3 w6 F& x/ c' |! z+ B在这篇文章中,我们将从不同方向来应对安全挑战,包括:系统分析,修改设置,安装防火墙,扫描rootkit和制定周期性维护制度。/ E& A$ ?3 }" u3 E5 [3 I) {
· 修改设置,增强安全性& T& c, A& W0 `  n- Y) ?$ S
· 实施UFW,简单的防火墙
  X7 Z, P9 L  W( I' J9 N8 F) `  T· 使用denyhosts自动将攻击者列入黑名单
2 |& u9 Z! i0 M3 c% h· 使用Tiger扫描系统漏洞& R9 s5 u3 z# ?
· 使用psad检测入侵尝试行为1 G; e8 U5 d1 U4 h% t+ Q( B/ p
· 安装nmap,扫描系统打开的端口
/ p* X* ^5 P7 ~6 U· 使用chkrootkit检查系统rootkit
( d# S: |+ {0 S  S: y$ D+ A& p2 M9 a· 监控日志
0 I/ V/ h) m1 ~! R" K2 G1 S修改设置,增强安全, [3 L: J( e( J5 N
保护共享内存8 N1 c' ]- W% O# A
攻击一个运行中的服务(如httpd)时经常要使用/dev/shm,修改/etc/fstab使其更安全。6 V& i5 \  e8 V
sudo vi /etc/fstab添加下面这一行内容:$ A+ i2 I& n/ A& T0 [
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0禁止root通过SSH登录
3 c7 L/ R4 n5 G# |3 l$ I( {Root帐号在Ubuntu中默认是被禁用了的,如果你在Slicehost或Linode上安装Ubuntu,root则是被启用的,无论怎样,禁止root通过SSH登录系统都是一个好主意。
9 t- e( C+ _: f$ hsudo vi /etc/ssh/sshd_config将PermitRootLogin设为no:
" p6 W1 j6 q. M& X- Q. I1 ^* gPermitRootLogin no当然,如果你通过SSH访问你的服务器,在禁用root使用SSH之前,确保其它用户可以正常使用sudo工作。  X$ M8 G3 N& W
只允许管理用户使用su& S+ k5 X+ X3 ~: a
这将有助于预防特权提升,默认情况下,Ubuntu没有提供管理组,因此需要先创建一个管理组。
( _8 {8 O% I1 o2 isudo groupadd admin将你自己加入到管理组:6 K/ E9 E" n- }6 ?
sudo usermod -a -G admin andrew限制/bin/su的访问权,仅授予管理组成员:
8 p/ g  z7 y# q: f. \! ?$ Z5 Msudo dpkg-statoverride --update --add root admin 4750 /bin/su检查/bin/su的权限:
! o; f- X! o& `. i& w* D2 P4 h, b- M7 a( Z  B8 s% l3 Y& ]

/ k1 {3 e2 `% X: Cls -lh /bin/su看到下面的输出内容:& i% e# a* c4 w/ j' |$ ]4 g2 W
-rwsr-x--- 1 root admin 31K 2010-01-26 17:09 /bin/su不允许跟踪入站数据包的源路由
8 O" ?! b2 K4 \  n1 U. I# |sudo sysctl -w net.ipv4.conf.all.accept_source_route=0. y, r8 d" D% D6 N  K
sudo sysctl ?-w net.ipv4.conf.default.accept_source_route=0不允许系统用户访问FTP服务器
/ `' C/ s3 s) b# T/ L" k+ I只有当你安装了ftpd才需要这么做,只要tiger扫描报告中不出现相关警告即可,SFTP比FTP的安全性要好,如果可能,应尽量使用SFTP。% R7 O( y4 k: e7 S
Edit /etc/ftpusers:5 {& D- ?* R2 Y: e' G; x
sudo vi /etc/ftpusers添加系统用户拒绝使用ftpd:$ }2 C# \4 v7 S9 E) ]
UFW:简单防火墙
+ x5 m" v% \5 C! F: B9 PUFW(Uncomplicated Firewall,简单防火墙)提供了一个易于理解的接口控制iptable(iptable控制Netfilter,Netfilter内置于内核之中),只需要几个简单的命令,你的服务器就可以控制访问,创建状态也很容易。5 r% R9 o: |9 ?9 k( Y0 [- A
UFW是用于配置iptable的一个简单接口。
8 p) C8 [* S1 d9 r6 S安装并启用Uncomplicated Firewall:" H* [7 Q4 M1 |7 h& L
sudo aptitude install -y ufw
3 j+ \9 B1 v4 ^0 ^8 \; r3 psudo ufw enable显示可用的UFW命令:
" T* W" J) [& Esudo ufw show显示UFW配置:
% x1 H. ?* \3 i* v6 r: X3 e8 dsudo ufw status允许SSH和HTTP访问Apache服务器:
8 _. [, ^; i* {$ Psudo ufw allow ssh2 @9 F! a+ d8 k0 Y2 T7 k
sudo ufw allow http在上面的示例中,OpenSSH和Apache的端口通过服务名(ssh和http)打开,你可以使用端口号替换这里的服务名(如用80替换http)。/ ~6 u7 \' g& v' T( {: b, {+ ~
查看服务运行情况:3 ~  a$ C( Q& J& B
查看运行中的服务,便知道应该打开哪些端口:1 f1 N5 B6 b5 c2 H7 t, e
sudo ufw app list查看UFW使用的服务:/ H5 [0 v3 A4 D4 c
less /etc/services
  \* K; V0 [3 b, @! A* H( qDenyhosts:避免SSH攻击1 u- n# ~; ~/ O' {# j6 g% o( ?' y
项目主页: http://denyhosts.sourceforge.net// ?) j3 ~  C3 w
查看服务器上的/var/log/auth.log,我发现有一连串的SSH攻击,对付这种攻击有很多方法,首先就是denyhosts。
. S% C/ x5 ]2 j1 ?9 V  c. RDenyhosts会周期性地扫描/var/log/auth.log,找出通过SSH反复失败访问系统的行为和来源,然后将它们添加到/etc/hosts.deny中。详细情况请访问项目主页。
/ t# {/ T( x5 f' `1 {. K) Usudo aptitude -y install denyhosts
3 O2 p4 G& H1 X" @2 `要做的就这些,剩下来的都是自动的,你可以使用下面的命令查看添加到/etc/hosts.deny中的IP地址:
) [; I. U$ e% k  L1 ~7 p7 p& _' Osudo less /etc/hosts.deny
/ ^: U1 B$ E: J5 O1 f$ s3 XTiger:系统安全扫描器7 H! j2 Y( M& C, d* R/ z
项目主页: http://www.nongnu.org/tiger/: @' y% \) l; t! K1 m* V: X' ]; @
通过分析系统上的文件和设置,Tiger创建自动的安全审核,最终以报告的形式列出分析的内容,警告,警报和故障。
  P, p- Y4 Q' W1 v4 DTiger命令在/var/log/tiger中记录了潜在的安全问题,使用tigexp命令查找结果编码可以获得详细的解释和安全加固建议,tiger认为很严重的问题都标记为Fail。
  W' V; P1 a' r* B9 T3 x安装tiger:% a7 X4 J5 K  ^9 W, O
sudo aptitude -y install tiger运行tiger,创建一个安全问题报告:6 P* w  t1 j/ H- \+ K8 }, i
sudo tiger使用less查看最近的tiger报告:4 A- ^- C/ B* x: q. m+ q
sudo -i
% s9 L$ P+ w8 j+ l4 u# J8 N+ _) ~less /var/log/tiger/`ls -t1 /var/log/tiger | head -1`  V" @6 }4 f9 [3 \' L/ i7 C9 C
exit使用tigexp列出Fail代码的解释:% J, s) p. w; v* B
tigexp dev002f当然使用Google搜索一下也可以。
0 \  s* ~2 v- C  ?2 ^+ U4 Q# u& ?忽略这些:( a* ^( _  R+ R/ X: U  f- v6 k2 r
--FAIL-- [dev002f] /dev/fuse has world permissions
8 ]) j- n1 s; ~. y% v$ N--FAIL-- [logf005f] Log file /var/log/btmp permission should be 660修改它们的权限可能会导致其它问题。8 h, ~  \3 h% `, ]  b6 w
使用psad检测入侵行为
4 v1 i# Y% _) R9 n: I项目主页: http://www.cipherdyne.org/psad/. Y* I! o8 a3 M. C3 {6 X
Psad可以记录下入侵行为,还可以监控iptable。
$ @2 ~5 b5 [; r0 k) t% _: u4 n安装psad:
; b9 c: `4 \6 x7 \& Zsudo aptitude -y install psad后台进程会自动运行。, |- E' r5 ~8 W( f. i: S
检查当前的状态:
$ P0 q: s$ t1 O1 Isudo psad -S你可以修改psad设置,检测到入侵行为时给管理员发送电子邮件。) U0 I5 t+ c; E& T/ s3 X
Nmap:端口扫描" T& V$ f1 V* a( _
项目主页: http://nmap.org/6 c( u+ s( n9 O; @# H
Nmap允许你查看打开的端口,验证UFW/iptable工作是否正常。
8 I) L1 L" F# F$ {* d& X) d安装nmap:
1 h" S% m2 e7 Y1 ]7 g3 wsudo aptitude install -y nmap端口扫描:
- G; H' b5 K! y1 ]. wnmap -v -sT localhostSYN扫描:  u8 j5 J% q2 B4 v
sudo nmap -v -sS localhost扫描类型解释: http://nmap.org/book/man-port-scanning-techniques.html
8 d2 @) q7 O0 z  K. i/ MChkrootkit:检查rootkit
& b: D+ B# c) q. R8 X& T2 K项目主页: http://www.chkrootkit.org/
3 [! A- s: i- y8 N  a  EChkrootkit扫描系统中是否存在rootkit。1 |- N+ n5 K7 D
+ z9 v, }5 x& [9 k& A

1 i$ @+ O1 v- M2 t% Q9 Y理想情况下,你并不需要做这种扫描,但现实中最好还是定期运行一下。2 Y! E- n9 ~3 j, G* G: G8 c
安装chkrootkit:
9 n" ^" l' h* u( r% i# H8 }6 H1 x) E* ~sudo aptitude install -y chkrootkit运行chkrootkit:. `9 ~- l% ~5 {
sudo chkrootkitLogWatch( k( z& x* f! Q$ }
Ubuntu社区文档: https://help.ubuntu.com/community/Logwatch
6 W/ G5 z1 `& N% |8 K8 K日志再详细,如果没有一款好用的日志查看器,日志起的作用也非常有限,Logwatch可以从海量的日志中精选出最有用的信息,形成一个易读的报告,每天打开Logwatch看一下系统产生的日志是一个良好的习惯。! w% i) h4 v  n" o, _) _7 g( H2 |
安装:4 |- f& s& c  o( p- f8 m8 D+ ^
sudo aptitude -y install logwatch用法:
: w; X# G0 `4 Y, B9 Hsudo logwatch | less持续维护
+ j% |% j( I8 O+ E你的服务器现在更安全了,但不要就此停下来,每周例行一次维护是个好习惯。6 X2 A' \; F& n9 M2 M' ~
更新软件:
: k( ?/ E; C6 o: e. c# t6 X" h, P9 xsudo aptitude update5 [: Q: Z9 P* }9 S9 u% l
sudo aptitude safe-upgrade我喜欢使用safe-upgrade,因为它执行的是安全更新。0 x9 I) P0 A4 _+ T, O7 ?0 k; A. u  b
请看: http://wiki.debian.org/Aptitude, o- P  ^4 G( k- K0 |9 n
或者,你可以将安全更新设置为自动,如果你不能每周维护一次,这不是一个完美的解决方案,因为管理员没有监控更新了什么,更新后也没有执行测试。请看: https://help.ubuntu.com/10.04/serverguide/C/automatic-updates.html: C- y  y. \& b6 |  p. H- P7 P" v+ m
检查入侵行为:+ V; _3 ~$ B$ h# N- Z* L2 B
sudo psad -S请先使用tiger分析一下系统,因为tiger在/var/log/tiger中的报告属于root用户,每次都运行一下这些命令,解决有些用户的权限问题。
+ \' y4 w- P; ysudo -i' r3 H4 @5 x5 ~5 K9 q/ Q
tiger
2 _- M9 X1 p3 Y( @: e) ?grep FAIL /var/log/tiger/`ls -t1 /var/log/tiger | head -1`
8 C' C6 I$ G* J% l4 Nexit在上面的命令中,使用grep从最新的报告文件中提取出Fail标记,ls子句给grep输送目录中的最新文件,sudo -i命令允许你以root用户运行多个命令,使用exit结束命令。
& z& ~9 y0 k- h3 `+ f5 o0 @& R$ R2 y使用tigexp列出Fail代码的解释:, M$ L6 c0 J/ s! V+ g
tigexp dev002f使用nmap扫描端口:3 R9 n: D2 c( W9 Q1 b# r
sudo nmap -v -sS localhost检查rootkit:
5 f9 ]% |. ]: X  }: Dsudo chkrootkit查看日志:
: Z& H9 Y/ H  {5 Wsudo logwatch | less
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 20:02 , Processed in 0.293798 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表