web-dev-qa-db-ja.com

LibreSwanVPNにログインしているユーザーを確認する

最近、LibreSwan VPNをセットアップしましたが、ほとんどの場合、うまく機能しています。私たちが問題を抱えていることの1つは、現在ログインしているユーザーを確認することです。アクティブなソリューションの数を確認するためのソリューションを https://lists.openswan.org/pipermail/users/2011-)で見つけました。 January/020042.html ただし、セッションにログインしているユーザーを実際に確認するためのものではありません(grepを削除すると、接続されているIPを含む多くの詳細が表示されますが、実際のユーザー名は表示されません)。

私の現在の考えは、接続の/ var/log/messagesをgrepし、切断メッセージが付随していないものを報告することです。 PPPDは、すべてにPIDのタグを付けるのに十分なほど優れているため、多少簡単ですが、もっと良い方法があることを望んでいました。

1
Nathan

他の誰かがこれに遭遇した場合に備えて、これが私が使用することになったスクリプトです。/var/log/messagesでログインメッセージを検索し、pppdがPIDをまだ使用しているかどうかを確認します。ユーザー名とログイン時刻のみを出力します。

#!/bin/bash
# Process each log in message
grep "logged in" /var/log/messages | grep pppd | while read -r line ; do
    #echo "$line"  # Useful for debugging
    # Extract the PID
    pid=$(echo $line | cut -d "[" -f2 | cut -d "]" -f1)
    user=$(echo $line | grep -o -P '(?<=user ).*(?= logged)')
    #echo $pid  # Useful for debugging
    # See if the PID is still in use
    ps aux | grep pppd | grep $pid  > /dev/null
    disconnectCheck=$?
    # If it is in use report the user who logged in as active
    if [[ $disconnectCheck -eq 0 ]] ; then
        echo "$user logged in at ${line:0:15}"
    fi
done
3
Nathan

これを/etc/ppp/options.xl2tpdに追加しました:

plugin /usr/lib64/pptpd/pptpd-logwtmp.so

(私のサーバーにもPPTPDがインストールされていますが、無効になっています。)

それが整ったら、私は次のことができます。

last | grep ppp | grep "still logged in"

唯一の欠点は、pptpセッションとは異なり、接続しているクライアントのIPアドレスを記録しないことです。

0
Soruk