当前位置: 首页 > news >正文

利用Audit审计系统行为

标题利用Audit审计系统行为

Linux Audit守护进程是一个可以审计Linux系统事件的框架

这个框架本身有数个组件,包括内核、二进制文件及其他文件。

1.内核·audit:钩在内核中来捕获事件并将它们发送到auditd。

2.二进制文件
·auditd:捕捉事件并记录它们(记录在日志文件中)的守护进程。·auditctl:配置auditd的客户端工具。
·audispd:多路复用事件的守护进程。
·aureport:从日志文件(auditd.log)中读取内容的报告工具。·ausearch:事件查看器(查看的内容是auditd.log)。
·autrace:使用内核中的审计组件来追踪二进制文件。
·aulast:和上一个类似,但是使用的是审计框架。
·aulastlog:和lastlog类似,但是使用的也是审计框架
·ausyscall:映射系统调用ID和名字。
·auvirt:展示和审计有关虚拟机的信息。

3.文件
·audit.rules:由auditctl使用,它读取该文件来决定需要使用什么规则。·auditd.conf:auditd的配置文件。

在Debian/Ubuntu中使用以下命令安装:

apt-get install auditd audispd-plugins

Centos中使用以下命令安装:

yum -y install audit

两个文件管理审计守护进程的配置,一个用于守护进程本身(auditd.conf),另一个是用于auditctl工具的规则(audit.rules)。

1.auditd.conf文件auditd.conf对Linux audit守护进程的配置聚焦在它应该在哪里以及如何记录事件。它也定义了如何应对磁盘满的情况、如何处理日志轮转和要保留的日志文件数量。通常,对大多数系统来说,默认配置是足够的。

2.audit.rules为了配置应该审计什么日志,审计框架使用了一个名为audit.rules的文件。和大多数情况一样,从零开始而不加载任何规则。通过用-l参数来运行auditctl,我们可以确定使用中的规则。
万一加载了任何规则的话,可用-D参数运行auditctl来删除已加载规则。

管理审计服务

配置 auditd 后,启动服务来收集审计信息:

# service auditd start

使用 service 命令而不是 systemctl 的唯一原因是正确记录用户 ID (UID) 值。

设置开机启动:

# systemctl enable auditd

定义审计规则

使用 auditctl 工具,可以在你想要的任何系统调用上添加审计规则。规则会按顺序执行。

下一步定义监视规则。此规则跟踪文件或目录是否由某些类型的访问触发,包括读取、写入、执行和属性更改。

定义规则的语法是:

auditctl -w path_to_file -p permissions -k key_name

-w #指定所要监控的文件或命令
-p #监控属性(如x执行)

        ·r=读取·w=写入·x=执行·a=属性改变

-k #指定关键词(方便在日志中查询)
-D #清除规则(临时,不会清除配置文件规则)

如要审核用户创建操作,首先,向 /etc/passwd 文件添加监视以跟踪写入和属性更改访问,并添加自定义键以记录所有消息(此自定义键可用于过滤日志消息):

[root@localhost ~]# auditctl -w /etc/passwd -p wa -k user-modify

接下来,添加一个新用户。这样做会更改 /etc/passwd 文件:

[root@localhost ~]# useradd user01

最后,检查 auditd 是否记录了更改。默认情况下,auditd 将日志存储在 /var/log/audit/audit.log 文件中:

[root@localhost yy]# cat /var/log/audit/audit.log | grep modify

在这里插入图片描述

定义持久审计规则

要使audit规则在重新启动后保持不变,请将它们添加到/etc/audit/rules.d/audit.rules文件中。

下面在 audit.rules 文件中定义持久性规则以监视 /etc/passwd 文件的更改。

-w /etc/passwd -p wa -k user-modify

保存文件,然后重新加载 auditd 守护程序以实现对规则文件中配置的更改:

[root@localhost ~]# service auditd reload

可以运行auditctl -l列出规则:

[root@localhost ~]# auditctl -l

最后,添加新用户或更改 /etc/passwd 文件会出发审计。更改记录在 /var/log/audit/audit.log 中,即使系统重新启动,规则仍然存在。

