Un artículo para comprender el control de acceso del servicio HTTPD

Un artículo para comprender el control de acceso del servicio HTTPD

El prefacio está
en los dos primeros artículos "Explicar la implementación del servicio HTTPD en el entorno Linux" y "¿Cómo implementar el sistema de análisis de AWStats en el entorno Linux para monitorear sitios web?" "En el artículo, explicamos en detalle la implementación y la configuración relacionada del servicio HTTPD y el sistema de análisis AWStats en el entorno Linux. Al acceder al sistema de análisis AWStats, puede acceder al sitio web sin una cuenta y contraseña, y esto también trae algo de seguridad para el servidor Peligros ocultos.

Para controlar mejor el acceso a los recursos del sitio web, puede agregar autorización de acceso para directorios de sitios web específicos. Este artículo le presentará el control de acceso al servicio HTTPD, principalmente para: restricciones de direcciones basadas en el cliente, restricciones basadas en el usuario, Restricciones de host virtual, restricciones de host virtual basadas en la dirección IP y el puerto.
1. Los
elementos de configuración Denegar desde y Permitir desde se utilizan para establecer restricciones específicas basadas en la dirección del cliente . Cuando se utilizan los elementos de configuración Denegar desde y Permitir desde, debe establecer la dirección del cliente para implementar la estrategia de restricción. La dirección1 / 2 puede ser una dirección IP, una dirección de red, un nombre de host y un nombre de dominio. En circunstancias normales, el servidor web está abierto a todos los usuarios y no hay restricciones en el directorio de documentos web. Por lo tanto, "todos" se puede utilizar para denegar o permitir el acceso a todas las direcciones arbitrarias, etc .;


Deny from address1 address2 ...
Allow from address1 address2 ...

El elemento de configuración del pedido se puede establecer en "permitir, denegar" o "denegar, permitir" para determinar el orden en el que el host aplica la política "permitir" o "denegar".

"Permitir, denegar": "permitir" primero y luego "denegar" por defecto niega todas las direcciones de cliente que no están explícitamente permitidas.

"Denegar, permitir": "denegar" primero y luego "permitir" de forma predeterminada permite todas las direcciones de cliente que no están explícitamente denegadas.


<Directory "/usr/local/httpd/htdocs">
......                  # 省略部分内容
Order allow,deny
Allow from all
</Directory>

Cuando utilice la política de restricción "permitir solo", cambie el orden de procesamiento a "permitir, denegar" y establezca explícitamente la política de permiso para permitir que solo algunos hosts accedan. Si solo desea que el terminal con la dirección IP: 192.168.3.123 pueda acceder al sistema de análisis de AWStats, configure las siguientes partes para el área de directorio del sistema de análisis de AWStats;


<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order allow,deny
Allow from 192.168.3.123         # 允许 192.168.3.123 地址访问
</Directory>

Cuando utilice la política de restricción "denegar solo", cambie el orden de procesamiento a "denegar, permitir" y establezca explícitamente la política de denegación para denegar solo el acceso a algunos hosts. Si solo desea que los terminales en el segmento de red 192.168.3.0/24 puedan acceder al sistema de análisis de AWStats, pero permita que otros terminales accedan, configure las siguientes partes para el área de directorio del sistema de análisis de AWStats;


<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
deny from 192.168.3.0/24         # 拒绝 192.168.3.0/24 网站的地址访问
</Directory>

Una vez completada la configuración anterior, se mostrará la siguiente página de error si puede acceder a ella a través de un navegador.

Un artículo para comprender el control de acceso del servicio HTTPD

2. Restricción de autorización
basada en el usuario El control de acceso basado en el usuario incluye autenticación y autorización.

Autenticación: se refiere al proceso de identidad del usuario;

Autorización: se refiere a permitir que usuarios específicos accedan a áreas específicas del directorio;

La autenticación básica de httpd es determinar si el usuario puede acceder verificando la combinación de nombre de usuario y contraseña. La cuenta de usuario autorizada para acceder debe establecerse primero y guardarse en un archivo de datos fijo.

Una herramienta: htpasswd se puede utilizar para crear archivos de datos de usuario autorizados y mantener cuentas de usuario en ellos. Se debe especificar la ubicación del archivo de datos del usuario, combinada con la opción del parámetro "-c" para indicar que este archivo se ha creado recientemente.

