Contents
SNORT3 Install
Snort is an open source network intrusion detection system capable of performing real-time traffic analysis and packet logging on IP networks.
It can perform "protocol analysis," "content search," and "matching," and can be used to detect a variety of attacks, including "buffer overflows," "stealth port scans," "CGI attacks," "SMB probes," "OS fingerprinting attempts," "semantic URL attacks," and "server message block probes.
MiracleLinux9 does not have a Snort3 repository, so build, compile and install Snort3 from source code
1. Advance preparation
①Install required build tools and libraries
| 
					 1  | 
						# dnf install bison flex libtool nghttp2 libnghttp2-devel libpcap-devel pcre-devel openssl-devel libdnet-devel libtirpc-devel git gcc-c++ libunwind-devel cmake hwloc-devel luajit-devel xz-devel libnfnetlink-devel libmnl-devel libnetfilter_queue-devel uuid-devel -y  | 
					
Install CERT Forensics Tools repository as libsafec-devel is not available in the EPEL repository.
Install libsafec-devel
| 
					 1 2 3  | 
						# wget https://forensics.cert.org/cert-forensics-tools-release-el9.rpm # rpm -Uvh cert-forensics-tools-release*rpm # dnf --enablerepo=forensics install libsafec-devel  | 
					
②SNORT3 installation working directory creation
| 
					 1  | 
						# mkdir snort_src && cd snort_src  | 
					
③DAQ Download Install
| 
					 1 2 3 4 5 6  | 
						# git clone https://github.com/snort3/libdaq.git # cd libdaq # ./bootstrap # ./configure # make # make install  | 
					
④Tcmalloc Install
Installed gperftools to improve speed when memory usage increases
| 
					 1 2 3 4 5 6 7  | 
						# cd ../ # wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz # tar xzf gperftools-2.9.1.tar.gz # cd gperftools-2.9.1/ # ./configure # make # make install  | 
					
2. Snort3 Download Install
①Download, compile, and install Snort3
| 
					 1 2 3 4 5 6 7 8  | 
						# cd ../ # wget https://github.com/snort3/snort3/archive/refs/tags/3.1.31.0.tar.gz # tar xzf 3.1.31.0.tar.gz # cd snort3-3.1.31.0 # ./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc # cd build # make # make install  | 
					
②Update shared libraries
| 
					 1 2 3  | 
						# ln -s /usr/local/lib/libtcmalloc.so.4 /lib/ # ln -s /usr/local/lib/libdaq.so.3 /lib/ # ldconfig  | 
					
Check version
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						# snort -V o"  )~   Version 3.1.31.0    ''''    By Martin Roesch & The Snort Team            http://snort.org/contact#team            Copyright (C) 2014-2022 Cisco and/or its affiliates. All rights reserved.            Copyright (C) 1998-2013 Sourcefire, Inc., et al.            Using DAQ version 3.0.12            Using LuaJIT version 2.1.0-beta3            Using OpenSSL 3.0.7 1 Nov 2022            Using libpcap version 1.10.0 (with TPACKET_V3)            Using PCRE version 8.44 2020-02-12            Using ZLIB version 1.2.11            Using LZMA version 5.2.5  | 
					
3. Network Interface Card Configuration
①Configure network interface card
※The "ens160" part below should be adapted to your environment.
| 
					 1 2 3 4 5 6 7  | 
						# ip link set dev ens160 promisc on # ip add sh ens160 2: ens160: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000     link/ether 00:0c:29:05:a7:c2 brd ff:ff:ff:ff:ff:ff     altname enp3s0     inet 192.168.11.83/24 brd 192.168.11.255 scope global noprefixroute ens160        valid_lft forever preferred_lft forever  | 
					
Disable interface offloading so that Snort does not truncate packets larger than 1518 bytes
Confirmation of current status
| 
					 1 2 3  | 
						# ethtool -k ens160 | grep receive-offload generic-receive-offload: on large-receive-offload: on  | 
					
