showking

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

安装

安装要求

对于Unix系统来说,OSSEC只需要GNU的make、gcc和libc。推荐使用OpenSSL,但仅属于一个可选项。而且,通常您只需在一个系统上做编译操作,然后将二进制程序复制到其他机器即可。

Ubantu

在Ubantu系统上,你在编译安装OSSEC之前,需要安装build-essential包。

通过如下命令安装程序包:

# apt-get install build-essential

如果需要支持数据库选项的话,需要安装mysql-dev或者postgresql-dev。运行如下命令安装这些程序包:

# apt-get install mysql-dev postgresql-dev

RedHat

RedHat系统默认拥有编译程序必须的所有程序包。但如果需要支持数据库选项的话,需安装mysql-devel和/或者postgresql-devel。

# yum install mysql-devel postgresql-devel

Debian

Debian系统需要先将bash变更为dash,但仍可能在安装过程中出现问题。Dash还没有支持其他shell中的全部功能。因此,代理端在设置服务器IP时可能报错。错误可以忽略,但服务器ip需要手工设置完成。

配置方法如下,在代理端的ossec.conf文件中增加如下内容:

<ossec_config>
  <client>
    <server-ip>SERVER'S IP</server-ip>
  </client>

还有另一个办法避免错误的出现,即使用bash运行install.h

# bash ./install.sh

管理端/代理端安装

OSSEC HIDS安装起来非常简单。Install.sh脚本可自动化完成大部分工作。安装时,需要根据提示,回答一些简单的问题即可。其中最重要的是需要选择安装哪种类型的程序。必须正确选择安装类型:server\agent\local\hybrid。

提示:下面安装中以#开头的为安装命令,其他的全部是注释输出。

1、          下载最新版本并验证它的哈希值。

提示:在一些系统中,计算哈希的命令为md5、sha1,或wget命令不存在。可以尝试使用md5sum、sha1sum或者lynx命令做替代。

警告:wget可能无法从OSSEC网站下载文件。使用-U选项添加一个UserAgent,或者从其他管理端获取checksum文件。

# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz
# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt
# cat ossec-hids-2.8.1-checksum.txt
MD5(ossec-hids-2.8.1.tar.gz)= c2ffd25180f760e366ab16eeb82ae382
SHA1(ossec-hids-2.8.1.tar.gz)= 0ecf1df09558dc8bb4b6f65e1fb2ca7a7df9817c
# md5sum ossec-hids-2.8.1.tar.gz
MD5(ossec-hids-2.8.1.tar.gz)= c2ffd25180f760e366ab16eeb82ae382
# sha1sum ossec-hids-2.8.1.tar.gz
SHA1(ossec-hids-2.8.1.tar.gz)= 0ecf1df09558dc8bb4b6f65e1fb2ca7a7df9817c

2、          解压压缩包,然后运行install.sh脚本。按照提示完成安装操作。

# tar -zxvf ossec-hids-*.tar.gz (or gunzip -d; tar -xvf)
# cd ossec-hids-*
# ./install.sh

3、          OSSEC管理端将监听1514UDP端口,需放开管理端和代理端之间的防火墙策略,允许流量通行。

4、          Server、agent、Hybrid的安装需要额外的配置项。可参照代理端的管理章节。

5、          通过如下命令运行OSSEC HIDS:

# /var/ossec/bin/ossec-control start

Windows代理端的安装

提示:Windows系统仅能安装OSSEC的代理端,并且需要配套的OSSEC服务端才可正常运行。

二进制安装

OSSEC通常在每一个需要安装的系统上做编译,但这种做法效率很低。对于这种场景可以采用二进制安装的形式进行。OSSEC可以再一个系统上编译,然后复制到分发系统上。也可以采用RPM或Debian包的形式开展。

提示:OSSEC对跨平台编译支持一般。仅Windows程序可以在Linux系统上做编译,其他的系统必须在相同的操作系统和CPU平台上做编译。

