Adding AIDE to HIDS tools
This commit is contained in:
146
roles/Sharingan/files/aide/base.conf
Normal file
146
roles/Sharingan/files/aide/base.conf
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
# Example configuration file for AIDE.
|
||||||
|
# More information about configuration options available in the aide.conf manpage.
|
||||||
|
@@define DBDIR /var/lib/aide
|
||||||
|
@@define LOGDIR /var/log/aide
|
||||||
|
|
||||||
|
# The location of the database to be read.
|
||||||
|
database_in=file:@@{DBDIR}/aide.db.gz
|
||||||
|
|
||||||
|
# The location of the database to be written.
|
||||||
|
#database_out=sql:host:port:database:login_name:passwd:table
|
||||||
|
#database_out=file:aide.db.new
|
||||||
|
database_out=file:@@{DBDIR}/aide.db.new.gz
|
||||||
|
|
||||||
|
# Whether to gzip the output to database
|
||||||
|
gzip_dbout=yes
|
||||||
|
|
||||||
|
# Default.
|
||||||
|
log_level=warning
|
||||||
|
report_level=changed_attributes
|
||||||
|
|
||||||
|
report_url=file:@@{LOGDIR}/aide.log
|
||||||
|
report_url=stdout
|
||||||
|
#report_url=stderr
|
||||||
|
#
|
||||||
|
# Here are all the attributes we can check
|
||||||
|
#p: permissions
|
||||||
|
#i: inode
|
||||||
|
#n: number of links
|
||||||
|
#l: link name
|
||||||
|
#u: user
|
||||||
|
#g: group
|
||||||
|
#s: size
|
||||||
|
###b: block count
|
||||||
|
#m: mtime
|
||||||
|
#a: atime
|
||||||
|
#c: ctime
|
||||||
|
#S: check for growing size
|
||||||
|
#I: ignore changed filename
|
||||||
|
#ANF: allow new files
|
||||||
|
#ARF: allow removed files
|
||||||
|
#
|
||||||
|
|
||||||
|
# Here are all the digests we can use
|
||||||
|
#md5: md5 checksum
|
||||||
|
#sha1: sha1 checksum
|
||||||
|
#sha256: sha256 checksum
|
||||||
|
#sha512: sha512 checksum
|
||||||
|
#rmd160: rmd160 checksum
|
||||||
|
#tiger: tiger checksum
|
||||||
|
#haval: haval checksum
|
||||||
|
#crc32: crc32 checksum
|
||||||
|
#gost: gost checksum
|
||||||
|
#whirlpool: whirlpool checksum
|
||||||
|
|
||||||
|
# These are the default rules
|
||||||
|
#R: p+i+l+n+u+g+s+m+c+md5
|
||||||
|
#L: p+i+l+n+u+g
|
||||||
|
#E: Empty group
|
||||||
|
#>: Growing logfile p+l+u+g+i+n+S
|
||||||
|
|
||||||
|
# You can create custom rules - my home made rule definition goes like this
|
||||||
|
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32
|
||||||
|
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
|
||||||
|
# Everything but access time (Ie. all changes)
|
||||||
|
EVERYTHING = R+ALLXTRAHASHES
|
||||||
|
|
||||||
|
# Sane, with multiple hashes
|
||||||
|
# NORMAL = R+rmd160+sha256+whirlpool
|
||||||
|
NORMAL = R+rmd160+sha256
|
||||||
|
|
||||||
|
# For directories, don't bother doing hashes
|
||||||
|
DIR = p+i+n+u+g+acl+xattrs
|
||||||
|
|
||||||
|
# Access control only
|
||||||
|
PERMS = p+i+u+g+acl
|
||||||
|
|
||||||
|
# Logfile are special, in that they often change
|
||||||
|
LOG = >
|
||||||
|
|
||||||
|
# Just do md5 and sha256 hashes
|
||||||
|
LSPP = R+sha256
|
||||||
|
|
||||||
|
# Some files get updated automatically, so the inode/ctime/mtime change
|
||||||
|
# but we want to know when the data inside them changes
|
||||||
|
DATAONLY = p+n+u+g+s+acl+xattrs+md5+sha256+rmd160+tiger
|
||||||
|
|
||||||
|
|
||||||
|
# Next decide what directories/files you want in the database.
|
||||||
|
|
||||||
|
/boot NORMAL
|
||||||
|
/bin NORMAL
|
||||||
|
/sbin NORMAL
|
||||||
|
/lib NORMAL
|
||||||
|
/lib64 NORMAL
|
||||||
|
/opt NORMAL
|
||||||
|
/usr NORMAL
|
||||||
|
/root NORMAL
|
||||||
|
# These are too volatile
|
||||||
|
!/usr/src
|
||||||
|
!/usr/tmp
|
||||||
|
|
||||||
|
# Check only permissions, inode, user and group for /etc, but
|
||||||
|
# cover some important files closely.
|
||||||
|
/etc PERMS
|
||||||
|
!/etc/mtab
|
||||||
|
# Ignore backup files
|
||||||
|
!/etc/.*~
|
||||||
|
/etc/exports NORMAL
|
||||||
|
/etc/fstab NORMAL
|
||||||
|
/etc/passwd NORMAL
|
||||||
|
/etc/group NORMAL
|
||||||
|
/etc/gshadow NORMAL
|
||||||
|
/etc/shadow NORMAL
|
||||||
|
/etc/security/opasswd NORMAL
|
||||||
|
|
||||||
|
/etc/hosts.allow NORMAL
|
||||||
|
/etc/hosts.deny NORMAL
|
||||||
|
|
||||||
|
/etc/sudoers NORMAL
|
||||||
|
/etc/skel NORMAL
|
||||||
|
|
||||||
|
/etc/logrotate.d NORMAL
|
||||||
|
|
||||||
|
/etc/resolv.conf DATAONLY
|
||||||
|
|
||||||
|
/etc/nscd.conf NORMAL
|
||||||
|
/etc/securetty NORMAL
|
||||||
|
|
||||||
|
# Shell/X starting files
|
||||||
|
/etc/profile NORMAL
|
||||||
|
/etc/bashrc NORMAL
|
||||||
|
/etc/bash_completion.d/ NORMAL
|
||||||
|
/etc/login.defs NORMAL
|
||||||
|
/etc/zprofile NORMAL
|
||||||
|
/etc/zshrc NORMAL
|
||||||
|
/etc/zlogin NORMAL
|
||||||
|
/etc/zlogout NORMAL
|
||||||
|
/etc/profile.d/ NORMAL
|
||||||
|
/etc/X11/ NORMAL
|
||||||
|
|
||||||
|
# Ignore logs
|
||||||
|
!/var/lib/pacman/.*
|
||||||
|
!/var/cache/.*
|
||||||
|
!/var/log/.*
|
||||||
|
!/var/run/.*
|
||||||
|
!/var/spool/.*
|
||||||
89
roles/Sharingan/files/aide/yggdrasil.conf
Normal file
89
roles/Sharingan/files/aide/yggdrasil.conf
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
# Example configuration file for AIDE.
|
||||||
|
# More information about configuration options available in the aide.conf manpage.
|
||||||
|
@@define DBDIR /home/yggdrasil/.aide
|
||||||
|
@@define LOGDIR @@{DBDIR}
|
||||||
|
|
||||||
|
# The location of the database to be read.
|
||||||
|
database_in=file:@@{DBDIR}/aide.db.gz
|
||||||
|
database_out=file:@@{DBDIR}/aide.new.db.gz
|
||||||
|
|
||||||
|
# The location of the database to be written.
|
||||||
|
#database_out=sql:host:port:database:login_name:passwd:table
|
||||||
|
#database_out=file:aide.db.new
|
||||||
|
# Whether to gzip the output to database
|
||||||
|
gzip_dbout=yes
|
||||||
|
|
||||||
|
# Default.
|
||||||
|
log_level=warning
|
||||||
|
report_level=changed_attributes
|
||||||
|
|
||||||
|
report_url=file:@@{LOGDIR}/aide.log
|
||||||
|
report_url=stdout
|
||||||
|
#report_url=stderr
|
||||||
|
#
|
||||||
|
# Here are all the attributes we can check
|
||||||
|
#p: permissions
|
||||||
|
#i: inode
|
||||||
|
#n: number of links
|
||||||
|
#l: link name
|
||||||
|
#u: user
|
||||||
|
#g: group
|
||||||
|
#s: size
|
||||||
|
###b: block count
|
||||||
|
#m: mtime
|
||||||
|
#a: atime
|
||||||
|
#c: ctime
|
||||||
|
#S: check for growing size
|
||||||
|
#I: ignore changed filename
|
||||||
|
#ANF: allow new files
|
||||||
|
#ARF: allow removed files
|
||||||
|
#
|
||||||
|
|
||||||
|
# Here are all the digests we can use
|
||||||
|
#md5: md5 checksum
|
||||||
|
#sha1: sha1 checksum
|
||||||
|
#sha256: sha256 checksum
|
||||||
|
#sha512: sha512 checksum
|
||||||
|
#rmd160: rmd160 checksum
|
||||||
|
#tiger: tiger checksum
|
||||||
|
#haval: haval checksum
|
||||||
|
#crc32: crc32 checksum
|
||||||
|
#gost: gost checksum
|
||||||
|
#whirlpool: whirlpool checksum
|
||||||
|
|
||||||
|
# These are the default rules
|
||||||
|
#R: p+i+l+n+u+g+s+m+c+md5
|
||||||
|
#L: p+i+l+n+u+g
|
||||||
|
#E: Empty group
|
||||||
|
#>: Growing logfile p+l+u+g+i+n+S
|
||||||
|
|
||||||
|
# You can create custom rules - my home made rule definition goes like this
|
||||||
|
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32
|
||||||
|
ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger
|
||||||
|
# Everything but access time (Ie. all changes)
|
||||||
|
EVERYTHING = R+ALLXTRAHASHES
|
||||||
|
|
||||||
|
# Sane, with multiple hashes
|
||||||
|
# NORMAL = R+rmd160+sha256+whirlpool
|
||||||
|
NORMAL = R+rmd160+sha256
|
||||||
|
|
||||||
|
# For directories, don't bother doing hashes
|
||||||
|
DIR = p+i+n+u+g+acl+xattrs
|
||||||
|
|
||||||
|
# Access control only
|
||||||
|
PERMS = p+i+u+g+acl
|
||||||
|
|
||||||
|
# Logfile are special, in that they often change
|
||||||
|
LOG = >
|
||||||
|
|
||||||
|
# Just do md5 and sha256 hashes
|
||||||
|
LSPP = R+sha256
|
||||||
|
|
||||||
|
# Some files get updated automatically, so the inode/ctime/mtime change
|
||||||
|
# but we want to know when the data inside them changes
|
||||||
|
DATAONLY = p+n+u+g+s+acl+xattrs+md5+sha256+rmd160+tiger
|
||||||
|
|
||||||
|
|
||||||
|
# Next decide what directories/files you want in the database.
|
||||||
|
/home/yggdrasil/ NORMAL
|
||||||
|
!/home/yggdrasil/.aide$
|
||||||
31
roles/Sharingan/package/LICENSE
Normal file
31
roles/Sharingan/package/LICENSE
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# http://www.wtfpl.net/about/
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
|
||||||
|
ANINIX ADDENDUM
|
||||||
|
|
||||||
|
Trademark 2017 (https://aninix.net/)
|
||||||
|
|
||||||
|
The "AniNIX" name and |> logo are trademarked as of 2017/11/21.
|
||||||
|
AniNIX materials may be reproduced and re-used (though you must
|
||||||
|
contact the admins of the network to get written permission to use
|
||||||
|
the AniNIX name or logo) so long as such reproduction or re-use
|
||||||
|
does not inhibit the original AniNIX use of the same.
|
||||||
|
|
||||||
|
Attribution is appreciated for other materials but not legally
|
||||||
|
required or necessary.
|
||||||
|
|
||||||
|
"AniNIX" trademark serial: 87177883
|
||||||
|
|> Logo trademark serial: 87177887
|
||||||
22
roles/Sharingan/package/Makefile
Normal file
22
roles/Sharingan/package/Makefile
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
compile:
|
||||||
|
@echo Nothing to do
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p ${pkgdir}/usr/local/sbin/
|
||||||
|
for i in aidecheck aideinit; do install -m 0750 -o root -g http $$i ${pkgdir}/usr/local/sbin/; done
|
||||||
|
|
||||||
|
test: compile
|
||||||
|
@echo Nothing to do
|
||||||
|
|
||||||
|
clean:
|
||||||
|
git clean -fX
|
||||||
|
git clean -fd
|
||||||
|
|
||||||
|
diff:
|
||||||
|
@echo Nothing to do.
|
||||||
|
|
||||||
|
reverse:
|
||||||
|
@echo Nothing to do.
|
||||||
|
|
||||||
|
checkperm:
|
||||||
|
@echo Nothing to do.
|
||||||
46
roles/Sharingan/package/PKGBUILD
Normal file
46
roles/Sharingan/package/PKGBUILD
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
depends=('bash>=4.4' 'aide')
|
||||||
|
makedepends=('make>=4.2')
|
||||||
|
checkdepends=()
|
||||||
|
optdepends=()
|
||||||
|
pkgname="sharingan-scripts"
|
||||||
|
pkgver="$(git describe --tag --abbrev=0)"."$(git rev-parse --short HEAD)"
|
||||||
|
pkgrel=1
|
||||||
|
pkgrel() {
|
||||||
|
echo $(( `git log "$(git describe --tag --abbrev=0)"..HEAD | grep -c commit` + 1 ))
|
||||||
|
}
|
||||||
|
epoch="$(git log | grep -c commit)"
|
||||||
|
pkgdesc="$(head -n 1 README.md)"
|
||||||
|
arch=("x86_64")
|
||||||
|
url="$(git config remote.origin.url | sed 's/.git$//')"
|
||||||
|
license=('custom')
|
||||||
|
groups=()
|
||||||
|
provides=("${pkgname}")
|
||||||
|
conflicts=()
|
||||||
|
replaces=("${pkgname,,}", "aninix-${pkgname,,}")
|
||||||
|
backup=()
|
||||||
|
options=()
|
||||||
|
install=
|
||||||
|
changelog=
|
||||||
|
source=()
|
||||||
|
noextract=()
|
||||||
|
md5sums=()
|
||||||
|
validpgpkeys=()
|
||||||
|
|
||||||
|
prepare() {
|
||||||
|
git pull
|
||||||
|
}
|
||||||
|
|
||||||
|
build() {
|
||||||
|
make -C ..
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
chmod -R u+r ../pkg
|
||||||
|
make -C .. test
|
||||||
|
}
|
||||||
|
|
||||||
|
package() {
|
||||||
|
export pkgdir="${pkgdir}"
|
||||||
|
make -C .. install
|
||||||
|
install -D -m644 ../../../../LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
|
||||||
|
}
|
||||||
4
roles/Sharingan/package/README.md
Normal file
4
roles/Sharingan/package/README.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
This is a collection of scripts we use for managing HIDS data.
|
||||||
|
|
||||||
|
1. aideinit: Initialize, record, and sign a database
|
||||||
|
1. aidecheck: Verify there are no discrepancies from a database
|
||||||
59
roles/Sharingan/package/aidecheck
Executable file
59
roles/Sharingan/package/aidecheck
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# File: aidecheck
|
||||||
|
#
|
||||||
|
# Description: This script checks a signed AIDE DB.
|
||||||
|
#
|
||||||
|
# Package: AniNIX/Sharingan
|
||||||
|
# Copyright: WTFPL
|
||||||
|
#
|
||||||
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0 [ config reference ]"
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
### Initialize the DB
|
||||||
|
base="$1"
|
||||||
|
dbdir="$(grep -m 1 -E '^@@define DBDIR' "$base" | cut -f 3 -d ' ')"
|
||||||
|
dbin="$(grep -m 1 -E '^database_in' "$base" | cut -f 2 -d '=' | sed "s#file:...DBDIR.#${dbdir}#")"
|
||||||
|
dbout="$(grep -m 1 -E '^database_out' "$base" | cut -f 2 -d '=' | sed "s#file:...DBDIR.#${dbdir}#")"
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
if ! gpg --verify "$dbin".sig "$dbin"; then
|
||||||
|
echo "$dbin doesn't match signature."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo aide -c "$base" -C
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
### MAIN
|
||||||
|
if [ `basename "$0"` == "aidecheck" ]; then
|
||||||
|
|
||||||
|
# Allow -h for helptext
|
||||||
|
if [ "$1" == '-h' ]; then
|
||||||
|
echo "Checks an AIDE DB"
|
||||||
|
usage 0
|
||||||
|
else
|
||||||
|
|
||||||
|
# Find the config
|
||||||
|
if [ -z "${1}" ]; then
|
||||||
|
base='/etc/aide.conf'
|
||||||
|
else
|
||||||
|
base="/etc/aide/${1}.conf"
|
||||||
|
fi
|
||||||
|
if [ -f "$base" ]; then
|
||||||
|
main "$base"
|
||||||
|
else
|
||||||
|
|
||||||
|
# If it doesn't, explain and exit.
|
||||||
|
echo "$base does not exist"
|
||||||
|
usage 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
59
roles/Sharingan/package/aideinit
Executable file
59
roles/Sharingan/package/aideinit
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
# File: aideinit
|
||||||
|
#
|
||||||
|
# Description: This script initializes an AIDE DB and signs it
|
||||||
|
#
|
||||||
|
# Package: AniNIX/Sharingan
|
||||||
|
# Copyright: WTFPL
|
||||||
|
#
|
||||||
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
|
function usage() {
|
||||||
|
echo "Usage: $0 [ config reference ]"
|
||||||
|
exit $1
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
### Initialize the DB
|
||||||
|
base="$1"
|
||||||
|
dbdir="$(grep -m 1 -E '^@@define DBDIR' "$base" | cut -f 3 -d ' ')"
|
||||||
|
dbin="$(grep -m 1 -E '^database_in' "$base" | cut -f 2 -d '=' | sed "s#file:...DBDIR.#${dbdir}#")"
|
||||||
|
dbout="$(grep -m 1 -E '^database_out' "$base" | cut -f 2 -d '=' | sed "s#file:...DBDIR.#${dbdir}#")"
|
||||||
|
|
||||||
|
# sudo chattr -i "$dbin"*
|
||||||
|
|
||||||
|
sudo aide -c "$base" -i 2>&1 | sudo tee "$dbin".out
|
||||||
|
sudo mv "$dbout" "$dbin"
|
||||||
|
sudo chmod 0644 "$dbin"
|
||||||
|
gpg -bs --output - "$dbin" | sudo tee "$dbin".sig &>/dev/null
|
||||||
|
sudo chown root: "$dbin"*
|
||||||
|
sudo chmod 0755 "$dbin"*
|
||||||
|
# sudo chattr +i "$dbin"*
|
||||||
|
}
|
||||||
|
|
||||||
|
### MAIN
|
||||||
|
if [ `basename "$0"` == "aideinit" ]; then
|
||||||
|
|
||||||
|
# Allow -h for helptext
|
||||||
|
if [ "$1" == '-h' ]; then
|
||||||
|
echo "Initializes an AIDE DB"
|
||||||
|
usage 0
|
||||||
|
else
|
||||||
|
|
||||||
|
# Find the config
|
||||||
|
if [ -z "${1}" ]; then
|
||||||
|
base='/etc/aide.conf'
|
||||||
|
else
|
||||||
|
base="/etc/aide/${1}.conf"
|
||||||
|
fi
|
||||||
|
if [ -f "$base" ]; then
|
||||||
|
main "$base"
|
||||||
|
else
|
||||||
|
|
||||||
|
# If it doesn't, explain and exit.
|
||||||
|
echo "$base does not exist"
|
||||||
|
usage 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
register: package_install
|
register: package_install
|
||||||
package:
|
package:
|
||||||
name:
|
name:
|
||||||
|
- aide
|
||||||
- sshguard
|
- sshguard
|
||||||
- suricata
|
- suricata
|
||||||
- oinkmaster
|
- oinkmaster
|
||||||
@@ -73,6 +74,15 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Create aide conf folder
|
||||||
|
become: yes
|
||||||
|
copy:
|
||||||
|
src: "aide/"
|
||||||
|
dest: /etc/aide
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
# Network IDS
|
# Network IDS
|
||||||
- name: Copy oinkmaster conf
|
- name: Copy oinkmaster conf
|
||||||
register: oinkmaster_conf
|
register: oinkmaster_conf
|
||||||
|
|||||||
Reference in New Issue
Block a user