Disable GRO and LRO as they are turned on.
| 
					 1  | 
						# ethtool -K ens160 gro off lro off  | 
					
Create and enable systemd service so that changes will take effect after system reboot
| 
					 1  | 
						# vi /etc/systemd/system/snort3-promisc.service  | 
					
[Unit]
Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ip link set dev ens160 promisc on
ExecStart=/usr/sbin/ethtool -K ens160 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=default.target
| 
					 1 2 3  | 
						# systemctl daemon-reload # systemctl enable --now snort3-promisc.service Created symlink /etc/systemd/system/default.target.wants/snort3-promisc.service → /etc/systemd/system/snort3-promisc.service.  | 
					
4.Use of Community Rules
Set community rules this time
①Create Snort Rules directory
| 
					 1  | 
						# mkdir /usr/local/etc/rules  | 
					
➁Download Snort 3 Community Rules from the Snort 3 Download Page
Extract the rules and copy them to the configuration folder
| 
					 1  | 
						# wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/  | 
					
Check inside the configuration folder
| 
					 1 2 3 4 5 6  | 
						# ls -1 /usr/local/etc/rules/snort3-community-rules/ AUTHORS LICENSE sid-msg.map snort3-community.rules VRT-License.txt  | 
					
5. Edit Main Configuration File
| 
					 1 2 3 4 5  | 
						# vi /usr/local/etc/snort/snort.lua # Line 24: Change to own server IP address HOME_NET = '192.168.11.0/24' # Line 28 : Change EXTERNAL_NET = '!$HOME_NET'  | 
					
Update path to rules
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  | 
						# vi /usr/local/etc/snort/snort.lua # Per Line193 : Update rule paths in the ips section ips = {     -- use this to enable decoder and inspector alerts     --enable_builtin_rules = true,     -- use include for rules files; be sure to set your path     -- note that rules files can include other rules files     -- (see also related path vars at the top of snort_defaults.lua)     variables = default_variables,    rules = [[           include $RULE_PATH/snort3-community-rules/snort3-community.rules    ]] }  | 
					
OpenAppID install
Download and install Snort OpenAppID from the Snort 3 download page
Please change to the latest version.
| 
					 1 2 3  | 
						# wget https://www.snort.org/downloads/openappid/33380 -O OpenAppId-33380.tgz # tar -xzvf OpenAppId-33380.tgz # cp -R odp /usr/local/lib/  | 
					
Edit the snort 3 configuration file to define the location of the OpenAppID library
| 
					 1 2 3 4 5 6 7 8 9  | 
						# vi /usr/local/etc/snort/snort.lua # Per Line 101 : Add appid = {     -- appid requires this to use appids in rules     --app_detector_dir = 'directory to load appid detectors from'     app_detector_dir = '/usr/local/lib',     log_stats = true, }  | 
					
Snorts log directory creation
| 
					 1  | 
						# mkdir /var/log/snort  | 
					
Check configuration files
| 
					 1  | 
						# snort -c /usr/local/etc/snort/snort.lua --daq-dir /usr/local/lib/daq  | 
					
