showking

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

代理端

OSSEC有两种代理端:可安装的代理端和哑代理端(免安装)。可安装的代理端被安装在主机上,通过OSSEC的加密协议将主机的信息发送到OSSEC服务器。亚代理端则不需在远端主机进行安装。他作为OSSEC管理端的进程存在,通过RPC(ssh或rdp、wmi)的方式收集远端系统的信息。

代理端的管理

通过manage_agents命令可增加一个新的代理端。步骤如下:

1、在OSSEC服务器上运行manage_agents

2、增加一个代理端

3、提取代理端的key值

4、复制key到代理端;

5、在代理端运行manage_agent

6、从服务器导入key值;

7、重启管理端ossec进程;

8、启动代理端

OSSEC服务器上的manage_agents

服务器上的manage_agents提供以下功能:

l  添加一个OSSEC代理端到服务器;

l  提取已添加的代理端的key

l  从服务器移除一个代理端

l  列出服务器上已添加的全部代理端

运行Manage_agents交互界面

Manage_agent需要使用必要的权限运行(如root)

运行Manage_agents:

# /var/ossec/bin/manage_agents

Manage_agents菜单:

****************************************

* OSSEC HIDS v2.5-SNP-100809 Agent manager.     *

* The following options are available: *

****************************************

   (A)dd an agent (A).

   (E)xtract key for an agent (E).

   (L)ist already added agents (L).

   (R)emove an agent (R).

   (Q)uit.

Choose your action: A,E,L,R or Q:

输入字母,然后敲击回车即可触发对应的功能。

添加一个代理端

在选择时,输入a来增加一个代理端。

Choose your action: A,E,L,R or Q: a

这时,需要为新添加的代理端起一个名字。可以用 主机名或者其他的字符串来区分系统。在这里,我们使用agent1.

- Adding a new agent (use '\q' to return to the main menu).

  Please provide the following:

   * A name for the new agent: agent1

然后,需要输入agent的IP地址。可以是单一的ip地址(如192.168.1.25),或者是一个ip范围(192.168.2.0/24),或是其他。当ip会不断变化(DHCP)或很多系统使用同一ip(NAT)时,输入ip范围是个不错的选择。

* The IP Address of the new agent: 192.168.2.0/24

警告:当使用单一ip时,必须是唯一的。重复的ip将导致问题。但多系统使用同一ip范围。

最后一个配置项是为代理端设置一个ID。Manage_agents将提供一个ID的建议值。这个值是当前系统中可用的ID最小值。ID000被分配给了OSSEC server。如果接受建议,简单敲击回车即可。如果选择其他值,输入后敲击回车即可。

* An ID for the new agent[001]:

最后,你还需要对输入的信息做最终的确认。

Agent information:

   ID:002

   Name:agent1

   IP Address:192.168.2.0/24

 

Confirm adding it?(y/n): y

Agent added.

然后,Manage_agents将代理端的信息存入/var/ossec/etc/client.keys,然后退出安装界面。

警告:如果这是添加的第一个代理端,需重启OSSEC服务器进程。

/var/ossec/bin/ossec-control restart.

提取代理端key值

添加代理端后,会生成一个key值。需要将它复制到代理端。提取key值,可以通过Manage_agents命令获得。在服务器提供的代理端列表中,输入需要提取的代理端ID即可。需要注意的是ID的数字必须输入全才行。

Choose your action: A,E,L,R or Q: e

 

Available agents:

   ID: 001, Name: agent1, IP: 192.168.2.0/24

Provide the ID of the agent to extract the key (or '\q' to quit): 001

 

Agent key information for '001' is:

MDAyIGFnZW50MSAxOTIuMTY4LjIuMC8yNCBlNmY3N2RiMTdmMTJjZGRmZjg5YzA4ZDk5m

 

** Press ENTER to return to the main menu.

Key以字符串的形式进行编码。本例中为MDAyIGFnZW50MSAxOTIuMTY4LjIuMC8yNCBlNmY3N2RiMTdmMTJjZGRmZjg5YzA4ZDk5Mm,字符串中含有客户端的信息。Key值可通过代理端的manage_agents命令添加入代理端。 

