forked from p15670423/monkey
Merge pull request #1544 from guardicore/1524-broken-updates
AppImage and Docker deployment renaming
This commit is contained in:
commit
3b9eaf34c0
|
@ -59,6 +59,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Bug that periodically cleared the telemetry table's filter. #1392
|
- Bug that periodically cleared the telemetry table's filter. #1392
|
||||||
- Crashes, stack traces, and other malfunctions when data from older versions of Infection Monkey is
|
- Crashes, stack traces, and other malfunctions when data from older versions of Infection Monkey is
|
||||||
present in the data directory. #1114
|
present in the data directory. #1114
|
||||||
|
- Broken update links. #1524
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
- Generate a random password when creating a new user for CommunicateAsNewUser
|
- Generate a random password when creating a new user for CommunicateAsNewUser
|
||||||
|
|
|
@ -104,11 +104,16 @@ remove_python_appdir_artifacts() {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_package() {
|
build_package() {
|
||||||
local version=$1
|
local commit_id=$2
|
||||||
local dist_dir=$2
|
local dist_dir=$3
|
||||||
|
|
||||||
log_message "Building AppImage"
|
log_message "Building AppImage"
|
||||||
set_version "$version"
|
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
local version="v$1"
|
||||||
|
else
|
||||||
|
local version="$commit_id"
|
||||||
|
fi
|
||||||
|
|
||||||
pushd "$APPIMAGE_DIR"
|
pushd "$APPIMAGE_DIR"
|
||||||
ARCH="x86_64" linuxdeploy \
|
ARCH="x86_64" linuxdeploy \
|
||||||
|
@ -119,21 +124,12 @@ build_package() {
|
||||||
--deploy-deps-only="$MONGO_PATH/bin/mongod"\
|
--deploy-deps-only="$MONGO_PATH/bin/mongod"\
|
||||||
--output appimage
|
--output appimage
|
||||||
|
|
||||||
move_package_to_dist_dir $dist_dir
|
dst_name="InfectionMonkey-$version.AppImage"
|
||||||
|
move_package_to_dist_dir $dist_dir $dst_name
|
||||||
|
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
set_version() {
|
|
||||||
# The linuxdeploy and appimage-builder tools will use the commit hash of the
|
|
||||||
# repo to name the AppImage, which is preferable to using "dev". If the
|
|
||||||
# version was specified in a command-line argument (i.e. not "dev"), then
|
|
||||||
# setting the VERSION environment variable will change this behavior.
|
|
||||||
if [ $1 != "dev" ]; then
|
|
||||||
export VERSION=$1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
move_package_to_dist_dir() {
|
move_package_to_dist_dir() {
|
||||||
mv Infection_Monkey*.AppImage "$1/"
|
mv Infection*Monkey*.AppImage "$1/$2"
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,5 +8,5 @@ APPIMAGE_DIR="$(realpath $(dirname $BASH_SOURCE[0]))"
|
||||||
rm -rf "$HOME/git/monkey"
|
rm -rf "$HOME/git/monkey"
|
||||||
rm -rf "$HOME/.monkey_island"
|
rm -rf "$HOME/.monkey_island"
|
||||||
rm -rf "$APPIMAGE_DIR/squashfs-root"
|
rm -rf "$APPIMAGE_DIR/squashfs-root"
|
||||||
rm "$APPIMAGE_DIR"/Infection_Monkey*x86_64.AppImage
|
rm "$APPIMAGE_DIR"/Infection_Monkey*.AppImage
|
||||||
rm "$APPIMAGE_DIR/../dist/Infection_Monkey*x86_64.AppImage"
|
rm "$APPIMAGE_DIR/../dist/InfectionMonkey*.AppImage"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=Infection Monkey
|
Name=InfectionMonkey
|
||||||
Exec=bash
|
Exec=bash
|
||||||
Comment=An automated breach and attack simulation platform
|
Comment=An automated breach and attack simulation platform
|
||||||
Icon=monkey-icon
|
Icon=monkey-icon
|
||||||
|
|
|
@ -44,7 +44,6 @@ echo_help() {
|
||||||
echo " (Default: $DEFAULT_REPO_MONKEY_HOME)"
|
echo " (Default: $DEFAULT_REPO_MONKEY_HOME)"
|
||||||
echo ""
|
echo ""
|
||||||
echo "--version A version number for the package."
|
echo "--version A version number for the package."
|
||||||
echo " (Default: dev)"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "--deployment A deployment type for the package."
|
echo "--deployment A deployment type for the package."
|
||||||
echo " (Default: develop)"
|
echo " (Default: develop)"
|
||||||
|
@ -110,7 +109,7 @@ agent_binary_dir=""
|
||||||
as_root=false
|
as_root=false
|
||||||
branch="develop"
|
branch="develop"
|
||||||
monkey_repo="$DEFAULT_REPO_MONKEY_HOME"
|
monkey_repo="$DEFAULT_REPO_MONKEY_HOME"
|
||||||
monkey_version="dev"
|
monkey_version=""
|
||||||
package=""
|
package=""
|
||||||
deployment_type=""
|
deployment_type=""
|
||||||
|
|
||||||
|
@ -199,7 +198,8 @@ install_package_specific_build_prereqs "$WORKSPACE"
|
||||||
|
|
||||||
|
|
||||||
setup_build_dir "$agent_binary_dir" "$monkey_repo" "$deployment_type"
|
setup_build_dir "$agent_binary_dir" "$monkey_repo" "$deployment_type"
|
||||||
build_package "$monkey_version" "$DIST_DIR"
|
commit_id=$(get_commit_id "$monkey_repo")
|
||||||
|
build_package "$monkey_version" "$commit_id" "$DIST_DIR"
|
||||||
|
|
||||||
log_message "Finished building package: $package"
|
log_message "Finished building package: $package"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
@ -93,3 +93,8 @@ remove_node_modules() {
|
||||||
rm -rf "$1/node_modules"
|
rm -rf "$1/node_modules"
|
||||||
rm -rf "$1/.npm"
|
rm -rf "$1/.npm"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_commit_id() {
|
||||||
|
local monkey_repo=$1
|
||||||
|
echo $(git -C "$monkey_repo" rev-parse --short HEAD)
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
DOCKER_DIR="$(realpath $(dirname $BASH_SOURCE[0]))"
|
DOCKER_DIR="$(realpath $(dirname $BASH_SOURCE[0]))"
|
||||||
OUTPUT_NAME_TGZ="$DOCKER_DIR/infection_monkey_docker_$(date +%Y%m%d_%H%M%S).tgz"
|
|
||||||
|
|
||||||
source "$DOCKER_DIR/../common.sh"
|
source "$DOCKER_DIR/../common.sh"
|
||||||
|
|
||||||
|
@ -37,16 +36,25 @@ copy_server_config_to_build_dir() {
|
||||||
|
|
||||||
build_package() {
|
build_package() {
|
||||||
local version=$1
|
local version=$1
|
||||||
local dist_dir=$2
|
local commit_id=$2
|
||||||
|
local dist_dir=$3
|
||||||
pushd ./docker
|
pushd ./docker
|
||||||
|
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
version="v$version"
|
||||||
|
else
|
||||||
|
version="$commit_id"
|
||||||
|
fi
|
||||||
|
|
||||||
docker_image_name="guardicore/monkey-island:$version"
|
docker_image_name="guardicore/monkey-island:$version"
|
||||||
tar_name="$DOCKER_DIR/dk.monkeyisland.$version.tar"
|
tar_name="$DOCKER_DIR/InfectionMonkey-docker-$version.tar"
|
||||||
|
|
||||||
build_docker_image_tar "$docker_image_name" "$tar_name"
|
build_docker_image_tar "$docker_image_name" "$tar_name"
|
||||||
build_docker_image_tgz "$tar_name" "$version"
|
|
||||||
|
|
||||||
move_package_to_dist_dir $dist_dir
|
tgz_name="$DOCKER_DIR/InfectionMonkey-docker-$version.tgz"
|
||||||
|
build_docker_image_tgz "$tar_name" "$tgz_name"
|
||||||
|
|
||||||
|
move_package_to_dist_dir $tgz_name $dist_dir
|
||||||
|
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
@ -60,9 +68,9 @@ build_docker_image_tgz() {
|
||||||
mkdir tgz
|
mkdir tgz
|
||||||
mv "$1" ./tgz
|
mv "$1" ./tgz
|
||||||
cp ./DOCKER_README.md ./tgz/README.md
|
cp ./DOCKER_README.md ./tgz/README.md
|
||||||
tar -C ./tgz -cvf "$OUTPUT_NAME_TGZ" --gzip .
|
tar -C ./tgz -cvf "$2" --gzip .
|
||||||
}
|
}
|
||||||
|
|
||||||
move_package_to_dist_dir() {
|
move_package_to_dist_dir() {
|
||||||
mv $OUTPUT_NAME_TGZ "$1/"
|
mv "$1" "$2/"
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,13 +23,13 @@ The Infection Monkey Docker container works on Linux only. It is not compatible
|
||||||
1. Extract the Monkey Island Docker tarball:
|
1. Extract the Monkey Island Docker tarball:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
tar -xvzf monkey-island-docker.tar.gz
|
tar -xvzf InfectionMonkey-docker-v1.12.0.tgz
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Load the Monkey Island Docker image:
|
1. Load the Monkey Island Docker image:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker load -i dk.monkeyisland.VERSION.tar
|
sudo docker load -i InfectionMonkey-docker-v1.12.0.tar
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Start MongoDB
|
### 2. Start MongoDB
|
||||||
|
|
|
@ -23,15 +23,18 @@ installed, but the ones that we've tested are:
|
||||||
- Ubuntu Focal 20.04
|
- Ubuntu Focal 20.04
|
||||||
- Ubuntu Hirsute 21.04
|
- Ubuntu Hirsute 21.04
|
||||||
|
|
||||||
|
On Windows, AppImage can be run in WSL.
|
||||||
|
|
||||||
|
|
||||||
## Deployment
|
## Deployment
|
||||||
|
|
||||||
1. Make the AppImage package executable:
|
1. Make the AppImage package executable:
|
||||||
```bash
|
```bash
|
||||||
chmod u+x Infection_Monkey_v1.11.0.AppImage
|
chmod u+x InfectionMonkey-v1.12.0.AppImage
|
||||||
```
|
```
|
||||||
1. Start Monkey Island by running the Infection Monkey AppImage package:
|
1. Start Monkey Island by running the Infection Monkey AppImage package:
|
||||||
```bash
|
```bash
|
||||||
./Infection_Monkey_v1.11.0.AppImage
|
./InfectionMonkey-v1.12.0.AppImage
|
||||||
```
|
```
|
||||||
1. Access the Monkey Island web UI by pointing your browser at
|
1. Access the Monkey Island web UI by pointing your browser at
|
||||||
`https://localhost:5000`.
|
`https://localhost:5000`.
|
||||||
|
@ -56,7 +59,7 @@ private certificate authority.
|
||||||
`server_config.json` file.
|
`server_config.json` file.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./Infection_Monkey_v1.11.0.AppImage --setup-only
|
./InfectionMonkey-v1.12.0.AppImage --setup-only
|
||||||
```
|
```
|
||||||
|
|
||||||
1. (Optional but recommended) Move your `.crt` and `.key` files to
|
1. (Optional but recommended) Move your `.crt` and `.key` files to
|
||||||
|
@ -92,7 +95,7 @@ private certificate authority.
|
||||||
|
|
||||||
1. Start Monkey Island by running the Infection Monkey AppImage package:
|
1. Start Monkey Island by running the Infection Monkey AppImage package:
|
||||||
```bash
|
```bash
|
||||||
./Infection_Monkey_v1.11.0.AppImage
|
./InfectionMonkey-v1.12.0.AppImage
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Access the Monkey Island web UI by pointing your browser at
|
1. Access the Monkey Island web UI by pointing your browser at
|
||||||
|
|
Loading…
Reference in New Issue