<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://spacefed.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xopr</id>
	<title>SpaceFED - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://spacefed.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xopr"/>
	<link rel="alternate" type="text/html" href="https://spacefed.net/index.php/Special:Contributions/Xopr"/>
	<updated>2026-04-10T15:20:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://spacefed.net/index.php?title=Who/Spacenet/Spaces&amp;diff=102</id>
		<title>Who/Spacenet/Spaces</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Who/Spacenet/Spaces&amp;diff=102"/>
		<updated>2024-03-09T07:40:06Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Updated status, URIs and typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Space name'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Space type'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Location'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Using spacenet for'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Equipment'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Website'''&lt;br /&gt;
|-&lt;br /&gt;
| ACKspace||Hackerspace||NL, Heerlen||802.1X: WiFi||OpenWrt||[https://ackspace.nl ackspace.nl]&lt;br /&gt;
|-&lt;br /&gt;
| AwesomeSpace||Hackerspace||NL, Utrecht||802.1X: WiFi||6x Aruba Instant||[https://awesomespace.nl awesomespace.nl]&lt;br /&gt;
|-&lt;br /&gt;
| bhack||Hackerspace||NL, Zwolle||802.1X: WiFi|| ???||[https://www.meetup.com/Bhack-Hackerspace-Zwolle/?_cookie-check=JUezEnmHfIasuFy7 bhack]&lt;br /&gt;
|-&lt;br /&gt;
| Bitlair||Hackerspace||NL, Amersfoort||802.1X: WiFi||5x Aruba Instant||[https://bitlair.nl bitlair.nl]&lt;br /&gt;
|-&lt;br /&gt;
| Das Labor||Hackerspace||DE, Bochum||802.1X: WiFi||1x Ubiquiti Unifi AP AC||[https://das-labor.org das-labor.org]&lt;br /&gt;
|-&lt;br /&gt;
| Edinburgh Hacklab||Hackerspace||UK, Edinburgh||802.1X: WiFi||Ubiquiti UniFi||[https://edinburghhacklab.com edinburghhacklab.com]&lt;br /&gt;
|-&lt;br /&gt;
| Frack||Hackerspace||NL, Leeuwarden||802.1X: WiFi||2x Aruba Instant||[https://frack.nl frack.nl]&lt;br /&gt;
|-&lt;br /&gt;
| Hack42||Hackerspace||NL, Arnhem||802.1X: WiFi|| ???||[https://hack42.nl hack42.nl]&lt;br /&gt;
|-&lt;br /&gt;
| Hackalot||Hackerspace||NL, Eindhoven||802.1X: WiFi||Aruba||[https://hackalot.nl hackalot.nl]&lt;br /&gt;
|-&lt;br /&gt;
| IN-Berlin||Hackerspace and non-commercial ISP||DE, Berlin||802.1X: WiFi||OpenWRT||[https://in-berlin.de in-berlin.de]&lt;br /&gt;
|-&lt;br /&gt;
| LHC||Hackerspace||BR, Campinas||802.1X: WiFi||OpenWRT||[https://lhc.net.br lhc.net.br]&lt;br /&gt;
|-&lt;br /&gt;
| London Hackspace||Hackerspace||UK, London||802.1X: Wifi||Cisco 3502's (stand alone)||[https://london.hackspace.org.uk london.hackspace.org.uk]&lt;br /&gt;
|-&lt;br /&gt;
| Mononoke||Roaming Hackerspace||NL, Random locations||802.1X: WiFi||MikroTik, Apple||mononoke.nl (down)&lt;br /&gt;
|-&lt;br /&gt;
| Nifhack||Hackerspace||NL, Ground Zero||802.1X: WiFi||Aruba 3400 with AP-105s||[http://www.nifhack.nl/ nifhack.nl]&lt;br /&gt;
|-&lt;br /&gt;
| NottingHack||Hackerspace||UK, Nottingham||802.1X: Wifi|| ??||[https://nottinghack.org.uk nottinghack.org.uk]&lt;br /&gt;
|-&lt;br /&gt;
| NURDspace||Hackerspace||NL, Wageningen||802.1X: WiFi||OpenWRT||[https://nurdspace.nl/Main_Page NURDspace]&lt;br /&gt;
|-&lt;br /&gt;
| Pixelbar||hackerspace||NL, Rotterdam||802.1X: WiFi||Temporary no connectivity because of fire||[https://www.pixelbar.nl/ pixelbar]&lt;br /&gt;
|-&lt;br /&gt;
| Randomdata||Hackspace||NL, Utrecht||802.1X: WiFi||Aruba Instant 105||[https://randomdata.nl Randomdata.nl]&lt;br /&gt;
|-&lt;br /&gt;
| RevSpace||Hackerspace||NL, Den Haag||802.1X: WiFi||4x Aruba Instant||[https://revspace.nl Revspace.nl]&lt;br /&gt;
|-&lt;br /&gt;
| Sk1llz||Hackerspace||NL, Almere||802.1X: WiFi||DD-WRT||sk1llz.nl (down)&lt;br /&gt;
|-&lt;br /&gt;
| Sublab||Hackerspace||DE, Leipzig||802.1X: WiFi||ARtem / Colubris||[https://sublab.org/ sublab] (2017: end of life)&lt;br /&gt;
|-&lt;br /&gt;
| Syn2Cat||Hackerspace||LU, Luxembourg||802.1X: WiFi|| ??||[https://blog.syn2cat.lu/ blog.syn2cat.lu]&lt;br /&gt;
|-&lt;br /&gt;
| TechInc||Hackerspace||NL, Amsterdam||802.1X WiFi||Cisco WLC||[https://techinc.nl techinc.nl]&lt;br /&gt;
|-&lt;br /&gt;
| TkkrLab||Hackerspace||NL, Enschede||802.1X: WiFi||DD-WRT||[https://tkkrlab.nl tkkrlab.nl]&lt;br /&gt;
|-&lt;br /&gt;
| Unallocated Space||Hackerspace||US, Severn||802.1X: WiFi|| ??||[https://unallocatedspace.org/ unallocatedspace.org]&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
[[Category:Who/Spacenet]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=SpaceFED:Terms_of_Service&amp;diff=78</id>
		<title>SpaceFED:Terms of Service</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=SpaceFED:Terms_of_Service&amp;diff=78"/>
		<updated>2023-09-30T12:04:39Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Bill &amp;amp; Ted ToS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Be excellent to each other!&lt;br /&gt;
No spam.&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Category:Lost&amp;diff=77</id>
		<title>Category:Lost</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Category:Lost&amp;diff=77"/>
		<updated>2023-09-30T07:20:54Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Created lost category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pages in this category were lost due to a spam attack on a previous installation, and archive.org has not indexed these pages.&lt;br /&gt;
&lt;br /&gt;
If you happen to have a hold of a missing page (and have the space time), feel free to add them again.&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Who/Spacenet/Countrynodes&amp;diff=76</id>
		<title>Who/Spacenet/Countrynodes</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Who/Spacenet/Countrynodes&amp;diff=76"/>
		<updated>2023-09-30T07:19:21Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Who/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Who/Spacenet/Communities&amp;diff=75</id>
		<title>Who/Spacenet/Communities</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Who/Spacenet/Communities&amp;diff=75"/>
		<updated>2023-09-30T07:19:19Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Who/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Setup_Network_Policy_Server&amp;diff=74</id>
		<title>Howto/Spacenet/Setup Network Policy Server</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Setup_Network_Policy_Server&amp;diff=74"/>
		<updated>2023-09-30T07:19:18Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Setup_Country_node&amp;diff=73</id>
		<title>Howto/Spacenet/Setup Country node</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Setup_Country_node&amp;diff=73"/>
		<updated>2023-09-30T07:19:18Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Ruckus_example&amp;diff=72</id>
		<title>Howto/Spacenet/Ruckus example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Ruckus_example&amp;diff=72"/>
		<updated>2023-09-30T07:19:17Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/OpenWRT_example&amp;diff=71</id>
		<title>Howto/Spacenet/OpenWRT example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/OpenWRT_example&amp;diff=71"/>
		<updated>2023-09-30T07:19:17Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/MikroTik_RouterOS_example&amp;diff=70</id>
		<title>Howto/Spacenet/MikroTik RouterOS example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/MikroTik_RouterOS_example&amp;diff=70"/>
		<updated>2023-09-30T07:19:16Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Meru_example&amp;diff=69</id>
		<title>Howto/Spacenet/Meru example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Meru_example&amp;diff=69"/>
		<updated>2023-09-30T07:19:16Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Meraki_example&amp;diff=68</id>
		<title>Howto/Spacenet/Meraki example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Meraki_example&amp;diff=68"/>
		<updated>2023-09-30T07:19:15Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Juniper_Trapeze_example&amp;diff=67</id>
		<title>Howto/Spacenet/Juniper Trapeze example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Juniper_Trapeze_example&amp;diff=67"/>
		<updated>2023-09-30T07:19:14Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/HP_example&amp;diff=66</id>
		<title>Howto/Spacenet/HP example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/HP_example&amp;diff=66"/>
		<updated>2023-09-30T07:19:14Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/HP_WESM_example&amp;diff=65</id>
		<title>Howto/Spacenet/HP WESM example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/HP_WESM_example&amp;diff=65"/>
		<updated>2023-09-30T07:19:13Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/DD-WRT_example&amp;diff=64</id>
		<title>Howto/Spacenet/DD-WRT example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/DD-WRT_example&amp;diff=64"/>
		<updated>2023-09-30T07:19:13Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Client_iOS&amp;diff=63</id>
		<title>Howto/Spacenet/Client iOS</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Client_iOS&amp;diff=63"/>
		<updated>2023-09-30T07:19:12Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Client_Windows_7&amp;diff=62</id>
		<title>Howto/Spacenet/Client Windows 7</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Client_Windows_7&amp;diff=62"/>
		<updated>2023-09-30T07:19:11Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Client_Linux&amp;diff=61</id>
		<title>Howto/Spacenet/Client Linux</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Client_Linux&amp;diff=61"/>
		<updated>2023-09-30T07:19:11Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Cisco_example&amp;diff=60</id>
		<title>Howto/Spacenet/Cisco example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Cisco_example&amp;diff=60"/>
		<updated>2023-09-30T07:19:10Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Aruba_example&amp;diff=59</id>
		<title>Howto/Spacenet/Aruba example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Aruba_example&amp;diff=59"/>
		<updated>2023-09-30T07:19:09Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Aruba_Instant_example&amp;diff=58</id>
		<title>Howto/Spacenet/Aruba Instant example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Aruba_Instant_example&amp;diff=58"/>
		<updated>2023-09-30T07:19:08Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Aerohive_example&amp;diff=57</id>
		<title>Howto/Spacenet/Aerohive example</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Aerohive_example&amp;diff=57"/>
		<updated>2023-09-30T07:16:11Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Accesspoint_config_general&amp;diff=56</id>
		<title>Howto/Spacenet/Accesspoint config general</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Accesspoint_config_general&amp;diff=56"/>
		<updated>2023-09-30T07:15:57Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Added &amp;quot;Lost&amp;quot; category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;&amp;lt;the contents of this page is lost&amp;gt;&amp;gt;&lt;br /&gt;
[[Category:Howto/Spacenet]][[Category:Lost]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Setup_freeradius&amp;diff=55</id>
		<title>Howto/Spacenet/Setup freeradius</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Setup_freeradius&amp;diff=55"/>
		<updated>2023-09-30T07:07:52Z</updated>

		<summary type="html">&lt;p&gt;Xopr: created redirect (the old contents of this page were lost)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Setup_freeradius]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Howto/Spacenet/Setup_LDAP&amp;diff=54</id>
		<title>Howto/Spacenet/Setup LDAP</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Howto/Spacenet/Setup_LDAP&amp;diff=54"/>
		<updated>2023-09-30T06:59:17Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Recreated from https://wilco.baanhofman.nl/setup-ldap.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Before we begin...&amp;lt;/h2&amp;gt;&lt;br /&gt;
Before I start handing out configuration files.. I just remembered we're all hackerspaces here and we are in this thing to learn. You have arrived here because you have been offered the shortcut and chose to do it right. Well, you're going to hate me for this, but I am going to explain LDAP first.&lt;br /&gt;
&lt;br /&gt;
One thing about LDAP you should know is that it is really really simple and easy to understand, but all the used terms are unknown and therefore it can be quite overwhelming. So let's start with clearing that up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Basics&amp;lt;/h2&amp;gt;&lt;br /&gt;
LDAP is just an indexed directory tree. Everything in it is an object. Every object has attributes. To keep the directory clean and not have happen what happens to the windows registry, not every attribute can go on every object. Attributes are assigned to object classes and you just add objectclasses to every object to define which attributes you wish to use.&lt;br /&gt;
&lt;br /&gt;
That's the easy part. This is what has been haunting you. Every object can be addressed by it's path in the directory, this path is unique. But of course, we do not call this the path, but we call this the &amp;lt;b&amp;gt;Distinguished Name&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;DN&amp;lt;/b&amp;gt;. If you are asked to specify a DN, what they're really saying is &amp;quot;What object would you like to use&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
When setting up a connection you need to authenticate, this is done in the 'bind' stage of the connection. You can bind anonymously (not recommended for user databases) or as a user/security object in the database.&lt;br /&gt;
&lt;br /&gt;
The directory can be queried using searches, for this you specify where you want to look, this is called the &amp;lt;b&amp;gt;Base DN&amp;lt;/b&amp;gt;. It basically means you'll be searching there, one level below, or the entire subtree, depending on the scope you specify. You can also specify a search filter, with a search filter you specify which attribute values you wish to see. Default search is 'objectclass=*', but you can do fancier filters like &amp;quot;(&amp;amp;(objectclass=posixAccount)(uid=wilco))&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Terms&amp;lt;/h3&amp;gt;&lt;br /&gt;
* DN/Distinguished Name: The path in the directory&lt;br /&gt;
* DC/Domain Component: Domain Component, only really used in the root DN, every part between dots in your REALM name gets one (if you have one dot, that means two dc's)&lt;br /&gt;
* Root DN: The root of your directory, usually this will be dc=YOUR,dc=REALM,dc=TLD&lt;br /&gt;
* Binding: Binding means authenticating&lt;br /&gt;
* Bind DN: The DN of the user object you wish to authenticate as. When starting you'll likely want to use cn=admin,dc=YOUR,dc=REALM,dc=TLD.&lt;br /&gt;
* Bind password: Just the userPassword attribute you set for the object specified at Bind DN&lt;br /&gt;
* Base DN: The path to the root of the subtree you wish to search&lt;br /&gt;
* Search filter: A filter to look for objects in the directory.&lt;br /&gt;
* Schema: The schema defines attributes and objectclasses and also the mappings between them.&lt;br /&gt;
* CN/Common Name: Most common attribute in the directory, used for naming your objects&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Setting up a directory&amp;lt;/h2&amp;gt;&lt;br /&gt;
You'll want a directory that can run your radius server for spacenet, but why not go the extra step. You're setting up a user directory, why not also support a samba file server, an SSH shell server and your wiki.. or like at revspace add attributes for your door contact ID-buttons.. all on the same user directory. To do this, you'll need to extend your schema. We'll get to that. Now first install slapd on a debian, you now know what you can fill in. Bear in mind that sometimes debian will not ask all the questions you need, try &amp;quot;DEBIAN_PRIORITY=low apt-get install slapd ldap-utils&amp;quot;. Please dpkg-reconfigure --priority=low your slapd if you have made a previous attempt. Also, you'll want to install the ldap-utils package so you can test your directory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 1: Verify your directory&amp;lt;/h3&amp;gt;&lt;br /&gt;
After install, you'll have a very basic directory containing two objects.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
prompt:~# ldapsearch -x -b dc=spacefed,dc=net&lt;br /&gt;
&lt;br /&gt;
# spacefed.net&lt;br /&gt;
dn: dc=spacefed,dc=net&lt;br /&gt;
objectClass: top&lt;br /&gt;
objectClass: dcObject&lt;br /&gt;
objectClass: organization&lt;br /&gt;
o: SpaceFED&lt;br /&gt;
dc: spacefed&lt;br /&gt;
&lt;br /&gt;
# admin, spacefed.net&lt;br /&gt;
dn: cn=admin,dc=spacefed,dc=net&lt;br /&gt;
objectClass: simpleSecurityObject&lt;br /&gt;
objectClass: organizationalRole&lt;br /&gt;
cn: admin&lt;br /&gt;
description: LDAP administrator&lt;br /&gt;
&lt;br /&gt;
# search result&lt;br /&gt;
search: 2&lt;br /&gt;
result: 0 Success&lt;br /&gt;
&lt;br /&gt;
# numResponses: 3&lt;br /&gt;
# numEntries: 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
As you'll see, one is the root DN, the second is the security object with which we can bind to the database. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 2: Extend your schema &amp;lt;/h3&amp;gt;&lt;br /&gt;
You can already use your directory, but not yet for freeradius, for this, we need an extra schema, the samba schema. It is common practise to use schema's from other people if the data is the same, so you can share data between your applications. You only create new objectclasses for attributes that you cannot already sanely store in the database. But debian does not supply the samba schema by default (only the old schema which we shall not use in samba-doc).&lt;br /&gt;
&lt;br /&gt;
Add the following to tmpsamba.ldif, then type &amp;lt;b&amp;gt;ldapadd -Y EXTERNAL -H ldapi:// &amp;lt; tmpsamba.ldif&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: cn=samba,cn=schema,cn=config&lt;br /&gt;
objectclass: olcSchemaConfig&lt;br /&gt;
cn: samba&lt;br /&gt;
olcattributetypes: {1}( 1.3.6.1.4.1.7165.2.1.25 NAME 'sambaNTPassword' DESC &lt;br /&gt;
 'MD4 hash of the unicode password' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6&lt;br /&gt;
 .1.4.1.1466.115.121.1.26{32} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {2}( 1.3.6.1.4.1.7165.2.1.26 NAME 'sambaAcctFlags' DESC '&lt;br /&gt;
 Account Flags' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.&lt;br /&gt;
 1.26{16} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {3}( 1.3.6.1.4.1.7165.2.1.27 NAME 'sambaPwdLastSet' DESC &lt;br /&gt;
 'Timestamp of the last password update' EQUALITY integerMatch SYNTAX 1.3.6.&lt;br /&gt;
 1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {4}( 1.3.6.1.4.1.7165.2.1.28 NAME 'sambaPwdCanChange' DES&lt;br /&gt;
 C 'Timestamp of when the user is allowed to update the password' EQUALITY i&lt;br /&gt;
 ntegerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {5}( 1.3.6.1.4.1.7165.2.1.29 NAME 'sambaPwdMustChange' DE&lt;br /&gt;
 SC 'Timestamp of when the password will expire' EQUALITY integerMatch SYNTA&lt;br /&gt;
 X 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {6}( 1.3.6.1.4.1.7165.2.1.30 NAME 'sambaLogonTime' DESC '&lt;br /&gt;
 Timestamp of last logon' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.&lt;br /&gt;
 121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {7}( 1.3.6.1.4.1.7165.2.1.31 NAME 'sambaLogoffTime' DESC &lt;br /&gt;
 'Timestamp of last logoff' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.11&lt;br /&gt;
 5.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {8}( 1.3.6.1.4.1.7165.2.1.32 NAME 'sambaKickoffTime' DESC&lt;br /&gt;
  'Timestamp of when the user will be logged off automatically' EQUALITY int&lt;br /&gt;
 egerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {9}( 1.3.6.1.4.1.7165.2.1.48 NAME 'sambaBadPasswordCount'&lt;br /&gt;
  DESC 'Bad password attempt count' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1&lt;br /&gt;
 .1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {10}( 1.3.6.1.4.1.7165.2.1.49 NAME 'sambaBadPasswordTime'&lt;br /&gt;
  DESC 'Time of the last bad password attempt' EQUALITY integerMatch SYNTAX &lt;br /&gt;
 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {11}( 1.3.6.1.4.1.7165.2.1.55 NAME 'sambaLogonHours' DESC&lt;br /&gt;
  'Logon Hours' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.&lt;br /&gt;
 1.26{42} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {12}( 1.3.6.1.4.1.7165.2.1.33 NAME 'sambaHomeDrive' DESC &lt;br /&gt;
 'Driver letter of home directory mapping' EQUALITY caseIgnoreIA5Match SYNTA&lt;br /&gt;
 X 1.3.6.1.4.1.1466.115.121.1.26{4} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {13}( 1.3.6.1.4.1.7165.2.1.34 NAME 'sambaLogonScript' DES&lt;br /&gt;
 C 'Logon script path' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.&lt;br /&gt;
 121.1.15{255} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {14}( 1.3.6.1.4.1.7165.2.1.35 NAME 'sambaProfilePath' DES&lt;br /&gt;
 C 'Roaming profile path' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.1&lt;br /&gt;
 15.121.1.15{255} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {15}( 1.3.6.1.4.1.7165.2.1.36 NAME 'sambaUserWorkstations&lt;br /&gt;
 ' DESC 'List of user workstations the user is allowed to logon to' EQUALITY&lt;br /&gt;
  caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {16}( 1.3.6.1.4.1.7165.2.1.37 NAME 'sambaHomePath' DESC '&lt;br /&gt;
 Home directory UNC path' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.1&lt;br /&gt;
 15.121.1.15{128} )&lt;br /&gt;
olcattributetypes: {17}( 1.3.6.1.4.1.7165.2.1.38 NAME 'sambaDomainName' DESC&lt;br /&gt;
  'Windows NT domain to which the user belongs' EQUALITY caseIgnoreMatch SYN&lt;br /&gt;
 TAX 1.3.6.1.4.1.1466.115.121.1.15{128} )&lt;br /&gt;
olcattributetypes: {18}( 1.3.6.1.4.1.7165.2.1.47 NAME 'sambaMungedDial' DESC&lt;br /&gt;
  'Base64 encoded user parameter string' EQUALITY caseExactMatch SYNTAX 1.3.&lt;br /&gt;
 6.1.4.1.1466.115.121.1.15{1050} )&lt;br /&gt;
olcattributetypes: {19}( 1.3.6.1.4.1.7165.2.1.54 NAME 'sambaPasswordHistory'&lt;br /&gt;
  DESC 'Concatenated MD5 hashes of the salted NT passwords used on this acco&lt;br /&gt;
 unt' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} )&lt;br /&gt;
olcattributetypes: {20}( 1.3.6.1.4.1.7165.2.1.20 NAME 'sambaSID' DESC 'Secur&lt;br /&gt;
 ity ID' EQUALITY caseIgnoreIA5Match SUBSTR caseExactIA5SubstringsMatch SYNT&lt;br /&gt;
 AX 1.3.6.1.4.1.1466.115.121.1.26{64} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {21}( 1.3.6.1.4.1.7165.2.1.23 NAME 'sambaPrimaryGroupSID'&lt;br /&gt;
  DESC 'Primary Group Security ID' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.&lt;br /&gt;
 1.4.1.1466.115.121.1.26{64} SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {22}( 1.3.6.1.4.1.7165.2.1.51 NAME 'sambaSIDList' DESC 'S&lt;br /&gt;
 ecurity ID List' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466.115.12&lt;br /&gt;
 1.1.26{64} )&lt;br /&gt;
olcattributetypes: {23}( 1.3.6.1.4.1.7165.2.1.19 NAME 'sambaGroupType' DESC &lt;br /&gt;
 'NT Group Type' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 &lt;br /&gt;
 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {24}( 1.3.6.1.4.1.7165.2.1.21 NAME 'sambaNextUserRid' DES&lt;br /&gt;
 C 'Next NT rid to give our for users' EQUALITY integerMatch SYNTAX 1.3.6.1.&lt;br /&gt;
 4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {25}( 1.3.6.1.4.1.7165.2.1.22 NAME 'sambaNextGroupRid' DE&lt;br /&gt;
 SC 'Next NT rid to give out for groups' EQUALITY integerMatch SYNTAX 1.3.6.&lt;br /&gt;
 1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {26}( 1.3.6.1.4.1.7165.2.1.39 NAME 'sambaNextRid' DESC 'N&lt;br /&gt;
 ext NT rid to give out for anything' EQUALITY integerMatch SYNTAX 1.3.6.1.4&lt;br /&gt;
 .1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {27}( 1.3.6.1.4.1.7165.2.1.40 NAME 'sambaAlgorithmicRidBa&lt;br /&gt;
 se' DESC 'Base at which the samba RID generation algorithm should operate' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {28}( 1.3.6.1.4.1.7165.2.1.41 NAME 'sambaShareName' DESC &lt;br /&gt;
 'Share Name' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 &lt;br /&gt;
 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {29}( 1.3.6.1.4.1.7165.2.1.42 NAME 'sambaOptionName' DESC&lt;br /&gt;
  'Option Name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SY&lt;br /&gt;
 NTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )&lt;br /&gt;
olcattributetypes: {30}( 1.3.6.1.4.1.7165.2.1.43 NAME 'sambaBoolOption' DESC&lt;br /&gt;
  'A boolean option' EQUALITY booleanMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1&lt;br /&gt;
 .7 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {31}( 1.3.6.1.4.1.7165.2.1.44 NAME 'sambaIntegerOption' D&lt;br /&gt;
 ESC 'An integer option' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.1&lt;br /&gt;
 21.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {32}( 1.3.6.1.4.1.7165.2.1.45 NAME 'sambaStringOption' DE&lt;br /&gt;
 SC 'A string option' EQUALITY caseExactIA5Match SYNTAX 1.3.6.1.4.1.1466.115&lt;br /&gt;
 .121.1.26 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {33}( 1.3.6.1.4.1.7165.2.1.46 NAME 'sambaStringListOption&lt;br /&gt;
 ' DESC 'A string list option' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1&lt;br /&gt;
 466.115.121.1.15 )&lt;br /&gt;
olcattributetypes: {34}( 1.3.6.1.4.1.7165.2.1.53 NAME 'sambaTrustFlags' DESC&lt;br /&gt;
  'Trust Password Flags' EQUALITY caseIgnoreIA5Match SYNTAX 1.3.6.1.4.1.1466&lt;br /&gt;
 .115.121.1.26 )&lt;br /&gt;
olcattributetypes: {35}( 1.3.6.1.4.1.7165.2.1.58 NAME 'sambaMinPwdLength' DE&lt;br /&gt;
 SC 'Minimal password length (default: 5)' EQUALITY integerMatch SYNTAX 1.3.&lt;br /&gt;
 6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {36}( 1.3.6.1.4.1.7165.2.1.59 NAME 'sambaPwdHistoryLength&lt;br /&gt;
 ' DESC 'Length of Password History Entries (default: 0 =&amp;gt; off)' EQUALITY in&lt;br /&gt;
 tegerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {37}( 1.3.6.1.4.1.7165.2.1.60 NAME 'sambaLogonToChgPwd' D&lt;br /&gt;
 ESC 'Force Users to logon for password change (default: 0 =&amp;gt; off, 2 =&amp;gt; on)'&lt;br /&gt;
  EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {38}( 1.3.6.1.4.1.7165.2.1.61 NAME 'sambaMaxPwdAge' DESC &lt;br /&gt;
 'Maximum password age, in seconds (default: -1 =&amp;gt; never expire passwords)' &lt;br /&gt;
 EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {39}( 1.3.6.1.4.1.7165.2.1.62 NAME 'sambaMinPwdAge' DESC &lt;br /&gt;
 'Minimum password age, in seconds (default: 0 =&amp;gt; allow immediate password c&lt;br /&gt;
 hange)' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-V&lt;br /&gt;
 ALUE )&lt;br /&gt;
olcattributetypes: {40}( 1.3.6.1.4.1.7165.2.1.63 NAME 'sambaLockoutDuration'&lt;br /&gt;
  DESC 'Lockout duration in minutes (default: 30, -1 =&amp;gt; forever)' EQUALITY i&lt;br /&gt;
 ntegerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {41}( 1.3.6.1.4.1.7165.2.1.64 NAME 'sambaLockoutObservati&lt;br /&gt;
 onWindow' DESC 'Reset time after lockout in minutes (default: 30)' EQUALITY&lt;br /&gt;
  integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {42}( 1.3.6.1.4.1.7165.2.1.65 NAME 'sambaLockoutThreshold&lt;br /&gt;
 ' DESC 'Lockout users after bad logon attempts (default: 0 =&amp;gt; off)' EQUALIT&lt;br /&gt;
 Y integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {43}( 1.3.6.1.4.1.7165.2.1.66 NAME 'sambaForceLogoff' DES&lt;br /&gt;
 C 'Disconnect Users outside logon hours (default: -1 =&amp;gt; off, 0 =&amp;gt; on)' EQUA&lt;br /&gt;
 LITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {44}( 1.3.6.1.4.1.7165.2.1.67 NAME 'sambaRefuseMachinePwd&lt;br /&gt;
 Change' DESC 'Allow Machine Password changes (default: 0 =&amp;gt; off)' EQUALITY &lt;br /&gt;
 integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )&lt;br /&gt;
olcattributetypes: {45}( 1.3.6.1.4.1.7165.2.1.68 NAME 'sambaClearTextPasswor&lt;br /&gt;
 d' DESC 'Clear text password (used for trusted domain passwords)' EQUALITY &lt;br /&gt;
 octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )&lt;br /&gt;
olcattributetypes: {46}( 1.3.6.1.4.1.7165.2.1.69 NAME 'sambaPreviousClearTex&lt;br /&gt;
 tPassword' DESC 'Previous clear text password (used for trusted domain pass&lt;br /&gt;
 words)' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )&lt;br /&gt;
olcobjectclasses: {0}( 1.3.6.1.4.1.7165.2.2.6 NAME 'sambaSamAccount' DESC 'S&lt;br /&gt;
 amba 3.0 Auxilary SAM Account' SUP top AUXILIARY MUST ( uid $ sambaSID ) MA&lt;br /&gt;
 Y ( cn $ sambaNTPassword $ sambaPwdLastSet $ sambaLogonTi&lt;br /&gt;
 me $ sambaLogoffTime $ sambaKickoffTime $ sambaPwdCanChange $ sambaPwdMustC&lt;br /&gt;
 hange $ sambaAcctFlags $ displayName $ sambaHomePath $ sambaHomeDrive $ sam&lt;br /&gt;
 baLogonScript $ sambaProfilePath $ description $ sambaUserWorkstations $ sa&lt;br /&gt;
 mbaPrimaryGroupSID $ sambaDomainName $ sambaMungedDial $ sambaBadPasswordCo&lt;br /&gt;
 unt $ sambaBadPasswordTime $ sambaPasswordHistory $ sambaLogonHours ) )&lt;br /&gt;
olcobjectclasses: {1}( 1.3.6.1.4.1.7165.2.2.4 NAME 'sambaGroupMapping' DESC &lt;br /&gt;
 'Samba Group Mapping' SUP top AUXILIARY MUST ( gidNumber $ sambaSID $ samba&lt;br /&gt;
 GroupType ) MAY ( displayName $ description $ sambaSIDList ) )&lt;br /&gt;
olcobjectclasses: {2}( 1.3.6.1.4.1.7165.2.2.14 NAME 'sambaTrustPassword' DES&lt;br /&gt;
 C 'Samba Trust Password' SUP top STRUCTURAL MUST ( sambaDomainName $ sambaN&lt;br /&gt;
 TPassword $ sambaTrustFlags ) MAY ( sambaSID $ sambaPwdLastSet ) )&lt;br /&gt;
olcobjectclasses: {3}( 1.3.6.1.4.1.7165.2.2.15 NAME 'sambaTrustedDomainPassw&lt;br /&gt;
 ord' DESC 'Samba Trusted Domain Password' SUP top STRUCTURAL MUST ( sambaDo&lt;br /&gt;
 mainName $ sambaSID $ sambaClearTextPassword $ sambaPwdLastSet ) MAY sambaP&lt;br /&gt;
 reviousClearTextPassword )&lt;br /&gt;
olcobjectclasses: {4}( 1.3.6.1.4.1.7165.2.2.5 NAME 'sambaDomain' DESC 'Samba&lt;br /&gt;
  Domain Information' SUP top STRUCTURAL MUST ( sambaDomainName $ sambaSID )&lt;br /&gt;
  MAY ( sambaNextRid $ sambaNextGroupRid $ sambaNextUserRid $ sambaAlgorithm&lt;br /&gt;
 icRidBase $ sambaMinPwdLength $ sambaPwdHistoryLength $ sambaLogonToChgPwd &lt;br /&gt;
 $ sambaMaxPwdAge $ sambaMinPwdAge $ sambaLockoutDuration $ sambaLockoutObse&lt;br /&gt;
 rvationWindow $ sambaLockoutThreshold $ sambaForceLogoff $ sambaRefuseMachi&lt;br /&gt;
 nePwdChange ) )&lt;br /&gt;
olcobjectclasses: {5}( 1.3.6.1.4.1.7165.2.2.7 NAME 'sambaUnixIdPool' DESC 'P&lt;br /&gt;
 ool for allocating UNIX uids/gids' SUP top AUXILIARY MUST ( uidNumber $ gid&lt;br /&gt;
 Number ) )&lt;br /&gt;
olcobjectclasses: {6}( 1.3.6.1.4.1.7165.2.2.8 NAME 'sambaIdmapEntry' DESC 'M&lt;br /&gt;
 apping from a SID to an ID' SUP top AUXILIARY MUST sambaSID MAY ( uidNumber&lt;br /&gt;
  $ gidNumber ) )&lt;br /&gt;
olcobjectclasses: {7}( 1.3.6.1.4.1.7165.2.2.9 NAME 'sambaSidEntry' DESC 'Str&lt;br /&gt;
 uctural Class for a SID' SUP top STRUCTURAL MUST sambaSID )&lt;br /&gt;
olcobjectclasses: {8}( 1.3.6.1.4.1.7165.2.2.10 NAME 'sambaConfig' DESC 'Samb&lt;br /&gt;
 a Configuration Section' SUP top AUXILIARY MAY description )&lt;br /&gt;
olcobjectclasses: {9}( 1.3.6.1.4.1.7165.2.2.11 NAME 'sambaShare' DESC 'Samba&lt;br /&gt;
  Share Section' SUP top STRUCTURAL MUST sambaShareName MAY description )&lt;br /&gt;
olcobjectclasses: {10}( 1.3.6.1.4.1.7165.2.2.12 NAME 'sambaConfigOption' DES&lt;br /&gt;
 C 'Samba Configuration Option' SUP top STRUCTURAL MUST sambaOptionName MAY &lt;br /&gt;
 ( sambaBoolOption $ sambaIntegerOption $ sambaStringOption $ sambaStringLis&lt;br /&gt;
 toption $ description ) )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 3: Secure your directory&amp;lt;/h3&amp;gt;&lt;br /&gt;
Make sure that you secure your directory, here's a nice checklist for you :)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Run on port 636, allow only LDAPS&amp;lt;/h4&amp;gt;&lt;br /&gt;
Make sure the /etc/default/slapd file has the following SLAPD_SERVICES defined;&lt;br /&gt;
&amp;lt;pre&amp;gt;SLAPD_SERVICES=&amp;quot;ldapi:/// ldap://localhost:389/ ldaps:///&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to enable LDAPS and restrict plaintext LDAP to localhost.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Install a certificate&amp;lt;/h4&amp;gt;&lt;br /&gt;
Save below to file, adjust the paths and run ldapmodify -Y EXTERNAL -H ldapi:// &amp;lt; file.ldif&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: cn=config&lt;br /&gt;
add: olcTLSCACertificateFile&lt;br /&gt;
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem&lt;br /&gt;
-&lt;br /&gt;
add: olcTLSCertificateKeyFile&lt;br /&gt;
olcTLSCertificateKeyFile: /etc/ssl/private/server-key.pem&lt;br /&gt;
-&lt;br /&gt;
add: olcTLSCertificateFile&lt;br /&gt;
olcTLSCertificateFile: /etc/ssl/certs/server-cert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Letsencrypt&amp;lt;/h5&amp;gt;&lt;br /&gt;
For Letsencrypt certificates please remember to change the filerights accordingly in order to be able to read the certificates. This can be done with the command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
useradd letsencrypt&lt;br /&gt;
chown openldap:letsencrypt /etc/letsencrypt/ -R&lt;br /&gt;
usermod -a -G letsencrypt openldap&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Furthermore we need to insert the certificates into the configuration. This can be done with the following ldif file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: cn=config&lt;br /&gt;
add: olcTLSCACertificateFile&lt;br /&gt;
olcTLSCACertificateFile: /etc/letsencrypt/live/$servername$/fullchain.pem&lt;br /&gt;
-&lt;br /&gt;
add: olcTLSCertificateKeyFile&lt;br /&gt;
olcTLSCertificateKeyFile: /etc/letsencrypt/live/$servername$/privkey.pem&lt;br /&gt;
-&lt;br /&gt;
add: olcTLSCertificateFile&lt;br /&gt;
olcTLSCertificateFile: /etc/letsencrypt/live/$servername$/cert.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please also remember to restart Openldap on certificate renew to start using the renewed certificates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Disallow LDAP v2&amp;lt;/h4&amp;gt;&lt;br /&gt;
This was a dpkg configure question. You should have said no to the question &amp;quot;Allow v2 binds&amp;quot;. Anyway, how to fix will be provided here. &amp;lt;b&amp;gt;FIXME&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Disable anonymous binds&amp;lt;/h4&amp;gt;&lt;br /&gt;
Add the following attributes to your configuration object (ldapmodify -Y EXTERNAL -H ldapi:// &amp;lt; file.ldif):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: cn=config&lt;br /&gt;
changetype: modify&lt;br /&gt;
add: olcDisallows&lt;br /&gt;
olcDisallows: bind_anon&lt;br /&gt;
&lt;br /&gt;
dn: olcDatabase={-1}frontend,cn=config&lt;br /&gt;
changetype: modify&lt;br /&gt;
add: olcRequires&lt;br /&gt;
olcRequires: authc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;Protect the sambaNTPassword attribute from being read&amp;lt;/h4&amp;gt;&lt;br /&gt;
Add the following ACL attribute to your database (ldapmodify -Y EXTERNAL -H ldapi:// &amp;lt; file.ldif):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: olcDatabase={1}hdb,cn=config&lt;br /&gt;
changetype: modify&lt;br /&gt;
add: olcAccess&lt;br /&gt;
olcAccess: {1}to attrs=sambaNTPassword&lt;br /&gt;
  by dn=&amp;quot;cn=admin,dc=YOUR,dc=REALM,dc=TLD&amp;quot; write&lt;br /&gt;
  by dn=&amp;quot;cn=read,dc=YOUR,dc=REALM,dc=TLD&amp;quot; read&lt;br /&gt;
  by self write&lt;br /&gt;
  by * none&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 4: Add a samba domain Unix ID pool&amp;lt;/h3&amp;gt;&lt;br /&gt;
You need a Unix ID pool from which to allocate uidNumbers and gidNumbers... and for the samba users you need a samba SID pool to allocate SIDs.&lt;br /&gt;
Add the following 2 objects to your realm (adjust first, use ldapadd -x -D cn=admin,dc=YOUR,dc=REALM,dc=TLD -W &amp;lt; file.ldif)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: sambaDomainName=YOURORGANISATION,dc=YOUR,dc=REALM,dc=TLD&lt;br /&gt;
sambaDomainName: YOURORGANISATION&lt;br /&gt;
sambaSID: S-1-5-21-2919752157-891696647-4172528126 (please change a few numbers in the last 3 groups)&lt;br /&gt;
sambaAlgorithmicRidBase: 1000&lt;br /&gt;
objectClass: sambaDomain&lt;br /&gt;
sambaMinPwdAge: 0&lt;br /&gt;
sambaMinPwdLength: 5&lt;br /&gt;
sambaLogonToChgPwd: 0&lt;br /&gt;
sambaForceLogoff: -1&lt;br /&gt;
sambaRefuseMachinePwdChange: 0&lt;br /&gt;
sambaLockoutThreshold: 0&lt;br /&gt;
sambaMaxPwdAge: -1&lt;br /&gt;
sambaNextRid: 20100&lt;br /&gt;
sambaPwdHistoryLength: 0&lt;br /&gt;
&lt;br /&gt;
dn: cn=NextFreeUnixId,dc=YOUR,dc=REALM,dc=TLD&lt;br /&gt;
objectClass: inetOrgPerson&lt;br /&gt;
objectClass: sambaUnixIdPool&lt;br /&gt;
cn: NextFreeUnixId&lt;br /&gt;
sn: NextFreeUnixId&lt;br /&gt;
gidNumber: 10000&lt;br /&gt;
uidNumber: 10000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 5: Install phpldapadmin and start filling it up&amp;lt;/h3&amp;gt;&lt;br /&gt;
This one is optional, but it is a graphical representation, so it may help you understand what you are doing. Just install phpldapadmin, point it to the directory and you're done (this can be done in &amp;quot;/etc/phpldapadmin/config.php&amp;quot;). Make sure that you create &amp;quot;Samba accounts&amp;quot; and do not *EVER* use the sambaLMPassword (I removed it from the schema above to prevent this). &lt;br /&gt;
&lt;br /&gt;
phpldapadmin version 1.2.2.4 has a bug with making a &amp;quot;Samba: Group Mapping&amp;quot;, this is needed for making &amp;quot;Samba accounts&amp;quot;. If you install version 1.2.0.5 you won't have that problem. (The 1.2.0.5 version can be found in the &amp;quot;debian squeeze repository&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
You might also want to check out JXplorer and Luma is also looking very promising. You may also want to manage your users using smbldap-tools, so you can add users with smbldap-useradd, etc. &amp;lt;b&amp;gt;FIXME: Add links&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 6: Make sure it makes sense&amp;lt;/h3&amp;gt;&lt;br /&gt;
You can create (objectclass=)OrganizationalUnits objects, under which you can create your users. I suggest your create a unit for your users (OU=Users) and a unit for your groups (OU=Groups).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 7: Create a group&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;FIXME&amp;lt;/b&amp;gt;.. but you can do this in phpldapadmin already&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Step 8: Create your users&amp;lt;/h3&amp;gt;&lt;br /&gt;
A user will kind of look like this, use SSHA hashes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dn: uid=wilco,ou=People,dc=YOUR,dc=REALM,dc=TLD&lt;br /&gt;
uid: wilco&lt;br /&gt;
objectClass: top&lt;br /&gt;
objectClass: person&lt;br /&gt;
objectClass: organizationalPerson&lt;br /&gt;
objectClass: inetOrgPerson&lt;br /&gt;
objectClass: posixAccount&lt;br /&gt;
objectClass: shadowAccount&lt;br /&gt;
objectClass: sambaSamAccount&lt;br /&gt;
uidNumber: 12581&lt;br /&gt;
gidNumber: 10407&lt;br /&gt;
sambaSID: S-1-5-21-2969752157-892696647-4271518216-101187&lt;br /&gt;
cn: Wilco Baan Hofman&lt;br /&gt;
displayName: Wilco Baan Hofman&lt;br /&gt;
gecos: Wilco Baan Hofman,,,&lt;br /&gt;
givenName: Wilco&lt;br /&gt;
sn: Baan Hofman&lt;br /&gt;
mail: wilco@your.realm.tld&lt;br /&gt;
description: Some random guy&lt;br /&gt;
loginShell: /bin/bash&lt;br /&gt;
homeDirectory: /home/wilco&lt;br /&gt;
sambaPwdLastSet: 1262705210&lt;br /&gt;
sambaNTPassword: NTHASHHERE&lt;br /&gt;
userPassword: {SSHA}HashOfThePasswordHere&lt;br /&gt;
sambaPrimaryGroupSID: S-1-5-21-2969752157-892696647-4271518216-513&lt;br /&gt;
sambaAcctFlags: [U          ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Finally: Connect everything to your directory&amp;lt;/h2&amp;gt;&lt;br /&gt;
You can now connect Freeradius to your LDAP directory. But you can now also connect NSS and PAM to add SSH accounts or mail accounts, etc. And you can now also connect your wiki, a samba file server and whatever else you can think of. Just point it to the directory, supply bind DN, bind password and base DN and it will likely just work. Be sure to check out the AllowGroup directive for your SSH server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto/Spacenet]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Setup_freeradius&amp;diff=53</id>
		<title>Setup freeradius</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Setup_freeradius&amp;diff=53"/>
		<updated>2023-09-30T06:57:28Z</updated>

		<summary type="html">&lt;p&gt;Xopr: added reference links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Apply for a realm&amp;lt;/h2&amp;gt;&lt;br /&gt;
You can apply for a realm by [[Contact|contacting]] us. You will need to prove that you are in the board of your local hackerspace, so we'll only reply to realm-admin@yourrealm.tld.&lt;br /&gt;
Also send the public IPv4 address of your home server to us, we'll make sure your realm gets added to Spacenet and generate a secret for communication between the radius servers. We will also give you an account on the test realm to test authentications. &amp;lt;strong&amp;gt;Make sure that you remain reachable on this address when the realm is live, as root servers and delegations may need updating from time to time.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you wish to apply for a top level delegation for your country, you must make sure that you sign up at least 5 hackerspaces in your country and estabilish a website where your local hackerspaces can apply for realms in your delegated space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Install Debian on a (virtual) machine&amp;lt;/h2&amp;gt;&lt;br /&gt;
The specifics fall outside the scope of this document. If you need help with this, contact us about using a hosted SSO package, as the rest of this howto assumes this as a basic skill.&lt;br /&gt;
&amp;lt;h2&amp;gt;Setting up FreeRADIUS&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
FreeRADIUS basically works as authentication server and authentication proxy. On top of RADIUS several EAP protocols are implemented which should be used. To be able to support Windows clients natively it is benificial to support at least PEAPv0/EAP-MSCHAPv2. I'd really like to see an EAP-Kerberos method added to the clients, but until then, use EAP-TTLS or PEAPv0 with MS-CHAPv2 password authentication. If you don't mind the administrative burden of setting up a CA and using client certificates, that is also possible, just specify it in the tls block in eap.conf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;It is always important to verify the certificate on the clients to prevent a man in the middle attack!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The conffiles&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Overview&amp;lt;/h4&amp;gt;&lt;br /&gt;
You need the following configuration files.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;eap.conf&lt;br /&gt;
&amp;lt;li&amp;gt;sites-enabled/default&lt;br /&gt;
&amp;lt;li&amp;gt;sites-enabled/inner-tunnel&lt;br /&gt;
&amp;lt;li&amp;gt;proxy.conf&lt;br /&gt;
&amp;lt;li&amp;gt;clients.conf&lt;br /&gt;
&amp;lt;li&amp;gt;modules/ldap&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
We also recommend setting up an OpenLDAP server, as you're going to need this for SAML and likely Kerberos later as well. These configuration files are for an OpenLDAP server, if you expressly do not want to do this, replace 'ldap' with 'files' in the configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;eap.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures the &amp;lt;strong&amp;gt;local&amp;lt;/strong&amp;gt; EAP types and certificates.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
eap {&lt;br /&gt;
        default_eap_type = ttls&lt;br /&gt;
        timer_expire     = 60    &lt;br /&gt;
        ignore_unknown_eap_types = no&lt;br /&gt;
        cisco_accounting_username_bug = no&lt;br /&gt;
        max_sessions = 4096&lt;br /&gt;
&lt;br /&gt;
        tls {   &lt;br /&gt;
                certdir = ${confdir}/certs&lt;br /&gt;
                cadir = ${confdir}/certs&lt;br /&gt;
&lt;br /&gt;
                private_key_password = &lt;br /&gt;
                private_key_file = ${certdir}/server.key&lt;br /&gt;
                certificate_file = ${certdir}/server.pem&lt;br /&gt;
                CA_file = ${cadir}/ca.pem&lt;br /&gt;
                dh_file = ${certdir}/dh&lt;br /&gt;
                random_file = /dev/urandom&lt;br /&gt;
                CA_path = ${cadir}&lt;br /&gt;
        }       &lt;br /&gt;
        ttls {  &lt;br /&gt;
                default_eap_type = mschapv2&lt;br /&gt;
                copy_request_to_tunnel = no&lt;br /&gt;
                use_tunneled_reply = no&lt;br /&gt;
                virtual_server = &amp;quot;inner-tunnel&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
        peap {  &lt;br /&gt;
                default_eap_type = mschapv2&lt;br /&gt;
                copy_request_to_tunnel = no&lt;br /&gt;
                use_tunneled_reply = no&lt;br /&gt;
                virtual_server = &amp;quot;inner-tunnel&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        mschapv2 {&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;sites-enabled/default&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures the initial unencrypted RADIUS session. It is important to reject requests without a realm, otherwise the user could run into trouble at another realm.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
authorize {&lt;br /&gt;
        preprocess&lt;br /&gt;
&lt;br /&gt;
        suffix&lt;br /&gt;
        if (Realm == NULL) {&lt;br /&gt;
                update reply {&lt;br /&gt;
                      Reply-Message := &amp;quot;Please specify a realm to authenticate with.&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
                reject&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        eap&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
authenticate {&lt;br /&gt;
        eap&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
preacct {&lt;br /&gt;
        preprocess&lt;br /&gt;
        acct_unique&lt;br /&gt;
        suffix&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
accounting {&lt;br /&gt;
        detail&lt;br /&gt;
        radutmp&lt;br /&gt;
        exec&lt;br /&gt;
        attr_filter.accounting_response&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
session {&lt;br /&gt;
        radutmp&lt;br /&gt;
}&lt;br /&gt;
post-proxy {&lt;br /&gt;
	if (&amp;quot;%{proxy-reply:Packet-Type}&amp;quot; == &amp;quot;Access-Accept&amp;quot;) {&lt;br /&gt;
		# Overwrite the VLAN tag and filter untrusted attributes&lt;br /&gt;
		# &amp;quot;!* ANY&amp;quot; to remove the tag or &amp;quot;:=&amp;quot; to overwrite&lt;br /&gt;
		update proxy-reply {&lt;br /&gt;
			Tunnel-Type := VLAN&lt;br /&gt;
			Tunnel-Medium-Type := IEEE-802&lt;br /&gt;
			Tunnel-Private-Group-Id := &amp;quot;xx&amp;quot;&lt;br /&gt;
			Session-Timeout !* ANY&lt;br /&gt;
			Aruba-User-Role !* ANY&lt;br /&gt;
			Aruba-User-VLAN !* ANY&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		# Add the realm if upstream does not provide it&lt;br /&gt;
		# Also provides security if upstream fakes a realm&lt;br /&gt;
		if (&amp;quot;%{request:User-Name}&amp;quot; =~ /@(.+)$/) {&lt;br /&gt;
			if (&amp;quot;%{proxy-reply:User-Name}&amp;quot; != &amp;quot;&amp;quot; &amp;amp;&amp;amp; &amp;quot;%{proxy-reply:User-Name}&amp;quot; !~ /@%{1}$/) {&lt;br /&gt;
				update proxy-reply {&lt;br /&gt;
					User-Name := &amp;quot;%{proxy-reply:User-Name}@%{1}&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	eap&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;sites-enabled/inner-tunnel&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
server inner-tunnel {&lt;br /&gt;
        listen {&lt;br /&gt;
               ipaddr = 127.0.0.1&lt;br /&gt;
               port = 18120&lt;br /&gt;
               type = auth&lt;br /&gt;
        }&lt;br /&gt;
        authorize {&lt;br /&gt;
                suffix&lt;br /&gt;
                if (Realm != &amp;quot;your-realm.tld&amp;quot;) {&lt;br /&gt;
                        reject&lt;br /&gt;
                }&lt;br /&gt;
		pap&lt;br /&gt;
		mschap&lt;br /&gt;
                eap &lt;br /&gt;
                ldap&lt;br /&gt;
 &lt;br /&gt;
                expiration&lt;br /&gt;
                logintime&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        authenticate {&lt;br /&gt;
                Auth-Type PAP {&lt;br /&gt;
                        pap&lt;br /&gt;
                }&lt;br /&gt;
                Auth-Type MS-CHAP {&lt;br /&gt;
                        mschap&lt;br /&gt;
                }&lt;br /&gt;
                eap&lt;br /&gt;
		ldap&lt;br /&gt;
        }&lt;br /&gt;
        session {&lt;br /&gt;
                radutmp&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        post-auth {&lt;br /&gt;
                Post-Auth-Type REJECT {&lt;br /&gt;
                        attr_filter.access_reject&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
		# Only leak our real usernames and VLAN tags to your own access points&lt;br /&gt;
		if (NAS-IP-Address == &amp;quot;xxx.xxx.xxx.xxx&amp;quot;) {&lt;br /&gt;
			&lt;br /&gt;
			# Make sure we always include '@your-realm.tld' in the reply&lt;br /&gt;
			if (&amp;quot;%{request:User-Name}&amp;quot; !~ /@your-realm.tld$/) {&lt;br /&gt;
				update reply {&lt;br /&gt;
					User-Name := &amp;quot;%{request:User-Name}@your-realm.tld&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				update reply {&lt;br /&gt;
					User-Name := &amp;quot;%{request:User-Name}&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			update reply {&lt;br /&gt;
				User-Name := &amp;quot;anonymous@your-realm.tld&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
        pre-proxy {&lt;br /&gt;
        }&lt;br /&gt;
        post-proxy {&lt;br /&gt;
                eap&lt;br /&gt;
        }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;proxy.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
&lt;br /&gt;
proxy server {&lt;br /&gt;
        default_fallback = no&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
home_server nlnode1.spacefed.net {&lt;br /&gt;
        type = auth+acct&lt;br /&gt;
        ipaddr = 194.171.96.99&lt;br /&gt;
        port = 1812&lt;br /&gt;
        secret = YOUR_SUPPLIED_SECRET&lt;br /&gt;
        require_message_authenticator = yes&lt;br /&gt;
        response_window = 5&lt;br /&gt;
        zombie_period = 60&lt;br /&gt;
        revive_interval = 120&lt;br /&gt;
        status_check = status-server&lt;br /&gt;
        check_interval = 30&lt;br /&gt;
        num_answers_to_alive = 3&lt;br /&gt;
        coa {&lt;br /&gt;
                # Initial retransmit interval: 1..5&lt;br /&gt;
                irt = 2&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Timeout: 1..30 (0 == no maximum)&lt;br /&gt;
                mrt = 16&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Count: 1..20 (0 == retransmit forever)&lt;br /&gt;
                mrc = 5&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Duration: 5..60&lt;br /&gt;
                mrd = 30&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
home_server_pool root_pool {&lt;br /&gt;
        type = client-balance&lt;br /&gt;
&lt;br /&gt;
        # The members of the root delegation pool&lt;br /&gt;
        home_server = nlnode1.spacefed.net&lt;br /&gt;
        # home_server = ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Your realm should be local&lt;br /&gt;
realm your-realm.tld {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# These realms should always be handled locally&lt;br /&gt;
realm LOCAL {&lt;br /&gt;
}&lt;br /&gt;
realm NULL {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
realm DEFAULT {&lt;br /&gt;
        nostrip&lt;br /&gt;
        auth_pool       = root_pool&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;clients.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures all inbound connections, including those to the root nodes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
client localhost {&lt;br /&gt;
        ipaddr = 127.0.0.1&lt;br /&gt;
        secret          = CHOOSE_YOUR_OWN&lt;br /&gt;
        require_message_authenticator = no&lt;br /&gt;
        nastype     = other&lt;br /&gt;
}&lt;br /&gt;
client 194.171.96.99 {&lt;br /&gt;
        secret          = YOUR_SUPPLIED_SECRET&lt;br /&gt;
        shortname       = nlnode1&lt;br /&gt;
}&lt;br /&gt;
client 1.2.3.4 {&lt;br /&gt;
        secret          = CHOOSE_YOUR_OWN&lt;br /&gt;
        shortname       = my_access_point&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;modules/ldap&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file contains the LDAP connection and filter information. You should add TLS information if your server does not run on localhost.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
ldap {&lt;br /&gt;
        server = &amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
        identity = &amp;quot;cn=user_with_read_access,dc=your-realm,dc=tld&amp;quot;&lt;br /&gt;
        password = YOUR_SECRET&lt;br /&gt;
        basedn = &amp;quot;dc=your-realm,dc=tld&amp;quot;&lt;br /&gt;
        filter = &amp;quot;(uid=%{%{Stripped-User-Name}:-%{User-Name}})&amp;quot;&lt;br /&gt;
        #base_filter = &amp;quot;(objectclass=radiusprofile)&amp;quot;&lt;br /&gt;
        ldap_connections_number = 5 &lt;br /&gt;
        timeout = 4 &lt;br /&gt;
        timelimit = 3 &lt;br /&gt;
        net_timeout = 1 &lt;br /&gt;
        tls {&lt;br /&gt;
                start_tls = no&lt;br /&gt;
                # cacertfile = /path/to/cacert.pem&lt;br /&gt;
                # cacertdir  = /path/to/ca/dir/&lt;br /&gt;
                # certfile   = /path/to/radius.crt&lt;br /&gt;
                # keyfile    = /path/to/radius.key&lt;br /&gt;
                # randfile   = /dev/urandom&lt;br /&gt;
        }   &lt;br /&gt;
        dictionary_mapping = ${confdir}/ldap.attrmap&lt;br /&gt;
        edir_account_policy_check = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Server certificate&amp;lt;/h2&amp;gt;&lt;br /&gt;
For the server certificate you can use a SSL certificate. The certificate should not be a wildcard certificate, but a domain or subdomain certificate (for example: CN = radius.bitlair.nl).&lt;br /&gt;
&lt;br /&gt;
It is preferable that you use a certificate that is signed by a well-known Certificate Authority, this will make the client configuration a bit more easy.&lt;br /&gt;
&lt;br /&gt;
You can use a free certificate from StartCom, but you will need to append the &amp;quot;Class 1 Intermediate Server CA&amp;quot; (sub.class1.server.ca.pem) to your server.pem file otherwise the clients won't be able to verify the certificate properly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Opening up the radius to the internet&amp;lt;/h2&amp;gt;&lt;br /&gt;
Make sure you open up UDP and TCP ports 1812 and 1813 to the internet. This should be opened to every client configured in the clients.conf.&lt;br /&gt;
&amp;lt;h2&amp;gt;Testing authentications&amp;lt;/h2&amp;gt;&lt;br /&gt;
It is convenient to use the eapol_test utility to test authentications against the local radius server using the key configured for localhost in clients.conf.&lt;br /&gt;
&lt;br /&gt;
You can use it like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;./eapol_test -c auth.conf -s CHOOSE_YOUR_OWN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The auth.conf should contain something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network={&lt;br /&gt;
	ssid=&amp;quot;spacenet&amp;quot;&lt;br /&gt;
        key_mgmt=WPA-EAP&lt;br /&gt;
        eap=PEAP&lt;br /&gt;
        identity=&amp;quot;username@your-realm.tld&amp;quot;&lt;br /&gt;
        anonymous_identity=&amp;quot;anonymous@your-realm.tld&amp;quot;&lt;br /&gt;
        password=&amp;quot;MY_SUPER_SECRET_PASSWORD&amp;quot;&lt;br /&gt;
        phase2=&amp;quot;auth=EAP-MSCHAPv2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Configure your access points&amp;lt;/h2&amp;gt;&lt;br /&gt;
Set up your access points to use WPA2 enterprise and point it to the IP of the radius server.&lt;br /&gt;
&lt;br /&gt;
Also checkout [[Howto/Spacenet/Accesspoint config general|Accesspoint config general]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Instruct your users&amp;lt;/h2&amp;gt;&lt;br /&gt;
Instruct your users how to set up WPA2 enterprise, it is not hard, but there are a few rules:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Always configure an anonymous identity as anonymous@your-realm.tld, this prevents others from seeing the real username and thus tracking.&lt;br /&gt;
&amp;lt;li&amp;gt;Always install the server certificate as CA on the clients or specify your server name and the CA that signed the certificate.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto/Spacenet]]&lt;br /&gt;
&lt;br /&gt;
== Also see ==&lt;br /&gt;
* https://wilco.baanhofman.nl/setup-freeradius2.x.html&lt;br /&gt;
* https://moeilijklastig.nl/spacefed.htm&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
	<entry>
		<id>https://spacefed.net/index.php?title=Setup_freeradius&amp;diff=52</id>
		<title>Setup freeradius</title>
		<link rel="alternate" type="text/html" href="https://spacefed.net/index.php?title=Setup_freeradius&amp;diff=52"/>
		<updated>2023-09-30T06:55:17Z</updated>

		<summary type="html">&lt;p&gt;Xopr: Recreated from https://wilco.baanhofman.nl/setup-freeradius2.x.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Apply for a realm&amp;lt;/h2&amp;gt;&lt;br /&gt;
You can apply for a realm by [[Contact|contacting]] us. You will need to prove that you are in the board of your local hackerspace, so we'll only reply to realm-admin@yourrealm.tld.&lt;br /&gt;
Also send the public IPv4 address of your home server to us, we'll make sure your realm gets added to Spacenet and generate a secret for communication between the radius servers. We will also give you an account on the test realm to test authentications. &amp;lt;strong&amp;gt;Make sure that you remain reachable on this address when the realm is live, as root servers and delegations may need updating from time to time.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you wish to apply for a top level delegation for your country, you must make sure that you sign up at least 5 hackerspaces in your country and estabilish a website where your local hackerspaces can apply for realms in your delegated space.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Install Debian on a (virtual) machine&amp;lt;/h2&amp;gt;&lt;br /&gt;
The specifics fall outside the scope of this document. If you need help with this, contact us about using a hosted SSO package, as the rest of this howto assumes this as a basic skill.&lt;br /&gt;
&amp;lt;h2&amp;gt;Setting up FreeRADIUS&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The basics&amp;lt;/h3&amp;gt;&lt;br /&gt;
FreeRADIUS basically works as authentication server and authentication proxy. On top of RADIUS several EAP protocols are implemented which should be used. To be able to support Windows clients natively it is benificial to support at least PEAPv0/EAP-MSCHAPv2. I'd really like to see an EAP-Kerberos method added to the clients, but until then, use EAP-TTLS or PEAPv0 with MS-CHAPv2 password authentication. If you don't mind the administrative burden of setting up a CA and using client certificates, that is also possible, just specify it in the tls block in eap.conf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;It is always important to verify the certificate on the clients to prevent a man in the middle attack!&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The conffiles&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;Overview&amp;lt;/h4&amp;gt;&lt;br /&gt;
You need the following configuration files.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;eap.conf&lt;br /&gt;
&amp;lt;li&amp;gt;sites-enabled/default&lt;br /&gt;
&amp;lt;li&amp;gt;sites-enabled/inner-tunnel&lt;br /&gt;
&amp;lt;li&amp;gt;proxy.conf&lt;br /&gt;
&amp;lt;li&amp;gt;clients.conf&lt;br /&gt;
&amp;lt;li&amp;gt;modules/ldap&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
We also recommend setting up an OpenLDAP server, as you're going to need this for SAML and likely Kerberos later as well. These configuration files are for an OpenLDAP server, if you expressly do not want to do this, replace 'ldap' with 'files' in the configuration files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;eap.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures the &amp;lt;strong&amp;gt;local&amp;lt;/strong&amp;gt; EAP types and certificates.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
eap {&lt;br /&gt;
        default_eap_type = ttls&lt;br /&gt;
        timer_expire     = 60    &lt;br /&gt;
        ignore_unknown_eap_types = no&lt;br /&gt;
        cisco_accounting_username_bug = no&lt;br /&gt;
        max_sessions = 4096&lt;br /&gt;
&lt;br /&gt;
        tls {   &lt;br /&gt;
                certdir = ${confdir}/certs&lt;br /&gt;
                cadir = ${confdir}/certs&lt;br /&gt;
&lt;br /&gt;
                private_key_password = &lt;br /&gt;
                private_key_file = ${certdir}/server.key&lt;br /&gt;
                certificate_file = ${certdir}/server.pem&lt;br /&gt;
                CA_file = ${cadir}/ca.pem&lt;br /&gt;
                dh_file = ${certdir}/dh&lt;br /&gt;
                random_file = /dev/urandom&lt;br /&gt;
                CA_path = ${cadir}&lt;br /&gt;
        }       &lt;br /&gt;
        ttls {  &lt;br /&gt;
                default_eap_type = mschapv2&lt;br /&gt;
                copy_request_to_tunnel = no&lt;br /&gt;
                use_tunneled_reply = no&lt;br /&gt;
                virtual_server = &amp;quot;inner-tunnel&amp;quot;&lt;br /&gt;
        }       &lt;br /&gt;
        peap {  &lt;br /&gt;
                default_eap_type = mschapv2&lt;br /&gt;
                copy_request_to_tunnel = no&lt;br /&gt;
                use_tunneled_reply = no&lt;br /&gt;
                virtual_server = &amp;quot;inner-tunnel&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
        mschapv2 {&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;sites-enabled/default&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures the initial unencrypted RADIUS session. It is important to reject requests without a realm, otherwise the user could run into trouble at another realm.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
authorize {&lt;br /&gt;
        preprocess&lt;br /&gt;
&lt;br /&gt;
        suffix&lt;br /&gt;
        if (Realm == NULL) {&lt;br /&gt;
                update reply {&lt;br /&gt;
                      Reply-Message := &amp;quot;Please specify a realm to authenticate with.&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
                reject&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        eap&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
authenticate {&lt;br /&gt;
        eap&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
preacct {&lt;br /&gt;
        preprocess&lt;br /&gt;
        acct_unique&lt;br /&gt;
        suffix&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
accounting {&lt;br /&gt;
        detail&lt;br /&gt;
        radutmp&lt;br /&gt;
        exec&lt;br /&gt;
        attr_filter.accounting_response&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
session {&lt;br /&gt;
        radutmp&lt;br /&gt;
}&lt;br /&gt;
post-proxy {&lt;br /&gt;
	if (&amp;quot;%{proxy-reply:Packet-Type}&amp;quot; == &amp;quot;Access-Accept&amp;quot;) {&lt;br /&gt;
		# Overwrite the VLAN tag and filter untrusted attributes&lt;br /&gt;
		# &amp;quot;!* ANY&amp;quot; to remove the tag or &amp;quot;:=&amp;quot; to overwrite&lt;br /&gt;
		update proxy-reply {&lt;br /&gt;
			Tunnel-Type := VLAN&lt;br /&gt;
			Tunnel-Medium-Type := IEEE-802&lt;br /&gt;
			Tunnel-Private-Group-Id := &amp;quot;xx&amp;quot;&lt;br /&gt;
			Session-Timeout !* ANY&lt;br /&gt;
			Aruba-User-Role !* ANY&lt;br /&gt;
			Aruba-User-VLAN !* ANY&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		# Add the realm if upstream does not provide it&lt;br /&gt;
		# Also provides security if upstream fakes a realm&lt;br /&gt;
		if (&amp;quot;%{request:User-Name}&amp;quot; =~ /@(.+)$/) {&lt;br /&gt;
			if (&amp;quot;%{proxy-reply:User-Name}&amp;quot; != &amp;quot;&amp;quot; &amp;amp;&amp;amp; &amp;quot;%{proxy-reply:User-Name}&amp;quot; !~ /@%{1}$/) {&lt;br /&gt;
				update proxy-reply {&lt;br /&gt;
					User-Name := &amp;quot;%{proxy-reply:User-Name}@%{1}&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	eap&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;sites-enabled/inner-tunnel&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
server inner-tunnel {&lt;br /&gt;
        listen {&lt;br /&gt;
               ipaddr = 127.0.0.1&lt;br /&gt;
               port = 18120&lt;br /&gt;
               type = auth&lt;br /&gt;
        }&lt;br /&gt;
        authorize {&lt;br /&gt;
                suffix&lt;br /&gt;
                if (Realm != &amp;quot;your-realm.tld&amp;quot;) {&lt;br /&gt;
                        reject&lt;br /&gt;
                }&lt;br /&gt;
		pap&lt;br /&gt;
		mschap&lt;br /&gt;
                eap &lt;br /&gt;
                ldap&lt;br /&gt;
 &lt;br /&gt;
                expiration&lt;br /&gt;
                logintime&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        authenticate {&lt;br /&gt;
                Auth-Type PAP {&lt;br /&gt;
                        pap&lt;br /&gt;
                }&lt;br /&gt;
                Auth-Type MS-CHAP {&lt;br /&gt;
                        mschap&lt;br /&gt;
                }&lt;br /&gt;
                eap&lt;br /&gt;
		ldap&lt;br /&gt;
        }&lt;br /&gt;
        session {&lt;br /&gt;
                radutmp&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        post-auth {&lt;br /&gt;
                Post-Auth-Type REJECT {&lt;br /&gt;
                        attr_filter.access_reject&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
		# Only leak our real usernames and VLAN tags to your own access points&lt;br /&gt;
		if (NAS-IP-Address == &amp;quot;xxx.xxx.xxx.xxx&amp;quot;) {&lt;br /&gt;
			&lt;br /&gt;
			# Make sure we always include '@your-realm.tld' in the reply&lt;br /&gt;
			if (&amp;quot;%{request:User-Name}&amp;quot; !~ /@your-realm.tld$/) {&lt;br /&gt;
				update reply {&lt;br /&gt;
					User-Name := &amp;quot;%{request:User-Name}@your-realm.tld&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				update reply {&lt;br /&gt;
					User-Name := &amp;quot;%{request:User-Name}&amp;quot;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else {&lt;br /&gt;
			update reply {&lt;br /&gt;
				User-Name := &amp;quot;anonymous@your-realm.tld&amp;quot;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
        }&lt;br /&gt;
        pre-proxy {&lt;br /&gt;
        }&lt;br /&gt;
        post-proxy {&lt;br /&gt;
                eap&lt;br /&gt;
        }&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;proxy.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
&lt;br /&gt;
proxy server {&lt;br /&gt;
        default_fallback = no&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
home_server nlnode1.spacefed.net {&lt;br /&gt;
        type = auth+acct&lt;br /&gt;
        ipaddr = 194.171.96.99&lt;br /&gt;
        port = 1812&lt;br /&gt;
        secret = YOUR_SUPPLIED_SECRET&lt;br /&gt;
        require_message_authenticator = yes&lt;br /&gt;
        response_window = 5&lt;br /&gt;
        zombie_period = 60&lt;br /&gt;
        revive_interval = 120&lt;br /&gt;
        status_check = status-server&lt;br /&gt;
        check_interval = 30&lt;br /&gt;
        num_answers_to_alive = 3&lt;br /&gt;
        coa {&lt;br /&gt;
                # Initial retransmit interval: 1..5&lt;br /&gt;
                irt = 2&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Timeout: 1..30 (0 == no maximum)&lt;br /&gt;
                mrt = 16&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Count: 1..20 (0 == retransmit forever)&lt;br /&gt;
                mrc = 5&lt;br /&gt;
&lt;br /&gt;
                # Maximum Retransmit Duration: 5..60&lt;br /&gt;
                mrd = 30&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
home_server_pool root_pool {&lt;br /&gt;
        type = client-balance&lt;br /&gt;
&lt;br /&gt;
        # The members of the root delegation pool&lt;br /&gt;
        home_server = nlnode1.spacefed.net&lt;br /&gt;
        # home_server = ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Your realm should be local&lt;br /&gt;
realm your-realm.tld {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# These realms should always be handled locally&lt;br /&gt;
realm LOCAL {&lt;br /&gt;
}&lt;br /&gt;
realm NULL {&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
realm DEFAULT {&lt;br /&gt;
        nostrip&lt;br /&gt;
        auth_pool       = root_pool&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h4&amp;gt;clients.conf&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file configures all inbound connections, including those to the root nodes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
client localhost {&lt;br /&gt;
        ipaddr = 127.0.0.1&lt;br /&gt;
        secret          = CHOOSE_YOUR_OWN&lt;br /&gt;
        require_message_authenticator = no&lt;br /&gt;
        nastype     = other&lt;br /&gt;
}&lt;br /&gt;
client 194.171.96.99 {&lt;br /&gt;
        secret          = YOUR_SUPPLIED_SECRET&lt;br /&gt;
        shortname       = nlnode1&lt;br /&gt;
}&lt;br /&gt;
client 1.2.3.4 {&lt;br /&gt;
        secret          = CHOOSE_YOUR_OWN&lt;br /&gt;
        shortname       = my_access_point&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;modules/ldap&amp;lt;/h4&amp;gt;&lt;br /&gt;
This file contains the LDAP connection and filter information. You should add TLS information if your server does not run on localhost.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# -*- text -*-&lt;br /&gt;
ldap {&lt;br /&gt;
        server = &amp;quot;127.0.0.1&amp;quot;&lt;br /&gt;
        identity = &amp;quot;cn=user_with_read_access,dc=your-realm,dc=tld&amp;quot;&lt;br /&gt;
        password = YOUR_SECRET&lt;br /&gt;
        basedn = &amp;quot;dc=your-realm,dc=tld&amp;quot;&lt;br /&gt;
        filter = &amp;quot;(uid=%{%{Stripped-User-Name}:-%{User-Name}})&amp;quot;&lt;br /&gt;
        #base_filter = &amp;quot;(objectclass=radiusprofile)&amp;quot;&lt;br /&gt;
        ldap_connections_number = 5 &lt;br /&gt;
        timeout = 4 &lt;br /&gt;
        timelimit = 3 &lt;br /&gt;
        net_timeout = 1 &lt;br /&gt;
        tls {&lt;br /&gt;
                start_tls = no&lt;br /&gt;
                # cacertfile = /path/to/cacert.pem&lt;br /&gt;
                # cacertdir  = /path/to/ca/dir/&lt;br /&gt;
                # certfile   = /path/to/radius.crt&lt;br /&gt;
                # keyfile    = /path/to/radius.key&lt;br /&gt;
                # randfile   = /dev/urandom&lt;br /&gt;
        }   &lt;br /&gt;
        dictionary_mapping = ${confdir}/ldap.attrmap&lt;br /&gt;
        edir_account_policy_check = no&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;h2&amp;gt;Server certificate&amp;lt;/h2&amp;gt;&lt;br /&gt;
For the server certificate you can use a SSL certificate. The certificate should not be a wildcard certificate, but a domain or subdomain certificate (for example: CN = radius.bitlair.nl).&lt;br /&gt;
&lt;br /&gt;
It is preferable that you use a certificate that is signed by a well-known Certificate Authority, this will make the client configuration a bit more easy.&lt;br /&gt;
&lt;br /&gt;
You can use a free certificate from StartCom, but you will need to append the &amp;quot;Class 1 Intermediate Server CA&amp;quot; (sub.class1.server.ca.pem) to your server.pem file otherwise the clients won't be able to verify the certificate properly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Opening up the radius to the internet&amp;lt;/h2&amp;gt;&lt;br /&gt;
Make sure you open up UDP and TCP ports 1812 and 1813 to the internet. This should be opened to every client configured in the clients.conf.&lt;br /&gt;
&amp;lt;h2&amp;gt;Testing authentications&amp;lt;/h2&amp;gt;&lt;br /&gt;
It is convenient to use the eapol_test utility to test authentications against the local radius server using the key configured for localhost in clients.conf.&lt;br /&gt;
&lt;br /&gt;
You can use it like:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;./eapol_test -c auth.conf -s CHOOSE_YOUR_OWN&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The auth.conf should contain something like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network={&lt;br /&gt;
	ssid=&amp;quot;spacenet&amp;quot;&lt;br /&gt;
        key_mgmt=WPA-EAP&lt;br /&gt;
        eap=PEAP&lt;br /&gt;
        identity=&amp;quot;username@your-realm.tld&amp;quot;&lt;br /&gt;
        anonymous_identity=&amp;quot;anonymous@your-realm.tld&amp;quot;&lt;br /&gt;
        password=&amp;quot;MY_SUPER_SECRET_PASSWORD&amp;quot;&lt;br /&gt;
        phase2=&amp;quot;auth=EAP-MSCHAPv2&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Configure your access points&amp;lt;/h2&amp;gt;&lt;br /&gt;
Set up your access points to use WPA2 enterprise and point it to the IP of the radius server.&lt;br /&gt;
&lt;br /&gt;
Also checkout [[Howto/Spacenet/Accesspoint config general|Accesspoint config general]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Instruct your users&amp;lt;/h2&amp;gt;&lt;br /&gt;
Instruct your users how to set up WPA2 enterprise, it is not hard, but there are a few rules:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Always configure an anonymous identity as anonymous@your-realm.tld, this prevents others from seeing the real username and thus tracking.&lt;br /&gt;
&amp;lt;li&amp;gt;Always install the server certificate as CA on the clients or specify your server name and the CA that signed the certificate.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto/Spacenet]]&lt;/div&gt;</summary>
		<author><name>Xopr</name></author>
	</entry>
</feed>