mirror of https://github.com/MISP/ansible
Init with Ansible for MISP v0.1
commit
2e64ef4894
|
@ -0,0 +1,3 @@
|
|||
tmp
|
||||
.DS_Store
|
||||
*.retry
|
|
@ -0,0 +1,48 @@
|
|||
MISP - Ansible installation script
|
||||
----------------------------------------
|
||||
|
||||
- V0.1
|
||||
* Nginx support only
|
||||
* Backup script provided
|
||||
|
||||
Instructions
|
||||
----------------------------------------
|
||||
- From the ansible repository, run the following command:
|
||||
|
||||
```bash
|
||||
ansible-playbook -i <host>, misp.yml -k -K -u <user>
|
||||
```
|
||||
|
||||
- Update the self-signed certificate in /etc/nginx/ssl
|
||||
- Create and export your GPG key:
|
||||
|
||||
```bash
|
||||
sudo -u www-data gpg --homedir /opt/misp-server/misp/.gnupg --gen-key
|
||||
sudo -u www-data gpg --homedir /opt/misp-server/misp/.gnupg --export --armor YOUR-EMAIL > /opt/misp-server/misp/app/webroot/gpg.asc
|
||||
```
|
||||
|
||||
- Login with:
|
||||
* user: admin@admin.test
|
||||
* password: admin
|
||||
and update the admin password
|
||||
|
||||
- Configure MISP in administration panel, server settings
|
||||
|
||||
Notes
|
||||
----------------------------------------
|
||||
- the user must have admin rights
|
||||
- a self-signed certificate is generated to allow you to test the installation
|
||||
- installation directory is: /opt/misp-server/misp
|
||||
- backup directory is: /opt/misp-server/backup
|
||||
|
||||
Backup script
|
||||
----------------------------------------
|
||||
If enabled, a backup script create each day a new archive with a MySQL misp database dump and misp files to allow easy restore.
|
||||
- these archives are created in: /opt/misp-server/backup
|
||||
- a script to easy restore MISP from an archive is provided in the same directory
|
||||
- to use the restore script, login as misp user and run the following command:
|
||||
|
||||
```bash
|
||||
./misp_restore <archive_timestamp>.tar.gz
|
||||
```
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
[ssh_connection]
|
||||
ssh_args = -F ssh.cfg
|
||||
pipelining = True
|
|
@ -0,0 +1,30 @@
|
|||
---
|
||||
- hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- { role: mysql}
|
||||
- { role: misp}
|
||||
- { role: nginx}
|
||||
|
||||
vars_prompt:
|
||||
- name: "proxy_host"
|
||||
prompt: "Enter the proxy host (e.g. myproxy.be)"
|
||||
private: no
|
||||
- name: "proxy_port"
|
||||
prompt: "Enter the proxy port (e.g. 3128)"
|
||||
private: no
|
||||
- name: "servername"
|
||||
prompt: "Enter the servername address to use for the webserver (e.g. misp.com)"
|
||||
private: no
|
||||
- name: "mysql_root_old_pass"
|
||||
prompt: "MySQL root password (current or default/empty)"
|
||||
private: yes
|
||||
- name: "mysql_root_new_pass"
|
||||
prompt: "MySQL root password (new/current)"
|
||||
private: yes
|
||||
- name: mysql_misp_password
|
||||
prompt: "Enter the mysql misp user password"
|
||||
private: yes
|
||||
- name: enable_auto_backup
|
||||
prompt: "Do you want to enable automatic backup everyday ? (y/n)"
|
||||
private: no
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# default lower priority variables for this role
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Handlers file
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Role dependancies
|
|
@ -0,0 +1,364 @@
|
|||
---
|
||||
# Install basic packages
|
||||
- name: Create misp user
|
||||
user:
|
||||
name: misp
|
||||
state: present
|
||||
|
||||
- name: Create Ansible directory
|
||||
file:
|
||||
path: "/home/misp/ansible"
|
||||
owner: misp
|
||||
group: misp
|
||||
mode: 0775
|
||||
state: directory
|
||||
|
||||
- name: Install all needed packages
|
||||
apt:
|
||||
pkg: "{{ item }}"
|
||||
state: latest
|
||||
update_cache: yes
|
||||
with_items:
|
||||
- gcc
|
||||
- zip
|
||||
- php-pear
|
||||
- git
|
||||
- redis-server
|
||||
- make
|
||||
- python-dev
|
||||
- python-pip
|
||||
- libxml2-dev
|
||||
- libxslt1-dev
|
||||
- zlib1g-dev
|
||||
- php5-dev
|
||||
- curl
|
||||
- gnupg-agent
|
||||
- php5-mysql
|
||||
- php5-redis
|
||||
|
||||
######### MISP users and groups #########
|
||||
|
||||
- name: Add MISP group
|
||||
group:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
system: yes
|
||||
with_items:
|
||||
- "misp-server"
|
||||
|
||||
- name: Add misp in misp-server
|
||||
user:
|
||||
name: misp
|
||||
append: yes
|
||||
groups: misp-server
|
||||
state: present
|
||||
|
||||
- name: Add www-data in misp-server
|
||||
user:
|
||||
name: www-data
|
||||
append: yes
|
||||
groups: misp-server
|
||||
|
||||
######### MISP directories #########
|
||||
|
||||
- name: Create MISP server directory
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 02775
|
||||
state: directory
|
||||
with_items:
|
||||
- "/opt/misp-server"
|
||||
- "/opt/misp-server/misp"
|
||||
- "/opt/misp-server/tmp"
|
||||
- "/opt/misp-server/backup"
|
||||
|
||||
######### PEAR: CRYPTPGP #########
|
||||
- name: Configure PEAR proxy
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
creates: /home/misp/ansible/ansible_shell_pear_configure_proxy.log
|
||||
with_items:
|
||||
- "pear config-set http_proxy http://{{proxy_host}}:{{proxy_port}} > /home/misp/ansible/ansible_shell_pear_configure_proxy.log"
|
||||
|
||||
- name: Configure PEAR tmp
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
creates: /home/misp/ansible/ansible_shell_pear_configure_tmp.log
|
||||
with_items:
|
||||
- pear config-set temp_dir /opt/misp-server/tmp/ > /home/misp/ansible/ansible_shell_pear_configure_tmp.log
|
||||
|
||||
- name: Install CryptGPG
|
||||
pear:
|
||||
name: Crypt_GPG
|
||||
state: present
|
||||
|
||||
######### MISP REPOSITORY #########
|
||||
|
||||
- name: Clone MISP repository
|
||||
become: true
|
||||
become_user: misp
|
||||
git:
|
||||
repo: "https://github.com/MISP/MISP.git"
|
||||
dest: "/opt/misp-server/misp"
|
||||
recursive: yes
|
||||
force: no
|
||||
update: no
|
||||
version: v2.4.49
|
||||
accept_hostkey: yes
|
||||
|
||||
- name: Configure Git
|
||||
git_config:
|
||||
name: core.filemode
|
||||
scope: global
|
||||
value: false
|
||||
|
||||
- name: Create scripts directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 02775
|
||||
state: directory
|
||||
with_items:
|
||||
- "/opt/misp-server/misp/app/files/scripts/python-cybox"
|
||||
- "/opt/misp-server/misp/app/files/scripts/python-stix"
|
||||
|
||||
- name: Clone MISP depedencies | Python-Cybox
|
||||
become: true
|
||||
become_user: misp
|
||||
git:
|
||||
repo: "https://github.com/CybOXProject/python-cybox.git"
|
||||
dest: "/opt/misp-server/misp/app/files/scripts/python-cybox"
|
||||
force: no
|
||||
update: no
|
||||
version: v2.1.0.12
|
||||
accept_hostkey: yes
|
||||
|
||||
- name: Clone MISP depedencies | Python-Stix
|
||||
become: true
|
||||
become_user: misp
|
||||
git:
|
||||
repo: "https://github.com/STIXProject/python-stix.git"
|
||||
dest: "/opt/misp-server/misp/app/files/scripts/python-stix"
|
||||
force: no
|
||||
update: no
|
||||
version: v1.1.1.4
|
||||
accept_hostkey: yes
|
||||
|
||||
- name: Install MISP depedencies | Python-Cybox
|
||||
become: true
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
chdir: /opt/misp-server/misp/app/files/scripts/python-cybox
|
||||
creates: /home/misp/ansible/ansible_shell_pythoncybox_setup.log
|
||||
with_items:
|
||||
- python setup.py install > /home/misp/ansible/ansible_shell_pythoncybox_setup.log
|
||||
|
||||
- name: Install MISP depedencies | Python-Stix
|
||||
become: true
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
chdir: /opt/misp-server/misp/app/files/scripts/python-stix
|
||||
creates: /home/misp/ansible/ansible_shell_pythonstix_setup.log
|
||||
with_items:
|
||||
- python setup.py install > /home/misp/ansible/ansible_shell_pythonstix_setup.log
|
||||
|
||||
######### CAKE PHP #########
|
||||
|
||||
- name: Curl PHP installer
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
chdir: /opt/misp-server/misp/app/
|
||||
creates: /home/misp/ansible/ansible_shell_curl_php.log
|
||||
with_items:
|
||||
- curl -s https://getcomposer.org/installer | php > /home/misp/ansible/ansible_shell_curl_php.log
|
||||
|
||||
- name: Install COMPOSER in /bin
|
||||
copy:
|
||||
remote_src: True
|
||||
src: /opt/misp-server/misp/app/composer.phar
|
||||
dest: /usr/local/bin/composer
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0755
|
||||
|
||||
- name: Cake-resque installation
|
||||
composer:
|
||||
command: "require"
|
||||
arguments: "kamisama/cake-resque:4.1.2"
|
||||
working_dir: "/opt/misp-server/misp/app"
|
||||
register: cakeresque_install
|
||||
|
||||
- name: Vendor configure
|
||||
composer:
|
||||
command: "config"
|
||||
arguments: "vendor-dir Vendor"
|
||||
working_dir: "/opt/misp-server/misp/app"
|
||||
when: cakeresque_install.changed
|
||||
|
||||
- name: PHP composer install
|
||||
composer:
|
||||
command: "install"
|
||||
arguments: ""
|
||||
working_dir: "/opt/misp-server/misp/app"
|
||||
|
||||
- name: Copy CakeResque config file
|
||||
copy:
|
||||
remote_src: True
|
||||
src: /opt/misp-server/misp/INSTALL/setup/config.php
|
||||
dest: /opt/misp-server/misp/app/Plugin/CakeResque/Config/config.php
|
||||
force: yes
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 0774
|
||||
|
||||
######### MISP CONFIGURATION #########
|
||||
|
||||
- name: Copy MISP configuration files
|
||||
template:
|
||||
src: "misp/config/{{item}}"
|
||||
dest: "/opt/misp-server/misp/app/Config/{{item}}"
|
||||
force: yes
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 0774
|
||||
with_items:
|
||||
- bootstrap.php
|
||||
- config.php
|
||||
- core.php
|
||||
- database.php
|
||||
|
||||
######### GNUPG #########
|
||||
|
||||
- name: Create the directory for GNUPG
|
||||
file:
|
||||
path: "/opt/misp-server/misp/.gnupg"
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 0770
|
||||
state: directory
|
||||
|
||||
######### MISP WORKERS #########
|
||||
|
||||
- name: Check MISP worker launcher permissions
|
||||
file:
|
||||
path: /opt/misp-server/misp/app/Console/worker/start.sh
|
||||
owner: misp
|
||||
group: misp-server
|
||||
mode: 0764
|
||||
|
||||
- name: Check MISP worker autolaunch at boot
|
||||
lineinfile:
|
||||
state: present
|
||||
dest: /etc/rc.local
|
||||
insertbefore: "exit 0"
|
||||
line: "sudo -u www-data bash /opt/misp-server/misp/app/Console/worker/start.sh"
|
||||
|
||||
######### ADD-ON #########
|
||||
|
||||
- name: Install ZeroMQ
|
||||
pip:
|
||||
name: pyzmq
|
||||
state: latest
|
||||
|
||||
- name: Install Python client for Redis
|
||||
pip:
|
||||
name: redis
|
||||
state: latest
|
||||
|
||||
######### MYSQL CONFIGURATION #########
|
||||
|
||||
- name: MySQL | Create MISP database
|
||||
become: true
|
||||
mysql_db:
|
||||
login_user: root
|
||||
login_password: "{{ mysql_root_new_pass }}"
|
||||
name: misp
|
||||
state: present
|
||||
register: mysql_init
|
||||
|
||||
- name: MySQL | Create MISP user
|
||||
become: true
|
||||
mysql_user:
|
||||
login_user: root
|
||||
login_password: "{{ mysql_root_new_pass }}"
|
||||
name: misp
|
||||
password: "{{mysql_misp_password}}"
|
||||
priv: "misp.*:ALL,GRANT"
|
||||
state: present
|
||||
register: mysql_init
|
||||
|
||||
- name: MySQL | Create password file
|
||||
template:
|
||||
src: "mysql/{{item}}"
|
||||
dest: "/home/misp/{{item}}"
|
||||
force: no
|
||||
owner: misp
|
||||
group: misp
|
||||
mode: 0600
|
||||
with_items:
|
||||
- .my.cnf
|
||||
|
||||
- name: MySQL | Create password file for root
|
||||
template:
|
||||
src: "mysql/{{item}}"
|
||||
dest: "/root/{{item}}"
|
||||
force: no
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0600
|
||||
with_items:
|
||||
- .my.cnf
|
||||
|
||||
- name: MySQL | Initialize MISP database
|
||||
shell: "{{ item }}"
|
||||
with_items:
|
||||
- mysql -D misp < /opt/misp-server/misp/INSTALL/MYSQL.sql
|
||||
when: mysql_init.changed
|
||||
|
||||
######### PERMISSIONS #########
|
||||
|
||||
- name: Fix all files permissions
|
||||
file:
|
||||
path: /opt/misp-server/misp
|
||||
recurse: yes
|
||||
state: directory
|
||||
mode: "g=u"
|
||||
|
||||
############################################
|
||||
##### BACKUP ####
|
||||
############################################
|
||||
|
||||
- name: Copy backup script
|
||||
become: true
|
||||
template:
|
||||
src: misp/{{item}}
|
||||
dest: /bin/{{item}}
|
||||
mode: 0755
|
||||
with_items:
|
||||
- misp_backup
|
||||
when: enable_auto_backup == 'y'
|
||||
|
||||
- name: Copy restore script
|
||||
template:
|
||||
src: misp/{{item}}
|
||||
dest: /opt/misp-server/backup/{{item}}
|
||||
mode: 0755
|
||||
owner: misp
|
||||
group: misp
|
||||
with_items:
|
||||
- misp_backup
|
||||
when: enable_auto_backup == 'y'
|
||||
|
||||
- name: Create backup cronjob
|
||||
become: true
|
||||
become_user: misp
|
||||
cron:
|
||||
name: "misp backup cronjob"
|
||||
minute: "0"
|
||||
hour: "4"
|
||||
job: "sh /bin/misp_backup"
|
||||
when: enable_auto_backup == 'y'
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is loaded automatically by the app/webroot/index.php file after core.php
|
||||
*
|
||||
* This file should load/create any application wide configuration settings, such as
|
||||
* Caching, Logging, loading additional configuration files.
|
||||
*
|
||||
* You should also use this file to include any files that provide global functions/constants
|
||||
* that your application uses.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Cache Engine Configuration
|
||||
* Default settings provided below
|
||||
*
|
||||
* File storage engine.
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'File', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'path' => CACHE, //[optional] use system tmp directory - remember to use absolute path
|
||||
* 'prefix' => 'cake_', //[optional] prefix every cache file with this string
|
||||
* 'lock' => false, //[optional] use file locking
|
||||
* 'serialize' => true, // [optional]
|
||||
* 'mask' => 0666, // [optional] permission mask to use when creating cache files
|
||||
* ));
|
||||
*
|
||||
* APC (http://pecl.php.net/package/APC)
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'Apc', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
||||
* ));
|
||||
*
|
||||
* Xcache (http://xcache.lighttpd.net/)
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'Xcache', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
||||
* 'user' => 'user', //user from xcache.admin.user settings
|
||||
* 'password' => 'password', //plaintext password (xcache.admin.pass)
|
||||
* ));
|
||||
*
|
||||
* Memcache (http://memcached.org/)
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'Memcache', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
||||
* 'servers' => array(
|
||||
* '127.0.0.1:11211' // localhost, default port 11211
|
||||
* ), //[optional]
|
||||
* 'persistent' => true, // [optional] set this to false for non-persistent connections
|
||||
* 'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
|
||||
* ));
|
||||
*
|
||||
* Wincache (http://php.net/wincache)
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'Wincache', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
||||
* ));
|
||||
*
|
||||
* Redis (http://http://redis.io/)
|
||||
*
|
||||
* Cache::config('default', array(
|
||||
* 'engine' => 'Redis', //[required]
|
||||
* 'duration'=> 3600, //[optional]
|
||||
* 'probability'=> 100, //[optional]
|
||||
* 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
|
||||
* 'server' => '127.0.0.1' // localhost
|
||||
* 'port' => 6379 // default port 6379
|
||||
* 'timeout' => 0 // timeout in seconds, 0 = unlimited
|
||||
* 'persistent' => true, // [optional] set this to false for non-persistent connections
|
||||
* ));
|
||||
*/
|
||||
Cache::config('default', array('engine' => 'File'));
|
||||
Configure::load('config');
|
||||
|
||||
if (!Configure::read('MISP.baseurl')) {
|
||||
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) {
|
||||
if ($_SERVER['SERVER_PORT'] == 443) {
|
||||
Configure::write('MISP.baseurl', sprintf('https://%s', $_SERVER['SERVER_ADDR']));
|
||||
} else {
|
||||
Configure::write('MISP.baseurl', sprintf('https://%s:%d', $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT']));
|
||||
}
|
||||
} else {
|
||||
if ($_SERVER['SERVER_PORT'] == 80) {
|
||||
Configure::write('MISP.baseurl', sprintf('http://%s', $_SERVER['SERVER_ADDR']));
|
||||
} else {
|
||||
Configure::write('MISP.baseurl', sprintf('http://%s:%d', $_SERVER['SERVER_ADDR'], $_SERVER['SERVER_PORT']));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Plugins need to be loaded manually, you can either load them one by one or all of them in a single call
|
||||
* Uncomment one of the lines below, as you need. make sure you read the documentation on CakePlugin to use more
|
||||
* advanced ways of loading plugins
|
||||
*
|
||||
* CakePlugin::loadAll(); // Loads all plugins at once
|
||||
* CakePlugin::load('DebugKit'); //Loads a single plugin named DebugKit
|
||||
*
|
||||
*/
|
||||
|
||||
CakePlugin::load('SysLog');
|
||||
CakePlugin::load('Assets'); // having Logable
|
||||
CakePlugin::load('SysLogLogable');
|
||||
CakePlugin::load('UrlCache');
|
||||
|
||||
/**
|
||||
* Uncomment the following line to enable client SSL certificate authentication.
|
||||
* It's also necessary to configure the plugin — for more information, please read app/Plugin/CertAuth/reame.md
|
||||
*/
|
||||
// CakePlugin::load('CertAuth');
|
||||
|
||||
/**
|
||||
* You can attach event listeners to the request lifecyle as Dispatcher Filter . By Default CakePHP bundles two filters:
|
||||
*
|
||||
* - AssetDispatcher filter will serve your asset files (css, images, js, etc) from your themes and plugins
|
||||
* - CacheDispatcher filter will read the Cache.check configure variable and try to serve cached content generated from controllers
|
||||
*
|
||||
* Feel free to remove or add filters as you see fit for your application. A few examples:
|
||||
*
|
||||
* Configure::write('Dispatcher.filters', array(
|
||||
* 'MyCacheFilter', // will use MyCacheFilter class from the Routing/Filter package in your app.
|
||||
* 'MyPlugin.MyFilter', // will use MyFilter class from the Routing/Filter package in MyPlugin plugin.
|
||||
* array('callable' => $aFunction, 'on' => 'before', 'priority' => 9), // A valid PHP callback type to be called on beforeDispatch
|
||||
* array('callable' => $anotherMethod, 'on' => 'after'), // A valid PHP callback type to be called on afterDispatch
|
||||
*
|
||||
* ));
|
||||
*/
|
||||
Configure::write('Dispatcher.filters', array(
|
||||
'AssetDispatcher',
|
||||
'CacheDispatcher'
|
||||
));
|
||||
|
||||
/**
|
||||
* Configures default file logging options
|
||||
*/
|
||||
App::uses('CakeLog', 'Log');
|
||||
CakeLog::config('debug', array(
|
||||
'engine' => 'FileLog',
|
||||
'types' => array('notice', 'info', 'debug'),
|
||||
'file' => 'debug',
|
||||
));
|
||||
CakeLog::config('error', array(
|
||||
'engine' => 'FileLog',
|
||||
'types' => array('warning', 'error', 'critical', 'alert', 'emergency'),
|
||||
'file' => 'error',
|
||||
));
|
||||
|
||||
// comment the following out if you do not with to use the background processing (not recommended)
|
||||
CakePlugin::loadAll(array(
|
||||
'CakeResque' => array('bootstrap' => true)
|
||||
));
|
|
@ -0,0 +1,83 @@
|
|||
<?php
|
||||
$config = array (
|
||||
'debug' => 0,
|
||||
'Security' =>
|
||||
array (
|
||||
'level' => 'medium',
|
||||
'salt' => 'juFghZsg7128Eeyo<Qu2eeNfterd-dd+',
|
||||
'cipherSeed' => '',
|
||||
//'auth'=>array('CertAuth.Certificate'), // additional authentication methods
|
||||
),
|
||||
'MISP' =>
|
||||
array (
|
||||
'baseurl' => 'https://{{servername}}',
|
||||
'footermidleft' => '',
|
||||
'footermidright' => '',
|
||||
'org' => '',
|
||||
'showorg' => true,
|
||||
'background_jobs' => true,
|
||||
'cached_attachments' => true,
|
||||
'email' => '',
|
||||
'contact' => '',
|
||||
'cveurl' => 'http://cve.circl.lu/cve/',
|
||||
'disablerestalert' => false,
|
||||
'default_event_distribution' => '1',
|
||||
'default_attribute_distribution' => 'event',
|
||||
'tagging' => true,
|
||||
'full_tags_on_event_index' => true,
|
||||
'footer_logo' => '',
|
||||
'take_ownership_xml_import' => false,
|
||||
'unpublishedprivate' => false,
|
||||
'disable_emailing' => false,
|
||||
),
|
||||
'GnuPG' =>
|
||||
array (
|
||||
'onlyencrypted' => false,
|
||||
'email' => '',
|
||||
'homedir' => '/opt/misp-server/misp/.gnupg',
|
||||
'password' => '',
|
||||
'bodyonlyencrypted' => false,
|
||||
),
|
||||
'Proxy' =>
|
||||
array (
|
||||
'host' => '{{proxy_host}}',
|
||||
'port' => '{{proxy_port}}',
|
||||
'method' => '',
|
||||
'user' => '',
|
||||
'password' => '',
|
||||
),
|
||||
'SecureAuth' =>
|
||||
array (
|
||||
'amount' => 5,
|
||||
'expire' => 300,
|
||||
),
|
||||
// Uncomment the following to enable client SSL certificate authentication
|
||||
/*
|
||||
'CertAuth' =>
|
||||
array(
|
||||
'ca' => array( 'FIRST.Org' ), // allowed CAs
|
||||
'caId' => 'O', // which attribute will be used to verify the CA
|
||||
'userModel' => 'User', // name of the User class to check if user exists
|
||||
'userModelKey' => 'nids_sid', // User field that will be used for querying
|
||||
'map' => array( // maps client certificate attributes to User properties
|
||||
'O' => 'org',
|
||||
'emailAddress'=>'email',
|
||||
),
|
||||
'syncUser' => true, // should the User be synchronized with an external REST API
|
||||
'userDefaults'=> array( // default user attributes, only used when creating new users
|
||||
'role_id' => 4,
|
||||
),
|
||||
'restApi' => array( // API parameters
|
||||
'url' => 'https://example.com/data/users', // URL to query
|
||||
'headers' => array(), // additional headers, used for authentication
|
||||
'param' => array( 'email' => 'email'), // query parameters to add to the URL, mapped to USer properties
|
||||
'map' => array( // maps REST result to the User properties
|
||||
'uid' => 'nids_sid',
|
||||
'team' => 'org',
|
||||
'email' => 'email',
|
||||
'pgp_public'=> 'gpgkey',
|
||||
),
|
||||
),
|
||||
),
|
||||
*/
|
||||
);
|
|
@ -0,0 +1,286 @@
|
|||
<?php
|
||||
/**
|
||||
* This is core configuration file.
|
||||
*
|
||||
* Use it to configure core behavior of Cake.
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org CakePHP(tm) Project
|
||||
* @package app.Config
|
||||
* @since CakePHP(tm) v 0.2.9
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
|
||||
/**
|
||||
* CakePHP Debug Level:
|
||||
*
|
||||
* Production Mode:
|
||||
* 0: No error messages, errors, or warnings shown. Flash messages redirect.
|
||||
*
|
||||
* Development Mode:
|
||||
* 1: Errors and warnings shown, model caches refreshed, flash messages halted.
|
||||
* 2: As in 1, but also with full debug messages and SQL output.
|
||||
*
|
||||
* In production mode, flash messages redirect after a time interval.
|
||||
* In development mode, you need to click the flash message to continue.
|
||||
*/
|
||||
Configure::write('debug', 0); // 0 = for production, 2 = full debug mode
|
||||
|
||||
/**
|
||||
* Configure the Error handler used to handle errors for your application. By default
|
||||
* ErrorHandler::handleError() is used. It will display errors using Debugger, when debug > 0
|
||||
* and log errors with CakeLog when debug = 0.
|
||||
*
|
||||
* Options:
|
||||
*
|
||||
* - `handler` - callback - The callback to handle errors. You can set this to any callable type,
|
||||
* including anonymous functions.
|
||||
* - `level` - int - The level of errors you are interested in capturing.
|
||||
* - `trace` - boolean - Include stack traces for errors in log files.
|
||||
*
|
||||
* @see ErrorHandler for more information on error handling and configuration.
|
||||
*/
|
||||
Configure::write('Error', array(
|
||||
'handler' => 'ErrorHandler::handleError',
|
||||
'level' => E_ALL & ~E_DEPRECATED,
|
||||
'trace' => true
|
||||
));
|
||||
|
||||
/**
|
||||
* Configure the Exception handler used for uncaught exceptions. By default,
|
||||
* ErrorHandler::handleException() is used. It will display a HTML page for the exception, and
|
||||
* while debug > 0, framework errors like Missing Controller will be displayed. When debug = 0,
|
||||
* framework errors will be coerced into generic HTTP errors.
|
||||
*
|
||||
* Options:
|
||||
*
|
||||
* - `handler` - callback - The callback to handle exceptions. You can set this to any callback type,
|
||||
* including anonymous functions.
|
||||
* - `renderer` - string - The class responsible for rendering uncaught exceptions. If you choose a custom class you
|
||||
* should place the file for that class in app/Lib/Error. This class needs to implement a render method.
|
||||
* - `log` - boolean - Should Exceptions be logged?
|
||||
*
|
||||
* @see ErrorHandler for more information on exception handling and configuration.
|
||||
*/
|
||||
Configure::write('Exception', array(
|
||||
'handler' => 'ErrorHandler::handleException',
|
||||
'renderer' => 'ExceptionRenderer',
|
||||
'log' => true,
|
||||
'skipLog' => array(
|
||||
'NotFoundException',
|
||||
)
|
||||
));
|
||||
|
||||
/**
|
||||
* Application wide charset encoding
|
||||
*/
|
||||
Configure::write('App.encoding', 'UTF-8');
|
||||
|
||||
/**
|
||||
* To configure CakePHP *not* to use mod_rewrite and to
|
||||
* use CakePHP pretty URLs, remove these .htaccess
|
||||
* files:
|
||||
*
|
||||
* /.htaccess
|
||||
* /app/.htaccess
|
||||
* /app/webroot/.htaccess
|
||||
*
|
||||
* And uncomment the App.baseUrl below:
|
||||
*/
|
||||
//Configure::write('App.baseUrl', env('SCRIPT_NAME'));
|
||||
|
||||
/**
|
||||
* Uncomment the define below to use CakePHP prefix routes.
|
||||
*
|
||||
* The value of the define determines the names of the routes
|
||||
* and their associated controller actions:
|
||||
*
|
||||
* Set to an array of prefixes you want to use in your application. Use for
|
||||
* admin or other prefixed routes.
|
||||
*
|
||||
* Routing.prefixes = array('admin', 'manager');
|
||||
*
|
||||
* Enables:
|
||||
* `admin_index()` and `/admin/controller/index`
|
||||
* `manager_index()` and `/manager/controller/index`
|
||||
*
|
||||
*/
|
||||
Configure::write('Routing.prefixes', array('admin'));
|
||||
|
||||
/**
|
||||
* Turn off all caching application-wide.
|
||||
*
|
||||
*/
|
||||
Configure::write('Cache.disable', false);
|
||||
|
||||
/**
|
||||
* Enable cache checking.
|
||||
*
|
||||
* If set to true, for view caching you must still use the controller
|
||||
* public $cacheAction inside your controllers to define caching settings.
|
||||
* You can either set it controller-wide by setting public $cacheAction = true,
|
||||
* or in each action using $this->cacheAction = true.
|
||||
*
|
||||
*/
|
||||
//Configure::write('Cache.check', true);
|
||||
|
||||
/**
|
||||
* Defines the default error type when using the log() function. Used for
|
||||
* differentiating error logging and debugging. Currently PHP supports LOG_DEBUG.
|
||||
*/
|
||||
define('LOG_ERROR', LOG_ERR);
|
||||
|
||||
/**
|
||||
* Session configuration.
|
||||
*
|
||||
* Contains an array of settings to use for session configuration. The defaults key is
|
||||
* used to define a default preset to use for sessions, any settings declared here will override
|
||||
* the settings of the default config.
|
||||
*
|
||||
* ## Options
|
||||
*
|
||||
* - `Session.cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'
|
||||
* - `Session.timeout` - The number of minutes you want sessions to live for. This timeout is handled by CakePHP
|
||||
* - `Session.cookieTimeout` - The number of minutes you want session cookies to live for.
|
||||
* - `Session.checkAgent` - Do you want the user agent to be checked when starting sessions? You might want to set the
|
||||
* value to false, when dealing with older versions of IE, Chrome Frame or certain web-browsing devices and AJAX
|
||||
* - `Session.defaults` - The default configuration set to use as a basis for your session.
|
||||
* There are four builtins: php, cake, cache, database.
|
||||
* - `Session.handler` - Can be used to enable a custom session handler. Expects an array of of callables,
|
||||
* that can be used with `session_save_handler`. Using this option will automatically add `session.save_handler`
|
||||
* to the ini array.
|
||||
* - `Session.autoRegenerate` - Enabling this setting, turns on automatic renewal of sessions, and
|
||||
* sessionids that change frequently. See CakeSession::$requestCountdown.
|
||||
* - `Session.ini` - An associative array of additional ini values to set.
|
||||
*
|
||||
* The built in defaults are:
|
||||
*
|
||||
* - 'php' - Uses settings defined in your php.ini.
|
||||
* - 'cake' - Saves session files in CakePHP's /tmp directory.
|
||||
* - 'database' - Uses CakePHP's database sessions.
|
||||
* - 'cache' - Use the Cache class to save sessions.
|
||||
*
|
||||
* To define a custom session handler, save it at /app/Model/Datasource/Session/<name>.php.
|
||||
* Make sure the class implements `CakeSessionHandlerInterface` and set Session.handler to <name>
|
||||
*
|
||||
* To use database sessions, run the app/Config/Schema/sessions.php schema using
|
||||
* the cake shell command: cake schema create Sessions
|
||||
*
|
||||
*/
|
||||
Configure::write('Session', array(
|
||||
'timeout' => 60, // Session timeout, default is 1 hour
|
||||
'defaults' => 'database'
|
||||
));
|
||||
|
||||
/**
|
||||
* The level of CakePHP security.
|
||||
*/
|
||||
Configure::write('Security.level', 'medium');
|
||||
|
||||
/**
|
||||
* A random string used in security hashing methods.
|
||||
*/
|
||||
Configure::write('Security.salt', 'Rooraenietu8Eeyo<Qu2eeNfterd-dd+');
|
||||
|
||||
/**
|
||||
* A random numeric string (digits only) used to encrypt/decrypt strings.
|
||||
*/
|
||||
Configure::write('Security.cipherSeed', '395786739573056621429506834955');
|
||||
|
||||
/**
|
||||
* Apply timestamps with the last modified time to static assets (js, css, images).
|
||||
* Will append a querystring parameter containing the time the file was modified. This is
|
||||
* useful for invalidating browser caches.
|
||||
*
|
||||
* Set to `true` to apply timestamps when debug > 0. Set to 'force' to always enable
|
||||
* timestamping regardless of debug value.
|
||||
*/
|
||||
//Configure::write('Asset.timestamp', true);
|
||||
|
||||
/**
|
||||
* Compress CSS output by removing comments, whitespace, repeating tags, etc.
|
||||
* This requires a/var/cache directory to be writable by the web server for caching.
|
||||
* and /vendors/csspp/csspp.php
|
||||
*
|
||||
* To use, prefix the CSS link URL with '/ccss/' instead of '/css/' or use HtmlHelper::css().
|
||||
*/
|
||||
//Configure::write('Asset.filter.css', 'css.php');
|
||||
|
||||
/**
|
||||
* Plug in your own custom JavaScript compressor by dropping a script in your webroot to handle the
|
||||
* output, and setting the config below to the name of the script.
|
||||
*
|
||||
* To use, prefix your JavaScript link URLs with '/cjs/' instead of '/js/' or use JavaScriptHelper::link().
|
||||
*/
|
||||
//Configure::write('Asset.filter.js', 'custom_javascript_output_filter.php');
|
||||
|
||||
/**
|
||||
* The classname and database used in CakePHP's
|
||||
* access control lists.
|
||||
*/
|
||||
Configure::write('Acl.classname', 'DbAcl');
|
||||
Configure::write('Acl.database', 'default');
|
||||
|
||||
/**
|
||||
* Uncomment this line and correct your server timezone to fix
|
||||
* any date & time related errors.
|
||||
*/
|
||||
//date_default_timezone_set('UTC');
|
||||
|
||||
/**
|
||||
* Pick the caching engine to use. If APC is enabled use it.
|
||||
* If running via cli - apc is disabled by default. ensure it's available and enabled in this case
|
||||
*
|
||||
* Note: 'default' and other application caches should be configured in app/Config/bootstrap.php.
|
||||
* Please check the comments in boostrap.php for more info on the cache engines available
|
||||
* and their setttings.
|
||||
*/
|
||||
$engine = 'File';
|
||||
if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
|
||||
$engine = 'Apc';
|
||||
}
|
||||
|
||||
// In development mode, caches should expire quickly.
|
||||
$duration = '+999 days';
|
||||
if (Configure::read('debug') >= 1) {
|
||||
$duration = '+10 seconds';
|
||||
}
|
||||
|
||||
// Prefix each application on the same server with a different string, to avoid Memcache and APC conflicts.
|
||||
$prefix = 'myapp_';
|
||||
|
||||
/**
|
||||
* Configure the cache used for general framework caching. Path information,
|
||||
* object listings, and translation cache files are stored with this configuration.
|
||||
*/
|
||||
Cache::config('_cake_core_', array(
|
||||
'engine' => $engine,
|
||||
'prefix' => $prefix . 'cake_core_',
|
||||
'path' => CACHE . 'persistent' . DS,
|
||||
'serialize' => ($engine === 'File'),
|
||||
'duration' => $duration
|
||||
));
|
||||
|
||||
/**
|
||||
* Configure the cache for model and datasource caches. This cache configuration
|
||||
* is used to store schema descriptions, and table listings in connections.
|
||||
*/
|
||||
Cache::config('_cake_model_', array(
|
||||
'engine' => $engine,
|
||||
'prefix' => $prefix . 'cake_model_',
|
||||
'path' => CACHE . 'models' . DS,
|
||||
'serialize' => ($engine === 'File'),
|
||||
'duration' => $duration
|
||||
));
|
||||
|
||||
|
||||
//Comment the following out if you do not with to use the background workers (not recommended)
|
||||
require_once dirname(__DIR__) . '/Vendor/autoload.php';
|
|
@ -0,0 +1,73 @@
|
|||
<?php
|
||||
/**
|
||||
* This is core configuration file.
|
||||
*
|
||||
* Use it to configure core behaviour of Cake.
|
||||
*
|
||||
* PHP 5
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org CakePHP(tm) Project
|
||||
* @package app.Config
|
||||
* @since CakePHP(tm) v 0.2.9
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
/**
|
||||
* In this file you set up your database connection details.
|
||||
*
|
||||
* @package cake.config
|
||||
*/
|
||||
/**
|
||||
* Database configuration class.
|
||||
* You can specify multiple configurations for production, development and testing.
|
||||
*
|
||||
* datasource => The name of a supported datasource; valid options are as follows:
|
||||
* Database/Mysql - MySQL 4 & 5,
|
||||
* Database/Sqlite - SQLite (PHP5 only),
|
||||
* Database/Postgres - PostgreSQL 7 and higher,
|
||||
* Database/Sqlserver - Microsoft SQL Server 2005 and higher
|
||||
*
|
||||
* You can add custom database datasources (or override existing datasources) by adding the
|
||||
* appropriate file to app/Model/Datasource/Database. Datasources should be named 'MyDatasource.php',
|
||||
*
|
||||
*
|
||||
* persistent => true / false
|
||||
* Determines whether or not the database should use a persistent connection
|
||||
*
|
||||
* host =>
|
||||
* the host you connect to the database. To add a socket or port number, use 'port' => #
|
||||
*
|
||||
* prefix =>
|
||||
* Uses the given prefix for all the tables in this database. This setting can be overridden
|
||||
* on a per-table basis with the Model::$tablePrefix property.
|
||||
*
|
||||
* schema =>
|
||||
* For Postgres specifies which schema you would like to use the tables in. Postgres defaults to 'public'.
|
||||
*
|
||||
* encoding =>
|
||||
* For MySQL, Postgres specifies the character encoding to use when connecting to the
|
||||
* database. Uses database default not specified.
|
||||
*
|
||||
* unix_socket =>
|
||||
* For MySQL to connect via socket specify the `unix_socket` parameter instead of `host` and `port`
|
||||
*/
|
||||
class DATABASE_CONFIG {
|
||||
|
||||
public $default = array(
|
||||
'datasource' => 'Database/Mysql',
|
||||
'persistent' => false,
|
||||
'host' => 'localhost',
|
||||
'login' => 'misp',
|
||||
'port' => 3306,
|
||||
'password' => '{{mysql_misp_password}}',
|
||||
'database' => 'misp',
|
||||
'prefix' => '',
|
||||
//'encoding' => 'utf8',
|
||||
);
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
###########################################
|
||||
####### MISP BACKUP SCRIPT #######
|
||||
###########################################
|
||||
|
||||
TIMESTAMP=`date +%m%d%Y%H%M`
|
||||
BACKUP_PATH='/opt/misp-server/backup'
|
||||
BACKUP_DIR="$BACKUP_PATH/$TIMESTAMP"
|
||||
|
||||
BACKUP_MYSQL_DIR="$BACKUP_DIR/mysql"
|
||||
BACKUP_FILES_DIR="$BACKUP_DIR/misp"
|
||||
|
||||
MISP_FILES="/opt/misp-server/misp/app/files"
|
||||
MISP_CONF="/opt/misp-server/misp/app/Config"
|
||||
|
||||
mkdir "$BACKUP_DIR"
|
||||
mkdir "$BACKUP_MYSQL_DIR"
|
||||
mkdir "$BACKUP_FILES_DIR"
|
||||
|
||||
#### 1 | MYSQL ####
|
||||
mysqldump -u misp --opt --single-transaction misp > "$BACKUP_MYSQL_DIR/mysql_dump.sql"
|
||||
|
||||
#### 2 | CONFIGURATION FILES ####
|
||||
cp -R $MISP_CONF $BACKUP_FILES_DIR
|
||||
|
||||
#### 3 | FILES ####
|
||||
cp -R $MISP_FILES $BACKUP_FILES_DIR
|
||||
|
||||
cd $BACKUP_PATH
|
||||
tar -cpzf ${TIMESTAMP}.tar.gz ./${TIMESTAMP}
|
||||
rm -rf $BACKUP_DIR
|
||||
|
||||
#### Remove old backups ####
|
||||
find . -mtime +30 -exec rm {} \;
|
|
@ -0,0 +1,45 @@
|
|||
#!/bin/bash
|
||||
|
||||
###########################################
|
||||
####### MISP RESTORE SCRIPT #######
|
||||
###########################################
|
||||
|
||||
ARCHIVE=$1
|
||||
EXTRACTION=${ARCHIVE::-7}
|
||||
|
||||
BACKUP_MYSQL_DUMP_FILE="./$EXTRACTION/mysql/mysql_dump.sql"
|
||||
BACKUP_CONFIG_DIR="./$EXTRACTION/misp/Config/"
|
||||
BACKUP_FILES_DIR="./$EXTRACTION/misp/files/"
|
||||
|
||||
MISP_INSTALL_DIR="/opt/misp-server/misp/"
|
||||
MISP_INSTALL_APP_DIR="$MISP_INSTALL_DIR/app/"
|
||||
|
||||
MYSQL_USER="misp"
|
||||
MYSQL_DATABASE="misp"
|
||||
|
||||
echo "------ MISP RESTORE SCRIPT ------"
|
||||
|
||||
#### 0 | OPEN BACKUP ARCHIVE ####
|
||||
echo "*** Unpacking $1 ***"
|
||||
tar -xf $ARCHIVE
|
||||
echo "Done."
|
||||
|
||||
#### 1 | RESTORE MYSQL ####
|
||||
echo "*** Restoring MySQL misp database ***"
|
||||
echo "Connecting to MySQL database:"
|
||||
echo "database:$MYSQL_DATABASE"
|
||||
echo "user:$MYSQL_USER"
|
||||
mysql -u $MYSQL_USER -p $MYSQL_DATABASE < $BACKUP_MYSQL_DUMP_FILE
|
||||
echo "Done."
|
||||
|
||||
#### 2 | RESTORE CONFIGURATION FILES ####
|
||||
echo "*** Restoring MISP configuration files ***"
|
||||
cp -R $BACKUP_CONFIG_DIR $MISP_INSTALL_APP_DIR
|
||||
echo "Done."
|
||||
|
||||
#### 3 | RESTORE MISP FILES ####
|
||||
echo "*** Restoring MISP files ***"
|
||||
cp -R $BACKUP_FILES_DIR $MISP_INSTALL_APP_DIR
|
||||
echo "Done."
|
||||
|
||||
echo "------ COMPLETE ------"
|
|
@ -0,0 +1,7 @@
|
|||
[client]
|
||||
user=misp
|
||||
password="{{mysql_misp_password}}"
|
||||
|
||||
[mysqldump]
|
||||
user=misp
|
||||
password="{{mysql_misp_password}}"
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# default lower priority variables for this role
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
# Handlers file
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Role dependancies
|
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
|
||||
- name: mysql-server - installation
|
||||
apt:
|
||||
pkg: mysql-server-5.6
|
||||
state: present
|
||||
|
||||
- name: python-mysqldb - installation
|
||||
apt:
|
||||
pkg: python-mysqldb
|
||||
state: present
|
||||
|
||||
- name: MySQL - Update mysql root passwd
|
||||
mysql_user:
|
||||
name: root
|
||||
host: "{{item}}"
|
||||
password: "{{mysql_root_new_pass}}"
|
||||
login_user: root
|
||||
login_password: "{{mysql_root_old_pass}}"
|
||||
with_items:
|
||||
- "{{ansible_hostname}}"
|
||||
- 127.0.0.1
|
||||
- ::1
|
||||
- localhost
|
||||
when: mysql_root_new_pass != mysql_root_old_pass and
|
||||
mysql_root_new_pass != ""
|
||||
|
||||
- name: MySQL - Delete anonymous mysql user
|
||||
mysql_user:
|
||||
name: ""
|
||||
state: absent
|
||||
login_user: root
|
||||
login_password: "{{mysql_root_new_pass}}"
|
||||
|
||||
- name: MySQL - Remove mysql test database
|
||||
mysql_db:
|
||||
name: test
|
||||
state: absent
|
||||
login_user: root
|
||||
login_password: "{{mysql_root_new_pass}}"
|
||||
|
||||
- name: Restart MySQL
|
||||
service:
|
||||
name: mysql
|
||||
state: restarted
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Variables associated with this role
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# default lower priority variables for this role
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
# Handlers file
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Role dependancies
|
|
@ -0,0 +1,59 @@
|
|||
---
|
||||
|
||||
- name: Install all needed packages
|
||||
apt:
|
||||
pkg: "{{ item }}"
|
||||
state: latest
|
||||
update_cache: yes
|
||||
with_items:
|
||||
- nginx
|
||||
- php5-fpm
|
||||
|
||||
######### WEB-SERVER CONFIGURATION #########
|
||||
|
||||
- name: Make NGINX SSL directory
|
||||
file:
|
||||
path: /etc/nginx/ssl
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
register: nginx_init
|
||||
|
||||
- name: Remove default NGINX configuration
|
||||
file:
|
||||
path: /etc/nginx/{{item}}
|
||||
state: absent
|
||||
with_items:
|
||||
- sites-enabled/default
|
||||
- sites-available/default
|
||||
register: nginx_init
|
||||
|
||||
- name: Copy Nginx site configurations
|
||||
template:
|
||||
src: nginx/{{item}}
|
||||
dest: /etc/nginx/sites-available/{{item}}
|
||||
force: no
|
||||
mode: 0644
|
||||
with_items:
|
||||
- misp
|
||||
register: nginx_init
|
||||
|
||||
- name: Create NGINX configuration symlinks
|
||||
file:
|
||||
src: /etc/nginx/sites-available/{{item}}
|
||||
dest: /etc/nginx/sites-enabled/{{item}}
|
||||
state: link
|
||||
with_items:
|
||||
- misp
|
||||
register: nginx_init
|
||||
|
||||
- name: Create self-signed SSL certificate for Nginx
|
||||
command: openssl req -new -nodes -x509 -subj "/C=XX/ST=AAAAAAA/L=BBBBBB/O=Organization/CN={{servername}}" -days 3650 -newkey rsa:4096 -keyout /etc/nginx/ssl/misp.key -out /etc/nginx/ssl/misp.crt
|
||||
when: nginx_init.changed
|
||||
|
||||
- name: Restart Nginx
|
||||
service:
|
||||
name: mysql
|
||||
state: restarted
|
||||
when: nginx_init.changed
|
|
@ -0,0 +1,27 @@
|
|||
# MISP WEB SERVER CONFIGURATION
|
||||
server {
|
||||
server_name {{servername}};
|
||||
listen 443 ssl spdy;
|
||||
|
||||
root /opt/misp-server/misp/app/webroot;
|
||||
index index.php;
|
||||
|
||||
# Configure Crypto Keys/Certificates/DH
|
||||
ssl_certificate /etc/nginx/ssl/misp.crt;
|
||||
ssl_certificate_key /etc/nginx/ssl/misp.key;
|
||||
|
||||
# enable HSTS
|
||||
add_header Strict-Transport-Security "max-age=15768000; includeSubdomains";
|
||||
add_header X-Frame-Options SAMEORIGIN;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass unix:/var/run/php5-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
# Variables associated with this role
|
Loading…
Reference in New Issue