Использование pam только для авторизации, без аутентификации
Привет там,
У меня здесь ситуация, которую я не могу разрешить. Я установил pptp соединение между двумя компьютерами. Один действует как сервер, другой как клиент.
Соединение сделано мое призвание
pon my_vpn
где my_vpn - это файл в /etc/ppp/peers, состоящий из.
pty "pptp 192.168.12.1 --nolaunchpppd"
name virtual_1
remotename my_vpn
require-mppe-128
file /etc/ppp/options.pptp
ipparam my_vpn
Это создает соединение между сервером и клиентом и инициирует интерфейсы ppp.
Следуя инструкциям, я настроил файл chap_secrets как на сервере, так и на клиенте.
Клиент chap_secrets: # Секреты для аутентификации с использованием CHAP # клиентские серверные секретные IP-адреса virtual_2 * pass *
Сервер chap_secrets: # Секреты для аутентификации с использованием CHAP # клиентские секретные IP-адреса сервера virtual_1 virtual_3 pass * virtual_2 virtual_3 pass *
Когда pon my_vpn инициируется на клиенте (virtual_2), вывод
/var/log/syslog | grep ppp
на сервере (называется virtual_3)
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0xcd787d11> <pcomp> <accomp>]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [LCP EchoReq id=0x0 magic=0xcd787d11]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [CHAP Challenge id=0xf <33b8dc04d3db8014f82e8d95eef3d3a2>, name = "virtual_3"]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [LCP EchoReq id=0x0 magic=0xa40d7c64]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [LCP EchoRep id=0x0 magic=0xcd787d11]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [LCP EchoRep id=0x0 magic=0xa40d7c64]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [CHAP Response id=0xf <a323c3ddf060ae2845fc14b09034e64a000000000000000049fb952c5de9ec86cf872c0f05cea9f245fd6cf585a64eff00>, name = "virtual_2"]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [CHAP Success id=0xf "S=2F3C33E3676ADE634FBD3F3406BA1091EC04763A M=Access granted"]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [CCP ConfReq id=0x1 <mppe +H -M +S -L -D -C>]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [CCP ConfReq id=0x1 <mppe +H -M +S -L -D -C>]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [CCP ConfAck id=0x1 <mppe +H -M +S -L -D -C>]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [CCP ConfAck id=0x1 <mppe +H -M +S -L -D -C>]
Jul 24 07:11:56 virtual3 pppd[3323]: MPPE 128-bit stateless compression enabled
Jul 24 07:11:56 virtual3 pppd[3323]: sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 10.8.10.1>]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0>]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [IPCP ConfNak id=0x1 <addr 10.8.10.3>]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 10.8.10.1>]
Jul 24 07:11:56 virtual3 pppd[3323]: rcvd [IPCP ConfReq id=0x2 <compress VJ 0f 01> <addr 10.8.10.3>]
Jul 24 07:11:56 virtual3 pppd[3323]: sent [IPCP ConfAck id=0x2 <compress VJ 0f 01> <addr 10.8.10.3>]
Jul 24 07:11:56 virtual3 pppd[3323]: Cannot determine ethernet address for proxy ARP
Jul 24 07:11:56 virtual3 pppd[3323]: local IP address 10.8.10.1
Jul 24 07:11:56 virtual3 pppd[3323]: remote IP address 10.8.10.3
Jul 24 07:11:56 virtual3 pppd[3323]: pptpd-logwtmp.so ip-up ppp1 virtual_2 192.168.11.100
Jul 24 07:11:56 virtual3 pppd[3323]: Script /etc/ppp/ip-up started (pid 3326)
Jul 24 07:11:57 virtual3 pppd[3323]: Script /etc/ppp/ip-up finished (pid 3326), status = 0x0
Далее я хотел бы использовать PAM на стороне сервера, но только для авторизации без аутентификации. То есть я хотел бы оставить авторизацию, как это было до сих пор, через файл chap_secrets, и просто объявить модуль аутентификации, который будет записывать в таблицу базы данных при каждом изменении соединений (когда соединение ppp установлено, подключенный пользователь записывается в базу данных и, когда соединение потеряно, столбец удаляется из базы данных).
Перед настройкой базы данных я пытаюсь сделать простые вещи, чтобы проверить, работает ли pppd с PAM. Поэтому я отредактировал файл /etc/pam.d/ppp, который выглядит так:
#%PAM-1.0
# Information for the PPPD process with the 'login' option.
account sufficient pam_exec /bin/echo "Succesful log" > /home/user/log_file
auth required pam_nologin.so
@include common-auth
@include common-account
@include common-session
Надеясь, что при успешном соединении будет создан файл (/home/user/log_file). Тем не менее, файлы не были созданы. После этого я взломал /etc/pam.d/ppp в надежде получить какой-либо король ошибок, который хотя бы подтвердит, что pppd использует PAM. Однако все прошло как прежде.
Мой pppd скомпилирован для использования pam.
root@virtual3:/etc/ppp# ldd /usr/sbin/pppd
...
libpam.so.0 => /lib/libpam.so.0 (0xb76e8000)
...
Есть идеи, с чего начать дальше? Тпх
1 ответ
Казалось, что все, что нужно было сделать, это запустить pppd с параметром login. Это можно установить в / etc / ppp / options. даже при том, что это сказало, что это должно только использоваться с PAP.
Я предполагаю, что это работает, потому что мы не пытаемся аутентифицироваться с помощью PAP и CHAP, аутентификация проходит через файлы chap_secret, после чего она передается в PAM.
Когда PAM берет на себя управление, мы можем настроить его так, чтобы он всегда проходил аутентификацию и использовал авторизацию для того, что необходимо.
Вот как выглядит мой PAM-файл (на сервере /etc/pam.d/ppp): достаточно аутентичный pam_permit.so
учетной записи достаточно pam_permit.so
На данный момент я не установил ничего конкретного для учетной записи. Я планирую запустить модуль, который записывает информацию в базу данных.
Посмотрите на / var / log / syslog:
Jul 24 11:32:02 virtual3 pptpd[6100]: GRE: Bad checksum from pppd.
Jul 24 11:32:02 virtual3 pppd[6101]: rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <auth chap MS-v2> <magic 0xbfa95b1b> <pcomp> <accomp>]
Jul 24 11:32:02 virtual3 pppd[6101]: sent [LCP EchoReq id=0x0 magic=0xbfa95b1b]
Jul 24 11:32:02 virtual3 pppd[6101]: sent [CHAP Challenge id=0x72 <bd6de330bce960fd3c015f4c05271084>, name = "virtual_3"]
Jul 24 11:32:02 virtual3 pppd[6101]: rcvd [LCP EchoReq id=0x0 magic=0x26f8d72a]
Jul 24 11:32:02 virtual3 pppd[6101]: sent [LCP EchoRep id=0x0 magic=0xbfa95b1b]
Jul 24 11:32:02 virtual3 pppd[6101]: rcvd [LCP EchoRep id=0x0 magic=0x26f8d72a]
Jul 24 11:32:02 virtual3 pppd[6101]: rcvd [CHAP Response id=0x72 <37493f89d9ab654ebd597c25a4a6b0c000000000000000007452936c00f1efa80034f8a65f1f33a7c5b0cf8b4ca6b3f600>, name = "virtual_2"]
Jul 24 11:32:02 virtual3 pppd[6101]: sent [CHAP Success id=0x72 "S=8BA14BF6728FFEF9BAC466B0B7ACD5B6273E8B38 M=Access granted"]
Jul 24 11:32:02 virtual3 pppd[6101]: Initializing PAM (2) for user virtual_2
Jul 24 11:32:02 virtual3 pppd[6101]: ---> PAM INIT Result = 0
Jul 24 11:32:02 virtual3 pppd[6101]: Attempting PAM account checks
Jul 24 11:32:02 virtual3 pppd[6101]: PAM Account OK for virtual_2
Jul 24 11:32:02 virtual3 pppd[6101]: PAM Session opened for user virtual_2
Jul 24 11:32:02 virtual3 pppd[6101]: user virtual_2 logged in on tty pts/3 intf ppp0
Jul 24 11:32:02 virtual3 pppd[6101]: MPPE 128-bit stateless compression enabled
Jul 24 11:32:02 virtual3 pppd[6101]: Cannot determine ethernet address for proxy ARP
Jul 24 11:32:02 virtual3 pppd[6101]: local IP address 10.8.10.1
Jul 24 11:32:02 virtual3 pppd[6101]: remote IP address 10.8.10.2
Jul 24 11:32:02 virtual3 pppd[6101]: pptpd-logwtmp.so ip-up ppp0 virtual_2 192.168.11.100
можно видеть, что аутентификация прошла через CHAP и затем передана в PAM.