-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinstall.sh
executable file
·253 lines (206 loc) · 8.66 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
#!/usr/bin/bash
#
# This file is part of the Pandora-box distribution
# Copyright (c) 2022 Didier Barzin.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, version 3.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
set -e # stop on error
set -x # echo on
#================================
# Install script for Pandora-Box
#================================
cd /home/$SUDO_USER
# remove need restart
apt remove -y needrestart
#---------------------
# Python
#---------------------
apt update && apt upgrade -y
apt install -y python-is-python3 python3-pip
apt install -y libssl-dev
#---------------------
# Peotry
#---------------------
su - $SUDO_USER -c "curl -sSL https://install.python-poetry.org | python3 -"
su - $SUDO_USER -c "poetry --version"
#---------------------
# Valkey
#---------------------
apt install -y build-essential tcl pkg-config
if [ ! -d "valkey" ]; then
git clone https://github.com/valkey-io/valkey.git
cd valkey
git checkout 8.0
make -j 4
# Optionally, you can run the tests:
# make test
cd ..
chown -R $SUDO_USER valkey
fi
#---------------------
# Kvrocks
#---------------------
apt-get update
apt install -y git gcc g++ make cmake autoconf automake libtool python3 libssl-dev
if [ ! -d "kvrocks" ]; then
git clone --recursive https://github.com/apache/incubator-kvrocks.git kvrocks
cd kvrocks
git checkout 2.10
./x.py build
cd ..
chown -R $SUDO_USER kvrocks
fi
#---------------------
# Pandora
#---------------------
if [ ! -d "pandora" ]; then
git clone https://github.com/pandora-analysis/pandora.git
chown -R $SUDO_USER pandora
fi
# fix broken packages
apt-get install --fix-broken -y
# install packages
apt install -y python3-dev # for compiling things
apt install -y libpango-1.0-0 libharfbuzz0b libpangoft2-1.0-0 # For HTML -> PDF
apt install -y libreoffice-nogui # For Office -> PDF
apt install -y exiftool # for extracting exif information
apt install -y unrar # for extracting rar files
apt install -y libxml2-dev libxslt1-dev antiword unrtf poppler-utils tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig # for textract
apt install -y libssl-dev # seems required for yara-python
apt install -y libcairo2-dev # Required by reportlab
apt install -y rsyslog cron # log logging
# autoremove old stuff
apt autoremove -y
# set .env
cd pandora
echo PANDORA_HOME="`pwd`" >> .env
su - $SUDO_USER -c "cd ~/pandora; poetry install"
su - $SUDO_USER -c "cd ~/pandora; cp config/generic.json.sample config/generic.json"
# Copy default config file
su - $SUDO_USER -c "cp ~/pandora/config/logging.json.sample ~/pandora/config/logging.json"
# install yara-python
apt install -y python3-yara
# ClamAV
apt-get install -y hdparm clamav-daemon
# In order for the module to work, you need the signatures.
# Running the command "freshclam" will do it but if the script is already running
# (it is started by the systemd service clamav-freshclam)
# You might want to run the commands below:
systemctl stop clamav-freshclam.service # Stop the service
freshclam # Run the signatures update
systemctl start clamav-freshclam.service # Start the service so we keep getting the updates
service clamav-daemon start
# Comodo
wget https://download.comodo.com/cis/download/installs/linux/cav-linux_x64.deb
dpkg --ignore-depends=libssl0.9.8 -i cav-linux_x64.deb
wget http://cdn.download.comodo.com/av/updates58/sigs/bases/bases.cav -O /opt/COMODO/scanners/bases.cav
# Update Pandora
su - $SUDO_USER -c "cd ~/pandora; poetry run update --yes"
# Remove unused workers
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/blocklists.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/hybridanalysis.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/joesandbox.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/lookyloo.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/malwarebazaar.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/mwdb.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/ole.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/preview.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/virustotal.*"
su - $SUDO_USER -c "rm ~/pandora/pandora/workers/xml*"
su - $SUDO_USER -c 'rm ~/pandora/pandora/workers/msodde*'
su - $SUDO_USER -c 'rm ~/pandora/pandora/workers/odf*'
su - $SUDO_USER -c 'rm ~/pandora/pandora/workers/qrcode*'
# Remove files from quarantine after 180 days
{ crontab -l -u $SUDO_USER; echo '0 * * * * find /var/quarantine/* -type f -mtime +180 -delete '; } | crontab -u $SUDO_USER -
{ crontab -l -u $SUDO_USER; echo '5 * * * * find /var/quarantine/* -type d -empty -mtime +180 -delete '; } | crontab -u $SUDO_USER -
# Remove old Pandora task files every hour
{ crontab -l -u $SUDO_USER; echo '30 * * * * find ~/pandora/tasks/* -type f -mtime +1 -delete '; } | crontab -u $SUDO_USER -
{ crontab -l -u $SUDO_USER; echo '35 * * * * find ~/pandora/tasks/* -type d -empty -mtime +1 -delete'; } | crontab -u $SUDO_USER -
# Poweroff at 20:00 (green energy)
echo '0 20 * * * /sbin/poweroff' >> /etc/crontab
#---------------------
# Pandora-box
#---------------------
cd /home/$SUDO_USER/pandora-box
# FIM, pmount, psmisc (for killall), vim and pipx
apt --fix-broken install -y
apt install -y fim pmount psmisc vim pipx python3-psutil python3-pyudev
# Python libraries
su - $SUDO_USER -c "pipx install pypandora"
# create /media/box folder
if [ ! -d "/media/box" ];
then
echo "Create /media/box folder."
mkdir /media/box
else
echo "No /media/box folder needed."
fi
# Quarantine folder
mkdir -p /var/quarantine
chown $SUDO_USER /var/quarantine
# Suppress all messages from the kernel (and its drivers) except panic messages from appearing on the console.
echo "kernel.printk = 3 4 1 3" | tee -a /etc/sysctl.conf
# Set Permanently ulimit -n / open files in ubuntu
echo "fs.file-max = 65535" | tee -a /etc/sysctl.conf
# allow write to /dev/fb0
usermod -a -G video $SUDO_USER
# allow read mouse input
usermod -a -G input $SUDO_USER
# allow read mouse input
usermod -a -G tty $SUDO_USER
# allow write to /var/log
usermod -a -G syslog $SUDO_USER
# logrotate
apt install logrotate
echo "/var/log/pandora-box.log {" > /etc/logrotate.d/pandora-box
echo " rotate 12" >> /etc/logrotate.d/pandora-box
echo " monthly" >> /etc/logrotate.d/pandora-box
echo " compress" >> /etc/logrotate.d/pandora-box
echo " missingok" >> /etc/logrotate.d/pandora-box
echo " notifempty" >> /etc/logrotate.d/pandora-box
echo "}" >> /etc/logrotate.d/pandora-box
echo "/var/log/pandora_message.log {" > /etc/logrotate.d/pandora_message
echo " rotate 12" >> /etc/logrotate.d/pandora_message
echo " monthly" >> /etc/logrotate.d/pandora_message
echo " compress" >> /etc/logrotate.d/pandora_message
echo " missingok" >> /etc/logrotate.d/pandora_message
echo " notifempty" >> /etc/logrotate.d/pandora_message
echo "}" >> /etc/logrotate.d/pandora_message
echo "/var/log/pandora_error.log {" > /etc/logrotate.d/pandora_error
echo " rotate 12" >> /etc/logrotate.d/pandora_error
echo " monthly" >> /etc/logrotate.d/pandora_error
echo " compress" >> /etc/logrotate.d/pandora_error
echo " missingok" >> /etc/logrotate.d/pandora_error
echo " notifempty" >> /etc/logrotate.d/pandora_error
echo "}" >> /etc/logrotate.d/pandora_error
# Start Pandora at boot
cp pandora.service /etc/systemd/system/pandora.service
sed -i "s/_USER_/$SUDO_USER/g" /etc/systemd/system/pandora.service
systemctl daemon-reload
systemctl enable pandora
# Do not print messages on console
echo "mesg n" >> /home/$SUDO_USER/.bashrc
# Start Pandora-box on getty1 at boot
mkdir -p /etc/systemd/system/[email protected]
echo "[Service]" > /etc/systemd/system/[email protected]/override.conf
echo "ExecStart=" >> /etc/systemd/system/[email protected]/override.conf
echo "ExecStart=-/sbin/agetty --autologin pandora --noclear %I $TERM" >> /etc/systemd/system/[email protected]/override.conf
# echo "ExecStart=-su - pandora -c ./pandora-box/pandora-box.py" >> /etc/systemd/system/[email protected]/override.conf
# Start pandora from bashrc
#echo "export PATH=\"\$HOME/.local/bin:{\$PATH}\"" >> /home/$SUDO_USER/.bashrc
#echo "exec pandora-box/pandora-box.py" >> /home/$SUDO_USER/.bashrc
# Copy ini file
su - $SUDO_USER -c "cp ~/pandora-box/pandora-box.ini.curses ~/pandora-box/pandora-box.ini"
# Reboot
echo "You may reboot the server."