OK if the check results in the following
| 
					 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  | 
						-------------------------------------------------- o")~   Snort++ 3.1.31.0 -------------------------------------------------- Loading /usr/local/etc/snort/snort.lua: Loading snort_defaults.lua: Finished snort_defaults.lua: Loading file_magic.lua: Finished file_magic.lua:         output         ips         classifications         references         packets         dce_udp         imap         normalizer         rpc_decode         ssh         active         alerts         daq         decode         host_cache         host_tracker         hosts         network         process         search_engine         so_proxy         cip         telnet         stream         stream_ip         stream_icmp         stream_tcp         stream_udp         stream_user         stream_file         arp_spoof         back_orifice         dns         netflow         pop         sip         ssl         dnp3         iec104         mms         modbus         s7commplus         dce_smb         dce_tcp         dce_http_proxy         dce_http_server         gtp_inspect         port_scan         smtp         ftp_server         ftp_client         ftp_data         http_inspect         http2_inspect         file_id         file_policy         appid         wizard         binder         trace Finished /usr/local/etc/snort/snort.lua: Loading ips.rules: Loading ../rules/snort3-community-rules/snort3-community.rules: Finished ../rules/snort3-community-rules/snort3-community.rules: Finished ips.rules: -------------------------------------------------- ips policies rule stats               id  loaded  shared enabled    file                0    4024       0    4024    /usr/local/etc/snort/snort.lua -------------------------------------------------- rule counts        total rules loaded: 4024                text rules: 4024             option chains: 4024             chain headers: 323                  flowbits: 48      flowbits not checked: 23 -------------------------------------------------- port rule counts              tcp     udp    icmp      ip      any     473      58     147      22      src     177      17       0       0      dst     778     153       0       0     both       6      11       0       0    total    1434     239     147      22 -------------------------------------------------- service rule counts          to-srv  to-cli                    dcerpc:        7       4                      dhcp:        2       2                       dns:       28       7                       ftp:       90       4                  ftp-data:        1      97                      http:     2085     256                     http2:     2085     256                      imap:       35     118                       irc:        5       2                  kerberos:        5       0                      ldap:        0       1                     mysql:        3       0               netbios-dgm:        1       1                netbios-ns:        4       3               netbios-ssn:       69      17                      nntp:        2       0                      pop3:       23     118                       rdp:        5       0                       sip:        5       5                      smtp:      130       2                      snmp:       18       7                      ssdp:        3       0                       ssl:       20      42                    sunrpc:       68       4                    telnet:       12       6                      tftp:        1       0                      wins:        1       0                     total:     4708     952 -------------------------------------------------- fast pattern groups                       src: 59                       dst: 158                       any: 4                 to_server: 47                 to_client: 34 -------------------------------------------------- search engine                 instances: 302                  patterns: 7522             pattern chars: 122098                num states: 82566          num match states: 7154              memory scale: MB              total memory: 2.58907            pattern memory: 0.403095         match list memory: 0.91655         transition memory: 1.23256         fast pattern only: 4971 -------------------------------------------------- pcap DAQ configured to passive. Snort successfully validated the configuration (with 0 warnings). o")~   Snort exiting  | 
					
6. Create custom local rules
| 
					 1 2 3  | 
						# vi /usr/local/etc/rules/local.rules alert icmp any any -> $HOME_NET any (msg:"ICMP connection test"; sid:1000001; rev:1;)  | 
					
7. Verification of settings
Use parameter -T to test configuration and enable test mode
| 
					 1  | 
						# snort -T -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules  --daq-dir /usr/local/lib/daq -i ens160 -l /var/log/snort  | 
					
Next, run the test by executing the following command
| 
					 1  | 
						# snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules --daq-dir /usr/local/lib/daq -i ens160 -l /var/log/snort -A alert_fast -s 65535 -k none  | 
					
When pinging this server from another PC in the same local network, an alert line is written on the console screen of this server as shown below.
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						Commencing packet processing ++ [0] ens160 10/21-13:10:54.553804 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:54.553804 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:54.553965 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:55.568608 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:55.568609 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:55.568658 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:55.568720 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:56.582194 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:56.582194 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:56.582265 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:56.582359 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:57.594268 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:57.594268 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.22 -> 192.168.11.83 10/21-13:10:57.594326 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22 10/21-13:10:57.594410 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 192.168.11.83 -> 192.168.11.22  | 
					
Settings for writing to log files
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						# vi /usr/local/etc/snort/snort.lua # Line 251 :  Uncomment and add in the "-- 7. configure outputs" section -- event logging -- you can enable with defaults from the command line with -A -- uncomment below to set non-default configs --alert_csv = { } alert_fast = {     file = true,     packet = false,     limit = 10, } --alert_full = { } --alert_sfsocket = { } --alert_syslog = { } --unified2 = { }  | 
					