Cree un nuevo archivo de datos /usr/local/httpd/conf/.awspwd, webjacktian y webjacktian1 son información del usuario.


# cd /usr/local/httpd/
# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webjacktian
New password:                        # 设置密码
Re-type new password:
Adding password for user webjacktian
# cat /usr/local/httpd/conf/.awspwd
webjacktian:u5Mq.qjrDfsvA

Si no se utiliza la opción "-c", el archivo de datos de usuario especificado ya existe y el usuario puede agregar un nuevo usuario o modificar una contraseña de usuario existente.

# bin/htpasswd /usr/local/httpd/conf/.awspwd webjacktian1
New password:
Re-type new password:
Adding password for user webjacktian1
# cat /usr/local/httpd/conf/.awspwd             # 确认用户数据文件
webjacktian:1.wTyxw9/pItY
webjacktian1:zG4sQXO/HveOc

Una vez autorizada la cuenta de usuario, debe modificar el archivo de configuración httpd.conf, agregar la configuración de autorización en un área de directorio específica y habilitar la configuración de autenticación básica para permitir el acceso a qué usuarios.

vi /usr/local/httpd/conf/httpd.conf
......                             # 省略部分内容
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
deny from 192.168.3.124
AuthName "http web"                       # 定义受保护的领域名称,将在浏览器弹出的认证对话框中显示。
AuthType Basic                         # 设置认证的类型,Basic表示基本认证。
AuthUserFile /usr/local/httpd/conf/.awspwd           # 设置用于保存用户账号、密码的认证文件路径。
require valid-user                       # 只有认证文件中的合法用户才能访问,valid-user表示所有合法用户,若只授权单个用户,可改为指定的用户名。比如:webjacktian / webjacktian1
</Directory>
# /usr/local/httpd/bin/apachectl restart            # 重启服务将新配置进行生效。

Verifique que el usuario esté autorizado para acceder al sistema de análisis de AWStats, el navegador mostrará el siguiente cuadro de diálogo, aquí solo debe ingresar el nombre de usuario y la contraseña correctos para iniciar sesión en el sistema de análisis de AWStats y ver el informe de análisis correspondiente. La contraseña de la cuenta ingresada no coincide, el acceso al sistema de análisis.

Un artículo para comprender el control de acceso del servicio HTTPD

Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

3. El acceso al host virtual
basado en el nombre de dominio se basa en el nombre de dominio: use un nombre de dominio diferente para cada host virtual, pero la dirección IP correspondiente es la misma.

Por ejemplo, las direcciones IP de www.baidu.com y www.taobao.com son 192.168.3.123, que es el tipo más común de alojamiento web. El acceso basado en dominio debe crear un servicio DNS para proporcionar acceso al sitio web. Para la implementación del servicio DNS, consulte: "Servicio de resolución de nombres de dominio DNS en un entorno Linux" Después del establecimiento exitoso, debe agregar baidu.com a el archivo de configuración principal named.conf La configuración de las dos áreas de taobao.com y taobao.com se muestra en la siguiente figura.

Un artículo para comprender el control de acceso del servicio HTTPD

Modificar el archivo de baidu

Un artículo para comprender el control de acceso del servicio HTTPD

Modifique el grupo de archivos, copie el archivo baidu.jack en / var / named / y modifique el nombre a taobao.jack

# chgrp named /var/named/baidu.jack             # 修改文件的所在组
# cp -v /var/named/baidu.jack /var/named/taobao.jack      # 复制 baidu.jack文 件的 /var/named/ 下,名字修改为 taobao.jack,-p:保留文件原有权限
# ll /var/named/                       # 查看 baidu.jack 和 taobao.jack 文件是否都已经创建成功
总用量 40
-rw-r--r--. 1 root named 149 7月 28 16:10 baidu.jack
drwxr-x---. 6 root named 4096 7月 28 03:42 chroot
drwxrwx---. 2 named named 4096 7月 28 07:04 data
drwxrwx---. 2 named named 4096 7月 28 16:10 dynamic
-rw-r-----. 1 root named 1892 2月 18 2008 named.ca
-rw-r-----. 1 root named 152 12月 15 2009 named.empty
-rw-r-----. 1 root named 152 6月 21 2007 named.localhost
-rw-r-----. 1 root named 168 12月 15 2009 named.loopback
drwxrwx---. 2 named named 4096 8月 27 2013 slaves
-rw-r--r--. 1 root root 307 7月 28 06:56 taobao.jack

