487
edits
m (→Summary) |
(Moved to new category; Additional grammar and cleanup edits. Needs updating to later version structure.) |
||
Line 2: | Line 2: | ||
'''Authentication Introduction''' | '''Authentication Introduction''' | ||
For Website security, let's take a detailed look at Apache’s basic authentication. | |||
Uniform Server already has the basic authentication structure | The Uniform Server already has the basic authentication structure in place. If you run "Apanel" under configurations there are two links for "private server configuration" and "private secure server configuration". The links allow you to set a new user name and password for both server configurations. | ||
Each root folder (ssl and www) contains a file named | Each root folder (ssl and www) contains a file named ".htaccess". Private server access is enabled by un-commenting four lines in these files. For convenience this tutorial starts with the private server configuration and shows how to modify this architecture to target specific folders and files. It concludes by showing how to secure these using SSL to encrypt names, passwords and content. | ||
== Authentication directives == | == Authentication directives == | ||
This | This series covers authentication directives and provides practical examples of their use. You can run each example on any of The Uniform Server systems, however this tutorial was written for the Mona series (and will be updated soon). | ||
'''''Directives''''' | '''''Directives''''' | ||
Line 15: | Line 15: | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''AuthName''' "restricted content" | |'''AuthName''' "restricted content" | ||
|AuthName text displayed to a user. This is also referred to as the '''realm''' | |AuthName text displayed to a user. This is also referred to as the '''realm'''. It's important because the name references a collection of resources. After entering a valid name and password, a user has access to any other resources with an '''identical realm''' name (no need to re-enter name and password). You can use this to create areas which share the same username and password. | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''AuthType''' Basic | |'''AuthType''' Basic | ||
|AuthType informs Apache what protocol to use for authentication. Uniform Server uses '''Basic''' | |AuthType informs Apache what protocol to use for authentication. The Uniform Server uses '''Basic'''. You can use the alternative Digest. Note that this is not covered in this series. | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''AuthUserFile''' /htpasswd/www/.htpasswd | |'''AuthUserFile''' /htpasswd/www/.htpasswd | ||
|[[#Password file |AuthUserFile]] informs Apache where to find the htpasswd file this contains name/password pairs. | |[[#Password file |AuthUserFile]] informs Apache where to find the .htpasswd file this contains name/password pairs. | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''AuthGroupFile''' /htpasswd/www/.htgroup | |'''AuthGroupFile''' /htpasswd/www/.htgroup | ||
Line 30: | Line 30: | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''Require''' user {sub-list} | |'''Require''' user {sub-list} | ||
|'''Require''' parameter '''[[#Require user|user]]''' {sub-list} informs Apache to validate against only certain users listed in the password file. | |'''Require''' parameter '''[[#Require user|user]]''' {sub-list} informs Apache to validate against only certain users listed in the password file. This can be used with Require group | ||
|-valign="top" style="background:#f5f5f5;" | |-valign="top" style="background:#f5f5f5;" | ||
|'''Require''' group name | |'''Require''' group name | ||
|If the user {sub-list} becomes large or you are using several .htaccess files with the same list of names | |If the user {sub-list} becomes large or you are using several .htaccess files with the same list of names, it's desirable to put the sub-list into the [[Authentication: Groups|'''groups files''']]. This allows you to use the '''require''' line to restrict users to one or more particular groups. You can still target individual users with Require user. | ||
|} | |} | ||
Although there are relatively few directives they are very flexible allowing you to produce complex access control structures. Basic authentication is easy to use however it suffers from being totally insecure | Although there are relatively few directives, they are very flexible allowing you to produce complex access control structures. Basic authentication is easy to use, however it suffers from being totally insecure. Names, passwords and content are sent in plain text over the Internet. That said, once secured with SSL, it becomes viable. | ||
The remainder of this page looks at the current implementation on The Uniform Server. | |||
== Private Server == | == Private Server == | ||
Private | Private refers to restricted access. To view any page a user must enter a name and password. This is implemented by enabling it in file www\'''.htaccess'''. | ||
Locate these lines: | Locate these lines: | ||
Line 57: | Line 57: | ||
Require valid-user | Require valid-user | ||
</pre> | </pre> | ||
Save the file, run | Save the file, run server and enter '''<nowiki>http://loalhost</nowiki>''' into a browser. | ||
You | You should be challenged to enter a name and password. The defaults for these are both '''root'''. | ||
== Password file == | == Password file == | ||
The password file ('''.htpasswd''') must be located outside of the server root folder (www) | The password file ('''.htpasswd''') must be located outside of the server root folder (www). This prevents access from the Internet. | ||
Uniform Server locates it one level above root. The directive '''AuthUserFile''' informs Apache where to find the file | The Uniform Server locates it one level above root. The directive '''AuthUserFile''' informs Apache where to find the file; the path /htpasswd/www/.htpasswd is a system (disk) path and not a URL path. | ||
The file may contain any number of name password pairs. If you wish to follow the examples edit this file UniServer\udrive\htpasswd\www\.htpasswd and add the name password pairs as shown | The file may contain any number of name password pairs. If you wish to follow the examples, edit this file: UniServer\udrive\htpasswd\www\.htpasswd and add the name password pairs as shown. | ||
<pre> | <pre> | ||
root:root | root:root | ||
Line 79: | Line 78: | ||
'''''Note 1'':''' No carriage return at the end of the last line. | '''''Note 1'':''' No carriage return at the end of the last line. | ||
'''''Note 2'':''' Names can have spaces however never use spaces in passwords | '''''Note 2'':''' Names can have spaces, however never use spaces in passwords. | ||
'''''Note 3'':''' Delete the first entry '''root:root''' (everyone knows this) | '''''Note 3'':''' Delete the first entry '''root:root''' (everyone knows this) | ||
Save the file. | |||
'''''Test''''' | '''''Test''''' | ||
Line 88: | Line 87: | ||
Test each name/password pair (enter <nowiki>http://loalhost</nowiki> into browser) | Test each name/password pair (enter <nowiki>http://loalhost</nowiki> into browser) | ||
'''''Note'':''' Before each test you must '''restart your browser''' (breaks link to server) otherwise you will not be re-challenged for a name and password. | '''''Note'':''' Before each test you must '''restart your browser''' (breaks the link to the server), otherwise you will not be re-challenged for a name and password. | ||
== Require valid-user and Require user == | == Require valid-user and Require user == | ||
==== Require valid-user ==== | ==== Require valid-user ==== | ||
The directive | The directive "'''Require valid-user'''" instructs Apache to allow anyone named in the password file to have access to the server on supplying their password. | ||
You confirmed this in the above test. | You confirmed this in the above test. | ||
==== Require user ==== | ==== Require user ==== | ||
Using the directive | Using the directive "'''Require user'''", we can individually name users in the password file. All others in that file will be denied access. (This example is not really practical, but it introduces the concept for later use). | ||
Edit UniServer\udrive\www\'''.htaccess''' change the authentication block to look like this: | Edit UniServer\udrive\www\'''.htaccess''' change the authentication block to look like this: | ||
Line 113: | Line 111: | ||
Test each name/password pair remember to re-start browser for each test. Only John and Dave Smith are given access while all others are denied. | Test each name/password pair remember to re-start browser for each test. Only John and Dave Smith are given access while all others are denied. | ||
== SSL Private secure server == | == SSL Private secure server == | ||
Line 122: | Line 119: | ||
# To perform tests make sure you have first generated a [[4.0-Mona: Enable SSL#Creating a new server certificate and key|server certificate]]. Type the following into your browser '''<nowiki>https://localhost</nowiki> ''' | # To perform tests make sure you have first generated a [[4.0-Mona: Enable SSL#Creating a new server certificate and key|server certificate]]. Type the following into your browser '''<nowiki>https://localhost</nowiki> ''' | ||
'''''Note'':''' There is no real reason to have separate password files | '''''Note'':''' There is no real reason to have separate password files; it just makes it a little easier to distinguish between the two parts of the server, secure and non-secure. | ||
== Summary == | == Summary == | ||
It’s very rare you would want to be so draconian and restrict access to the entire server. The above would achieve that if you really wanted to however it’s really indented to introduce the concept of a '''password file''' and '''require''' a user from that file. | It’s very rare you would want to be so draconian and restrict access to the entire server. The above would achieve that if you really wanted to, however it’s really indented only to introduce the concept of a '''password file''' and '''require''' a user from that file. | ||
You are more likely to want to restrict access to specific directories (folders) and or files covered on this [[Authentication: Directories| page]] | |||
If you wish to follow the examples, setup a directory structure and .htaccess files as describe on the [[Authentication: Preparation | next page]]. | |||
---- | ---- | ||
Line 141: | Line 135: | ||
|} | |} | ||
[[Category: | [[Category: Apache Configuration]] | ||