外部IPアドレスに対するSSH警告

外部IPアドレスに対するSSH警告

したがって、「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- 読めるテキストのパスワード

おすすめ記事