编译OSSEC,并安装到第二个服务器上。

首先,下载OSSEC包到你想安装的系统版本上,然后解压缩(系统需有编译器)。

# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz
# tar -zxvf ossec-hids-latest.tar.gz

进入程序源码目录,配置OSSEC,编译agent版本。使用Make命令编译二进制文件。

# cd ossec-*/src
# make setagent
# make all
# make build

修改ossec-hids-*/etc/preloaded-vars.conf来设置BIANARY_INSTALL为yes。

# echo "USER_BINARYINSTALL=\"y\"" >> ossec-hids*/etc/preloaded-vars.conf

最后,创建OSSEC包

# tar -cvf ossec-binary.tar ossec-hids*

安装二进制OSSEC包

在目标系统上(无C编译器),下载前面制作的OSSEC-binary.tar包。解压二进制包并运行install.sh脚本来完成安装。

# tar xfv ossec-binary.tar
# cd ossec-*
# ./install.sh

根据提示完成安装配置后,安装工作完成。

服务器虚拟程序安装

概览:

OSSEC虚拟程序以OVF(Open Virtualized Format)形式提供的虚拟系统。它包括一个OSSEC2.7版本的服务器安装和WebUI(0.8 beta)版本的安装。

账号和密码

系统上所有账号的密码为_0ssec_。WebUI的用户名为user,PhpMyAdmin的账号为root。

OVF到VMWare 镜像的转化

一些VMWare桌面环境还不支持OVF镜像文件,对于这些系统,VMWare提供了ovftool转换工具。从VMWare官网下载ovftool,利用如下方法进行转换:

# tar zxvf ossec_virtual_apliance.tar.gz
# cd ossec_virtual_appliance
# ovftool ossec.ovf ossec.vmx

免交互源码安装

OSSEC支持install.sh的免交互编译安装操作。安装脚本可以从etc/preloaded-vars.conf配置文件读取默认配置。

大部分配置项都记录在了配置文件里,并且均有默认值。去除注释符号脚本即能读取设置项。任何对默认值的变更均需写入配置文件。

提示:如果USER_NO_STOP=”y”没有设置,install.sh脚本将会弹出并请求人工确认。

Preload-vars.conf配置示例:

# preloaded-vars.conf, Daniel B. Cid (dcid @ ossec.net).

#

# Use this file to customize your installations.

# It will make the install.sh script pre-load some

# specific options to make it run automatically

# or with less questions.

 

# PLEASE NOTE:

# When we use "n" or "y" in here, it should be changed

# to "n" or "y" in the language your are doing the

# installation. For example, in portuguese it would

# be "s" or "n".

 

 

# USER_LANGUAGE defines to language to be used.

# It can be "en", "br", "tr", "it", "de" or "pl".

# In case of an invalid language, it will default

# to English "en"

#USER_LANGUAGE="en"     # For english

#USER_LANGUAGE="br"     # For portuguese

 

 

# If USER_NO_STOP is set to anything, the confirmation

# messages are not going to be asked.

#USER_NO_STOP="y"

 

 

# USER_INSTALL_TYPE defines the installation type to

# be used during install. It can only be "local",

# "agent" or "server".

#USER_INSTALL_TYPE="local"

#USER_INSTALL_TYPE="agent"

#USER_INSTALL_TYPE="server"

 

 

# USER_DIR defines the location to install ossec

#USER_DIR="/var/ossec"

 

 

# If USER_DELETE_DIR is set to "y", the directory

# to install OSSEC will be removed if present.

#USER_DELETE_DIR="y"

 

 

# If USER_ENABLE_ACTIVE_RESPONSE is set to "n",

# active response will be disabled.

#USER_ENABLE_ACTIVE_RESPONSE="y"

 

 

# If USER_ENABLE_SYSCHECK is set to "y",

# syscheck will be enabled. Set to "n" to

# disable it.

#USER_ENABLE_SYSCHECK="y"

 

 

# If USER_ENABLE_ROOTCHECK is set to "y",

