したがって、「10.1」で始まるIPアドレス以外の場所でログインしている場合は、電子メールを送信するスクリプトがあります。
#!/usr/bin/python
import smtplib, os
server = "10.10.10.10"
From = "[email protected]"
to = ["[email protected]"] # must be a list
subject = "SSH Login from outside network"
ip = os.environ['SSH_CONNECTION'].split()[0]
user = os.environ['USER']
if '10.1.' in ip:
print "---SSH IP Check---"
print 'Inside address, no alert will be sent.'
exit(0)
text = user + " just logged in from " + ip
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (From, ", ".join(to), subject, text)
# Send the mail
server = smtplib.SMTP(server)
server.sendmail(From, to, message)
server.quit()
これを/root/.bashrcの.bashrcに追加し、rootとしてこのリモートサーバーにログインすると、$ SSH_CONNECTION変数を確認し、10.1で始まらない場合はEメールを送信します。
しかし、誰かがユーザーとしてログインするとどうなりますか?それとも別のユーザー名ですか?私はもともとbashスクリプトだと思った/etc/ssh/sshrcファイルを持っていました(最初の行には#!/ bin / shはありませんでしたが)、うまくいきましたが、IPをチェックしたいと思いました。 this Pythonのbashでは、二重[[かっこが好きではありません。私はちょうどsendmailにパイプします。
その場合、質問はSSHログインでこのスクリプトを実行する方法です。 sshrcファイルを引き続き使用する必要がありますか?
sshrcファイルをこのPythonスクリプトに置き換えようとしましたが、ログインすると次の結果が表示されます。
/etc/ssh/sshrc: 3: /etc/ssh/sshrc: import: not found
/etc/ssh/sshrc: 5: /etc/ssh/sshrc: server: not found
/etc/ssh/sshrc: 6: /etc/ssh/sshrc: From: not found
/etc/ssh/sshrc: 7: /etc/ssh/sshrc: to: not found
/etc/ssh/sshrc: 8: /etc/ssh/sshrc: subject: not found
/etc/ssh/sshrc: 10: /etc/ssh/sshrc: Syntax error: "(" unexpected
ベストアンサー1
ログインセッションを開くと、このスクリプトをトリガーできます。
パムスクリプト認証、パスワードの変更、セッションのオープン、またはクローズ中にPAMスタックでスクリプトを実行できるPAMモジュール。
DebianベースのLinuxディストリビューションはソフトウェアパッケージとして提供されていますlibpam-script
。 Fedoraではこのパッケージを簡単にpam-script
。
pam-scriptは次のスクリプトをトリガーできます。
pam_script_auth
- 認証時に実行pam_script_acct
- アカウント管理中に呼び出されましたpam_script_passwd
- パスワード変更時に呼び出されます。pam_script_ses_open
- セッションが開かれると呼び出されます。pam_script_ses_close
- セッションが終了すると呼び出されます。
セッションが開かれたときにスクリプトを実行するには、次の場所に追加します/etc/pam.d/common-session
。
# Attempt to run pam_script_ses_open and pam_script_ses_close.
# Report success even if script is not found.
session optional pam_script.so onerr=success
Debian では、pam-script はデフォルトで実行されます/usr/share/libpam-script/pam_script_ses_open
。スクリプトの場所はoptionsを使用して設定できますdir=/path/to/scripts/
。
pam-scriptを使用すると、bashスクリプトからリモートホストのIPアドレスに簡単にアクセスできます。各スクリプトには、次の環境変数が渡されます(すべて存在するが該当しない場合は、一部は空になる可能性があります)。
PAM_SERVICE
- PAMスタックを呼び出すアプリケーションPAM_TYPE
- モジュールタイプ(例:認証、アカウント、セッション、パスワード)PAM_USER
- 認証中のユーザーPAM_RUSER
- リモートユーザー、アプリケーションを呼び出すユーザーPAM_RHOST
- リモートホストPAM_TTY
- tty制御PAM_AUTHTOK
- 読めるテキストのパスワード