<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.labrats.us//wiki/index.php?action=history&amp;feed=atom&amp;title=Enabling_NTLM_authentication_under_RHEL%2FApache</id>
	<title>Enabling NTLM authentication under RHEL/Apache - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.labrats.us//wiki/index.php?action=history&amp;feed=atom&amp;title=Enabling_NTLM_authentication_under_RHEL%2FApache"/>
	<link rel="alternate" type="text/html" href="https://www.labrats.us//wiki/index.php?title=Enabling_NTLM_authentication_under_RHEL/Apache&amp;action=history"/>
	<updated>2026-04-04T12:19:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://www.labrats.us//wiki/index.php?title=Enabling_NTLM_authentication_under_RHEL/Apache&amp;diff=14&amp;oldid=prev</id>
		<title>Sfiggins: Created page with &quot;== Background&lt;br&gt;  ==  If you need your CGI scripts to know the remote (web client) user who is running IE under Windows, NTLM is a convenient protocol to use.&amp;nbsp; The user...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.labrats.us//wiki/index.php?title=Enabling_NTLM_authentication_under_RHEL/Apache&amp;diff=14&amp;oldid=prev"/>
		<updated>2015-10-04T20:12:02Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Background&amp;lt;br&amp;gt;  ==  If you need your CGI scripts to know the remote (web client) user who is running IE under Windows, NTLM is a convenient protocol to use.  The user...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Background&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
If you need your CGI scripts to know the remote (web client) user who is running IE under Windows, NTLM is a convenient protocol to use.&amp;amp;nbsp; The user will not need to enter his credentials.&amp;amp;nbsp; The CGI script can access the username in the REMOTE_USER environment variable. &lt;br /&gt;
&lt;br /&gt;
Note that NTLMv1 is vulnerable to cracking.&amp;amp;nbsp; It was replaced with NTLMv2 in the Vista timeframe. &lt;br /&gt;
&lt;br /&gt;
While there are many apparent alternatives to enable this functionality on RHEL/Apache servers, only one (at the time of this writing) cleanly supports NTLMv2 - a python module called PyAuthenNTLM2. &lt;br /&gt;
&lt;br /&gt;
== Install  ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Note that this procedure was done on a RHEL6/httpd (apache) box&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Become root &lt;br /&gt;
&lt;br /&gt;
yum install httpd-devel&amp;lt;br&amp;gt;yum install python-devel&amp;lt;br&amp;gt;yum install python-crypto&amp;lt;br&amp;gt;wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz&amp;lt;br&amp;gt;tar zxf mod_python-3.3.1.tgz &amp;lt;br&amp;gt;cd mod_python-3.3.1&amp;lt;br&amp;gt;vi src/connobject.c &amp;lt;br&amp;gt;&amp;amp;nbsp; change&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b == APR_BRIGADE_SENTINEL(b)&amp;lt;br&amp;gt;&amp;amp;nbsp; to&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; b == APR_BRIGADE_SENTINEL(bb)&amp;lt;br&amp;gt;./configure --with-apxs=/usr/sbin/apxs &amp;lt;br&amp;gt;make&amp;lt;br&amp;gt;make install&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd ..&amp;lt;br&amp;gt;wget https://github.com/Legrandin/PyAuthenNTLM2/archive/master.zip&amp;lt;br&amp;gt;unzip master&amp;lt;br&amp;gt;cd PyAuthenNTLM2-master&amp;lt;br&amp;gt;python setup.py install&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cd /etc/httpd/conf.d/&amp;lt;br&amp;gt;cat &amp;amp;gt;ntlm2.conf&amp;lt;br&amp;gt;&amp;amp;lt;Location /&amp;amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; AuthType NTLM&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; AuthName TWTELECOM&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; require valid-user&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PythonAuthenHandler pyntlm&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PythonOption Domain TWTELECOM&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PythonOption PDC srvdendc5&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; PythonOption BDC srvdendc1&amp;lt;br&amp;gt;&amp;amp;lt;/Location&amp;amp;gt;&amp;lt;br&amp;gt;^D &lt;br /&gt;
&lt;br /&gt;
(The AuthName is whatever you want.&amp;amp;nbsp; The DCs should be near the server) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;cd ../conf&amp;lt;br&amp;gt;vi httpd.conf &amp;lt;br&amp;gt;&amp;amp;nbsp; Change&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; KeepAlive Off&amp;lt;br&amp;gt;&amp;amp;nbsp; To&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; KeepAlive On&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;amp;nbsp; At the end of the LoadModules section insert&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; LoadModule python_module modules/mod_python.so&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
apachectl configtest&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; (fix any errors and retry before continuing)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/init.d/httpd restart&amp;lt;br&amp;gt;&amp;amp;nbsp; (apachectl graceful doesn&amp;#039;t quite do the job for whatever reason)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test  ==&lt;br /&gt;
&lt;br /&gt;
cd /var/www/cgi-bin/&amp;lt;br&amp;gt;cat &amp;amp;gt;whoami.cgi&amp;lt;br&amp;gt;#!/bin/sh&amp;lt;br&amp;gt;printf &amp;quot;Content-type: text/html\n\n$REMOTE_USER\n&amp;quot;&amp;lt;br&amp;gt;^D&amp;lt;br&amp;gt;chmod 755 whoami.cgi&lt;br /&gt;
&lt;br /&gt;
On your Windows PC, using IE, open the url http://yourserver/cgi-bin/whoami.cgi&amp;lt;br&amp;gt;Verify that you windows username is displayed&amp;lt;br&amp;gt;If it isn&amp;#039;t, follow the steps in:&amp;lt;br&amp;gt;&amp;amp;nbsp; https://github.com/Legrandin/PyAuthenNTLM2#troubleshooting &amp;lt;br&amp;gt;&amp;#039;&amp;#039;&amp;#039;Important: You must completely exit IE and bring it back up with each test&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sfiggins</name></author>
	</entry>
</feed>