# rootcheck will be enabled. Set to "n" to

# disable it.

#USER_ENABLE_ROOTCHECK="y"

 

 

# If USER_UPDATE is set to anything, the update

# installation will be done.

#USER_UPDATE="y"

 

# If USER_UPDATE_RULES is set to anything, the

# rules will also be updated.

#USER_UPDATE_RULES="y"

 

# If USER_BINARYINSTALL is set, the installation

# is not going to compile the code, but use the

# binaries from ./bin/

#USER_BINARYINSTALL="x"

 

 

### Agent Installation variables. ###

 

# Specifies the IP address or hostname of the

# ossec server. Only used on agent installations.

# Choose only one, not both.

# USER_AGENT_SERVER_IP="1.2.3.4"

# USER_AGENT_SERVER_NAME

 

 

# USER_AGENT_CONFIG_PROFILE specifies the agent's config profile

# name. This is used to create agent.conf configuration profiles

# for this particular profile name. Only used on agent installations.

# Can be any string. E.g. LinuxDBServer or WindowsDomainController

#USER_AGENT_CONFIG_PROFILE="generic"

 

 

 

### Server/Local Installation variables. ###

 

# USER_ENABLE_EMAIL enables or disables email alerting.

#USER_ENABLE_EMAIL="y"

 

# USER_EMAIL_ADDRESS defines the destination e-mail of the alerts.

#USER_EMAIL_ADDRESS="dcid@test.ossec.net"

 

# USER_EMAIL_SMTP defines the SMTP server to send the e-mails.

#USER_EMAIL_SMTP="test.ossec.net"

 

 

# USER_ENABLE_SYSLOG enables or disables remote syslog.

#USER_ENABLE_SYSLOG="y"

 

 

# USER_ENABLE_FIREWALL_RESPONSE enables or disables

# the firewall response.

#USER_ENABLE_FIREWALL_RESPONSE="y"

 

 

# Enable PF firewall (OpenBSD and FreeBSD only)

#USER_ENABLE_PF="y"

 

 

# PF table to use (OpenBSD and FreeBSD only).

#USER_PF_TABLE="ossec_fwtable"

 

 

# USER_WHITE_LIST is a list of IPs or networks

# that are going to be set to never be blocked.

#USER_WHITE_LIST="192.168.2.1 192.168.1.0/24"

 

 

#### exit ? ###

在Windows环境下编译OSSEC Windows 代理端

警告:对于2.9版本来说此项功能不再支持。Windows客户端可以在Linux系统下编译。我们对更新支持Windows编译的补丁表示欢迎。

大多数人使用OSSEC Windows 代理端都是从OSSEC网站下载的编译好的。但对于一些存在特殊需求的企业环境,这样就有些不适用了。这时,用户可通过定制代理端并维护一个内部版本来满足使用需求。

在《如何在Linux环境下编译Windows 代理端》章节已经提供了编译方法,但是在Windows上这样的流程不大好用了。为此,我分享如下流程给大家。

安装要求:

l  The Nullsoft Scriptable Install System (NSIS)

l  The Minimalist GNU for Windows (MinGW) 编译器

batch file. 简单将 gen_win.txt重命名为gen_win.cmd.

7-Zip for Windows

l  The public domain Unix2DOS utility

l  最新版本的OSSEC for Unix/Linux (含Windows环境代码)

下面是操作步骤:

1、                   下载并安装必要的程序。注意按《正确安装和配置MinGW》章节操作,特别是配置PATH环境的操作。

2、                   之后,通过7-zip解压缩OSSEC程序。右键文件并选择7-zip,解压到文件名.tar。这样,文件夹名称就是包的名称。解压文件后,浏览文件夹,并重复上面步骤来解压所有归档文件,直到可以看到包中所有文件为止。

3、                   将gen_win.txt放置到src\win32文件夹下并重命名为.cmd。

4、                   下载Unix2Dos并放置在src\win32文件夹下。

5、                   打开命令行窗口,进入src\win32目录,按需做个性化修改,执行gen_win.cmd。这可以收集必要的文件并放置在src/win-pkg目录下。

6、                   接下来,在src\win-pkg目录下编译Windows代理端并执行make.bat(我假设你知道如何变更目录)。

7、                   现在我们有了所有必要对文件,但还没法安装他们。通过执行NSIS编译命令即可创建安装器,例如"c:\ProgramFiles\NSIS\makensis.exe" ossec-installer.nsi。

如果没有错误提示,并且ossec-win32-agent.exe的二进制文件已经生成,则说明操作成功。恭喜你,现在可以使用自己定制的OSSEC!

利用MinGW编译OSSEC

利用MinGW可以编译OSSEC的windows代理端。

做一个windows快照是一件很痛苦的事情,这需要我打开我的WindowsVM(慢),倒入代码,编译等等。现在好了,我发现了MinGW这个交叉编译工具,可以很方便的在Linux环境编译Windows代理端。

怎么做的呢?首先,需要安装MinGW和nsis(用于创建安装文件)。如需支持OpenSSL的话,则需安装OpenSSL MinGW安装包。

这之后,则可以下载源代码并生成Windows包目录了。

注意:在一些系统上,md5、sha1或wget命令可能不存在,可以尝试替代命令md5sum、sha1sum或lynx。

警告:如果不能从ossec网站下载这些文件。可以尝试-U项增加客户端信息,或者从其他途径下载checksum文件。

# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1.tar.gz

# wget -U ossec http://www.ossec.net/files/ossec-hids-2.8.1-checksum.txt

# cat ossec-hids-2.8.1-checksum.txt

MD5(ossec-hids-2.8.1.tar.gz)= c2ffd25180f760e366ab16eeb82ae382

SHA1(ossec-hids-2.8.1.tar.gz)= 0ecf1df09558dc8bb4b6f65e1fb2ca7a7df9817c

# md5sum ossec-hids-2.8.1.tar.gz

MD5(ossec-hids-2.8.1.tar.gz)= c2ffd25180f760e366ab16eeb82ae382

# sha1sum ossec-hids-2.8.1.tar.gz

SHA1(ossec-hids-2.8.1.tar.gz)= 0ecf1df09558dc8bb4b6f65e1fb2ca7a7df9817c

并生成Windows包路径

# cd ossec-hids-2.8.1/src/win32

# ./gen-win.sh

现在,在src目录下面创建了win-pkg目录。进入目录并运行make.sh。几分钟之后Windows代理端就创建成功了。

注意:make.sh文件需要根据Linux版本情况进行一定的修改。

# cd ../win-pkg

# sh ./make.sh

可以看到屏幕出现如下显示:

Making windows agent

rootcheck/win-common.c: In function "__os_winreg_querykey":

rootcheck/win-common.c:279: warning: pointer targets in passing argument 7 of "RegEnumValueA" differ in signedness

win-registry.c: In function "os_winreg_querykey":

...

 

Output: "ossec-win32-agent.exe"

Install: 7 pages (448 bytes), 3 sections (3144 bytes), 379 instructions (10612 bytes), 247 strings (42580 bytes), 1 language table (346 bytes).

Uninstall: 5 pages (320 bytes),

1 section (1048 bytes), 301 instructions (8428 bytes), 166 strings (2646 bytes), 1 language table (290 bytes).

Datablock optimizer saved 8371 bytes (~0.7%).

这意味着可执行的代理端ossec-win32-agent.exe创建成功了。

利用cfengine进行集成和部署

最近我有个需求,需要在较少人工介入的情况下安装OSSEC-HIDS。几乎所有的OSSSEC-HIDS教程告诉我可以这样做,但却找不到具体方法。因此,基于开源精神,我贡献一种方法。

安装条件:

为满足必要的条件,我创建了一个相关信息的文件并将它复制到我的cfmster服务器。接下来我将介绍如何操作。