移除代理端

如果想从服务器移除一个代理端,使用Manage_agents的r选项。然后从列表中选择需要移除的代理端ID,输入,然后回车即可。注意ID需要输入全部数字。

Choose your action: A,E,L,R or Q: r

 

Available agents:

   ID: 001, Name: agent1, IP: 192.168.2.0/24

Provide the ID of the agent to be removed (or '\q' to quit): 001

Confirm deleting it?(y/n): y

Agent '001' removed.

Manage_agents将核实 /var/ossec/etc/client.keys中的代理端信息。文件中存有ID和验证信息,从而避免添加代理端时产生冲突。删除的代理端将不再与OSSEC服务器产生交互。

OSSEC代理端上的Manage_agents

代理端上的Manage_agents提供倒入认证key值的功能:

****************************************

* OSSEC HIDS v2.5-SNP-100809 Agent manager.     *

* The following options are available: *

****************************************

   (I)mport key from the server (I).

   (Q)uit.

Choose your action: I or Q: i

 

* Provide the Key generated by the server.

* The best approach is to cut and paste it.

*** OBS: Do not include spaces or new lines.

 

Paste it here (or '\q' to quit): [key extracted via manage_agents on the server]

 

Agent information:

   ID:001

   Name:agent1

   IP Address:192.168.2.0/24

 

Confirm adding it?(y/n): y

Added.

** Press ENTER to return to the main menu.

为使配置起作用,需要重启服务端,然后启动代理端。

代理端绑定NAT或使用动态IP(DHCP)

如果代理端IP不断变化或在NAT设备后面,那么需要通过CIDR地址或者使用any IP地址来配置代理端。

DHCP例子

为接收代理端的IP在192.168.2.0/24范围内的变化,只需在设置代理端ip时,使用地址范围 192.168.2.0/24节课。例如:

Please provide the following:

* A name for the new agent: test

* The IP Address of the new agent: 192.168.2.0/24

NAT例子

对于NAT后面的设备,方法同样适用。对于OSSEC服务器来说,NAT后面的代理IP地址是相同对。

例如,你的系统192.168.1.2, 192.168.1.3 还有192.168.1.4在一个NAT服务器的后面,需要连接10.1.1.0/24网络的OSSEC服务器。 

这时,你需要配置代理端为10.1.1.0/24端的任意ip(而不是它原始ip)。也可适用any来替代ip或ip范围,允许代理端从任意ip发起连接。

在Manage_agents工具上,使用如下方法添加代理端。

Please provide the following:

* A name for the new agent: agent-1

* The IP Address of the new agent: 10.1.1.0/24

Please provide the following:

* A name for the new agent: agent-2

* The IP Address of the new agent: any

注意:每个代理端必须使用不同的key值。

通过ossec-authd添加代理端

Ossec-authd

Ossec-authd在服务器上安装用于添加代理端以及分发认证key

警告:由于当前暂无认证机制,任何主机都可以连接ossec-authd的监听端口来获取一个OSSEC代理端key。因此,推荐使用ossec管理端防火墙来限制连接请求。

运行ossec-authd,监听1515端口。

/var/ossec/bin/ossec-authd -p 1515

Agent-auth

Agent-auth用于连接ossec-authd实例以获取并安装一个代理端key。

运行agent-auth连接192.168.1.12管理端的1515端口

/var/ossec/bin/agent-auth -m 192.168.1.12 -p 1515

集中化代理端配置

如果你打算远程配置你的代理端,恭喜你从2.1版本之后ossec开始支撑此项功能。集中配置包括完整性检测(syscheckd)、rootkit检测(rootcheck)、日志分析三项功能。

下面说一下怎样使用。

创建代理端配置

首先,创建文件/var/ossec/etc/shared/agent.conf。

在文件中,你可以像在ossec.conf中一样对代理端进行配置。

<agent_config>

    <localfile>

        <location>/var/log/my.log</location>

        <log_format>syslog</log_format>

    </localfile>

</agent_config>

但是除此之外需要做一些额外的配置,可以通过代理名称、操作系统、配置文件等限定配置适用范围。

