一、企业级Linux系统防护概述
一)企业级Linux系统安全威胁
解决的主要安全威胁 | 安全威胁牵涉到的人员及操作 | |
文件系统防护 | 避免有意/无意的文件篡改、越权访问,根用户(root)权限泛滥 | 企业内部用户误操作、外部黑客的恶意删除 |
进程安全防护 | 避免非法进程运行、正常进程非法终止 | 外部黑客的后门注入及非法进程运行 |
用户安全管理 | 避免弱密码被攻破 | 外部黑客使用暴力破解等方式获取密码 |
日志管理 | 通过对企业内部用户及外部黑客在系统中行动产生相应的日志进行审计,发现安全问题和蛛丝马迹 | 用户、黑客在系统中的行动产生日志记录 |
二)企业级Linux系统安全立体式防范体系
1、Linux文件系统访问安全
Linux系统中所有的设备都是通过文件进行操作和管理。
1)文件系统一致性检查工具:tripwire
四种操作模式:
- 数据库生成:产生基准数据库,为未来的比较打下基础
- 完整性检查:主要模式,把文件签名和基准数据库进行比较来进行检查
- 数据库更新
- 交互性更新
根用户安全管理,sudo权限
2、Linux进程安全
进程是现代操作系统的一个核心概念,很多攻击的发动、黑客的入侵都是通过进程来实现的。
1)进程的种类
每个进程都有其自己的特点和属性
- 交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行
- 批处理进程:这种进程和终端没有联系,是一个进程序列。
- 守护进程:Linux系统同启动时启动的金恒,并在后台运行
2)进程管理方法
- 命令行管理方法:who,w,ps,top查看进程信息的系统调用。
- 进程文件系统管理进程:proc文件系统是一个虚拟的文件系统,通过文件系统的接口实现,用于输出系统的运行状态。
3、Linux用户管理安全
Linux作为一个多任务、多用户的操作系统,在同一时段可能为众多用户使用,且用户的管理直接关系到整个系统的安全。
1)管理用户及组文件安全
- /etc/passwd :全局可读,用于用户登录时校验用户的登录名、加密的口令数据项(使用不可逆的加密算法)、用户ID(UID)、默认的用户分组ID(GID)、用户信息、用户登录子目录以及登录后使用的shell
-
/etc/shadow: 只为root超级用户可读,文件的每行是8个冒号分隔的个域
- /etc/group:含有关于小组的信息
- /etc/gshadow:和用户账号文件一样,为了加强组口令的安全性,防止黑客对其实行的暴力攻击,采取的口令和其他信息分离的安全机制。
- /etc/skel:一般是存放用户启动文件的目录,由root权限控制。当创建新的用户时,该目录下的问价复制到新添加的用户的主目录下。这个目录下的文件都是隐藏文件
- /etc/login.defs 配置文件:创建用户时的一些规划,比如创建用户时,是否需要主目录;UID和GID的范围;用户的期限等等,这个文件是可以通过root来定义的
/etc/login.defs
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
PASS_MAX_DAYS 99999 #密码最大有效期,推荐90天
PASS_MIN_DAYS 0 #两次修改密码的最小间隔时间
PASS_MIN_LEN 5 #密码最小长度,对于root无效。 # 推荐16位字符以上,包含大写字母、小写字母、数字和符号
PASS_WARN_AGE 7 #密码过期前多少天开始提示
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes #使用useradd创建用户的时候,是否创建家目录
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077 #创建的用户目录的UMASK值
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512 #Linux用户的密码使用的加密方式
ALWAYS_SET_PATH=yes
LOG_UNKFAIL_ENAB no
- /etc/default/useradd文件:通过useradd添加用户时的规则文件
2)用户密码管理
入侵者大多是通过各种系统和设置漏洞,获得管理员密码来获得管理员权限的,然后,再实现对系统的恶意攻击
密码破解软件一般使用3种方法进行破解:字典猜解、组合猜解和暴力猜解。
密码的设置原则
- 不可让账号与密码相同
- 不可使用自己的姓名
- 不可使用英文词组
- 不可使用特定意义的日期
- 不可使用简单的密码:一个密码暴力猜解软件每秒钟可以尝试10万次之多。字数越少,字符越简单化,排列组合的结果就越少,也就越容易被攻破
若要保证密码的安全,应当遵循以下规则:
- 用户密码应包含英文字母的大小写、数字、可打印字符,甚至是非打印字符。建议将这些符号排列组合使用,以期达到最好的保密效果
- 用户密码不要太规则,不要使用用户姓名、生日、电话号码以及常用单词作为密码
- 根据Windows系统密码的散列算法原理,密码长度设置应超过7位,最好为14位
- 密码不得以明文方式存放在系统中,确保密码以加密的形式写在硬盘上并包含密码的文件是只读的
- 密码应定期修改,应避免重复使用旧密码,并采用多套密码的命名规则
- 建立账号锁定机制。一旦同一账号密码校验错误若干次,即断开连接并锁定该账号,经过一段时间才解锁。
密码策略包含以下6个策略。
- 密码必须符合复杂性要求
- 密码长度最小值
- 密码最长使用期限
- 密码最短使用期限
- 强制密码历史
- 用可还原的加密来储存密码
3)使用密码攻击工具检查密码安全性
John the Ripper 用于在已知密文的情况下尝试破解出明文的破解密码软件:主要支持对DES、MD5两种加密方式的密文进行破解工作
John the Ripper password cracker
4、Linux日志管理安全
Linux系统历来以强大、丰富和完整文档日志系统著称。通过管理日志,可以清晰地了解系统的运行状况,也能从各种蛛丝马迹中国发现入侵和快速阻止入侵。
日志主要功能:审计和监测。实行地监测系统状态,监测和追踪侵入者。
1)Linux系统下的日志分类
- 连接时间日志:由多个程序执行
- 把记录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统
- 进程统计:由系统内核执行
- 当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。
- 进程统计的目的是为系统中的基本服务提供命令使用统计
- 错误日志:由syslogd(8)守护程序执行
- 各种系统守护进程、用户程序和内核通过syslogd(3)守护程序向文件/var/log/messages报告值得注意的事件。
- 另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志
- 使用程序日志:许多程序通过维护日志来反映系统的安全状态
- su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有sudolog。
- 另外,诸如Apache等HTTP的服务器都有两个日志:access_log(客户端访问日志)以及error_log(服务出错日志)。
- FTP服务的日志记录在xferlog文件当中
- Linux下邮件传送服务(sendmail)的日志一般存放在maillog文件当中
二、企业数据保护
一)企业数据防护技术分析
造成很多用户账号泄露、机密数据泄密等安全事件的原因:
- 数据未加密:导数据通过USB、邮箱、即时消息等媒体和途径进行传播后,无法确保其仅能被有权限的人访问
- 未做好数据放泄密工作
二)数据加密技术原理
1、对称加密、解密
对称加密、解密是加密和解密使用相同的密码,有代表性的有DES、Blowfish、TEA、Base64。
对称加密、解密的特点是运算相对非对称加密、解密简单,速度快
主要应用于需要加密大量数据的场合
2、非对称加密、解密
非对称加密、解密是加密和解密使用不同的密码,有代表性的有RSA、DSA、ElGamal和ECDSA。
非对称加密、解密的安全性是基于复杂数学难题,特点是运算复杂、速度慢
主要应用于金融、军事等重大机密系统
3、对称与非对称加密、解密的区别
- 区别1
- 对称加密、解密使用分组加密、解密方法对一段明文按固定长度划分成多组,然后分别对每组使用可变长度的密码迭代编码,最后将每组编码后的密文重新组合在一起,解密时也一样,先对密文按固定长度划分成多组,然后使用密码解密每一组,最后重新组合明文
- 非对称加密、解密算法使用几乎不可逆的算法来加密、解密,加密和解密使用不同的密码
- 区别2
- 对称加密、解密算法和非对称加密、解密算法都是公开的,对称加密、解密算法的安全性依赖于密码的强度和密码的保存
- 非对称加密、解密算法只需公开一对密码中的其中一个,另外一个无须公开,所以非对称加密、解解密算法的安全性比较大
三)加密技术的应用
1、GnuPG
https://www.gnupg.org/download/index.html
1)GnuPG概述
GnuPG(GNU Privacy Guard)就是用来加密数据与制作证书的一套工具,其作用与PGP类似。
PGP使用了许多专利算法,属于“臭名昭著”的美国加密出口限制之列。GnuPG是GPL软件,并且没有使用任何专利加密算法,所以使用起来有着更多的自由
GnuPG使用非对称加密算法,安全程度比较高。所谓非对称加密算法,就是每一个用户都拥有一对密钥:公钥和私钥。其中,密钥由用户保存,公钥则由用户尽可能地散发给其他人,以便用户之间的通信
2)GnuPG的基本命令
GnuPG支持的算法如下。
- 公钥:RSA、RSA-E、RSA-S、ELG-E、DSA。
- 对称加密:3DES、CAST5、BLOWFISH、AES、AES192、AES256、TWOFISH。
- 散列:MD5、SHA1、RIPEMD160、SHA256、SHA384、SHA512。
- 压缩:不压缩、ZIP、ZLIB、BZIP2。
其使用的基本语法为:gpg [选项] [文件名]
其实现的功能包括签名、检查、加密或解密,默认的操作依输入数据而定
三、发现企业网络漏洞
一)发现企业网络漏洞的大致思路
安全扫描技术是一类重要的网络安全技术。安全扫描技术与防火墙、入侵检测系统互相配合,能够有效提高网络的安全性。
通过对网络的扫描,网络管理员可以了解网络的安全配置和运行的应用服务,及时发现安全漏洞,客观评估网络风险等级。
网络管理员可以根据扫描的结果更正网络安全漏洞和系统中的错误配置,在黑客攻击前进行防范。
1、基本思路
安全扫描技术分类
- 主机安全扫描技术:通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞
- 网络安全扫描技术:主要针对系统中不合适的设置脆弱的口令,以及针对其他同安全规则抵触的对象进行检查等
2、采用网络安全扫描
网络安全扫描技术是一种基于Internet远程检测目标网络或本地主机安全性脆弱点的技术。
通过网络安全扫描,系统管理员能够发现所维护的Web服务器的各种TCP/IP端口的分配、开放的服务、Web服务软件版本和这些服务及软件呈现在Internet上的安全漏洞。
网络安全扫描技术也是采用积极的、非破坏性的办法来检验系统是否有可能被攻击崩溃。它利用了一系列的脚本模拟对系统进行攻击的行为,并对结果进行分析。这种技术通常被用来进行模拟攻击实验和安全审计。网络安全扫描技术与防火墙、安全监控系统互相配合就能够为网络提供很高的安全性。
1)完整的网络安全扫描三个阶段:
- 发现目标主机或网络
- 发现目标后进一步搜集目标信息,包括操作系统类型、运行的服务以及服务软件的版本等。如果目标是一个网络,还可以进一步发现该网络的拓扑结构、路由设备以及各主机的信息
- 根据搜集到的信息判断或者进一步测试系统是否存在安全漏洞
2)网络安全扫描技术
- 包括PING扫射(Ping sweep):用于网络安全扫描的第1阶段,可以帮助我们识别系统是否处于活动状态
- 操作系统探测(Operating system identification):第2阶段,对目标主机运行的操作系统进行识别
- 如何探测访问控制规则(firewalking):第2阶段,用于获取被防火墙保护的远端网络的资料
- 端口扫描(Port scan):第2阶段,通过与目标系统的TCP/IP端口连接,并查看该系统处于监听或运行状态的服务
- 漏洞扫描(vulnerability scan):第3阶段,在端口扫描的基础上,对得到的信息进行相关处理,进而检测出目标系统存在的安全漏洞
端口扫描技术和漏洞扫描技术是网络安全扫描技术中的两种核心技术,并且广泛运用于当前较成熟的网络扫描器中,如著名的Nmap和Nessus
二)端口扫描
1、端口扫描的原理
端口扫描向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应
通过分析响应来判断服务端口是打开还是关闭,就可以得知端口提供的服务或信息。
端口扫描也可以通过捕获本地主机或服务器的流入、流出IP数据包来监视本地主机的运行情况,不仅能对接收到的数据进行分析,而且能够帮助用户发现目标主机的某些内在的弱点,而不会提供进入一个系统的详细步骤。
2、端口扫描的目的
- 发现开放端口:发现目标系统上开放的TCP或UDP端口
- 了解主机操作系统信息:端口扫描可以通过操作系统的“指纹”来推测被扫描操作系统或者者应用程序的版本等信息
- 了解软件或者服务版本:软件或服务版本可以通过标志获取或者应用程序的指纹来识别获得
- 发现脆弱的软件版本:识别软件和服务的缺陷,从而有助于发起针对漏洞的攻击
3、端口扫描技术的主要分类
- 全连接扫描
全连接扫描是TCP端口扫描的基础,现有的全连接扫描有TCP connect()扫描和TCP反向ident扫描等
TCP connect()扫描的实现原理如下:扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连接由系统调用connect开始。如果端口开放,则连接将建立成功;否则,若返回-1,则表示端口关闭。如果建立连接成功,则响应扫描主机的SYN/ACK连接请求,这一响应表明目标端口处于监听(打开)的状态。
- TCP半连接(SYN)扫描
TCP半连接(SYN)扫描:若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的一指定端口建立连接的时候只完成了前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。现有的半连接扫描有TCP SYN扫描和IP ID头dumb扫描等
SYN扫描的优缺点:
优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全扫描少得多。
缺点是在大部分操作系统下,发送主机需要构造适用于这种扫描的IP包,通常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用
- UDP扫描
UDP扫描中不使用工具来设定特定的状态标志。如果源UDP包的响应(即ICMP端口不可达消息)说明端口已经“关闭”,UDP扫描的过程比较长,速度比较慢
- 标志获取扫描
标志获取扫描是指连接到系统的特定端口,检查监听该端口的应用软件标志的过程。它可以利用TCP端口连接来获得特定系统上运行的软件和程序版本信息。在实际的应用过程中,系统管理员可能会更改或者删除相关标志,从而隐藏被监听的应用程序。
- 包分片
许多端口扫描器都支持包分片功能。这个功能有助于包穿透包过滤设备并逃避入侵检测系统的监测。包分片技术将TCP或者UDP包头分成多个包,增加访问控制设备检测端口扫描信息的难度
- 欺骗扫描
Nmap和其他一些端口扫描工具都有“欺骗”功能,能够在直接扫描的同时进行一个或者多个欺骗性的扫描
- 标识扫描
标识扫描能够用来识别与特定TCP连接绑定的用户账户,它可以通过与113号TCP端口进行通信来完成,该端口会返回该连接所有者的身份信息。这种扫描仅仅对于运行ident服务的系统有效,也可以用于识别使用特权账号(例如root)的服务
- FTP反弹扫描
FTP反弹扫描利用FTP服务器进行欺骗扫描,它利用的是FTP协议对代理FTP连接的支持这一特性。利用FTP服务器作为反弹“代理”,黑客能够隐藏源扫描器的原始地址
- 源端口扫描
端口扫描工具中的源端口扫描允许扫描者设置静态的TCP或者UDP源扫描端口,以避开包过滤访问控制设备。用于扫描的源端口通常与常用服务的端口相关联(比如HTTP、DNS、SMTP、FTP等),这些端口经常处于访问控制设备的许可范围之内
- 主机扫描
主机扫描的目的是确定在目标网络上的主机是否可达。这是信息收集的初级阶段,其效果直接影响到后续的扫描
二)漏洞扫描
漏洞扫描就是对计算机系统或者其他网络设备进行安全相关的检测,以找出安全隐患和可被黑客利用的漏洞。显然,漏洞扫描软件是把双刃剑,黑客利用它入侵系统,而系统管理员掌握它以后又可以有效地防范黑客入侵。因此,漏洞扫描是保证系统和网络安全必不可少的手段,必须仔细研究和利用
漏洞扫描通常采用两种策略,第一种是被动式策略,第二种是主动式策略。
所谓被动式策略就是基于主机之上,对系统中不合适的设置、脆弱的口令以及其他同安全规则抵触的对象进行检查;而主动式策略是基于网络的,它通过执行一些脚本文件模拟对系统进行攻击的行为并记录系统的反应,从而发现其中的漏洞。利用被动式策略扫描称为系统安全扫描,利用主动式策略扫描称为网络安全扫描
1、Nessus
Nessus是一个功能强大而又易于使用的远程安扫描器,它不仅免费而且更新极快。安全扫描器的功能是对指定网络进行安全检查,找出该网络是否存在导致对手攻击的安全漏洞。
Nessus的优点如下。
- Nessus采用了基于多种安全漏洞的扫描,避免了扫描不完整的情况。
- Nessus是免费的,比起商业的安全扫描工具如ISS具有价格优势。
- Nessus扩展性强、容易使用、功能强大,可以扫描出多种安全漏洞