深入探究Linux系统安全技术
在Linux系统的使用过程中,安全问题至关重要。恶意攻击者可能会利用各种手段入侵系统,如未经授权访问现有账户、创建虚假账户等。为了确保系统的安全性,我们需要采取一系列的措施来监控和保护系统。
系统启动消息查看
若要查看系统的启动消息,可以先列出所有系统启动的ID,然后查看特定启动实例的消息。使用
journalctl –list-boots
命令可以显示启动ID,示例如下:
$ journalctl –list-boots
[...]
-11 24f2850c6b4a42d1ae44945d6c088393 Fri 2020-03-27 07:48:51 EDT–Fri 2020-03-27 17:46:47 EDT
-10 e26956a6a4ac4bacbd1c35fdf373facf Sat 2020-03-28 20:53:35 EDT–Sun 2020-03-29 00:09:42 EDT
-9 05c00d086c1b49ccab24ba118c7f1e38 Sun 2020-03-29 07:46:35 EDT–Mon 2020-03-30 00:12:54 EDT
-8 7eb56eef2bb242c4b0d347bb30fe9d53 Mon 2020-03-30 07:49:14 EDT–Tue 2020-03-31 00:21:25 EDT
-7 7ea9b4f75ad849e8929bb5ec6a58d760 Tue 2020-03-31 07:47:07 EDT–Wed 2020-04-01 00:16:47 EDT
-6 82b2d7e9067e45198e53076fda8fa9a4 Wed 2020-04-01 07:49:09 EDT–Thu 2020-04-02 00:19:14 EDT
-5 0e3cc11227364c5c9cf9322aa87064c4 Thu 2020-04-02 07:49:08 EDT–Fri 2020-04-03 00:13:10 EDT
-4 7f432f43ee6d427d91a79b200543bd69 Fri 2020-04-03 07:48:35 EDT–Fri 2020-04-03 18:07:30 EDT
-3 246bbe00e58740138636b5386f12a4fb Sat 2020-04-04 21:02:22 EDT–Sat 2020-04-04 23:25:21 EDT
-2 3ffc709d76884c8bbcc26e239c570744 Sun 2020-04-05 07:47:44 EDT–Mon 2020-04-06 00:04:48 EDT
-1 0b2c500ca05549d09e2083c343abea66 Mon 2020-04-06 07:49:37 EDT–Tue 2020-04-07 00:11:23 EDT
0 02d1fc2469794ebc83026d47e02b97fa Tue 2020-04-07 07:49:08 EDT–Tue 2020-04-07 12:39:58 EDT
用户账户监控
用户账户常常成为系统恶意攻击的目标,攻击者可能通过未经授权访问现有账户、创建虚假账户或留下账户以便后续访问等方式进行攻击。因此,监控用户账户是保障系统安全的重要措施。
-
检测假冒账户和特权
:未经适当授权创建的账户应被视为假冒账户。对账户进行任何修改,使其获得不同的未经授权的用户标识(UID)号码或添加未经授权的组成员身份,都属于权限提升的一种形式。监控
/etc/passwd
和
/etc/group
文件可以发现这些潜在的安全漏洞。可以使用审计守护进程(audit daemon)来监控这些文件。
-
启动审计
:使用
auditctl
命令(需先执行
apt install auditd
)启动对
/etc/passwd
和
/etc/group
文件的审计。至少需要两个选项:
-
-w filename
:对指定文件设置监控。审计守护进程通过文件的inode号码跟踪文件。
-
-p trigger(s)
:如果指定文件发生指定的访问类型(r=读,w=写,x=执行,a=属性更改),则触发审计记录。
例如,对
/etc/passwd
文件进行监控:
plaintext
# auditctl -w /etc/passwd -p rwa
-
停止审计
:使用
auditctl -W filename -p trigger(s)
命令停止审计。
-
查看审计文件列表
:在命令行输入
auditctl -l
可以查看当前审计的文件及其监控设置。
-
查看审计日志
:使用审计守护进程的
ausearch
命令查看审计日志,只需使用
-f
选项指定要查看的记录。示例如下:
plaintext
# ausearch -f /etc/passwd
time->Fri Feb 7 04:27:01 2020
type=PATH msg=audit(1328261221.365:572):
item=0 name="/etc/passwd" inode=170549
dev=fd:01 mode=0100644 ouid=0 ogid=0
rdev=00:00 obj=system_u:object_r:etc_t:s0
type=CWD msg=audit(1328261221.365:572): cwd="/"
...
time->Fri Feb 7 04:27:14 2020
type=PATH msg=audit(1328261234.558:574):
item=0 name="/etc/passwd" inode=170549
dev=fd:01 mode=0100644 ouid=0 ogid=0
rdev=00:00 obj=system_u:object_r:etc_t:s0
type=CWD msg=audit(1328261234.558:574):
cwd="/home/johndoe"
type=SYSCALL msg=audit(1328261234.558:574):
arch=40000003 syscall=5 success=yes exit=3
a0=3b22d9 a1=80000 a2=1b6 a3=0 items=1 ppid=3891
pid=21696 auid=1000 uid=1000 gid=1000 euid=1000
suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000
tty=pts1 ses=2 comm="vi" exe="/bin/vi"
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023"
----
-
分析审计记录
:通过审计记录中的关键信息,如时间、文件名、inode号码、用户ID和使用的程序等,可以了解审计事件的详细情况。例如,通过查看
/etc/passwd
文件的审计记录,发现用户
johndoe
试图使用
vi
编辑器修改该文件,这可能是一个可疑行为,需要进一步调查。
-
深入了解审计守护进程
:可以查看以下审计守护进程实用程序和配置文件的手册页来了解更多信息:
-
auditd
:审计守护进程
-
/etc/audit/auditd.conf
:审计守护进程配置文件
-
autditctl
:控制审计系统
-
/etc/audit/audit.rules
:启动时加载的配置规则
-
ausearch
:在审计日志中搜索指定项目
-
aureport
:生成审计日志报告
-
audispd
:将审计信息发送到其他程序
-
检测弱密码账户
:即使采取了各种安全措施,弱密码仍可能存在。因此,需要监控用户账户密码,确保其足够强大以抵御攻击。可以使用John the Ripper工具来检测弱密码。
-
安装John the Ripper
:使用
apt install john命令进行安装。 -
提取账户信息
:使用
unshadow命令提取账户名和密码,并将信息重定向到一个文件中。
plaintext # unshadow /etc/passwd /etc/shadow > password.file -
编辑密码文件
:使用文本编辑器编辑
password.file文件,删除没有密码的账户,并移除当前不想测试的账户名。 -
进行密码破解测试
:使用
john命令对密码文件进行测试。
plaintext # john password.file -
示例结果
:如果账户
Samantha的密码为password,John the Ripper可以很快破解该密码;而将密码改为Password1234后,破解所需的CPU时间会大幅增加。 -
清理密码文件
:密码破解测试完成后,应从系统中删除
password.file文件。
-
安装John the Ripper
:使用
文件系统监控
恶意程序常常会修改文件,并试图掩盖其踪迹。通过以下方法可以监控文件系统,发现潜在的恶意活动。
-
验证软件包
:通常,从标准仓库安装的软件包或从可靠网站下载的软件包不会有问题,但最好还是对已安装的软件包进行双重检查。可以使用
dpkg -V package_name
命令检查软件包的md5sum哈希值是否有效,使用
dpkg --audit package_name
命令检查软件包的配置问题或控制数据和文件的问题。
-
示例
:
plaintext
# dpkg --audit auditd
-
结果分析
:如果命令返回信息,说明软件包存在问题,需要使用
dpkg --configure <package>
或dselect中的配置菜单选项重新配置软件包。
-
扫描文件系统
:除非系统最近更新过,否则二进制文件不应被修改。可以使用
find
命令检查二进制文件是否被篡改,通过文件的修改时间(mtime)和创建/更改时间(ctime)来判断。
-
示例
:扫描
/sbin
目录中最近24小时内被修改的二进制文件。
plaintext
# find /sbin -mtime -1
-
进一步调查
:使用
stat
命令查看单个文件的详细时间信息。
plaintext
# stat /sbin/init
-
其他文件系统扫描
:还需要定期进行其他文件系统扫描,常见的扫描内容如下表所示:
| 文件或设置 | 扫描命令 | 文件或设置的问题 |
| — | — | — |
| SUID权限 |
find / -perm -4000
| 允许任何人在文件在内存中执行时暂时成为文件的所有者 |
| SGID权限 |
find / -perm -2000
| 允许任何人在文件在内存中执行时暂时成为文件所属组的成员 |
| rhost文件 |
find /home -name .rhosts
| 允许系统完全信任另一个系统,不应存在于
/home
目录中 |
| 无所有者文件 |
find / -nouser
| 表示与任何用户名都不关联的文件 |
| 无组文件 |
find / -nogroup
| 表示与任何组名都不关联的文件 |
检测病毒和rootkit
病毒和rootkit是常见的恶意攻击工具,它们在执行恶意活动时会隐藏自己。因此,需要对Linux系统进行监控,以检测这些入侵行为。
-
监控病毒
:计算机病毒是一种恶意软件,它可以附着在已安装的系统软件上,并通过媒体或网络传播。虽然Linux系统的病毒相对较少,但仍然需要进行监控。可以使用ClamAV等开源免费的杀毒软件来扫描系统。
-
安装ClamAV
:使用
apt install clamav clamav-freshclam
命令安装ClamAV和病毒数据库。
-
了解ClamAV
:可以访问
clamav.net
获取更多关于ClamAV的文档和使用说明。
-
监控rootkit
:rootkit比病毒更隐蔽,它可以隐藏自己、维持对系统的高级访问权限,并绕过检测软件。可以使用
chkrootkit
工具来检测rootkit。
-
安装chkrootkit
:使用
apt install chkrootkit
命令进行安装。
-
检测rootkit
:在命令行输入
chkrootkit
命令,它会搜索整个文件结构,标记出受感染的文件。
plaintext
# chkrootkit | grep INFECTED
-
结果分析
:运行
chkrootkit
时可能会出现误报(false positive),需要仔细分析结果。例如,某些已知的bug可能会导致误报。
-
定期检测
:应定期运行
chkrootkit
工具,并在怀疑系统感染rootkit时及时进行检测。可以访问
www.chkrootkit.org
获取更多关于
chkrootkit
的信息。
入侵检测
入侵检测系统(IDS)软件可以监控系统的活动(或其网络),发现潜在的恶意活动并进行报告。一些流行的Linux入侵检测系统如下表所示:
| IDS名称 | 安装命令 | 网站 |
| — | — | — |
| aide |
apt install aide
|
aide.sourceforge.net
|
| Snort |
apt install snort
|
www.snort.org
|
| tripwire |
apt install tripwire
|
www.tripwire.org
|
其中,Advanced Intrusion Detection Environment(aide)IDS使用比较方法来检测入侵。它会创建一个“第一张图片”数据库,在一段时间后创建另一个“第二张图片”数据库,然后比较两个数据库,报告不同之处。
-
创建初始数据库
:在系统刚安装时,使用
aide.wrapper -i
命令创建初始数据库,该命令运行时间较长。
plaintext
# aide.wrapper -i
-
示例输出
:
```plaintext
Start timestamp: 2020-04-07 19:19:33 +0000 (AIDE 0.16)
AIDE initialized database at /var/lib/aide/aide.db.new
Verbose level: 6
Number of entries: 183088
---------------------------------------------------
The attributes of the (uncompressed) database(s):
---------------------------------------------------
/var/lib/aide/aide.db.new
RMD160 : CPYeo30jdCLFv5K982ikAF9tpoo=
TIGER : 3faY0oxurQbvrljl7IWWXGHX2fx+EHPN
SHA256 : 6diJ2c8p6elfCkiRSxUJ5LV7icCUOmC5
NO+z4iZ9suM=
SHA512 : hDtBFYWmDGAFQUxL4PlgSKiSRRJRiQBV
rUXrRUuLSgAiQCnQ9EWnLtBjNQxmDt9h
tiN4IoON+LWWk0xXUK5AHw==
CRC32 : KVke8Q==
HAVAL : SMq9Po82Dg1SOod3vHtgG6D/Xqd0X91/
wkKX9aTbx4w=
GOST : L0JMMPR9WoMJpa1Bgj9C4Z4p2Aila5UC
9ruHH/RC47I=
End timestamp: 2020-04-07 19:23:41 +0000 (run time: 4m 8s)
```
通过以上方法,可以全面监控Linux系统的安全状况,及时发现并处理潜在的安全威胁。
深入探究Linux系统安全技术(续)
入侵检测系统(IDS)的工作流程与应用场景
为了更清晰地理解入侵检测系统(IDS)的工作原理和使用方式,下面以aide为例,详细介绍其工作流程和应用场景。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(安装aide):::process
B --> C(创建初始数据库):::process
C --> D(定期创建新数据库):::process
D --> E{比较数据库}:::decision
E -->|有差异| F(报告差异):::process
E -->|无差异| G(继续监控):::process
F --> H(调查差异原因):::process
H --> I(采取相应措施):::process
I --> D
G --> D
-
安装aide
:使用
apt install aide命令进行安装。 -
创建初始数据库
:在系统刚安装时,运行
aide.wrapper -i命令。这个过程可能需要较长时间,因为它会对系统中的大量文件进行扫描和记录。 - 定期创建新数据库 :随着系统的运行,文件可能会被修改。定期创建新的数据库,以便与初始数据库进行比较。
- 比较数据库 :aide会自动比较两个数据库,找出文件的差异。
- 报告差异 :如果发现差异,aide会生成报告,列出发生变化的文件及其详细信息。
- 调查差异原因 :根据报告,管理员需要调查差异产生的原因,判断是正常的系统更新还是潜在的入侵行为。
- 采取相应措施 :如果是正常的系统更新,可以更新初始数据库;如果是潜在的入侵行为,需要及时采取措施,如恢复文件、加强安全防护等。
综合安全策略的制定与实施
为了确保Linux系统的安全,需要制定并实施综合的安全策略。综合安全策略应包括以下几个方面:
| 安全策略方面 | 具体措施 |
|---|---|
| 用户账户管理 | 定期审查账户和组文件,使用审计守护进程监控重要文件,检测弱密码账户。 |
| 文件系统监控 | 验证软件包的完整性,定期扫描文件系统,检测病毒和rootkit。 |
| 入侵检测 | 安装并配置入侵检测系统,定期检查入侵检测报告。 |
| 网络安全 | 配置防火墙,限制网络访问,使用安全的网络协议。 |
| 定期备份 | 定期备份重要数据,确保数据的安全性和可恢复性。 |
在实施综合安全策略时,需要注意以下几点:
-
制定详细的计划
:明确各项安全措施的实施时间、责任人等。
-
进行培训和教育
:对系统管理员和用户进行安全培训,提高他们的安全意识和操作技能。
-
定期评估和调整
:定期评估安全策略的有效性,根据实际情况进行调整和优化。
安全事件的应急处理流程
即使采取了各种安全措施,仍然可能会发生安全事件。因此,需要制定安全事件的应急处理流程,以便在发生安全事件时能够迅速响应和处理。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([发现安全事件]):::startend --> B(确认事件性质):::process
B --> C{是否为紧急事件}:::decision
C -->|是| D(隔离受影响系统):::process
C -->|否| E(收集事件信息):::process
D --> E
E --> F(分析事件原因):::process
F --> G(制定处理方案):::process
G --> H(实施处理方案):::process
H --> I(恢复系统正常运行):::process
I --> J(总结经验教训):::process
J --> K(更新安全策略):::process
- 确认事件性质 :当发现安全事件时,首先要确认事件的性质,如是否为入侵、数据泄露等。
- 判断是否为紧急事件 :根据事件的严重程度,判断是否为紧急事件。如果是紧急事件,需要立即隔离受影响的系统,防止事件扩散。
- 收集事件信息 :收集与事件相关的信息,如日志文件、系统状态等,以便后续分析。
- 分析事件原因 :通过对收集到的信息进行分析,找出事件发生的原因。
- 制定处理方案 :根据事件的原因和影响,制定相应的处理方案。
- 实施处理方案 :按照处理方案进行操作,如恢复文件、更新系统等。
- 恢复系统正常运行 :在处理完事件后,恢复系统的正常运行。
- 总结经验教训 :对事件进行总结,分析事件发生的原因和处理过程中的不足之处,总结经验教训。
- 更新安全策略 :根据总结的经验教训,更新安全策略,防止类似事件再次发生。
安全技术的发展趋势与应对策略
随着信息技术的不断发展,安全技术也在不断演变。了解安全技术的发展趋势,并采取相应的应对策略,对于保障Linux系统的安全至关重要。
-
人工智能和机器学习在安全领域的应用
:人工智能和机器学习技术可以用于分析大量的安全数据,发现潜在的安全威胁。例如,通过机器学习算法可以识别异常的网络流量和用户行为。
- 应对策略 :学习和掌握人工智能和机器学习在安全领域的应用技术,将其融入到现有的安全体系中。
-
物联网安全问题
:随着物联网设备的普及,物联网安全问题日益突出。物联网设备的安全漏洞可能会被攻击者利用,导致数据泄露和系统瘫痪。
- 应对策略 :加强对物联网设备的安全管理,采用安全的通信协议和加密技术,定期更新设备的固件。
-
云计算安全挑战
:云计算环境下,数据存储和处理都在云端进行,安全问题更加复杂。例如,数据的隐私保护、多租户环境下的安全隔离等。
- 应对策略 :选择可靠的云计算服务提供商,加强对云计算环境的安全监控和管理,采用加密技术保护数据的隐私。
通过关注安全技术的发展趋势,并采取相应的应对策略,可以不断提升Linux系统的安全防护能力,应对日益复杂的安全挑战。
综上所述,保障Linux系统的安全需要综合运用多种技术和策略,包括用户账户管理、文件系统监控、入侵检测、应急处理等。同时,要关注安全技术的发展趋势,及时调整和优化安全策略,确保系统的安全稳定运行。
超级会员免费看

64

被折叠的 条评论
为什么被折叠?



