热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux安全

文章标题:Linux安全。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  概述
  
  UNIX的系统安全和系统管理员有很大的关系。安装越多的服务,越容易导致系统的安全漏洞。一些其它的操作系统,如:SCO,实际上更容易有安全漏洞,因为,为了更加“用户友好”,这些操作系统集成了更多的服务。
  Linux本身是稳定和安全的,但是它可以以不同的形式发行。在安装Linux时候,最好先最小化安装,然后再加上必要的软件。这样可以减小某个程序出现安全隐患的可能。如果管理得好,Linux可以是最安全的系统。
  如果在系统中有隐患存在,在网络上成千上万的自愿者就会指出隐患,并给出修正。大的公司,比如:商业软件公司,只能把有限的人力用于解决这方面的问题。把问题都公开出来,对它们来说可能没有什么好处,而且通过正规的发行和升级渠道,一个小小修正到用户手中都要很长的时间。也许这些修正会以补丁的方式出现,但是商业软件的系统管理员都倾向于使用现成的软件,而且自以为这些软件都是很专业的。
  在编程的时候随时可能发生错误,但是,当有上万个人在看程序的源代码,这些错误就能很快地被发现。现在全球共有一千二百万的Linux拷贝,想想看,这是一种什么情况。如果系统有安全漏洞,很容易就被某个人发现了。
  这一章将讨论一些保护服务器安全的一般方法。我们假定这台服务器是连在Internet上的。在通常情况下,有些服务,如:NFS、Samba、Imap和Pop只是供内部用户使用的。当然,也可以把这台服务器和外界隔离,这样就可以简单地避免外部的入侵。但是这没有什么实际意义,我们下面要介绍的是如何避免来自外部的和内部的攻击。
  
  1. 基础知识
  尽量少让外人知道有关系统的信息。有时候简单地用finger程序就能知道不少系统信息,比如:有多少用户、管理员什么时候登录、什么时候工作、他们是谁、谁现在在用这个系统以及其它有利于黑客猜出用户口令的信息。你可以用一个强大的finger daemon和tcpd限制可以连接到服务器的用户以及他们可以知道的有关系统的信息。但是,最好还是把finger软件包卸载掉。
  日志是了解Linux系统运行情况的唯一方法。当然,这是以黑客没有破坏日志文件为前提的,但是这种情况很少见。把所有的连接都记录下来,可以发现攻击者和他们试图进行的攻击。如果你看不懂日志,可以向别人请教,一定要学会看懂它们。向别人请教你不懂的东西这是很正常的,不要不好意思。我自己就是从不断地犯错误和改正错误中学到不少知识的。因为骄傲自大不能学到东西和本身的资质差是两码事。看下面的《31. 创建所有重要的日志文件的硬拷贝》,你可以学到怎样管理日志文件的一些有用的知识。
  限制系统中SUID的程序。SUID的程序是以root(UNIX世界中的上帝)权限运行的程序。有时候这是必须的,但是在多数情况下这没有必要。因为SUID程序可以做任何root可以做的事,这样有更多的机会出现安全隐患。也许,它们有时候会带来安全隐患,有时候不会,但是黑客可以利用SUID的程序来破坏系统的安全。这就是一种叫exploit的程序的由来。exploit程序是一种利用SUID程序的程序或脚本,具有很大的破坏力,可以用来得到root的shell、获取password文件、读其他人的邮件、删除文件,等等。这方面的知识可以参考《34. 带“s”位的程序》。
  
  2. BIOS安全,设定引导口令
  禁止从软盘启动,并且给BIOS加上密码。每次启动的时候都手工检查一下BIOS,这样可以提高系统的安全性。禁止从软盘启动,可以阻止别人用特殊的软盘启动你的计算机;给BIOS加上密码,可以防止有人改变BIOS的参数,比如:允许从硬盘启动或不用输入口令就可以引导计算机。
  
  3. 安全策略
  有一点很重要而且必须指出的是:如果你不知道要保护什么,那么更本没有办法保证系统的安全。所以必须要有一个安全策略,基于这样的一个策略才可以决定哪些东西允许别人访问,哪些不允许。如何制定一个安全策略完全依赖于你对于安全的定义。下面的这些问题提供一些一般的指导方针:
  * 你怎么定义保密的和敏感的信息?
  * 你想重点防范哪些人?
  * 远程用户有必要访问你的系统吗?
  * 系统中有保密的或敏感的信息吗?
  * 如果这些信息被泄露给你的竞争者和外面的人有什么后果?
  * 口令和加密能够提供足够的保护吗?
  * 你想访问Internet吗?
  * 你允许系统在Internet上有多大的访问量?
  * 如果发现系统被黑客入侵了,下一步该怎么做?
  这个列表很短,真正的安全策略可能包含比这多得多的内容。可能你要做的第一件是:评估一下你偏执的程度。任何一个安全策略多少都有一定程度的偏执:确定到底在多大程度上相信别人,包括内部的人和外部的人。安全策略必须在允许用户合理地使用可以完成工作所必须的信息和完全禁止用户使用信息之间找到平衡点。这个平衡点就是由系统策略决定的。
  
  4. 口令
  这章的Linux安全概要就从口令的安全开始。许多人都把所有的东西保存在计算机上,防止别人查看这些信息的方法就是用口令把计算机保护起来。没有什么东西是绝对安全的。与常识相反的是:无法破解的口令是不存在的。只要给足时间和资源,所有的口令都能用社会工程(译者注:原文是social engineering,找不出更好的翻译,大致的意思是用社会和心理学的知识,而不是用纯粹的技术手段)或强行计算的方法猜出来。
  通过社会工程或其它方法获得服务器的口令是最简单和最流行的入侵服务器的方法。决大多数的技术支持人员很容易获得其他用户的口令,因为用户的安全意识很差而且很轻易就相信自己的同事,特别是帮助自己解决问题的人。有很多登记在案的成功入侵就是因为一些别有用心的人利用安全管理上的松懈而获得成功的。有时候,在特定的时间在特定的地点,上级或老板对员工喊话就有可能泄露机密,导致可怕的后果。
  因为破解口令是一项很耗时间和资源的工作,所以应该使得口令文件难于破解,这样即使黑客获取了口令文件也不能轻易破解。作为一个系统管理员,自己在每个周末运行一下口令破解程序,是保证系统安全的好方法。这有利于尽早地发现和替换那些很容易被猜出来的口令。而且,还要有一个好的口令检查机制,在用户选择新口令或改变旧口令的时候,来排除那些有安全隐患的口令。那些字典里的单词、或者全是大写或全是小写的以及没有包含数字或特殊字符的字符串是不能用来做口令的。我建议用下面的规则选择有效的口令:
  * 口令至少要有6个字符,最好包含一个以上的数字或特殊字符。
  * 口令不能太简单,所谓的简单就是很容易猜出来,也就是用自己的名字,电话号码、生日、职业或者其它个人信息作为口令。
  * 口令必须是有有效期的,在一段时间之后就要更换口令。
  * 口令在这种情况下必须作废或者重新设定:如果发现有人试图猜测你的口令,而且已经试过很多次了。
  
  5. 口令长度
  安装完Linux系统之后默认的最小口令长度为5。这就是说一个新的用户可以访问服务器,那么他的口令必须多于5字符。但是这样是不够安全的,最好口令的长度能够大于8。可以强制用户使用8个字符以上的口令。编辑“/etc/login.defs”文件,把最小口令长度由5改成8。找到 PASS_MIN_LEN 5 这一行,改为:PASS_MIN_LEN 8 。“login.defs”是很重要的配置文件。可以在这个文件中设定一些其它的安全策略,比如:口令的有效期。
  
  6. root帐号
  “root”帐号是Unix系统中享有特权的帐号。“root”帐号是不受任何限制和制约的。因为系统认为root知道自己在做些什么,而且会按root说的做,不问任何问题。因此,可能会因为敲错了一个命令,导致重要的系统文件被删除。用root帐号的时候,要非常非常小心。因为安全原因,在不是绝对必要的情况下,不要用root帐号登录。特别要注意的是:不在自己的服务器上的时候,千万不要在别的计算机上用“root”登录自己的服务器。这是非常非常非常糟糕的一件事。
  
  7. 加密
  加密时要用到密匙,密匙是一个特殊的数字,把密匙和需要加密的信息经过加密算法加密之后,只有知道密匙的人才能把信息读出来。如果所有的计算机主机都在你的控制下,加密当然是一个好方法,但是,如果其中一台“被信任的”主机被黑客控制了,你马上就有危险了。这就不仅仅是用户的帐号和口令有危险了。在通常情况下,加密是用来保证机密信息在系统中传送的安全。如果一台计算机被控制了,那么这些加密信息就会让人知道或是泄密了。有一个好的安全策略,这种危险的可能性会降到最低,但是如果某台主机的密匙被泄露出去,那么危险始终存在。使用如:OpenSSL、SSH和MD5这样的加密技术是非常有用的,可以参考后面的章节。
  
  8. “/etc/exports"文件
  如果通过NFS把文件共享出来,那么一定要配置“/etc/exports”文件,使得访问限制尽可能的严。这就是说,不要用通配符,不允许对根目录有写权限,而且尽可能只给只读权限。编辑exports文件(vi /etc/exports)加入:
  例如:
  /dir/to/export host1.mydomain.com(ro,root_squash)
  /dir/to/export host2.mydomain.com(ro,root_squash)
  “/dir/to/export”是你想共享出来的目录,host.mydomain.com是允许访问这个目录的计算机。ro代表只读,root_squash代表不允许对根目录进行写操作。使这些改变生效,你还要运行“/usr/sbin/exportfs -a”命令。
  注意:在服务器上装NFS服务是会有安全隐患的,就我个人而言,不建议你使用NFS。
  
  9. 禁止使用控制台程序
  一个最简单而且最常用的保证系统安全的方法就是禁止使用所有的控制台程序,如:shutdown和halt。可以运行下面的命令来实现:
  [root@deep]# rm -f /etc/security/console.apps/servicename
  这里servicename是你要禁止的控制台程序名。除
推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
author-avatar
三喜金融
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有