如何在Linux上启用(禁用)PPTP多重登录(同一帐户)?

时间:2010-12-09 09:50:40

标签: linux vpn

我不想让很多用户使用单一用户名和密码登录到linux的PPTP服务器。 这有什么解决方案吗?

3 个答案:

答案 0 :(得分:5)

在Linux中默认启用PPTP多重登录。 要禁用多重登录,我只需将下一行添加到/ etc / ppp / ip-up

# disconnect new PPTP connection if user already connected
sleep 2
PID=$(cat /var/run/$PPP_IFACE.pid)
if [ $PID ]; then
    PROCCESS="$(last -w | grep ppp | grep still | grep $PPP_IFACE)"
    USERNAME=$(echo $PROCCESS | cut -d' ' -f1)
    NUMLOGINS="$(last -w | grep ppp | grep still | grep -c $USERNAME' ')"
    if [ $NUMLOGINS -gt 1 ]; then
        kill $PID
    fi
fi

如果用户已登录,此部分只会断开任何新连接。 在我的Ubuntu 9.04上为我工作正常

答案 1 :(得分:1)

我自己从未使用过pptpd,但是它的文档说它只使用了底层的pppd。

可以使用/etc/pam.d/ppp通过pam配置pppd。

一个PAM模块是pam_listfile(8)(至少在我的Ubuntu 10.04机器上可用),可以配置为拒绝用户名在特定文件中列出的用户:

   Classic ´ftpusers´ authentication can be implemented with this entry in /etc/pam.d/ftpd:

       #
       # deny ftp-access to users listed in the /etc/ftpusers file
       #
       auth    required       pam_listfile.so \
               onerr=succeed item=user sense=deny file=/etc/ftpusers

您可以为您的网站修改此内容;通过在成功登录后将名称附加到文件并在注销时删除名称,可能会使为同一用户帐户创建两个连接变得非常困难。

当然,这将非常脆弱 - 连接断开需要删除其线路,路由器重新启动可能会同时骚扰数百或数千个用户。我可能会建议在用户抱怨时截断整个文件,并希望避免严重滥用您的系统。 (并且需要仔细编写删除用户名的程序以避免比赛;您可以使用lockfile(1)dotlockfile(1)来帮助您。)

也许某些定期审核会是另一种选择:您可以偶尔查看wutmp文件(请参阅w(1)lastlog(8))或处理列表(ps auxw很好)并查看如果人们滥用它,并将其作为政策问题处理,而不是软件执行问题。

希望这有帮助。

答案 2 :(得分:0)

目前暂时适用于Centos 7.6。

#!/bin/bash
MAXLOGIN=2
# useful vars
#$DEVICE $IFNAME $PPPD_PID $MYPID $PEERNAME $_
#
LOGINS=`last -w $PEERNAME|grep ppp|grep still|wc -l`
if [ $LOGINS -gt $MAXLOGIN ]
    then
    echo `date` "too many logins of $LOGINS for $PEERNAME on $IFNAME pid $PPPD_PID" >>/tmp/mtg-pptp.log
    kill $PPPD_PID
    fi

编辑MAXLOGIN以满足您的需求