Ingrese al archivo taobao.jack para modificar su configuración;

Un artículo para comprender el control de acceso del servicio HTTPD

Reinicie el servicio nombrado.


# service named stop
停止 named:. [确定]
# service named start
启动 named: [确定]

Modifique el elemento de configuración del servidor de nombres para que apunte a la dirección del servidor DNS;

Un artículo para comprender el control de acceso del servicio HTTPD

Utilice el comando nslookup para resolver los dos nombres de dominio configurados correctamente;


[root@Mr-tian named]# nslookup www.baidu.com         # 使用 nslookup 进行验证域名是否成功
Server: 192.168.3.123
Address: 192.168.3.123#53

Name: www.baidu.com
Address: 192.168.3.123

[root@Mr-tian named]# nslookup www.taobao.com
Server: 192.168.3.123
Address: 192.168.3.123#53

Name: www.taobao.com
Address: 192.168.3.123

Prepare directorios de sitios web y documentos web para cada host web virtual y proporcione archivos de inicio con contenido diferente para cada host web virtual. Cree dos subcarpetas baidu y taobao en el directorio / usr / local / httpd / htdocs, que se utilizan como directorios raíz del sitio web de www.baidu.com y www.taobao.com para probar los archivos de la página web.

# mkdir /usr/local/httpd/htdocs/baidu                            # 在虚拟主机下准备网页文档
# mkdir /usr/local/httpd/htdocs/taobao
# ls /usr/local/httpd/htdocs/                                # 查看刚建立的 baidu 和 taobao 目录是否已建立好
abc.html baidu index.html taobao
# echo "<h1>www.baidu.com</h1>" > /usr/local/httpd/htdocs/baidu/index.html         # 分别在 baidu 和 taobao 目录下创建 index.html 文件
# echo "<h1>www.taobao.com</h1>" > /usr/local/httpd/htdocs/taobao/index.html
# cat /usr/local/httpd/htdocs/baidu/index.html                       # 验证是否已经创建成功
<h1>www.baidu.com</h1>
# cat /usr/local/httpd/htdocs/taobao/index.html
<h1>www.taobao.com</h1>

Para agregar la configuración de host virtual, debe habilitar el host web virtual basado en dominio en el archivo de configuración principal del servidor httpd.

Utilice <Directorio "Ubicación del directorio"> + Configuración de zona </Directorio> para establecer los permisos de acceso para el directorio del sitio web de cada servidor web.
Use el elemento de configuración NameVirtualHost para especificar la dirección IP que proporciona servicios de host virtual;
use <Dirección de escucha de VirtualHost> + configuración regional </VirtualHost> para establecer contenido de configuración independiente para cada host web virtual, incluyendo: la ruta del directorio raíz del página web, el nombre del sitio web del host virtual, el registro de acceso y otros elementos de configuración relacionados;


# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf         # 创建独立的配置文件
# <Directory "/var/www/html">                    # 设置目录访问权限
# Order allow,deny
# Allow from all
# </Directory>

NameVirtualHost 192.168.3.123:80                  # 设置虚拟主机监听地址

<VirtualHost 192.168.3.123:80>                   # 设置 baidu 虚拟站点区域
DocumentRoot "/usr/local/httpd/htdocs/baidu"
ServerName www.baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.3.123:80>                   # 设置 taobao 虚拟站点区域
DocumentRoot "/usr/local/httpd/htdocs/taobao"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

Cuando la cantidad de hosts web virtuales es grande, puede usar un archivo de configuración de host virtual separado, agregue Incluir conf / extra / httpd-vhosts.conf a httpd.conf para cargar la configuración.


# vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
deny from 192.168.3.124
AuthName "http web"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
require valid-user
</Directory>
Include conf/extra/httpd-vhosts.conf         # 在文末添加此行配置来加载独立的配置文件

Reinicie el servicio HTTPD


# service httpd restart                # 重启 httpd 服务

Haga coincidir la dirección IP del mismo segmento de red en el cliente y apunte el DNS al servidor httpd.

Un artículo para comprender el control de acceso del servicio HTTPD

Prueba de conectividad;

