├── Dockerfile ├── README.md ├── data_dirs.env ├── default_agent ├── init.sh ├── ossec-server.sh └── ossec.conf /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:latest 2 | MAINTAINER Support 3 | 4 | 5 | ADD default_agent /var/ossec/default_agent 6 | # copy base config 7 | ADD ossec.conf /var/ossec/etc/ 8 | # Initialize the data volume configuration 9 | ADD data_dirs.env /data_dirs.env 10 | ADD init.sh /init.sh 11 | 12 | 13 | 14 | # 15 | # Add the bootstrap script 16 | # 17 | ADD ossec-server.sh /ossec-server.sh 18 | 19 | RUN \ 20 | yum -y update && \ 21 | yum -y install wget useradd postfix && \ 22 | yum clean all && \ 23 | cd /root; NON_INT=1 wget -q -O - https://updates.atomicorp.com/installers/atomic |sh && \ 24 | yum -y install ossec-hids-server && \ 25 | chmod 755 /ossec-server.sh && \ 26 | chmod 755 /init.sh && \ 27 | sync && /init.sh &&\ 28 | sync && rm /init.sh 29 | 30 | # 31 | # Specify the data volume 32 | # 33 | VOLUME ["/var/ossec/data"] 34 | 35 | # Expose ports for sharing 36 | EXPOSE 1514/udp 1515/tcp 37 | 38 | # 39 | # Define default command. 40 | # 41 | ENTRYPOINT ["/ossec-server.sh"] 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Description** 2 | 3 | OSSEC HIDS Server v2.9.4 4 | 5 | Based on Centos 7, this is the official OSSEC project docker container. Note: this can be easily adapted for RHEL 7 for FIPS-140-2 compliance. 6 | 7 | By default this container will create a volume to store configuration, log and agent key data 8 | under /var/ossec/data. Additionally it is configured with a local instance of postfix to 9 | send alert notifications. 10 | 11 | 12 | 13 | 14 | **Launch:** 15 | 16 | docker run -d -p 1514:1514/udp -p 1515:1515/tcp --name ossec-server 17 | 18 | 19 | **Launch with a specified Volume:** 20 | 21 | 22 | docker volume create ossec-data 23 | 24 | 25 | docker run -d -p 1514:1514/udp -p 1515:1515/tcp -v ossec-data:/var/ossec/data --name ossec-server atomicorp/ossec-docker 26 | 27 | 28 | **Stopping:** 29 | 30 | docker stop ossec-server 31 | 32 | **Re-start:** 33 | 34 | docker start ossec-server 35 | 36 | 37 | **Attach to running:** 38 | 39 | docker exec -it ossec-server bash 40 | 41 | **About** 42 | 43 | Atomicorp is your OSSEC expert which developed a set of tools and rules for managing and securing the OSSEC host intrusion detection system. Our Atomic Secured OSSEC secures your entire system and its applications and includes a cognitive self healing system that will automatically fix vulnerabilities and problems on the system before damage and intrusions can occur. 44 | 45 | We provide comprehensive services and support for OSSEC… We can Plan your Enterprise Monitoring Strategy for deployment, configuration, optimization, and even training your team to work with the open source software. 46 | Atomicorp is your comprehensive support team and we provide Threat Intelligence feeds for the OSSEC engine. For assistance with your OSSEC deployment contact us at OSSEC Help. 47 | 48 | 49 | **Thanks:** 50 | 51 | Dan Parriott, too many things to list! 52 | 53 | Xetus OSS for the original OSSEC Docker project: https://github.com/xetus-oss/docker-ossec-server 54 | 55 | 56 | -------------------------------------------------------------------------------- /data_dirs.env: -------------------------------------------------------------------------------- 1 | i=0 2 | DATA_DIRS[((i++))]="etc" 3 | DATA_DIRS[((i++))]="rules" 4 | DATA_DIRS[((i++))]="logs" 5 | DATA_DIRS[((i++))]="stats" 6 | DATA_DIRS[((i++))]="queue" 7 | export DATA_DIRS 8 | -------------------------------------------------------------------------------- /default_agent: -------------------------------------------------------------------------------- 1 | 127.0.0.1,DEFAULT_LOCAL_AGENT 2 | -------------------------------------------------------------------------------- /init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # Initialize the custom data directory layout 5 | # 6 | source /data_dirs.env 7 | 8 | cd /var/ossec 9 | for ossecdir in "${DATA_DIRS[@]}"; do 10 | mv ${ossecdir} ${ossecdir}-template 11 | ln -s $(realpath --relative-to=$(dirname ${ossecdir}) data)/${ossecdir} ${ossecdir} 12 | done 13 | -------------------------------------------------------------------------------- /ossec-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # OSSEC container bootstrap. See the README for information of the environment 5 | # variables expected by this script. 6 | # 7 | FIRST_TIME_INSTALLATION=false 8 | DATA_PATH=/var/ossec/data 9 | 10 | DATA_DIRS="etc rules logs stats queue" 11 | for ossecdir in $DATA_DIRS; do 12 | if [ ! -e "${DATA_PATH}/${ossecdir}" ]; then 13 | echo "Installing ${ossecdir}" 14 | mkdir -p ${DATA_PATH}/${ossecdir} 15 | cp -a /var/ossec/${ossecdir}-template/* ${DATA_PATH}/${ossecdir}/ 2>/dev/null 16 | FIRST_TIME_INSTALLATION=true 17 | fi 18 | done 19 | 20 | 21 | if [ ! -f ${DATA_PATH}/etc/sslmanager.key ]; then 22 | openssl genrsa -out ${DATA_PATH}/etc/sslmanager.key 4096 23 | openssl req -new -x509 -key ${DATA_PATH}/etc/sslmanager.key -out ${DATA_PATH}/etc/sslmanager.cert -days 3650 -subj /CN=${HOSTNAME}/ 24 | fi 25 | 26 | # 27 | # Check for the process_list file. If this file is missing, it doesn't 28 | # count as a first time installation 29 | # 30 | touch ${DATA_PATH}/process_list 31 | chgrp ossec ${DATA_PATH}/process_list 32 | chmod g+rw ${DATA_PATH}/process_list 33 | 34 | # 35 | # If this is a first time installation, then do the 36 | # special configuration steps. 37 | # 38 | AUTO_ENROLLMENT_ENABLED=${AUTO_ENROLLMENT_ENABLED:-true} 39 | 40 | 41 | function ossec_shutdown(){ 42 | /var/ossec/bin/ossec-control stop; 43 | if [ $AUTO_ENROLLMENT_ENABLED == true ] 44 | then 45 | kill $AUTHD_PID 46 | fi 47 | } 48 | 49 | # Trap exit signals and do a proper shutdown 50 | trap "ossec_shutdown; exit" SIGINT SIGTERM 51 | 52 | # 53 | # Startup the services 54 | # 55 | chmod -R g+rw ${DATA_PATH}/logs/ ${DATA_PATH}/stats/ ${DATA_PATH}/queue/ 56 | 57 | if [ $AUTO_ENROLLMENT_ENABLED == true ]; then 58 | echo "Starting ossec-authd..." 59 | /var/ossec/bin/ossec-authd -p 1515 -g ossec $AUTHD_OPTIONS >/dev/null 2>&1 & 60 | AUTHD_PID=$! 61 | fi 62 | sleep 15 # give ossec a reasonable amount of time to start before checking status 63 | LAST_OK_DATE=`date +%s` 64 | 65 | # Add a dummy agent so remoted can start 66 | if [ ! -s /var/ossec/etc/client.keys ] ; then 67 | /var/ossec/bin/manage_agents -f /var/ossec/default_agent 68 | fi 69 | 70 | # Start services 71 | /usr/sbin/postfix start 72 | /var/ossec/bin/ossec-control start 73 | 74 | # Return startup events to console 75 | tail -f /var/ossec/logs/ossec.log 76 | -------------------------------------------------------------------------------- /ossec.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | yes 5 | root@localhost 6 | 127.0.0.1 7 | localhost 8 | ossec@localhost 9 | 1 10 | 13 | 14 | 15 | 16 | 17 | rules_config.xml 18 | pam_rules.xml 19 | sshd_rules.xml 20 | telnetd_rules.xml 21 | syslog_rules.xml 22 | arpwatch_rules.xml 23 | symantec-av_rules.xml 24 | symantec-ws_rules.xml 25 | pix_rules.xml 26 | named_rules.xml 27 | smbd_rules.xml 28 | vsftpd_rules.xml 29 | pure-ftpd_rules.xml 30 | proftpd_rules.xml 31 | ms_ftpd_rules.xml 32 | ftpd_rules.xml 33 | hordeimp_rules.xml 34 | roundcube_rules.xml 35 | wordpress_rules.xml 36 | cimserver_rules.xml 37 | vpopmail_rules.xml 38 | vmpop3d_rules.xml 39 | courier_rules.xml 40 | web_rules.xml 41 | web_appsec_rules.xml 42 | apache_rules.xml 43 | nginx_rules.xml 44 | php_rules.xml 45 | mysql_rules.xml 46 | postgresql_rules.xml 47 | ids_rules.xml 48 | squid_rules.xml 49 | firewall_rules.xml 50 | apparmor_rules.xml 51 | cisco-ios_rules.xml 52 | netscreenfw_rules.xml 53 | sonicwall_rules.xml 54 | postfix_rules.xml 55 | sendmail_rules.xml 56 | imapd_rules.xml 57 | mailscanner_rules.xml 58 | dovecot_rules.xml 59 | ms-exchange_rules.xml 60 | racoon_rules.xml 61 | vpn_concentrator_rules.xml 62 | spamd_rules.xml 63 | msauth_rules.xml 64 | mcafee_av_rules.xml 65 | trend-osce_rules.xml 66 | ms-se_rules.xml 67 | 68 | zeus_rules.xml 69 | solaris_bsm_rules.xml 70 | vmware_rules.xml 71 | ms_dhcp_rules.xml 72 | asterisk_rules.xml 73 | ossec_rules.xml 74 | attack_rules.xml 75 | openbsd_rules.xml 76 | clam_av_rules.xml 77 | dropbear_rules.xml 78 | sysmon_rules.xml 79 | opensmtpd_rules.xml 80 | local_rules.xml 81 | 82 | 83 | 84 | 85 | no 86 | yes 87 | 88 | 89 | /etc 90 | /var/ossec/active-response 91 | /var/ossec/etc 92 | /var/ossec/agentless 93 | /bin 94 | /lib64 95 | /sbin 96 | /usr/bin 97 | /etc/mtab 98 | /var/tmp 99 | /var/ossec/queue 100 | /var/ossec/logs 101 | /var/ossec/stats 102 | /var/ossec/var 103 | /var/ossec/etc/rules.d 104 | /etc/mnttab 105 | /etc/grsec/learning.logs 106 | /etc/hosts.deny 107 | /etc/mail/statistics 108 | /etc/random-seed 109 | /etc/adjtime 110 | /etc/httpd/logs 111 | /etc/utmpx 112 | /etc/wtmpx 113 | /etc/cups/certs 114 | /etc/httpd/modsecurity.d/ 115 | /etc/httpd/logs/ 116 | /etc/httpd/domlogs/ 117 | /etc/vfilters/ 118 | /var/ossec/bin/.process_list 119 | /etc/prelink.cache 120 | /etc/prelink.cache 121 | /var/ossec/active-response/ossec-hids-responses.log 122 | 86400 123 | 124 | 125 | 126 | 127 | 86400 128 | /var/ossec/etc/shared/rootkit_files.txt 129 | /var/ossec/etc/shared/rootkit_trojans.txt 130 | /var/ossec/etc/shared/system_audit_rcl.txt 131 | /var/ossec/etc/shared/system_audit_ssh.txt 132 | /var/ossec/etc/shared/cis_rhel7_linux_rcl.txt 133 | yes 134 | 135 | 136 | 137 | secure 138 | 1514 139 | udp 140 | 141 | 142 | 143 | 3 144 | 7 145 | 146 | 147 | 148 | 127.0.0.1 149 | ^localhost.localdomain$ 150 | 151 | 152 | 153 | 154 | 155 | 156 | disable-account 157 | disable-account.sh 158 | user 159 | yes 160 | 161 | 162 | 163 | restart-ossec 164 | restart-ossec.sh 165 | 166 | 167 | 168 | 169 | firewall-drop 170 | firewall-drop.sh 171 | srcip 172 | yes 173 | 174 | 175 | host-deny 176 | host-deny.sh 177 | srcip 178 | yes 179 | 180 | 181 | 182 | route-null 183 | route-null.sh 184 | srcip 185 | yes 186 | 187 | 188 | 189 | win_route-null 190 | route-null.cmd 191 | srcip 192 | yes 193 | 194 | 195 | 196 | 197 | 198 | --------------------------------------------------------------------------------