Hallo zusammen, ich verwende eine externe SATA Platte, die komplett mit luksOpen verschlüsselt ist für unregelmäßige Backups. Dazu verwende ich ein angepasstes Script, welches ich hier gefunden habe.
In Bezug auf Ransomware frage ich mich nun, wie ich denn erkennen kann, ob lange unbenutzte Dateien betroffen sind?
Kann ich mir eine Liste ausgeben lassen, in der veränderte Dateien gelistet werden? Oder wie könnte man es noch lösen?
Danke schonmal, Chris...
P.S.: hier mein (leicht anonymisiertes) Script:
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 | #!/bin/bash # Simple backup with rsync # local-mode, tossh-mode, fromssh-mode #SOURCES=(/root /etc /home /boot ) SOURCES=(/home ...und noch mehr ...) TARGET="/media/BackupCrypt1500G/.backup" # edit or comment with "#" LISTPACKAGES=listdebianpackages # local-mode and tossh-mode MONTHROTATE=monthrotate # use DD instead of YYMMDD #RSYNCCONF=(--delete --checksum) #RSYNCCONF=(--checksum) RSYNCCONF=(--delete --checksum --human-readable) MOUNTPOINT="/media/BackupCrypt1500G" # check local mountpoint MAILREC="bla@abc.de" #SSHUSER="sshuser" #FROMSSH="fromssh-server" #TOSSH="tossh-server" SSHPORT=22 ### do not edit ### MOUNT="/bin/mount" FGREP="/bin/fgrep" SSH="/usr/bin/ssh" LN="/bin/ln" ECHO="/bin/echo" DATE="/bin/date" RM="/bin/rm" DPKG="/usr/bin/dpkg" AWK="/usr/bin/awk" MAIL="/usr/bin/mail" CUT="/usr/bin/cut" TR="/usr/bin/tr" RSYNC="/usr/bin/rsync" LAST="last" INC="--link-dest=$TARGET/$LAST" ERROR=0 EXCLUDE="--exclude /var/lib/lxcfs" $ECHO "${DATE}: Starte Backup..." LOG=/tmp/makeownbackup_$(date +%Y-%m-%d_%H-%M-%S) if [ "${TARGET:${#TARGET}-1:1}" != "/" ]; then TARGET=$TARGET/ fi if [ "$LISTPACKAGES" ] && [ -z "$FROMSSH" ]; then $ECHO "${DATE}: Erstelle installierte Pakete" $ECHO "$DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 | $TR '\n' ' '" >> $LOG.txt $DPKG --get-selections | $AWK '!/deinstall|purge|hold/'|$CUT -f1 |$TR '\n' ' ' >> ${LOG}_debs.txt 2>&1 fi if [ "$MOUNTPOINT" ]; then MOUNTED=$($MOUNT | $FGREP "$MOUNTPOINT"); fi if [ -z "$MOUNTPOINT" ] || [ "$MOUNTED" ]; then if [ -z "$MONTHROTATE" ]; then TODAY=$($DATE +%y%m%d) else TODAY=$($DATE +%d) fi if [ "$SSHUSER" ] && [ "$SSHPORT" ]; then S="$SSH -p $SSHPORT -l $SSHUSER"; fi for SOURCE in "${SOURCES[@]}"; do if [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ]; then $ECHO "${DATE}: Sichere \"$SOURCE\"" $ECHO "${DATE}: $RSYNC -e \"$S\" -avR $EXCLUDE \"$FROMSSH:$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG.txt $RSYNC -e "$S" -avR $EXCLUDE "$FROMSSH:\"$SOURCE\"" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> ${LOG}_rsync.txt 2>&1 if [ $? -ne 0 ]; then ERROR=$[ERROR+1] fi fi if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then $ECHO "${DATE}: Sichere \"$S\"" $ECHO "${DATE}: $RSYNC -e \"$S\" -avR $EXCLUDE \"$SOURCE\" ${RSYNCCONF[@]} \"$TOSSH:$TARGET$TODAY\" $INC " >> $LOG.txt $RSYNC -e "$S" -avR $EXCLUDE "$SOURCE" "${RSYNCCONF[@]}" "$TOSSH:\"$TARGET\"$TODAY" $INC >> ${LOG}_rsync.txt 2>&1 if [ $? -ne 0 ]; then ERROR=$[ERROR+2] fi fi if [ -z "$S" ]; then $ECHO "${DATE}: Sichere \"$SOURCE\"" $ECHO "${DATE}: $RSYNC -avR $EXCLUDE \"$SOURCE\" ${RSYNCCONF[@]} $TARGET$TODAY $INC" >> $LOG.txt $RSYNC -avR $EXCLUDE "$SOURCE" "${RSYNCCONF[@]}" "$TARGET"$TODAY $INC >> ${LOG}_rsync.txt 2>&1 if [ $? -ne 0 ]; then ERROR=$[ERROR+4] fi fi done if [ "$S" ] && [ "$TOSSH" ] && [ -z "$FROMSSH" ]; then $ECHO "${DATE}: $SSH -p $SSHPORT -l $SSHUSER $TOSSH $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG.txt $SSH -p $SSHPORT -l $SSHUSER $TOSSH "$LN -nsf \"$TARGET\"$TODAY \"$TARGET\"$LAST" >> ${LOG}_rsync.txt 2>&1 if [ $? -ne 0 ]; then ERROR=$[ERROR+8] fi fi if ( [ "$S" ] && [ "$FROMSSH" ] && [ -z "$TOSSH" ] ) || ( [ -z "$S" ] ); then $ECHO "${DATE}: $LN -nsf $TARGET$TODAY $TARGET$LAST" >> $LOG.txt $LN -nsf "$TARGET"$TODAY "$TARGET"$LAST >> ${LOG}_hardlinks.txt 2>&1 if [ $? -ne 0 ]; then ERROR=$[ERROR+16] fi fi else $ECHO "${DATE}: $MOUNTPOINT not mounted" $ECHO "${DATE}: $MOUNTPOINT not mounted" >> $LOG.txt ERROR=$[ERROR+32] fi $DATE >> $LOG.txt #todos $LOG.txt zip -9 ${LOG} $LOG.txt || ERROR=$[ERROR+64] mkdir $TARGET/$LAST/.tmp_Backup_logs/ || ERROR=$[ERROR+128] cp ${LOG}* $TARGET/$LAST/.tmp_Backup_logs/ || ERROR=$[ERROR+256] if [ -n "$MAILREC" ]; then $ECHO "${DATE}: Erzeuge Befehlszeile für Mailanhang:" ATTACH="" for logfile in ${LOG}*;do if [ -f $logfile ];then if [ "$(ls -l $logfile | awk '{ print $5 }')" == "0" ];then $ECHO "${DATE}: Lösche $logfile da kein Inhalt" $ECHO "${DATE}: $logfile gelöscht da kein Inhalt" >> $LOG.txt rm $logfile else if [ "${logfile}" == "${LOG}.txt" ];then $ECHO "${DATE}: Hänge $logfile nicht an Mail an da Dateigröße zu groß" $ECHO "${DATE}: Hänge $logfile nicht an Mail an da Dateigröße zu groß" >> $LOG.txt else $ECHO "${DATE}: Hänge $logfile an Mail an" $ECHO "${DATE}: Hänge $logfile an Mail an" >> $LOG.txt ATTACH="${ATTACH} -a ${logfile}" fi fi fi done $ECHO "Befelszeile: \"${ATTACH}\"" if [ $ERROR -ne 0 ];then $ECHO "${DATE}: ${MAIL}${ATTACH} -s \"Fehler ${ERROR} beim Backup\" $MAILREC" $ECHO "${DATE}: ${MAIL}${ATTACH} -s \"Fehler ${ERROR} beim Backup\" $MAILREC" >> $LOG.txt $MAIL $ATTACH -s "Fehler ${ERROR} beim Backup" $MAILREC < $LOG.txt || $MAIL -s "Fehler ${ERROR} beim Backup" $MAILREC <<< "Log zu lang" else $ECHO "${DATE}: ${MAIL}${ATTACH} -s \"Backup Erfolgreich\" $MAILREC" $ECHO "${DATE}: ${MAIL}${ATTACH} -s \"Backup Erfolgreich\" $MAILREC" >> $LOG.txt $MAIL $ATTACH -s "Backup Erfolgreich" $MAILREC < $LOG.txt || $MAIL -s "Backup Erfolgreich" $MAILREC <<< "Log zu lang" fi fi $ECHO "${DATE}: Backup fertig!" cp ${LOG}* $TARGET/$LAST/.tmp_Backup_logs/ || ERROR=$[ERROR+256] rm ${LOG}* exit 0 |