配置cfengine客户端:

我添加了一个ossec server分组到我的cfagent.conf中:hg_ossec_server(主机分组)。之后我创建了ossec-hids.cfwendang 包含如下信息。

  • control

我在control段创建了接下来要用到的变量:

control:

  any::

    ossec_key_dir = (/usr/local/cfkeys/ossec)

    ossec_req_dir = ( $(util_updir)/ossec )

  • package

我使用本地rpm源通过yum命令自动化安装OSSEC-HIDS。

packages:

  !hg_ossec_server::

      ossec-hids                  action=install

      ossec-hids-client           action=install

  • links

链接段将客户端的ossec-aent.conf链接到服务器端的ossec.conf。

links:

  !hg_ossec_server::

    /var/ossec/etc/ossec.conf -> /var/ossec/etc/ossec-agent.conf

  • copy

由于我的cfengine配置均存储在子版本目录,我只需在cfengine上编辑ossec-agent即可。之后,第一个stanza版本会将最近的版本分发到我的整个网络。

copy:

  !hg_ossec_server::

      $(distribute)/ossec-agent.conf      dest=/var/ossec/etc/ossec-agent.conf

                                          server=$(policyhost)

                                          mode=640

                                          group=ossec

                                          type=sum

                                          define=dc_restart_ossec

copy段的第二个stanza会将我们的ossec key目录复制为客户端的client.keys文件。如果两个文件版本不同时,客户端的版本将被更新。如果复制发生,则dc_restart_ossec参数将被设置。

$(ossec_key_dir)/$(host).ossec    dest=/var/ossec/etc/client.keys

                                  server=$(policyhost)

                                  mode=640

                                  group=ossec

                                  type=sum

                                  define=dc_restart_ossec

  • processes

我的处理过程段用来检查ossec-hids进程被成功启用。

processes:

  !hg_ossec_server::

      "ossec-agentd" elsedefine=dc_restart_ossec

  ``hg_ossec_server``::

      "ossec-remoted" elsedefine=dc_restart_ossec

  • shellcommands

这一部分我巧妙地设计为获取证书的操作。我希望除我之外,大家也喜欢这样做。首先,它运行了一个echo命令将eth0的ipv4地址写入到host.ossec文件中。Hg_ossec_server类将使用它来生成cert并放置在前面的copy段。

shellcommands:

  !hg_ossec_server::

      "/usr/bin/ssh util@$(policyhost) -i $(util_privkey) 'echo $(global.ipv4[eth0]) > $(ossec_req_dir)/$(host).ossec'"

最后的语句用来检测是否有人设置了dc_restart_ossec。如果设置了,则重启ossec-hids。

dc_restart_ossec::

    "/sbin/service ossec-hids restart"

好的,可使谁又关心呢。

好,现在我们的客户端被配置成可以安装、配置、启动OSSEC-HIDS并且主动获取给证书。但是,服务器端的认证目录仍然为空,所有对步骤都没有实际运行。这才是问题。

使用cfengine配置ossec server

这个cfengine很简单,它只是调用了我的打包shell并设置好类。我在control段完成这个操作。

control:

 hg_ossec_server::

   AddClasses = ( ExecResult(/root/security/ossec-scan.sh) )

两个脚本相结合,cfengine配置中的这行代码完成了创建、移除、导出keys,还有配置dc_restart_ossec类的变更操作。

OSSEC 更新

更新OSSEC非常简单。下载最新的包,按安装步骤操作即可。它将提示你已经安装了OSSEC并询问:

- You already have OSSEC installed. Do you want to update it? (y/n): y

回复yes,脚本将本心OSSEC二进制文件。过程中Local_rules.xml和local_decoder.xml不会被更改。脚本也将弹出并询问是否更新规则。

- Do you want to update the rules? (y/n): y

回复yes,ossec.conf中的<rules>部分也

posted on 2019-03-15 09:26  showking  阅读(1182)  评论(0编辑  收藏  举报