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

Linux安全基础

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

  一、系统简介
  Linux是一个真正意义上的免费的操作系统,起初是由Linus Torvalds出于个人爱好,在业余时间写成的一个操作系统,后来放到了INTERNET上而逐步演变成今天的Linux。今天的Linux,吸引了全世界成千上万的程序员,他们在不同的国家和地区来共同开发和完善这一免费的操作系统。 Linux继承了UNIX系统的特点,它的发展凝聚了世界各地无数开发人员的大量心血,体现了一种信息世界的共建、共享和共荣的精神。
  
  二、基本概念
  1、用户和用户组
  Linux有很强的用户管理机制,它是通过用户和用户组这两个概念来实现的。
  用户是指可以登录到系统的帐号。Linux是一个多用户的操作系统,它允许
  多个用户同时登录到系统,Linux给每一个系统帐号一个用户ID,来区别不同的
  用户。
  同时Linux还通过用户组来为同一个组的用户分配权限,每一个组也有一个
  组ID,来区别不同的组。
  2、文件与目录许可权限
  文件和目录的属性决定了文件和目录的被访问权限,即谁能存取或执行该文件。
  使用命令ls -l将显示文件类型及文件许可权限等。
  如:
  
  文件类型
  文件拥有者(u)许可权限
  文件组拥有者(g) 许可权限
  
  其他用户(o)许可权限
  - rwx rwx rwx 1 root root 437428 Sep 15 21:21 vi
  (图一)
  (图一)用三元组表示文件许可权限,第一个三元组是拥有文件的用户(u),第二个三元组是拥有文件的组(g),第三个三元组是其他用户(o)。
  Linux就是通过这种方法来对文件的许可权限进行管理,系统根据每个文件的许可权限来判断每个用户对每个文件的操作权限。
  在整个系统中有一个用户不受限于这个限制,即root用户,系统的超级用户,它可以更改任何一个文件的许可权限。普通用户也可以使用chmod来改变属于他自己的文件和目录的许可权限。
  除了上面介绍的rwx三种许可权限外还有两种特殊的权限:s和t。s位出现在组三元组或拥有者三元组的第三位,也就是x位,它表示此文件是可执行文件,并且在文件执行时,以文件所有者的ID可文件组ID运行,而不是用运行命令的用户的ID来运行。可执行脚本被置s位,存在一种潜在的危险,特别是文件拥有者或组拥有者是root的文件。t这一符号在其他用户三元组中的第三位置,通常,如果在目录上的其他用户三元组中指定了执行和可写许可权限时,任何用户无论所有权及许可权限都可删除该目录中任何文件,使用这种设置可防止用户而不是拥有删除或修改目录中的文件。
  三、系统认证
  Linux系统目前采用一种全新的认证方式,即:可插式认证模块(PAM: Pluggable Authentication Modules)。
  PAM是由Sun提出的一种认证机制。它通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
  
  
  系统管理员通过PAM配置文件来制定认证策略,即指定什么服务该采用什么样的认证方法;应用程序开发者通过在服务程序中使用PAM API而实现对认证方法的调用;而PAM服务模块(service module)的开发者则利用PAM SPI(Service Module API)来编写认证模块(主要是引出一些函数pam_sm_xxxx( )供libpam调用),将不同的认证机制(比如传统的UNIX认证方法、Kerberos等)加入到系统中;PAM核心库(libpam)则读取配置文件,以此为根据将服务程序和相应的认证方法联系起来。
  通过使用PAM这种认证方式,可以使整个系统的认证有更大的灵活性,系统管理员可以根据需要来调整认证模块,根据不同的安全级别来配置系统环境。
  四、安全shell
  在通常的系统管理中,系统管理员常常通过telnet登录到系统,对系统进行配置管理。但这种方式下,系统的用户名和口令在整个网络中的传输是明文,很容易被窃取,SSH(secure shell)是一个客户-服务器应用,它通过加密,通过基于RSA机制的主机认证以及用户认证中的多种选项提供安全的通信。它提供rlogin,rsh和rcp的替代程序。它也提供加密的X窗口系统连接和加密的TCP会话连接。
  下面的图说明整个ssh在认证连接过过程中的流程:
  
  
  通过使用ssh有效地保证了用户数据在整个通信过程中的安全,保证了内容的私密性。
  五、用ipchains过滤数据包
  在通常的系统安装中,系统对外开放所有服务端口,我们利用ipchains可以把系统配置成一个基于主机的防火墙,通过适当配置可以有效的限制、保护系统以及控制局域网范围内的访问。
  防火墙是阻止非授权用户进入、离开、穿过网络的系统。Linux的ipchains命令可以建立规则,为进入、离开、穿过系统的数据流提供可选的限制,从而提供比较安全的防火墙功能。
  Linux ipchains实现包过滤防火墙功能,网络上的每一个包都根据规则过滤。使用ipchains的内核分析每一个包,查找指定的源、目标IP地址及端口,或指定的ICMP类型及代码。
  整个ipchains的包过滤流程如下图所示:
  
  ipchains在每一个数据包到来之前,都会根据规则检查每一个IP包的包头,进 行有效的过滤。同时它也对每一个从本机出去的包进行检查,保证每一个出去 和进来的包,符合规则。
  除了把ipchains配置成基于主机的防火墙外,还可以把ipchains配置成一个基于网络的防火墙,用ipchains来保护一个网段。
  六、系统日志
  Linux使用日志来记录用户的动作和系统的一些错误信息。Linux下有两个重要的日志守护程序:syslog和klogd。
  syslog是以守护进程运行,在启动时他从/etc/syslog.conf文件中读取不同的选项,根据不同的应用程序把相关信息记录到相应的日志文件中。
  klogd是一个内核日志记录程序,它记录内核出现的任何错误和异常。
  下图是日志信息流的过程。
  
