Ek soek hulp met 'n Linux-bediener (CentOS) gids of skrif wat gebruik kan word om 'n e-pos na 'n bedienerrekening te stuur wanneer 'n nuwe SFTP-verbinding bespeur word. Gee byvoorbeeld die verbindingsnaam en die versoekende IP-adres sowel as verbindingstawingtipe (indien moontlik) (soos SSH-sleutel of 'n wagwoord, ens.) .

Ek het byna geen ondervinding met Bash-skrifte nie, maar ek het presies dit suksesvol gemaak wat SSH-verbindings opspoor; ek kan egter nie uitvind waarheen om dit uit te brei om ook die e-posadres van SFTP-verbindings aan die bediener in kennis te stel nie,

Baie dankie vir enige hulp hieroor.

I do realise this is pretty crappy question and I apologise, but search engine results are giving me lots of false results such as "how do I SFTP to my server?!" etc. which are clearly inappropriate.

Cheers


Opdatering 1

So die /var/logs/secureversamel die SFTP-verbinding inligting. Ek wil graag daardie inligting op een of ander manier kan gryp en dit in 'n basiese e-pos uitgooi.

My huidige werkende SSH-detektor doen dit in .bashrc:

echo -e 'ALERT - SSH access detected:' `date` `ls -l \`tty\` | awk '{print $3}'` '\n\nConnection Details: ' `w -h` '\n\nList of WHO: ' `who --login` | mail -s "Alert: Server Access Email Subject" [email protected]

Dit word genoem, geaktiveer deur CSF (ConfigServerFirewall)

Ek wil op een of ander manier die twee hierbo kombineer sodat wanneer 'n inligtingreël by die /var/log/securesoos gevoeg word , soos met:

Subsystem       sftp    /usr/libexec/openssh/sftp-server -l INFO

Dan sal dit ook die lynbegin kan opspoor:

Accepted publickey for ....

Dat hierdie reël dan in 'n e-pos gegooi kan word na die e-pos adres....


Opdatering 2:

Ek moet dalk my eie Bash shim skryf ....


Opdatering 3:

Dankie aan Piotr, my kode vir my shim is nou:

#!/bin/bash
# Create a temporary log file
LOGFILE=$(/bin/mktemp /tmp/sftplog.XXXXXX)
# Redirect stderr to LOGFILE
exec 2>"$LOGFILE"

# Run the SFTP with logging to stderr
/usr/libexec/openssh/sftp-server -e -u 022 -l VERBOSE

# Use some sendmail substitute to send an e-mail
/usr/sbin/sendmail -i [email protected] <<EOF
From: [email protected]
To: [email protected]
Subject: SFTP connection for user $(LOGNAME)

Hello,
User $(LOGNAME) just connected to the SFTP server from $(SSH_CONNECTION).

Connection log:
$(<"$LOGFILE")
EOF

# echo -e "Hello,\nUser $(LOGNAME) just connected to the SFTP server from $(SSH_CONNECTION).\n\nConnection log:\n$(<"$LOGFILE")" | mail -s "SFTP connection for user $(LOGNAME)" [email protected]

# Delete the log
rm -f "$LOGFILE"

Ek het die sendmail-instruksie vanaf die opdragreël uitgevoer en dit werk korrek, maar nuwe SFTP-verbindings lei tot EOF terwyl pakket gelees word .


Opdatering 4

Verminder die skrif na:

#!/bin/bash
# Create a temporary log file

# Run the SFTP with logging to stderr
/usr/libexec/openssh/sftp-server -e -u 022 -l INFO
exec >/dev/null

Gee steeds die EOF terug terwyl die pakketkwessie gelees word wanneer dit verbind word.


Opdatering 5:

Deur die lêertoestemmings te stel om identies te wees aan die toestemmings van die oorspronklike substelsellêer ( /usr/libexec/openssh/sftp-server), los die probleem op en die skrip loop korrek.

answer

Die lekker ding van ssh- substelsels is dat jy die verstekimplementering ( intern-sftp soos Martin opgemerk het) kan vervang met 'n ander implementering, bv. 'n wrapper script rondom /usr/lib/openssh/sftp-server.

'n Klein voorbeeld: skep 'n lêer /usr/local/bin/sftp-loggermet inhoud:

#!/bin/bash
# Create a temporary log file
LOGFILE=$(/bin/mktemp /tmp/sftplog.XXXXXX)
# Redirect stderr to LOGFILE
exec 2>$LOGFILE

# Run the SFTP with logging to stderr
/usr/lib/openssh/sftp-server -e -l INFO

# In case of chatty sendmail
exec >/dev/null

# Use some sendmail substitute to send an e-mail
/usr/sbin/sendmail -i [email protected] <<EOF
From: [email protected]
To: [email protected]
Subject: SFTP connection for user $LOGNAME

Hello,
User $LOGNAME just connected to the SFTP server from $SSH_CONNECTION.

Connection log:
$(<$LOGFILE)
EOF

# Delete the log
rm -f $LOGFILE

Dan moet jy net die verstek SFTP-bediener vervang met jou skrip in /etc/ssh/sshd_config:

Subsystem sftp /usr/local/bin/sftp-logger