搜索审计日志

使用ausearch工具搜索审计日志。默认情况下,它搜索 /var/log/audit/audit.log 文件。

例如,要根据 key_name 搜索日志条目,搜索有关user-modify相关的:

[root@localhost yy]# ausearch -i -k user-modify-i		#显示信息更清晰,比如显示日期而不是时间戳-k		#指定关键词(auditctl -k指定的关键词)-c  commond		#只显示与指令相关日志(如-c rm)

创建审计报告

使用 aureport 工具根据审计日志查询和创建审计报告。

[root@localhost ~]# aureport 
[root@localhost yy]# aureport Summary Report
======================
Range of time in logs: 2023年09月12日 15:46:48.403 - 2023年09月20日 02:58:23.161
Selected time for report: 2023年09月12日 15:46:48 - 2023年09月20日 02:58:23.161
Number of changes in configuration: 175
Number of changes to accounts, groups, or roles: 9
Number of logins: 5
Number of failed logins: 2
Number of authentications: 24
Number of failed authentications: 4
Number of users: 5
Number of terminals: 11
Number of host names: 3
Number of executables: 14
Number of commands: 16
Number of files: 3
Number of AVC's: 0
Number of MAC events: 12
Number of failed syscalls: 2
Number of anomaly events: 0
Number of responses to anomaly events: 0
Number of crypto events: 94
Number of integrity events: 0
Number of virt events: 0
Number of keys: 1
Number of process IDs: 215
Number of events: 994

查看关于尝试身份验证的报告:

[root@localhost yy]# aureport -auAuthentication Report
============================================
# date time acct host term exe success event
============================================
1. 2023年09月12日 15:47:38 gnome-initial-setup localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 145
2. 2023年09月12日 15:48:53 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 177
3. 2023年09月12日 08:43:01 yy ? /dev/pts/0 /usr/bin/sudo yes 205
4. 2023年09月12日 21:42:08 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 282
5. 2023年09月12日 21:44:15 root 192.168.171.1 ssh /usr/sbin/sshd no 296
6. 2023年09月12日 21:44:23 root 192.168.171.1 ssh /usr/sbin/sshd no 297
7. 2023年09月12日 21:44:33 root 192.168.171.1 ssh /usr/sbin/sshd yes 298
8. 2023年09月12日 21:44:49 yy 192.168.171.1 ssh /usr/sbin/sshd yes 332
9. 2023年09月12日 21:45:26 yy 192.168.171.1 ssh /usr/sbin/sshd yes 353
10. 2023年09月13日 04:54:31 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 398
11. 2023年09月13日 04:57:58 gdm localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 54
12. 2023年09月13日 04:58:13 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 150
13. 2023年09月15日 05:00:30 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker no 192
14. 2023年09月15日 05:00:35 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 193
15. 2023年09月15日 05:01:17 yy ? /dev/pts/0 /usr/bin/sudo yes 198
16. 2023年09月15日 05:25:28 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 219
17. 2023年09月15日 05:26:02 yy ? /dev/pts/0 /usr/bin/sudo no 224
18. 2023年09月15日 05:26:05 yy ? /dev/pts/0 /usr/bin/sudo yes 225
19. 2023年09月17日 22:51:08 yy ? ? /usr/lib/polkit-1/polkit-agent-helper-1 yes 266
20. 2023年09月17日 22:52:34 yy 192.168.171.1 ssh /usr/sbin/sshd yes 299
21. 2023年09月17日 23:16:01 yy ? /dev/pts/1 /usr/bin/sudo yes 313
22. 2023年09月17日 23:26:06 yy localhost.localdomain pts/1 /usr/lib/polkit-1/polkit-agent-helper-1 yes 332
23. 2023年09月20日 02:45:51 yy localhost.localdomain /dev/tty1 /usr/libexec/gdm-session-worker yes 380
24. 2023年09月20日 02:46:17 yy 192.168.171.1 ssh /usr/sbin/sshd yes 400
25. 2023年09月20日 02:48:57 yy ? /dev/pts/1 /usr/bin/sudo yes 415
26. 2023年09月20日 02:52:12 yy localhost.localdomain pts/1 /usr/lib/polkit-1/polkit-agent-helper-1 yes 434
27. 2023年09月20日 02:52:15 yy localhost.localdomain pts/1 /usr/lib/polkit-1/polkit-agent-helper-1 yes 436
28. 2023年09月20日 02:58:23 root localhost.localdomain pts/1 /usr/bin/su yes 470