推荐阅读
  • 本文详细介绍了SSH(Secure Shell)的基础知识、应用场景以及如何在不同平台上使用SSH进行安全的远程操作。文章还探讨了SSH的高级用法,如免密登录和其他安全增强措施。 ... [详细]
  • 本文介绍了通过动态端口技术增强Windows远程管理(WinRM)及OpenSSH服务的安全性方案。此方案旨在提高服务器抵御DDoS攻击的能力,并减少因固定端口暴露而带来的安全风险。 ... [详细]
  • Linux环境下配置Subclipse访问SVN+SSH仓库的方法
    本文详细介绍如何在Linux操作系统中配置Subclipse,以便通过SSH协议安全访问SVN仓库。不同于常见的Windows配置指南,本文提供了针对Linux用户的详细步骤。 ... [详细]
  • Linux环境下Redmine快速搭建指南
    本文将详细介绍如何在Linux操作系统中使用Bitnami Redmine安装包快速搭建Redmine项目管理平台,帮助读者轻松完成环境配置。 ... [详细]
  • 在尝试将SpringBoot与MyBatis框架进行集成时,遇到了一个常见的问题:org.apache.ibatis.builder.BuilderException。此错误通常指示XML配置文件中存在语法或结构上的问题。本文将探讨具体原因及解决方案。 ... [详细]
  • 本文介绍了在Linux系统(特别是Ubuntu)中遇到 'bash: tailf: command not found' 错误时的正确处理方法,推荐使用 `tail -f` 命令替代 `tailf`。 ... [详细]
  • 作为一门广受赞誉的编程语言,Python因其简洁性和强大的功能,在Web开发、游戏设计、人工智能、云计算、大数据处理、数据科学、网络爬虫及自动化测试等多个领域得到广泛应用。本文将介绍2018年最受欢迎的五款Python框架,帮助开发者更好地选择合适的工具。 ... [详细]
  • 使用亚马逊免费服务部署Discuz!论坛指南(第一部分)
    本文将指导您如何利用亚马逊AWS提供的12个月免费试用服务来部署Discuz!论坛。仅需一张信用卡即可轻松注册并开始使用。文章将详细介绍从账号注册到实例创建的具体步骤。 ... [详细]
  • 本文详细介绍了如何为笔记本电脑配置无线网络连接,确保其安全性和稳定性,适合初学者快速上手。 ... [详细]
  • 前言叨逼叨iOS上传文件,可能有很多第三方的框架之类的,比如AFN或者Alamofire之类的框架,但是今天要谈论的是原生的API是如何进行文件上传。兵 ... [详细]
  • c++:1
    C第一部分介绍基础:c++:-0,本节介绍C中函数使用。##函数###函数调用调用函数需要先声明函数原型嵌套调用:###参数传递在函数被调用时才分配形参的存储单元实参可以是常量、变 ... [详细]
  • 火灾启示录:审视建筑与软件架构的重要性
    近日,一场突发的大楼火灾不仅检验了建筑的安全性,也引发了对软件系统架构稳健性的深刻反思。本文作者亲身经历了这一事件,通过对比建筑安全与软件架构,探讨了架构设计在预防灾难中的作用。 ... [详细]
  • Python 第三天学习笔记
    本文详细介绍了 Python 编程的第三天学习内容,包括字符编码、文件处理以及函数的基本概念和使用方法。 ... [详细]
  • Netty基础教程:构建简易Netty客户端与服务器
    Java NIO是解决传统阻塞I/O问题的关键技术之一,但其复杂性给开发者带来了挑战。Netty作为一个成熟的网络编程框架,极大地简化了这一过程。本文将通过一个简单的示例,介绍如何使用Netty创建基本的客户端和服务器。 ... [详细]
  • 本文详细探讨了成为一名合格的初级Java工程师所需掌握的知识体系,以及从初级到中级乃至高级工程师的成长路径和职业发展前景。 ... [详细]
author-avatar
minggute_111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有