<agent_config name="agent1">

    <localfile>

        <location>/var/log/my.log</location>

        <log_format>syslog</log_format>

    </localfile>

</agent_config>

 

<agent_config os="Linux">

    <localfile>

        <location>/var/log/my.log2</location>

        <log_format>syslog</log_format>

    </localfile>

</agent_config>

 

<agent_config os="Windows">

    <localfile>

        <location>C:\myapp\my.log</location>

        <log_format>syslog</log_format>

    </localfile>

</agent_config>

并且只有匹配上的代理端可以读取该配置。这给了我们细粒度配置代理端提供了可能。

配置保存后,管理端将推送配置文件到代理端。但这需要一点时间(因为管理端需要将共享文件读入缓存,并每隔一段时间才会重读一次)。如果重启管理端,推送配置文件的速度将加快。

重启代理端

推送配置文件后,可以通过运行agent_control来查看代理接收配置的情况并远程重启代理端。

# md5sum /var/ossec/etc/shared/agent.conf

MD5 (/var/ossec/etc/shared/agent.conf) = ee1882236893df851bd9e4842007e7e7

# /var/ossec/bin/agent_control -i 200

 

OSSEC HIDS agent_control. Agent information:

Agent ID: 200

Agent Name: ourhome

IP address: 192.168.0.0/16

Status: Active

 

Operating system: Linux ourhome 2.6.24-23-generic #1 SMP Mon Jan 26 00..

Client version: OSSEC HIDS v2.1 / ee1882236893df851bd9e4842007e7e7

Last keep alive: Tue Jun 30 08:29:17 2009

 

Syscheck last started at: Tue Jun 30 04:29:32 2009

Rootcheck last started at: Tue Jun 30 06:03:08 2009

当代理端接收到配置后,Client Version部分会看到agent.conf文件的md5sum值。

注意:Linux系统通常使用md5sum,但其他系统会使用md5来计算文件的哈希。

重启代理端:

# /var/ossec/bin/agent_control -R 200 (where 200 is the agent id)

 

OSSEC HIDS agent_control: Restarting agent: 200

哑代理

哑代理监控

哑代理监控可以在没有安装代理的情况下为你提供系统的完整性检测(包括路由、防火墙、交换机、Linux\BSD系统)。他可以像我们正常的文件完整性检测一样工作(对checksum的变化做告警)或者做差异对比,明确列出哪里有不同。

哑终端配置项

Agentless用以配置哑终端相关配置项

Frequency表示运行的时间间隔

Host定义用户名和哑终端主机

示例:

<host>root@linux.server.example.com</host>

 

State定义检查是取周期值还是周期差值

Periodic:由OSSEC进程运行产生周期数值;

Periodic_diff:由脚本输出值与前期运行值比较产生。

Arguments:定义传递给script的参数值

开始使用哑终端:

安装OSSEC之后,需要设置哑终端监控模式:

# /var/ossec/bin/ossec-control enable agentless

然后在需要在接入的主机上配置ssh认证信息。对于思科设备(PIX、路由等)来说,你需要添加额外的参数增加密码。当需要支撑su时,也需要这样做。举例来说,我想增加一个Linux主机(example.net)和一个PIX防火墙(pix.fw.local):

# /var/ossec/agentless/register_host.sh add root@example.net mypass1

  *Host root@example.netl added.

# /var/ossec/agentless/register_host.sh add pix@pix.fw.local pixpass enablepass

  *Host pix@pix.fw.local added.

 

# /var/ossec/agentless/register_host.sh list

  *Available hosts:

pix@pix.fw.local

root@example.net

注意:register_host.sh是一个shell脚本,shell脚本无法识别的特殊字符需要提前注释掉。

如果想用公钥而不用密码来认证,需要提供NOPASS作为密码,并创建公钥:

产生的公钥会放在/var/ossec/.ssh目录下。之后,使用scp命令复制公钥到远端主机,这样,你得无密码连接操作就完成了。

配置哑终端

全部添加完你的系统后,需要配置OSSEC来监控他们了。默认情况下,有四种哑终端供选用(稍后我们会增加其他类型):

