Linux系统管理经验总结分享

不知不觉做Linux系统管理也有一年半左右了,从最初什么都不懂的菜鸟,一路走过来,一路坚持并奋斗着,总结了一些经验,分享一下。

  1. 版本

         什么样的Linux版本才适合企业和个人使用? 我想每个人接触的时候都会有这个问题,包括我也是,因为开源以及可定制性方面,导致Linux世界里百花齐放, 各种版本进入我们的视线,所以我们选择自己满意适合的版本的时候很是纠结,这也导致了在学校的时候,我差不多“玩过”差不多不下十种Linux版本。当然也并不是说玩了那么多版本就什么什么的,至少后来自己觉得浪费了很多宝贵的时间去探索更深层次的东西。

    <p>     先说个人使用的版本吧,如果你喜欢玩儿什么网游,不喜欢自己动手,去探究,自己谷歌的话还是绕过吧,至少目前的Linux世界不适合你。我想大部分人接触Linux的时候都是Ubuntu吧,都被Ubuntu那些特效吸引,装完系统后总是首先找各种美化的方法,把自己的系统界面展现给别人看,别说你没做过,因为爱美好的事物是人的天性,谁也不喜欢天天对着一堆字符界面敲来敲去,耍帅对吧,估计会有人喷,只能送你两字儿:SB。呵呵。当你看见网上别人的桌面是如何如何漂亮的时候,自己也会暗地下决心,也要整出来,于是乎自己在网上找各种方法,不会的一些命令啥的也都看多了差不多记住了。过段时间,或许是Ubuntu把桌面改的别扭后,你想换个版本玩玩,于是乎OpenSUSE,Debian,LinuxMint,ArchLinux,CentOS等等成了你的预选者。</p>
    

         我个人使用的最久的也就是Debian。其实完全没必要用那么多版本。我总结的就是,你可以对着Linux系统族谱,仔细看看分支来源,学习下不同分支源的包管理机制,以及包管理工具,其实其他的部分都是差不多的,没必要在那个上面耗时间,个人还是推荐使用debian和LinuxMint作为DEB包系列的入门系统,不仅界面不用过多折腾就已经很赖看了,也能学习,何乐而不为?要是学习RPM包管理系列的话首选CentOS了,另外就是OpenSUSE虽说也是用rpm作为默认的软件包,界面也很华丽,包管理工具不错,也可以学习下,虽说国内用SUSE系列的不多,纯属个人感觉。

         在这个“入门”的阶段,有的人因为嫌麻烦放弃了,投奔win了,有的还是坚持下来了,并把Linux系统管理作为今后的职业时候,那就来说说企业版本的选择吧,国内的话,还是个人感觉吧,CentOS应该比较多,所以选择好版本了,就要开始折腾了,技术从折腾开始。学习的时候也并不是非得把自己机器装一个CentOS来做,而且一招不慎导致系统垮掉或者格式化了那就后悔了,我因为手贱全格不下四次。。。可以借助虚拟化软件比如VB,VM之类的,在虚拟机里面装。下载一个mini版本的,装的东西越少越好,以后按需求来进行安装,不仅降低安全上的风险,也可以减少以后莫名其妙的麻烦。不要盲目追求新的东西,毕竟稳定才是重中之重。什么样的阶段什么样的需求,用什么样的技术,什么样的架构。

         通过远程工具连进去,进入无图界面,当然你得先熟悉最基础的命令。开始折腾用源码自己编译定制些东西吧,LAMP环境肯定是先得跑上一遍,不然你都不好意思说你是做系统管理员的了。然后就是各种企业环境的各种网络服务的搭建,比如DNS,Nginx,LVM等等等等。这个过程需要一定时间,期间就是遇见各种错误复制错误信息谷歌去,进入循环状态,当然不要进入死循环了。当实在是各种方法都用尽的时候,去相应的社区去提问吧,那里的高手都会很乐意回答,前提是你自己做过最大的努力,并且要学会提问的技巧,可以在网上搜一篇文章叫提问的艺术,仔细看看。别一看标题就是跪求高手,坐等之类的,谁也不欠谁的,看了这样的问题,大部分人也就是看看而已,都不会怎么鸟你。其实Linux下面出错了大部分都有回显提示以及日志可以看,早有人碰到过并分享出来了,所以你得学习下搜索引擎的技巧,不然搜出来的也不一定能解决你遇见的问题。

         最后就是解决之后要善于总结,并分享出来,帮助别人的时候其实也在帮助自己。接下来就是深入的了解一些常用命令以及编译安装上的参数,安全配置以及优化方面的了,善用命令能得到事半功倍的效果。学习下shell脚本,多实际的操作,这时候也差不多算是入门了吧。。。还是个人感觉。当真正从事linux系统管理方面的工作的时候,要学的东西突然变得多了起来,还是那句话,多动手,动脑,善于总结。

  2. 安全

    安全是个永恒的话题,也是重中之重,这时候你就得学习下黑客安全攻防方面的原理,想深入的那就是后话了。最初整体架构搭建的时候,先用测试环境测试好,记录相关问题,因为谁也不能保证上线提供服务的时候完全无误,不要暴露错误信息给客户。上线之前做整体的程序上的安全测试,比如常见的SQL注入,跨站等等,如果倒在这些地方,那就不划算了,现在的很多“黑客”随便拿个工具就可以扫到,如果不是你写的程序你不能控制,至少你得记录后反馈给开发人员,不测试好就尽量不要弄上去,除非逼不得已,至少我被逼过。。。
    

         ssh的话做ip限制登录,安装fail2ban或者denyhost防护软件,定期检查日志,屏蔽异常ip。root账户不能直接登录到系统,建立个最低权限的用户作为入口,使用完之后保存历史命令记录后并清除,将备份文件下载下来按日期保存或者放到服务器的隐藏目录里面,这样即使被入侵了,别人也不能很快获取相关的信息,而且自己命令操作失误之后也能还原出错场景。
    应用日志独立存放,并设置权限,程序文件按最小化权限分配,能跑起来不影响业务即可,特别是上传目录,有条件的话上传单独拿台服务器,做上传权限控制。定期压缩备份网站访问,对程序日志文件进行分析,找出异常。

         减少前端入口,其他机器能不开外网的话,全部去掉,不要遗留在上面,如果使用了Nginx等代理软件的话,只留一个入口机器,并什么服务都不放,定期修改密码,还要做ip用户的访问策略。一般入口机器使用windows稍微方便些,个人习惯而定,有条件的也可以买那种kvm远程控制终端,插到入口机器上,然后禁用掉所有的远程连接,虽说这样显得特别麻烦,但能省不少事儿,放公网上谁也不能保证不中招。

         上传程序的话,先删除里面的一些无用以及敏感信息,比如删除项目里面的SVN文件,可以使用以下脚本。[点击之][1].其他的话,自己找去吧。等其他都测试完成之后,慢慢来缩小权限,开启防火墙,这期间会遇见各种因为权限以及防火墙导致稀奇古怪的问题,逐个去解决。特别要注意ftp文件以及相应目录的权限访问控制,程序你改不了的话,你得做相关的安全测试以及记录,以防不测,fail2ban可以防ftp暴力破解。

         总结:权限最小化,按需求安装相应的软件,定期更改密码,分析日志,进行总结,做程序文件和系统关键文件的快照,这个可以百度或者谷歌。

    3.备份

     这个也是除了安全外,最重要的了,特别注意一些“高危漏洞"的命令,如 rm -rf (我是吃过大亏的),cp -R, sed ,\cp -R 等,操作文件目录的时候,必须先备份,不然错了你连后悔的机会都没有,不要图一时快捷。更改文件的时候先备份两份,操作其中的一份备份文件,确认无误之后再进行相应的操作。
    

         怎样合理进行备份?最好是每天或者每两三天做全备份,周期性不要太长。备份文件的命令,以及目录的说明信息也很有”讲究“,备份单文件的话,我一般按照这样的格式: **原始文件名-当前时间-叠加说明或则次数.ext** 这个可以按照自己的需要,目录的话,里面最好是放一个说明文件(readme.txt),就算英文不行,不能输入中文,你用拼音可以吧,免得以后自己都不知道了,压缩后文件名和单文件备份命名规则一样。多文件的话,按照上级目录层次来,命名同上。最后就是放到公共目录以外,或者上传到专用的备份服务器,也可以下载到本地。

    4.深入

    当你实际工作了有段时间了,就要深入了解了,至少到现在所了解的真的还只是个皮毛,系统架构,安全测试,优化,都是要工作之外要学习并实践的。多学习下python,shell,perl中的一门或者多门语言,进行自动化方面的,自己每次都一条条命令输入也挺烦的,当然前提就是要做好足够的测试。虚拟化平台如KVM,XenServer自己最好是也接触了解下,php的话最好也还是多学点儿吧,至少为以后的谋生多了条路子,不要总拿语言的优缺点来说事儿,什么需要用什么样的语言,做出来就是对的,瞎喷的都是别人的,学到的才是自己的。
    

     写到最后:本文很多都只是自己的看法,也只是按照自己的思维以及实际工作中用到的来写的,有的也还没总结到,涉及的也比较片面,暂时也只能总结到这,有不足之处或者其他的问题,大家都可以来补充。

还是那句话:都TMD是个人感觉!半夜加班,空闲时间来写这个我容易我。。。吐槽下 @红薯这个编辑器真心不好用,该换了,难道是我没学会怎么用的?

还是贴出个人博客的原文吧,刚弄出来:
http://www.lastme.com/linux/08/10/linux-system-administrator.html

你可能感兴趣的:(linux,经验,系统管理,总结分享)