An alert_fast.txt file is created in the log directory
Perform syntax check
| 
					 1  | 
						# snort -c /usr/local/etc/snort/snort.lua --daq-dir /usr/local/lib/daq  | 
					
Now, instead of the -A alert_fast option, add the option -l /var/log/snort to specify the log directory
| 
					 1  | 
						# snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules --daq-dir /usr/local/lib/daq -i ens160 -s 65535 -k none -l /var/log/snort/  | 
					
When I pinged the server again from another PC in the same network, this time nothing appeared on the console screen, but
Checking the log directory, an alert_fast.txt file has been created
To check the alert_fast.txt file
| 
					 1  | 
						# tail -f /var/log/snort/alert_fast.txt  | 
					
Include local rules in snort.lua
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						# vi /usr/local/etc/snort/snort.lua # Line 197 : Add ips = {     -- use this to enable decoder and inspector alerts     --enable_builtin_rules = true,     -- use include for rules files; be sure to set your path     -- note that rules files can include other rules files     -- (see also related path vars at the top of snort_defaults.lua)     variables = default_variables,    rules = [[           include $RULE_PATH/snort3-community-rules/snort3-community.rules           include $RULE_PATH/local.rules    ]] }  | 
					
8. Create user for Snort
Create a non-login system user account for Snort
| 
					 1  | 
						# useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort  | 
					
9. Create systemd service unit for Snort
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						# vi /etc/systemd/system/snort3.service Describe the following [Unit] Description=Snort Daemon After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/bin/snort --daq-dir /usr/local/lib/daq -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens160 -m 0x1b -u snort -g snort ExecStop=/bin/kill -9 $MAINPID [Install] WantedBy=multi-user.target  | 
					
Reload systemd configuration
| 
					 1  | 
						# systemctl daemon-reload  | 
					
Set ownership and permissions for log files
| 
					 1 2  | 
						# chmod -R 5775 /var/log/snort # chown -R snort:snort /var/log/snort  | 
					
Enable Snort to start and run at system startup
| 
					 1 2  | 
						# systemctl enable --now snort3 Created symlink /etc/systemd/system/multi-user.target.wants/snort3.service → /etc/systemd/system/snort3.service.  | 
					
status check
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						# systemctl status snort3 ● snort3.service - Snort Daemon      Loaded: loaded (/etc/systemd/system/snort3.service; enabled; preset:>      Active: active (running) since Sat 2023-10-21 13:23:18 JST; 7s ago    Main PID: 65125 (snort)       Tasks: 2 (limit: 23011)      Memory: 271.7M         CPU: 742ms      CGroup: /system.slice/snort3.service              mq65125 /usr/local/bin/snort --daq-dir /usr/local/lib/daq -c> Oct 21 13:23:18 Lepard systemd[1]: Started Snort Daemon.  | 
					
Tripwire
1.Install
| 
					 1  | 
						# dnf install tripwire -y  | 
					
2.Passphrase setting
Set site passphrase and local passphrase
| 
					 1  | 
						# tripwire-setup-keyfiles  | 
					
