Este tema esta bastante trillado en Internet pero llegado el momento de necesitarlo  no me funcionaron el 90% de las explicaciones de como hacerlo; asi que aporto aqui mi experiencia.

El primer paso es generar el archivo de usuarios y contraseñas. Recomiendo hacerlo en una carpeta que no este en la parte publica de apache ( en caso contrario si hay que hacerlo en la parte publica cambiarle el nombre)
En este ejemplo usaremos /home/.htpassword y para crearlo usamos el siguiente comando.

htpasswd -cb /home/.htpasswd test test123

Luego para agregarle nuevos usuarios usaremos

htpasswd -b /home/.htpasswd test21 test123

El archivo generado queda con el siguiente contenido

test:fCJ1HKeOVJpTQ
test1:p0FqAmNIDcfRQ
test:fCJ1HKeOVJpTQ
test1:p0FqAmNIDcfRQ

Luego creamos la carpeta a proteger en mi caso pricada

mkdir /usr/local/apache2/htdocs/privada
cd /usr/local/apache2/htdocs/privada

En esta carpeta creamos un archivo .htaccess con el siguiente contenido

AuthUserFile /home/.htpasswd
AuthName Technoblog
AuthType Basic
require valid-user

Hasta acá lo que dicen el 90% de las explicaciones en Internet pero como dije no me funciono.

Mirando el manual de apache  encontre esto

Si planea usar archivos .htaccess, necesitará tener una configuración en el servidor que permita poner directivas de autentificación en estos archivos. Esto se logra con la directiva AllowOverride, la cual especifica cuáles directivas, en caso de existir, pueden ser colocadas en los archivos de configuración por directorios.

En particular en nuetro caso la directiva que nos interesa es Authconfig asi que lo que tenemos que hacer es agregar en el archivo httpd.conf lo siguiente

<Directory "/usr/local/apache2/htdocs/privada">
AllowOverride AuthConfig
Options None
Order allow,deny
Allow from all
</Directory>

Y ahora si funcionó

Como se imaginaran este método es bastante engorroso si se quieren autorizar muchos usuarios. Mas adelante veremos como agregar usuarios al archivo .htpasswd desde un script de PHP o incluso como autenticar desde una tabla de MYSQL.

Continuara.............

Ahhh me olvidaba el comando htpasswd viene en el paquete apache2-utils