Un artículo para comprender el control de acceso del servicio HTTPD

En el navegador del cliente, use el nombre del sitio web para visitar diferentes hosts web virtuales y confirmar si las páginas que ve son diferentes. Si no puede ver los resultados que se muestran en la página, debe verificar los archivos de la página de inicio de los dos sitios o según a otras configuraciones Solucionar problemas.

Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

4. Para el host virtual basado en la dirección IP,
agregue una nueva interfaz virtual al servidor httpd y configure la dirección IP;

Un artículo para comprender el control de acceso del servicio HTTPD

Para los hosts virtuales basados ​​en direcciones IP, cada host web virtual utilizará una dirección IP diferente y proporcionará servicios al exterior a través del mismo servidor httpd. Al configurar un host web virtual basado en direcciones IP, no utilice el elemento de configuración NameVirtualHost para especificar el monitoreo La dirección IP del servicio solo necesita especificar la dirección IP correspondiente a cada nombre de dominio en el elemento de configuración VirtualHost de cada servidor web virtual.

La dirección IP del sitio: www.baidu.com es: 192.168.3.123, y la dirección IP del sitio: www.taobao.com es: 192.168.3.126. Para realizar un servidor web virtual basado en la dirección IP, configure la siguiente configuración elementos en el servidor httpd Simplemente vaya.

# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
......                           # 省略部分内容
NameVirtualHost 192.168.3.123:80               # 此 www.baidu.com 区域的配置保持不变

<VirtualHost 192.168.3.123:80>
DocumentRoot "/usr/local/httpd/htdocs/baidu"
ServerName www.baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.3.126:80>               # 将 www.taobao.com 区域的配置将 VirtualHost IP:端口号,IP 改为添加的虚拟接口 eth1:0 的 IP 地址
DocumentRoot "/usr/local/httpd/htdocs/taobao"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

Configure para cargar un archivo de configuración independiente;

# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf           # 加载独立的配置文件

Reinicie el servicio httpd;

# service httpd restart                  # 重启 httpd 服务

Al ingresar http://192.168.3.123 en la barra de direcciones del navegador del cliente, se mostrará la página de www.baidu.com, y al ingresar a http://192.168.3.126 se mostrará la página de www.taobao.com, lo que significa que es correcto.

Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

5. Host virtual basado en
puerto El host virtual basado en puerto solo necesita el mismo sitio web, y el nombre del sitio web y la dirección IP no pueden modificarse. La única diferencia es que el puerto TCP accede a contenido web diferente. Por lo tanto, cuando visitamos un servidor web con un puerto diferente al 80 en el navegador, debemos indicar claramente el número de puerto del servidor. Por ejemplo: http://www.taobao.com : 81 / Al configurar un servidor web virtual basado en puerto, no es necesario utilizar el elemento de configuración NameVirtualHost. Solo es necesario especificar el número de puerto TCP a través de la configuración de monitoreo múltiple Cada web virtual La dirección IP y el número de puerto deben especificarse en el elemento de configuración VirtualHost del host.

Si se accede al sitio www.baidu.com a través del puerto 80, el resultado mostrado será el contenido del sitio baidu. Cuando se accede al sitio www.taobao.com a través del puerto 81, el resultado mostrado será el contenido del taobao. sitio.


# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

NameVirtualHost 192.168.3.123:80

<VirtualHost 192.168.3.123:80>         # www.baidu.com 虚拟站点区域的配置保持不变
DocumentRoot "/usr/local/httpd/htdocs/baidu"
ServerName www.baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.3.123:81>         # 设置 www.taobao.com 虚拟站点区域的端口号为:81
DocumentRoot "/usr/local/httpd/htdocs/taobao"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

El archivo de configuración independiente cargado original y el puerto 80 permanecen sin cambios, y es necesario agregar un nuevo puerto de sitio virtual que monitorea www.taobao.com.

# vi /usr/local/httpd/conf/httpd.conf
......                     # 省略部分内容
40 Listen 80                  # 原有的 80 端口不变
41 Listen 81                  # 新添加一条监听端口
# service httpd restart # 重启 httpd 服务

Resultado de la verificación: ingrese en el navegador del cliente: http://192.168.3.123 mostrará el contenido del sitio de baidu, ingrese http://192.168.3.123:81 mostrará el contenido del sitio de taobao, lo que significa que es correcto.

Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

