我不想让很多用户使用单一用户名和密码登录到linux的PPTP服务器。 这有什么解决方案吗?
答案 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以满足您的需求