其中no代表验证失败。yes代表验证成功。

在 CentOS8 系统上配置审计功能可以极大地提高系统的安全性和可靠性,帮助我们更好地监控系统的操作记录,并追踪系统日志,及时发现可能的安全问题。

转换系统调用

系统调用是以数字类型的值来记录的。因为在不同的服务器架构之间,这些值会有重叠,。通过使用uname-m,我们可以确定服务器架构,并使用ausyscall来确定数字为188的系统调用代表了什么。

[root@localhost yy]# ausyscall x86_64 54
setsockopt
[root@localhost yy]# ausyscall x86_64 150
munlock
[root@localhost yy]# ausyscall x86_64 188
setxattr
[root@localhost yy]#

审计Linux的进程

审计框架有一个名为autrace的工具。它使用了审计框架,并增加了合适的规则来捕获信息并记录它们。收集到的信息可以使用ausearch来展示。

[root@localhost yy]# auditctl -D
No rules
[root@localhost yy]# autrace /bin/ls
Waiting to execute: /bin/ls
公共  视频  文档  音乐	iscsi-initiator-utils-6.2.1.4-8.git095f59c.el8.x86_64.rpm
模板  图片  下载  桌面	iscsi-initiator-utils-iscsiuio-6.2.1.4-8.git095f59c.el8.x86_64.rpm
Cleaning up...
Trace complete. You can locate the records with 'ausearch -i -p 13141'
[root@localhost yy]# ausearch -i -p 13141

按照用户来审计文件访问

审计框架可以用于监控系统调用,包括对文件的访问。如果你希望知道一个特定的用户ID访问了什么文件,可使用如下规则:

[root@localhost yy]# auditctl -a exit,always -F arch=x86_64 -S open -F auid=1001

其中,-F arch=x86_64定义了使用什么架构(uname-m)来监控正确的系统调用(一些系统调用在不同的架构之间是不同的);-S open定义选择“open”系统调用;-F auid=80定义相关的用户ID。

扩展知识

unhide使用如下的6种技术来审计隐藏进程:
·对比/proc和/bin/ps命令的输出。
·对比来自/bin/ps命令输出的信息和遍历procfs获得信息。
·对比来自/bin/ps命令输出的信息和系统调用(syscall)获得的信息(系统调用扫描)。
·全部PID空间的占用(PID暴力破解)。
·逆向搜索,以验证ps命令看到的所有线程也是被内核所见到的。
·快速对比/bin/ps命令的输出、/proc分析的结果、遍历procfs的结果这三者。使用如下的命令安装unhide:
需要下载,编译安装

使用如下的命令进行暴力PID检测以发现隐藏进程:

./unhide-linux brute

使用如下的命令进行proc分析以发现隐藏进程:

./unhide-linux procall、

lsof(list open files)是Linux系统中强大的工具,它用于列出系统中打开的文件(包括普通文件、网络套接字等)。因此,它也常常被用于审计。

相关文章:

利用Audit审计系统行为

标题利用Audit审计系统行为 Linux Audit守护进程是一个可以审计Linux系统事件的框架 这个框架本身有数个组件,包括内核、二进制文件及其他文件。 1.内核audit:钩在内核中来捕获事件并将它们发送到auditd。 2.二进制文件 auditd:捕捉事件并…...

uniapp:不同权限设置不同的tabBar

1、在pages.json里,将所有tabBar涉及的页面都加进来。 我这里使用username来动态显示tabBar。 jeecg用户显示:首页,订单,消息,发现,我的,一共5个tabBar。 admin用户显示:首页&…...

