obrisane nepotrebne datoteke od zadnjeg builda
[ossec-hids.git] / contrib / util.sh
1 #!/bin/sh
2 # Simple utilities
3 # Add a new file
4 # Add a new remote host to be monitored via lynx
5 # Add a new remote host to be monitored (DNS)
6 # Add a new command to be monitored
7 # by Daniel B. Cid - dcid ( at ) ossec.net
8
9 ACTION=$1
10 FILE=$2
11 FORMAT=$3
12
13 if ! [ -e /etc/ossec-init.conf ]; then
14     echo OSSEC Manager not found. Exiting...
15     exit 1
16 fi
17
18 . /etc/ossec-init.conf
19
20 if [ "X$FILE" = "X" ]; then
21     echo "$0: addfile <filename> [<format>]"
22     echo "$0: addsite <domain>"
23     echo "$0: adddns  <domain>"
24     #echo "$0: addcommand <command>"
25     echo ""
26     #echo "Example: $0 addcommand 'netstat -tan |grep LISTEN| grep -v 127.0.0.1'"
27     echo "Example: $0 adddns ossec.net"
28     echo "Example: $0 addsite dcid.me"
29     exit 1;
30 fi
31
32 if [ "X$FORMAT" = "X" ]; then
33     FORMAT="syslog"
34 fi
35
36 # Adding a new file
37 if [ $ACTION = "addfile" ]; then
38     # Checking if file is already configured
39     grep "$FILE" ${DIRECTORY}/etc/ossec.conf > /dev/null 2>&1
40     if [ $? = 0 ]; then
41         echo "$0: File $FILE already configured at ossec."
42         exit 1;
43     fi
44
45     # Checking if file exist
46     ls -la $FILE > /dev/null 2>&1
47     if [ ! $? = 0 ]; then
48         echo "$0: File $FILE does not exist."
49         exit 1;
50     fi     
51     
52     echo "
53     <ossec_config>
54       <localfile>
55       <log_format>$FORMAT</log_format>
56       <location>$FILE</location>
57      </localfile>
58    </ossec_config>  
59    " >> ${DIRECTORY}/etc/ossec.conf
60
61    echo "$0: File $FILE added.";
62    exit 0;            
63 fi
64
65
66 # Adding a new DNS check
67 if [ $ACTION = "adddns" ]; then
68    COMMAND="host -W 5 -t NS $FILE; host -W 5 -t A $FILE | sort"
69    echo $FILE | grep -E '^[a-z0-9A-Z.-]+$' >/dev/null 2>&1
70    if [ $? = 1 ]; then
71       echo "$0: Invalid domain: $FILE"
72       exit 1;
73    fi
74
75    grep "host -W 5 -t NS $FILE" ${DIRECTORY}/etc/ossec.conf >/dev/null 2>&1
76    if [ $? = 0 ]; then
77        echo "$0: Already configured for $FILE"
78        exit 1;
79    fi
80
81    MYERR=0
82    echo "
83    <ossec_config>
84    <localfile>
85      <log_format>full_command</log_format>
86      <command>$COMMAND</command>
87    </localfile>
88    </ossec_config>
89    " >> ${DIRECTORY}/etc/ossec.conf || MYERR=1;
90
91    if [ $MYERR = 1 ]; then
92        echo "$0: Unable to modify the configuration file."; 
93        exit 1;
94    fi
95
96    FIRSTRULE="150010"
97    while [ 1 ]; do
98        grep "\"$FIRSTRULE\"" ${DIRECTORY}/rules/local_rules.xml > /dev/null 2>&1
99        if [ $? = 0 ]; then
100            FIRSTRULE=`expr $FIRSTRULE + 1`
101        else
102            break;
103        fi
104    done
105
106
107    echo "
108    <group name=\"local,dnschanges,\">
109    <rule id=\"$FIRSTRULE\" level=\"0\">
110      <if_sid>530</if_sid>
111      <check_diff />
112      <match>^ossec: output: 'host -W 5 -t NS $FILE</match>
113      <description>DNS Changed for $FILE</description>
114    </rule>
115    </group>
116    " >> ${DIRECTORY}/rules/local_rules.xml || MYERR=1;
117
118    if [ $MYERR = 1 ]; then
119        echo "$0: Unable to modify the local rules file.";
120        exit 1;
121    fi
122
123    echo "Domain $FILE added to be monitored."
124    exit 0;
125 fi
126
127
128 # Adding a new lynx check
129 if [ $ACTION = "addsite" ]; then
130    COMMAND="lynx --connect_timeout 10 --dump $FILE | head -n 10"
131    echo $FILE | grep -E '^[a-z0-9A-Z.-]+$' >/dev/null 2>&1
132    if [ $? = 1 ]; then
133       echo "$0: Invalid domain: $FILE"
134       exit 1;
135    fi
136
137    grep "lynx --connect_timeout 10 --dump $FILE" ${DIRECTORY}/etc/ossec.conf >/dev/null 2>&1
138    if [ $? = 0 ]; then
139        echo "$0: Already configured for $FILE"
140        exit 1;
141    fi
142
143    MYERR=0
144    echo "
145    <ossec_config>
146    <localfile>
147      <log_format>full_command</log_format>
148      <command>$COMMAND</command>
149    </localfile>
150    </ossec_config>
151    " >> ${DIRECTORY}/etc/ossec.conf || MYERR=1;
152
153    if [ $MYERR = 1 ]; then
154        echo "$0: Unable to modify the configuration file."; 
155        exit 1;
156    fi
157
158    FIRSTRULE="150010"
159    while [ 1 ]; do
160        grep "\"$FIRSTRULE\"" ${DIRECTORY}/rules/local_rules.xml > /dev/null 2>&1
161        if [ $? = 0 ]; then
162            FIRSTRULE=`expr $FIRSTRULE + 1`
163        else
164            break;
165        fi
166    done
167
168
169    echo "
170    <group name=\"local,sitechange,\">
171    <rule id=\"$FIRSTRULE\" level=\"0\">
172      <if_sid>530</if_sid>
173      <check_diff />
174      <match>^ossec: output: 'lynx --connect_timeout 10 --dump $FILE</match>
175      <description>DNS Changed for $FILE</description>
176    </rule>
177    </group>
178    " >> ${DIRECTORY}/rules/local_rules.xml || MYERR=1;
179
180    if [ $MYERR = 1 ]; then
181        echo "$0: Unable to modify the local rules file.";
182        exit 1;
183    fi
184
185    echo "Domain $FILE added to be monitored."
186    exit 0;
187 fi
188
189