Installing yq via apt-get
Fixing the yq issue by using the apt repository
This commit is contained in:
@@ -8,16 +8,18 @@ sed -i "2ideb mirror://mirrors.ubuntu.com/mirrors.txt xenial main restricted uni
|
|||||||
apt_install_prerequisites() {
|
apt_install_prerequisites() {
|
||||||
# Add repository for apt-fast
|
# Add repository for apt-fast
|
||||||
add-apt-repository -y ppa:apt-fast/stable
|
add-apt-repository -y ppa:apt-fast/stable
|
||||||
|
# Add repository for yq
|
||||||
|
add-apt-repository -y ppa:rmescandon/yq
|
||||||
# Install prerequisites and useful tools
|
# Install prerequisites and useful tools
|
||||||
echo "[$(date +%H:%M:%S)]: Running apt-get update..."
|
echo "[$(date +%H:%M:%S)]: Running apt-get update..."
|
||||||
apt-get -qq update
|
apt-get -qq update
|
||||||
apt-get -qq install -y apt-fast
|
apt-get -qq install -y apt-fast
|
||||||
echo "[$(date +%H:%M:%S)]: Running apt-fast install..."
|
echo "[$(date +%H:%M:%S)]: Running apt-fast install..."
|
||||||
apt-fast -qq install -y jq whois build-essential git docker docker-compose unzip htop
|
apt-fast -qq install -y jq whois build-essential git docker docker-compose unzip htop yq
|
||||||
}
|
}
|
||||||
|
|
||||||
test_prerequisites() {
|
test_prerequisites() {
|
||||||
for package in jq whois build-essential git docker docker-compose unzip
|
for package in jq whois build-essential git docker docker-compose unzip yq
|
||||||
do
|
do
|
||||||
echo "[$(date +%H:%M:%S)]: [TEST] Validating that $package is correctly installed..."
|
echo "[$(date +%H:%M:%S)]: [TEST] Validating that $package is correctly installed..."
|
||||||
# Loop through each package using dpkg
|
# Loop through each package using dpkg
|
||||||
@@ -348,9 +350,6 @@ install_bro() {
|
|||||||
install_suricata() {
|
install_suricata() {
|
||||||
# Run iwr -Uri testmyids.com -UserAgent "BlackSun" in Powershell to generate test alerts
|
# Run iwr -Uri testmyids.com -UserAgent "BlackSun" in Powershell to generate test alerts
|
||||||
echo "[$(date +%H:%M:%S)]: Installing Suricata..."
|
echo "[$(date +%H:%M:%S)]: Installing Suricata..."
|
||||||
# Install yq to maniuplate the suricata.yaml inline
|
|
||||||
/usr/local/go/bin/go get gopkg.in/mikefarah/yq.v2
|
|
||||||
cp /root/go/bin/yq.v2 /root/go/bin/yq && chmod +x /root/go/bin/yq
|
|
||||||
|
|
||||||
# Install suricata
|
# Install suricata
|
||||||
add-apt-repository -y ppa:oisf/suricata-stable
|
add-apt-repository -y ppa:oisf/suricata-stable
|
||||||
@@ -362,31 +361,30 @@ install_suricata() {
|
|||||||
cd /home/vagrant/suricata-update || exit 1
|
cd /home/vagrant/suricata-update || exit 1
|
||||||
python setup.py install
|
python setup.py install
|
||||||
# Add DC_SERVERS variable to suricata.yaml in support et-open signatures
|
# Add DC_SERVERS variable to suricata.yaml in support et-open signatures
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml vars.address-groups.DC_SERVERS '$HOME_NET'
|
yq w -i /etc/suricata/suricata.yaml vars.address-groups.DC_SERVERS '$HOME_NET'
|
||||||
|
|
||||||
# It may make sense to store the suricata.yaml file as a resource file if this begins to become too complex
|
# It may make sense to store the suricata.yaml file as a resource file if this begins to become too complex
|
||||||
# Add more verbose alert logging
|
# Add more verbose alert logging
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload true
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload true
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload-buffer-size 4kb
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload-buffer-size 4kb
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload-printable yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.payload-printable yes
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.packet yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.packet yes
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.http yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.http yes
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.tls yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.tls yes
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.ssh yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.ssh yes
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.smtp yes
|
yq w -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.0.alert.smtp yes
|
||||||
# Turn off traffic flow logging (duplicative of Bro and wrecks Splunk trial license)
|
# Turn off traffic flow logging (duplicative of Bro and wrecks Splunk trial license)
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove HTTP
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove HTTP
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove DNS
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove DNS
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove TLS
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.1 # Remove TLS
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove SMTP
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove SMTP
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove SSH
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove SSH
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove Stats
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove Stats
|
||||||
/root/go/bin/yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove Flow
|
yq d -i /etc/suricata/suricata.yaml outputs.1.eve-log.types.2 # Remove Flow
|
||||||
# Enable JA3 fingerprinting
|
# Enable JA3 fingerprinting
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml app-layer.protocols.tls.ja3-fingerprints true
|
yq w -i /etc/suricata/suricata.yaml app-layer.protocols.tls.ja3-fingerprints true
|
||||||
# AF packet monitoring should be set to eth1
|
# AF packet monitoring should be set to eth1
|
||||||
/root/go/bin/yq w -i /etc/suricata/suricata.yaml af-packet.0.interface eth1
|
yq w -i /etc/suricata/suricata.yaml af-packet.0.interface eth1
|
||||||
|
|
||||||
|
|
||||||
crudini --set --format=sh /etc/default/suricata '' iface eth1
|
crudini --set --format=sh /etc/default/suricata '' iface eth1
|
||||||
# update suricata signature sources
|
# update suricata signature sources
|
||||||
@@ -431,23 +429,6 @@ test_suricata_prerequisites() {
|
|||||||
echo "[+] $package was successfully installed!"
|
echo "[+] $package was successfully installed!"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# One-off support for packages which aren't installed via dpkg
|
|
||||||
echo "[$(date +%H:%M:%S)]: [TEST] Validating that yq is correctly installed..."
|
|
||||||
# Check if the binary exists
|
|
||||||
if ! [ -f /root/go/bin/yq ]; then
|
|
||||||
# If it doesn't exist, try to re-install the package
|
|
||||||
echo "[-] yq was not found. Attempting to reinstall."
|
|
||||||
/usr/local/go/bin/go get gopkg.in/mikefarah/yq.v2
|
|
||||||
cp /root/go/bin/yq.v2 /root/go/bin/yq && chmod +x /root/go/bin/yq
|
|
||||||
if ! [ -f /root/go/bin/yq ]; then
|
|
||||||
# If the reinstall fails, give up
|
|
||||||
echo "[X] Unable to install yq even after a retry. Exiting."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "[+] yq was successfully installed!"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
postinstall_tasks() {
|
postinstall_tasks() {
|
||||||
|
|||||||
Reference in New Issue
Block a user