如何将本地的项目上传到Git

一、GitHub or GitLab or Gitee创建一个新的仓库 二、仓库路径创建成功后,将本地项目上传到git 1. 进入本地项目所在文件夹位置,右击 2.出现git命令框 输入git init 在当前项目的目录中生成本地的git管理(会发现在当前目录下多了一个.git文件…...

[php] 文件上传的一个项目emmm

项目完整地址 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>上传文件</title><link href"./css/bootstrap.min.css" rel"stylesheet"><style>font-face {fo…...

uniapp-时间格式和距离格式的转换

时间格式的转换 第一种是把 YYYY-MM-DD hh:mm:ss 转换成 MM月DD日 第二种是把 hh:mm:ss 转换成 hh:mm /*** 格式化时间 1* 把传入的完整时间分为 MM月DD日 的格式* returns*/ export function formatDate(timeStr) {const date new Date(timeStr);const month (date.ge…...

【卖出备兑看涨期权策略(Covered_call)】

卖出备兑看涨期权策略&#xff08;Covered_call&#xff09; 卖出备兑看涨期权策略是一种最基本的收入策略&#xff0c;该策略主要操作就是在持有标的资产的同时卖出对应的看涨期权合约&#xff0c;以此来作为从持有的标的资产中获取租金的一种方法。如果标的资产的价格上涨到…...

【校招VIP】测试算法考点之智力分析

考点介绍&#xff1a; 智力题(逻辑分析题&#xff09;准备校招的同学们好好准备下,测试笔试中经常遇到。 测试算法考点之智力分析-相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考点试题 1.5个囚犯在装有100颗豆子的袋子里摸,他们谁的存活几率大? 5个囚犯,分…...

【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

文章目录 前言一、crontab 介绍1.1 什么是 crontab1.2 crontab 命令工作流程1.3 Linux 定时任务分类 二、crontab 用法详解2.1 crond 服务安装2.2 crontab 文件内容分析2.3 crontab 命令用法2.3.1 查看定时任务列表2.3.2 编辑/创建定时任务2.3.3 删除定时任务2.3.4 其他 cronta…...

Vue系列之入门篇

前言&#xff1a; 目录 一&#xff0c;关于Vue的简介 1.什么是Vue&#xff1f; 2.使用Vue框架的好处&#xff1f; 3. 库和框架的区别&#xff1a; 4. MVVM的介绍 5.Vue的入门案例 二&#xff0c;Vue的生命周期 一&#xff0c;关于Vue的简介 1.什么是Vue&#xff1f; Vu…...

【遥感卫星数据】Landsat数据Collection1和Collection2区别

文章目录 1 总体介绍2 Landsat Collection 13 Landsat Collection 23.1 Collection 2 Level-1产品3.2 Collection 2 Level-2产品参考资料1 总体介绍 Landsat卫星的产品数据每经过几年就会有一次改进,主要改进几何校正精度和辐射纠正精度。而且NASA/USGS每次更新产品都会把存档…...

socket() failed (24: Too many open files) while connecting to upstream, client

一、这个错误通常是因为文件句柄数目超过系统限制导致的。要解决这个问题&#xff0c;您可以尝试以下几个步骤&#xff1a; 调整系统文件句柄限制&#xff1a;您可以通过修改/etc/security/limits.conf文件中的nofile参数来增加系统文件句柄的最大数目。将nofile的值增加到更高…...

认识单链表

-之前我们学过储存数据的一种表——顺序表&#xff0c;那么为什么还有链表呢 首先我们回顾一下顺序表 顺序表是物理地址连续的一段内存空间&#xff08;数组&#xff09;&#xff0c;我们通过动态内存开辟的&#xff0c; 那么&#xff1a; 顺序表也有自己的一些优点&#xff0c…...

pytest(二)框架实现一些前后置(固件,夹具)的处理,常用三种

为什么需要这些功能&#xff1f; 比如&#xff1a;web自动化执行用例前是否需要打开浏览器&#xff1f;执行用例后需要关闭浏览器&#xff1f; 示例代码&#xff1a; import pytest class Testcase:#这是每条测试用例执行前的初始化函数def setup(self):print("\n我是每…...

【计算机网络 - 自顶向下方法】计算机网络和因特网

目录 1. What is the Internet? 1.1 因特网的具体构成 1.2 因特网的功能 2. Network core 2.1 基本介绍 2.2 分组交换 2.2.1 序列化时延 2.2.2 排队延迟和丢包 2.2.3 分组交换的优缺点 2.3 电路交换 2.3.1 基本概念 2.3.2 电路交换网络中的复用 2.3.3 电路交换文件…...

【Java 基础篇】Java Condition 接口详解

Java 提供了一种更灵活和高级的线程协作机制&#xff0c;通过 Condition 接口的使用&#xff0c;你可以更精细地控制线程的等待和唤醒&#xff0c;实现更复杂的线程同步和通信。本文将详细介绍 Java 的 Condition 接口&#xff0c;包括它的基本概念、常见用法以及注意事项。 什…...

.360勒索病毒和.halo勒索病毒数据恢复|金蝶、用友、ERP等数据恢复

导言&#xff1a; 随着数字化时代的持续发展&#xff0c;网络安全威胁也变得前所未有地复杂和难以应对。在这个充满挑战的网络环境中&#xff0c;勒索病毒已经成为了一种极为危险和破坏性的威胁。最近引起广泛关注的是.360勒索病毒&#xff0c;一种可怕的恶意软件&#xff0c;…...

计算机毕业设计 基于SpringBoot餐厅点餐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…...

天空飞鸟 数据集

今天要介绍的数据集则是天空飞鸟 数据集&#xff1a; 数据集名称&#xff1a;天空飞鸟 数据集 数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;以文件包含图片…...

集成学习-树模型

可以分为三部分学习树模型: 基本树(包括 ID3、C4.5、CART).Random Forest、Adaboost、GBDTXgboost 和 LightGBM。基本树 选择特征的准则 ID3:信息增益max C4.5:信息增益比max CART:基尼指数min 优缺点 ID3 核心思想是奥卡姆剃刀(决策树小优于大) 缺点: ID3 没…...

代码随想录算法训练营第一天(C)| 704. 二分查找 27. 移除元素

文章目录 前言一、704. 二分查找二、27. 移除元素三、34. 在排序数组中查找元素的第一个和最后一个位置总结 前言 这次是C&#xff1b; 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素_愚者__的博客-CSDN博客 &#xff08;java&#xff09; 一、704. 二分查找 的优…...

重构优化第三方查询接口返回大数据量的分页问题

# 问题描述 用户线上查询其上网流量详单数据加载慢&#xff0c;且有时候数据没有响应全~ 1、经排除是调用第三方数据量达10w条响应会超时&#xff0c;数据没正常返回 2、现有线上缓存分页也是加载慢数据不能正常展示 3、第三方接口返回类似报文jsonj&#…...

Cento7 Docker安装Zabbix,定制自定义模板

1.先安装docker环境 yum -y install yum-utils device-mapper-persistent-data lvm2#导入docker安装库 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo #按指定版本安装好docker yum install docker-ce-20.10.5 docker-ce-cli-20…...

网络防御--防火墙

拓扑 Cloud 1 作为电脑与ENSP的桥梁 防火墙配置 登录防火墙 配置IP地址及安全区域 添加地址对象 配置策略 1、内网可以访问服务器 结果 2、内网可以访问公网 结果 配置NAT策略 结果...

淘宝商品详情数据采集

淘宝商品详情数据采集的方法如下&#xff1a; 确定采集目标&#xff1a;明确要采集的商品信息&#xff0c;如商品标题、价格、销量、评论、图片等。选择采集工具&#xff1a;可以选择Scrapy框架、Java的WebMagic框架等。编写爬虫程序&#xff1a;进入目标文件夹&#xff0c;输…...

mac安装virtualenv和virtualenvwrapper

1.安装(推荐用sudo安装&#xff0c;直接pip3安装会有坑) sudo pip3 install virtualenv sudo pip3 install virtualenvwrapper 2.查看python virtualenvwrapper.sh 位置 # 查看python默认解释器 which python3 # 查看virtualenvwrapper.sh which virtualenvwrapper.sh 3.打…...

利用PCA科学确定各个指标的权重系数

背景参考: 1、提取主成分 对样本进行PCA分析,查看不同变量贡献率,确定主要的指标。我们可以通过下列代码获取需要的所有数据: import numpy as np from sklearn.decomposition import PCA# 创建一个数据 np.random.seed(0) data = np.random.random((100,5)) y = np.ra…...

代码随想录 -- day55 --392.判断子序列 、115.不同的子序列

392.判断子序列 dp[i][j] 表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度为dp[i][j]。 if (s[i - 1] t[j - 1]) t中找到了一个字符在s中也出现了if (s[i - 1] ! t[j - 1]) 相当于t要删除元素&#xff0c;继续匹配 if (s…...

mysql5升级到mysql8的血泪教训

核心问题1:下载中断这个包就会有问题&#xff0c;下载中断的话一定要重新下载 核心问题2:低版本向高版本迁移 无法整库备份 只能单库备份 1.数据备份 我这里备份了全库&#xff0c;所以后面数据没恢复回来&#xff0c;把DDL语句拆出来了单独建表 mysqldump -u root -p --al…...

Unity 开发人员转CGE(castle Game engine)城堡游戏引擎指导手册

Unity 开发人员的城堡游戏引擎概述 一、简介2. Unity相当于什么GameObject&#xff1f;3. 如何设计一个由多种资产、生物等组成的关卡&#xff1f;4. 在哪里放置特定角色的代码&#xff08;例如生物、物品&#xff09;&#xff1f;Unity 中“向 GameObject 添加 MonoBehaviour”…...

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职&#xff0c;重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题&#xff0c;基本都是运维背锅。背锅也就罢了&#xff0c;薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…...

网站建设与设计致谢/网络营销推广流程

这部分内容比较繁琐&#xff0c;但很简单&#xff0c;在此条理地介绍一下。 1.首先&#xff0c;介绍&#xff1a;对类中成员的访问方式 先举一个例子&#xff0c;了解水平访问和垂直访问 #include "iostream.h" using namespace std; class A { private: in…...

快速做网站服务好/深圳网络营销渠道

数据库批处理 批处理(batch)指的是一次操作中执行多条SQL语句&#xff0c;批处理相比于一次一次执行效率会提高很多。 批处理操作数据库的过程主要是分两步&#xff1a; 将要执行的SQL语句保存执行保存的SQL语句 如何实现批处理 Statement和PreparedStatement都支持批处理操…...

电脑网站打不开是什么原因造成的/网络推广网站建设

http://msdn.microsoft.com/en-us/library/9bbdkx3k.aspx ——————————————————————————————————————————————————————————————————...

设计好 英文网站/软文范例大全200字

3.6 BOA服务器搭建由于MJPGstreamer服务器只能传输视频信息&#xff0c;而本设计需要接收客户端的控制命令并且还需返回机器人的传感器数据&#xff0c;因此需要移植支持CGI应用脚本的服务器。BOA服务器是一个可运行在Unix或Linux下的非常小巧的单任务WEB服务器&#xff0c;并且…...

企业网站的形式有哪些/互联网广告代理

前言&#xff1a;为啥要用无人值守安装系统&#xff1f;很简单的答案&#xff01;就两个&#xff01;一个是方便日常工作&#xff0c;另一个就是可以用来装逼&#xff01;常规装系统的办法有哪些&#xff1f;光盘安装系统>一个服务器DVD内置光驱百千块&#xff0c;百台服务器…...

兖州城乡建设局网站/免费网站提交入口

内省是 Java 语言对 Bean 类属性、事件的一种处理方法(也就是说给定一个javabean对象,我们就可以得到/调用它的所有的get/set方法)。例如类 A 中有属性 name, 那我们可以通过 getName,setName 来得到其值或者设置新的值。通过 getName/setName 来访问 name 属性,这就是默认的规…...