⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.gssapi

📁 Linux 2.6 内核上配置IPSec VPN 的工具
💻 GSSAPI
字号:
The gss-api authentication mechanism implementation for racoon wasbased on the ietf draft draft-ietf-ipsec-isakmp-gss-auth-06.txt.The implementation uses the Heimdal gss-api library, i.e. gss-apion top of Kerberos 5. The Heimdal gss-api library had to be modifiedto meet the requirements of using gss-api in a daemon. More specifically,the gss_acquire_cred() call did not work for other cases thanGSS_C_NO_CREDENTIAL ("use default creds"). Daemons are often startedas root, and have no Kerberos 5 credentials, so racoon explicitlyneeds to acquire its credentials. The usual method (already usedby login authentication daemons) in these situations is to adda set of special credentials to be used. For example, authenticationby daemons concerned with login credentials, uses 'host/fqdn' asits credential, where fqdn is the hostname on the interface thatis being used. These special credentials need to be extracted intoa local keytab from the kdc. The default value used in racoonis 'ike/fqdn', but it can be overridden in the racoon config file.The modification to the Heimdal gss-api library implements themechanism above. If a credential other than GSS_C_NO_CREDENTIALis specified to gss_acquire_cred(), it first looks in the defaultcredential cache if it its principal matches the desired credential.If not, it extracts it from the default keytab file, and storesit in a memory-based credential cache, part of the gss credentialstructure.The modifcations to racoon itself are as follows:	* The racoon.conf config file accepts a new keyword, "gssapi_id",	  to be used inside a proposal specification. It specifies	  a string (a Kerberos 5 principal in this case), specifying the	  credential that racoon will try to acquire. The default value	  is 'ike/fqdn', where fqdn is the hostname for the interface	  being used for the exchange. If the id is not specified, no	  GSS endpoint attribute will be specified in the first SA sent.	  However, if the initiator does specify a GSS endpoint attribute,	  racoon will always respond with its own GSS endpoint name	  in the SA (the default one if not specified by this option).	* The racoon.conf file accepts "gssapi_krb" as authentication	  method inside a proposal specification. The number used	  for this method is 65001, which is a temporary number as	  specified in the draft.	* The cftoken.l and cfparse.y source files were modified to	  pick up the configuration options. The original sources	  stored algorithms in bitmask, which unfortunately meant	  that the maximum value was 32, clearly not enough for 65001.	  After consulting with the author (sakane@kame.net), it turned	  out that method was a leftover, and no longer needed. I replaced	  it with plain integers.	* The gss-api specific code was concentrated as much as possible	  in gssapi.c and gssapi.h. The code to call functions defined	  in these files is conditional on HAVE_GSSAPI, except for the	  config scan code. Specifying this flag on the compiler commandline	  is conditional on the --enable-gssapi option to the configure	  script.	* Racoon seems to want to send accepted SA proposals back to	  the initiator in a verbatim fashion, leaving no room to	  insert the (variable-length) GSS endpoint name attribute.	  I worked around this by re-assembling the extracted SA	  into a new SA if the gssapi_krb method is used, and the	  initiator sent the name attribute. This scheme should	  possibly be re-examined by the racoon maintainers, storing	  the SAs (the transformations, to be more precise) in a different	  fashion to allow for variable-length attributes to be	  re-inserted would be a good change, but I considered it to be	  beyond the scope of this project.	* The various state functions for aggressive and main mode	  (in isakmp_agg.c and isakmp_ident.c respectively) were	  changed to conditionally change their behavior if the	  gssapi_krb method is specified.This implementation tried to follow the specification in the ietf draftas close as possible. However, it has not been tested against otherIKE daemon implementations. The only other one I know of is Windows 2000,and it has some caveats. I attempted to be Windows 2000 compatible.Should racoon be tried against Windows 2000, the gssapi_id option inthe config file must be used, as Windows 2000 expects the GSS endpointname to be sent at all times. I have my doubts as to the W2K compatibility,because the spec describes the GSS endpoint name sent by W2K asan unicode string 'xxx@domain', which doesn't seem to match therequired standard for gss-api + kerberos 5 (i.e. I am fairly certainthat such a string will be rejected by the Heimdal gss-api library, as itis not a valid Kerberos 5 principal).With the Heimdal gss-api implementation, the gssapi_krb authenticationmethod will only work in main mode. Aggressive mode does not allowfor the extra round-trips needed by gss_init_sec_context andgss_accept_sec_context when mutual authentication is requested.The draft specifies that the a fallback should be done to main mode,through the return of INVALID-EXCHANGE-TYPE if it turns out thatthe gss-api mechanisms needs more roundtrips. This is implemented.Unfortunately, racoon does not seem to properly fall back toits next mode, and this is not specific to the gssapi_krb method.So, to avoid problems, only specify main mode in the config file.	-- Frank van der Linden <fvdl@wasabisystems.com>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -