comment out files in twpol.txt that are not found ------------------ #!/bin/sh TWPOL_FILE=twpol.txt FILES=`awk '/(^\t*\/.*->)|(^ *\/.*->)/ {print FNR ":" $1}' $TWPOL_FILE` for file in $FILES ; do file_path=`echo $file |sed 's/^[0-9]\+:\(.*\)/\1/g'` if [ -e $file_path ]; then OK=GOOD else line_number=`echo $file |sed 's/^\([0-9]\+\):.*/\1/g'` echo "$file_path does not exist at line number: $line_number" echo "Commenting out..." sed -ie "$line_number s/^/#/g" $TWPOL_FILE fi; done; ----------------------------- find all binary / shared object/ ELF files ------------------------------ #!/bin/sh TWPOL_FILE=twpol.txt FIND_B=`find / -type f -print |xargs file 2>/dev/null |grep ELF |sed "s/:\s.*//g"` FILES=`awk '/(^\t*\/.*->)|(^ *\/.*->)/ {print $0}' $TWPOL_FILE |sed 's/->$//g;s/\s*\t*//g'` E_FILES=`sed -n -e '/!/p' tw.txt |sed 's/[!\t*\s*;]//g'` for f in $FILES; do file_name=`echo $f |sed 's/\(\/.*\)->.*/\1/g'` if [ `echo $f |sed -n -e '/(.*recurse\s*=\s*true.*)/p'` ]; then FIND_B=`echo "$FIND_B\n" |grep -v "^$file_name" |sed 's/\\\n//g'` echo "$file_name is recursive remove _all_ entries"; else FIND_B=`echo "$FIND_B\n" |grep -vx "^$file_name" |sed 's/\\\n//g'` echo "$file_name is not recursive only removing entries with this exact line" fi; done; for e in $E_FILES; do if [ -d $e ]; then FIND_B=`echo "$FIND_B\n" |grep -v "^$e" |sed 's/\\\n//g'` echo "$e is directory and is excluded in $TWPOL_FILE, remove all entries" else FIND_B=`echo "$FIND_B\n" |grep -vx "^$e" |sed 's/\\\n//g'` echo "$e is not a directory but is excluded, only remove specific entries" fi; done; TW_ADDITIONS='( rulename = "Other binaries", severity = $(SIG_MED) ) {'; for i in $FIND_B; do TW_ADDITIONS="$TW_ADDITIONS $i -> \$(SEC_BIN) ;"; done; TW_ADDITIONS="$TW_ADDITIONS }"; echo "$TW_ADDITIONS" >> $TWPOL_FILE; --------------------------- find all web files --------------------------- #!/bin/sh TWPOL_FILE=twpol.txt FIND_B=`find / -type f -regex ".*\.\(php\|inc\|html\|htm\|cgi\|pl\|asp\|jsp\)$"` FILES=`awk '/(^\t*\/.*->)|(^ *\/.*->)/ {print $0}' $TWPOL_FILE |sed 's/->$//g;s/\s*\t*//g'` E_FILES=`sed -n -e '/!/p' $TWPOL_FILE |sed 's/[!\t* *;]//g'` for f in $FILES; do file_name=`echo $f |sed 's/\(\/.*\)->.*/\1/g'` if [ `echo $f |sed -n -e '/(.*recurse\s*=\s*true.*)/p'` ]; then FIND_B=`echo "$FIND_B\n" |grep -v "^$file_name" |sed 's/\\\n//g'` echo "$file_name is recursive remove _all_ entries"; else FIND_B=`echo "$FIND_B\n" |grep -vx "^$file_name" |sed 's/\\\n//g'` echo "$file_name is not recursive only removing entries with this exact line" fi; done; for e in $E_FILES; do if [ -d $e ]; then FIND_B=`echo "$FIND_B\n" |grep -v "^$e" |sed 's/\\\n//g'` echo "$e is directory and is excluded in $TWPOL_FILE, remove all entries" else FIND_B=`echo "$FIND_B\n" |grep -vx "^$e" |sed 's/\\\n//g'` echo "$e is not a directory but is excluded, only remove specific entries" fi; done; TW_ADDITIONS='( rulename = "Misc. Web Files", severity = $(SIG_MED) ) {'; for i in $FIND_B; do TW_ADDITIONS="$TW_ADDITIONS $i -> \$(SEC_BIN) ;"; done; TW_ADDITIONS="$TW_ADDITIONS }"; echo "$TW_ADDITIONS" >> $TWPOL_FILE;