l  ssh_integrity_check_bsd

l  ssh_integrity_check_linux

l  ssh_generic_diff

l  ssh_pixconfig_diff

对于前两个来说,需要在配置文件中给出路径清单,OSSEC则在远端设备上完成完整性检测工作。对于ssh_generic_diff来说,还需要在远端设备上配置一些命令才行,OSSEC将在输出结果变化时,进行告警。Ssh_pixconfig_diff则在思科PIX/路由配置变化时产生告警。

对于我们第一个系统(root@example.net),我将每10个小时/bin,/etc,/sbin目录(如果我使用ssh_integrity_check_bsd,也需要提供目录参数):

<agentless>

    <type>ssh_integrity_check_linux</type>

    <frequency>36000</frequency>

    <host>root@example.net</host>

    <state>periodic</state>

    <arguments>/bin /etc/ /sbin</arguments>

</agentless>

对于PIX系统,配置是这样的:

<agentless>

    <type>ssh_pixconfig_diff</type>

    <frequency>36000</frequency>

    <host>pix@pix.fw.local</host>

    <state>periodic_diff</state>

</agentless>

为了举一个ssh_generic_diff的例子,我在root@example.net上增加了ls –la /etc;cat /etc/passwd的监控项;如果需要监控任何网络防火墙或交换机,需要使用ssh_generic_diff选项,并在参数部分列明指令即可。需要使用su命令时,需要在hostname(<host>root@example.net</host>)前面设置use_su参数即可。

<agentless>

    <type>ssh_generic_diff</type>

    <frequency>36000</frequency>

    <host>root@example.net</host>

    <state>periodic_diff</state>

    <arguments>ls -la /etc; cat /etc/passwd</arguments>

</agentless>

运行完整的安装进程

配置完成后,需要重启OSSEC进程。这时会在看到“Started ossec-agentlessd”的输出。在每个哑终端启动前,OSSEC会检测一下配置清单,以确保所有配置项没有错误。通过/var/ossec/logs/ossec.log文件可以查看所有的错误。如果看到:

2008/12/12 15:20:06 ossec-agentlessd: ERROR: Expect command not found (or bad arguments) for 'ssh_integrity_check_bsd'.

2008/12/12 15:20:06 ossec-agentlessd: ERROR: Test failed for 'ssh_integrity_check_bsd' (127). Ignoring.'

意味着服务器上缺少一个expect库文件(在哑代理端无需安装任何文件)。在Ubuntu上,需要按下述步骤安装

# apt-get install expect

安装expect之后,需要重启OSSEC进程。这时可以看到,

2008/12/12 15:25:19 ossec-agentlessd: INFO: ssh_integrity_check_bsd: root@example.net: Starting.

2008/12/12 15:25:46 ossec-agentlessd: INFO: ssh_integrity_check_bsd: root@example.net: Finished.

告警

你可能看到的一些告警:

对于ssh_generic_diff来说:

OSSEC HIDS Notification.

2008 Dec 12 01:58:30

 

Received From: (ssh_generic_diff) root@example.net->agentless

Rule: 555 fired (level 7) -> "Integrity checksum for agentless device changed."

Portion of the log(s):

 

ossec: agentless: Change detected:

35c35

< -rw-r-r- 1 root wheel 34 Dec 10 03:55 hosts.deny

--

> -rw-r-r- 1 root wheel 34 Dec 11 18:23 hosts.deny

-END OF NOTIFICATION

对于PIX来说:

OSSEC HIDS Notification.

2008 Dec 01 15:48:03

 

Received From: (ssh_pixconfig_diff) pix@pix.fw.local->agentless

Rule: 555 fired (level 7) -> "Integrity checksum for agentless device changed."

Portion of the log(s):

 

ossec: agentless: Change detected:

48c48

< fixup protocol ftp 21

--

> no fixup protocol ftp 21

100c100

< ssh timeout 30

--

> ssh timeout 50

More changes..

 

-END OF NOTIFICATION

 

posted on 2019-03-20 11:24  showking  阅读(1048)  评论(0编辑  收藏  举报