Para el directorio, configure baidu para que realice el control de acceso según la dirección del cliente, modifique el archivo de configuración del host virtual y configure los elementos de configuración sobre la sección Directorio. Una vez que la configuración sea correcta, verifique la sintaxis y reinicie el servicio.

# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

NameVirtualHost 192.168.3.123:80

<VirtualHost 192.168.3.123:80>             # 对 baidu 来做访问控制(基于客户地址的访问控制)修改虚拟主机配置文件
DocumentRoot "/usr/local/httpd/htdocs/baidu"
ServerName www.baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
<Directory "/usr/local/httpd/htdocs/baidu">       # 在www.baidu.com里添加
order allow,deny
allow from 192.168.3.125 # 访问端 IP 地址
</Directory>
</VirtualHost>

<VirtualHost 192.168.3.123:81>
DocumentRoot "/usr/local/httpd/htdocs/taobao"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

# httpd -t                       # 检查语法
Syntax OK

# service httpd restart                # 重启 httpd 服务

De acuerdo con los elementos de configuración anteriores, solo el host con la dirección IP: 192.168.3.125 puede acceder, por lo que cuando acceda al cliente con la dirección que no es IP: 192.168.3.125, se mostrará la siguiente pantalla de denegación.

Un artículo para comprender el control de acceso del servicio HTTPD

Si establece la configuración de segmento de red allow from 192.168.3.0/24 en el archivo de configuración httpd-vhosts.conf, significa que se puede acceder a todos los hosts de este segmento de red;

# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf
......                          # 省略部分内容
<Directory "/usr/local/httpd/htdocs/baidu">
order allow,deny
allow from 192.168.3.0/24
</Directory>

# service httpd restart                  # 重启 httpd 服务

Los resultados de la verificación son los siguientes.

Un artículo para comprender el control de acceso del servicio HTTPD

Autorización de usuario para restringir el acceso

Crear usuario-c: utilícelo al crear un usuario por primera vez, no es necesario que lo agregue por segunda vez y vea los archivos del usuario;

# htpasswd -c /usr/local/httpd/conf/.user jacktian     # 创建用户
New password:                        # 设置密码
Re-type new password:
Adding password for user jacktian
You have new mail in /var/spool/mail/root
# cat /usr/local/httpd/conf/.user              # 查看用户文件
jacktian:Kga/Hy/OZ2Bnw

Para modificar el archivo de configuración del host de la máquina virtual, debe agregar la sección de configuración AuthName en www.baidu.com;

# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf     # 修改虚拟机主机配置文件

NameVirtualHost 192.168.3.123:80

<VirtualHost 192.168.3.123:80>
DocumentRoot "/usr/local/httpd/htdocs/baidu"
ServerName www.baidu.com
ErrorLog "logs/www.baidu.com-error_log"
CustomLog "logs/www.baidu.com-access_log" common
<Directory "/usr/local/httpd/htdocs/baidu">
order allow,deny
allow from 192.168.3.0/24
AuthName "baidu login"                   # 在 www.baidu.com 里添加用户授权设置配置项
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.user
Require valid-user
</Directory>
</VirtualHost>

<VirtualHost 192.168.3.123:81>
DocumentRoot "/usr/local/httpd/htdocs/taobao"
ServerName www.taobao.com
ErrorLog "logs/www.taobao.com-error_log"
CustomLog "logs/www.taobao.com-access_log" common
</VirtualHost>

# httpd -t                         # 检查语法
Syntax OK

# service httpd restart                   # 重启 httpd 服务

Resultado de la verificación: cuando ingrese http://www.baidu.com en el navegador del cliente , aparecerá el siguiente cuadro de diálogo para iniciar sesión ingresando su nombre de usuario y contraseña;

Un artículo para comprender el control de acceso del servicio HTTPD

Los resultados de acceso cuando el nombre de usuario y la contraseña son correctos son los siguientes.

Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

Los resultados de acceso cuando el nombre de usuario y la contraseña son incorrectos son los siguientes.
Un artículo para comprender el control de acceso del servicio HTTPD

Representación de presentación

FIN

Lectura recomendada

1. Explicar la implementación del servicio HTTPD en el entorno Linux en detalle

Supongo que te gusta

Origin blog.51cto.com/15067236/2606147
Recomendado
Clasificación