| 
					 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  | 
						---------------------------------------------- The Tripwire site and local passphrases are used to sign a variety of files, such as the configuration, policy, and database files. Passphrases should be at least 8 characters in length and contain both letters and numbers. See the Tripwire manual for more information. ---------------------------------------------- Creating key files... (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the site keyfile passphrase: ←Enter any "Site Passphrase" Verify the site keyfile passphrase: ←Enter "Site Passphrase" again Generating key (this may take several minutes)...Key generation complete. (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the local keyfile passphrase: ←Enter any "Local Passphrase" Verify the local keyfile passphrase: ←Enter "Local Passphrase" again Generating key (this may take several minutes)...Key generation complete. ---------------------------------------------- Signing configuration file... Please enter your site passphrase: ←Enter "Site Passphrase" Wrote configuration file: /etc/tripwire/tw.cfg A clear-text version of the Tripwire configuration file: /etc/tripwire/twcfg.txt has been preserved for your inspection. It is recommended that you move this file to a secure location and/or encrypt it in place (using a tool such as GPG, for example) after you have examined it. ---------------------------------------------- Signing policy file... Please enter your site passphrase: ←Enter "Site Passphrase" Wrote policy file: /etc/tripwire/tw.pol A clear-text version of the Tripwire policy file: /etc/tripwire/twpol.txt ~abbreviation~ default values from the current configuration file are used.  | 
					
3.Tripwire Configuration
①Configuration File Edit
| 
					 1 2 3 4 5 6 7 8  | 
						# vi /etc/tripwire/twcfg.txt Line 9 LOOSEDIRECTORYCHECKING =false  Change LOOSEDIRECTORYCHECKING =true Line 12 REPORTLEVEL =3 Change REPORTLEVEL =4  | 
					
②Create a Tripwire configuration file (cryptographically signed version)
| 
					 1 2 3  | 
						# twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt Please enter your site passphrase: ←Enter site passphrase Wrote configuration file: /etc/tripwire/tw.cfg  | 
					
③Delete Tripwire configuration file (text version)
| 
					 1  | 
						# rm -f /etc/tripwire/twcfg.txt  | 
					
④Policy File Settings
| 
					 1 2  | 
						# cd /etc/tripwire/ # vi twpolmake.pl  | 
					
Contents of twpolmake.pl
| 
					 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  | 
						#!/usr/bin/perl $POLFILE=$ARGV[0]; open(POL,"$POLFILE") or die "open error: $POLFILE" ; my($myhost,$thost) ; my($sharp,$tpath,$cond) ; my($INRULE) = 0 ; while (<POL>) { chomp; if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) { $myhost = `hostname` ; chomp($myhost) ; if ($thost ne $myhost) { $_="HOSTNAME=\"$myhost\";" ; } } elsif ( /^{/ ) { $INRULE=1 ; } elsif ( /^}/ ) { $INRULE=0 ; } elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) { $ret = ($sharp =~ s/\#//g) ; if ($tpath eq '/sbin/e2fsadm' ) { $cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ; } if (! -s $tpath) { $_ = "$sharp#$tpath$cond" if ($ret == 0) ; } else { $_ = "$sharp$tpath$cond" ; } } print "$_\n" ; } close(POL) ;  | 
					
⑤Policy File Optimizations
| 
					 1  | 
						# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new  | 
					
⑥Create policy file (cryptographically signed version) based on optimized policy file
| 
					 1 2 3  | 
						# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new Please enter your site passphrase: ←Enter site passphrase Wrote policy file: /etc/tripwire/tw.pol  | 
					
⑦Create database and check operation
| 
					 1 2  | 
						# tripwire -m i -s -c /etc/tripwire/tw.cfg Please enter your local passphrase: ←Enter local passphrase  | 
					
Create test files
| 
					 1  | 
						# echo test > /root/test.txt  | 
					
Check Tripwire operation
| 
					 1  | 
						# tripwire -m c -s -c /etc/tripwire/tw.cfg  | 
					
The following is displayed and test.txt is detected
| 
					 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  | 
						Open Source Tripwire(R) 2.4.3.7 Integrity Check Report Report generated by:          root Report created on:            Sat 21 Oct 2023 01:29:35 PM JST Database last updated on:     Never =============================================================================== Report Summary: =============================================================================== Host name:                    Lepard Host IP address:              192.168.11.83 Host ID:                      None Policy file used:             /etc/tripwire/tw.pol Configuration file used:      /etc/tripwire/tw.cfg Database file used:           /var/lib/tripwire/Lepard.twd Command line used:            tripwire -m c -s -c /etc/tripwire/tw.cfg =============================================================================== Rule Summary: =============================================================================== -------------------------------------------------------------------------------   Section: Unix File System -------------------------------------------------------------------------------   Rule Name                       Severity Level    Added    Removed  Modified   ---------                       --------------    -----    -------  --------   User binaries                   66                0        0        0   Tripwire Binaries               100               0        0        0   Libraries                       66                0        0        0   Operating System Utilities      100               0        0        0   File System and Disk Administraton Programs                                   100               0        0        0   Kernel Administration Programs  100               0        0        0   Networking Programs             100               0        0        0   System Administration Programs  100               0        0        0   Hardware and Device Control Programs                                   100               0        0        0   System Information Programs     100               0        0        0   Application Information Programs                                   100               0        0        0   (/sbin/rtmon)   Critical Utility Sym-Links      100               0        0        0   Shell Binaries                  100               0        0        0   Critical system boot files      100               0        0        0 * Tripwire Data Files             100               1        0        0   System boot changes             100               0        0        0   OS executables and libraries    100               0        0        0   Security Control                100               0        0        0   Login Scripts                   100               0        0        0   Critical configuration files    100               0        0        0 * Root config files               100               1        0        0   Invariant Directories           66                0        0        0   Temporary directories           33                0        0        0   Critical devices                100               0        0        0   (/proc/kcore) Total objects scanned:  52251 Total violations found:  2 =============================================================================== Object Summary: =============================================================================== ------------------------------------------------------------------------------- # Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: Tripwire Data Files (/var/lib/tripwire) Severity Level: 100 ------------------------------------------------------------------------------- Added: "/var/lib/tripwire/Lepard.twd" ------------------------------------------------------------------------------- Rule Name: Root config files (/root) Severity Level: 100 ------------------------------------------------------------------------------- Added: "/root/test.txt" =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report *** Open Source Tripwire 2.4 Portions copyright 2000-2018 Tripwire, Inc.  Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved.  | 
					
Delete test files
| 
					 1  | 
						# rm -f /root/test.txt  | 
					
⑧Tripwire Scheduled Scripts
| 
					 1 2  | 
						# cd /var/www/system # vi tripwire.sh  | 
					
Contents of tripwire.sh
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
						#!/bin/bash PATH=/usr/sbin:/usr/bin:/bin:/usr/local/tripwire/sbin # Passphrase setting  LOCALPASS= ←local passphrase  SITEPASS=  ←site passphrase cd /etc/tripwire # Tripwire check run tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report in `hostname`" root # Policy File Modernization twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt perl twpolmake.pl twpol.txt > twpol.txt.new twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null rm -f twpol.txt* *.bak # Database modernization rm -f /usr/local/tripwire/lib/tripwire/*.twd* tripwire -m i -s -c tw.cfg -P $LOCALPASS  | 
					
⑨Tripwire Autorun Script Execution Settings
| 
					 1  | 
						# chmod 700 tripwire.sh  | 
					
Subscribe to cron and run it periodically
| 
					 1 2  | 
						# crontab -e 0 3 * * * /var/www/system/tripwire.sh  | 
					
Reference: Script for reporting results by e-mail
| 
					 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  | 
						#!/bin/bash PATH=/usr/sbin:/usr/bin:/bin:/usr/local/tripwire/sbin #  Passphrase setting LOCALPASS=xxxxx # local passphrase SITEPASS=xxxxx # site passphrase # Designation of e-mail address to be notified MAIL="<your mailaddress> " cd /etc/tripwire # Tripwire check run tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report in `hostname`" $MAIL # Policy File Modernization twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt perl twpolmake.pl twpol.txt > twpol.txt.new twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null rm -f twpol.txt* *.bak # Database modernization rm -f /usr/local/tripwire/lib/tripwire/*.twd* tripwire -m i -s -c tw.cfg -P $LOCALPASS  | 
					
Execute the following command to confirm that the mail has been received
| 
					 1  | 
						# /var/www/system/tripwire.sh  | 
					
