Frage

Ich habe Probleme mit meinem Server, da die Malwares manchmal ihren Code am Ende oder Beginn der Dateien hinzufügen. Ich habe die Sicherheitslücken in meinem Wissen festgelegt. Mein Hosting -Anbieter hat darüber informiert, dass die Sicherheit jetzt angemessen ist, aber ich bin mit der Virus-/Malware -Aktivität auf meiner Website paranoid geworden. Ich habe einen Plan, aber ich bin nicht gut mit Linux -Editoren wie SED oder AWK oder Gawk vertraut, also helfe ich von deiner Seite von der Seite. Ich kann dies mit meinem PHP -Wissen tun, aber das wäre sehr ressourcenintensiv.

Da Malwares/Virus zu Beginn oder am Ende der Datei Code hinzufügen (damit die Website keinen Fehler anzeigt), können Sie mir bitte wissen, wie Sie einen Befehl schreiben, der rekursiv alle .PHP -Dateien untersucht (ich werde verwenden Die Hilfe, um Änderungen in anderen Art von Dateien vorzunehmen) in übergeordneten und allen Unterdirektorien und ein bestimmtes Tag zu Start und Ende der Datei hinzuzufügen, z. B. xxxxxx_start und jyyyy_end.

Dann brauche ich ein Skript, das alle .php -Dateien lesen und prüft, ob die erste Zeile des Codes xxxxx_start ist und die letzte Zeile ist yyyyyyy_end und erstellt einen Bericht, wenn eine Datei als unterschiedlich befunden wird.

Ich werde einen Cron einrichten, um alle Dateien zu überprüfen und den Bericht an mich zu senden, wenn eine Diskrepanz gefunden wird.

Ich weiß, dass dies nicht zu 100% narrensicher ist, da das Virus die Daten nach den kommentierten Zeilen hinzufügen kann, aber dies ist die beste Option, die ich mir vorstellen kann.


Ich habe die folgenden Befehle ausprobiert, um Daten am Start hinzuzufügen -

sed -i -r  '1i add here' *.txt

Dies ist jedoch nicht rekursiv und fügt nur den übergeordneten Verzeichnisdateien eine Zeile hinzu.

Dann fand ich das - begin und Ende sind spezielle Muster. Sie werden nicht verwendet, um Eingabedatensätze abzustimmen. Sie werden vielmehr zur Bereitstellung von Start- oder Reinigungsinformationen an Ihr awk-Skript verwendet. Eine Beginnregel wird einmal ausgeführt, bevor der erste Eingabeinsatz gelesen wurde. Eine Endregel wird einmal ausgeführt, nachdem alle Eingaben gelesen wurden. Zum Beispiel:

awk 'BEGIN { print "Analysis of `foo'" }
     /foo/ { ++foobar }
     END   { print "`foo' appears " foobar " times." }' BBS-list

Aber leider konnte ich nichts entziffern.

Jede Hilfe bei oben genannten Details wird sehr geschätzt. Alle anderen Vorschläge sind begrüßt.

Grüße,

Nitin

War es hilfreich?

Lösung

Sie können Folgendes verwenden, um die Dateien zu ändern (erstellt auch Sicherungsdateien mit dem Namen .bak):

find . -name "*.php" | xargs sed -i.bak '1iSTART_XXXX
$aEND_YYYY'

Sie können das folgende Shell -Skript verwenden, um die Dateien zu überprüfen:

for f in `find . -name "*.php" -print`
do
    START_LINE=`head -1 $f`
    END_LINE=`tail -1 $f`

    if [[ $START_LINE != "START_XXXX" ]]
    then
        echo "$f: Mismatched header!"
    fi

    if [[ $END_LINE != "END_YYYY" ]]
    then
        echo "$f: Mismatched footer!"
    fi
done

Andere Tipps

Verwenden Sie Versionskontrolle und/oder Sicherungen; Im Falle einer verdächtigen Aktivität zap die Live -Site und installieren Sie sie von Backups oder Ihrer Versionskontrollquelle neu.

$ find . -type f | grep "txt$" | xargs sed -i -r  '1i add here'

Wendet diesen Befehl auf alle Dateien in oder unter dem aktuellen Verzeichnis an. Sie könnten wahrscheinlich die Grep -Logik in den Fund falten, aber ich mag einfache Beschwörungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top