# [Soft] Servidor Proxy/Samba (abierto)

## JotaCE

Estimados Amigos Gentoonianos!

Estoy una vez mas intentando hacer una laboriasa y seguro para ustedes... facil tarea.

Acabo de revivir un centro de computo de una escuela. el laboratorio tiene 25 computadoras

1 para el administrador de la red y...

24 para los alumnos

La maquina administradora por supuesto tiene evidentemente Gentoo con el perfil server

El objetivo en primer termino es limitar el uso del recurso internet.

Para lo cual instale squid como proxy.

Esa maquina no tendrá mas procesos que ese y tal vez mas adelante algun otro para compartir algun archivo.

La idea es que squid permita el paso de internet en ciertos horarios de lunes a sabado de 06:45 a 16:00 hrs y que solamente algunas IPs de mi red puedan accesar al recurso internet.

Por ejemplo mi IP es 192.168.1.100 

y las del resto de la red son desde 192.168.1.200 a la 192.168.1.223 

Solo quiero que algunas maquinas de ellas puedan tener recuerso internet.

Por lo pronto no quiero limitar o filtrar el contenido, si lo voy a hacer pero no con squid, si no con squidguard, pero por lo pronto necesito redactar mi squid.conf pero algo falla que no me deja.

Podrian usted ayudarme a tal efecto ? les agradezco mucho

P.D.: para mas adelante ya tengo instalados el squidguard y apache.

Por otro lado Quiero compartir una carpeta de mi Servidor para eso instale samba y desde windows puedo verla pero al entrar me pide un nombre de usuario y contraseña, como puedo evitar eso ?

----------

## Inodoro_Pereyra

Ahhh, Squid, de lo mas críptico el archivo de configuración que tiene... Para mi jamás fué facil tampoco si te sirve de consuelo  :Very Happy: 

Lo que estás buscando se llama Access Control Lists y se pueden definir todas las que quieras.

Por ejemplo:

```
#Todos los números de IP desde el .200 al .251 como IP de origen:

acl nombrearbitrario src 192.168.1.200-192.168.1.215

#Si el destino del tráfico es tal o cual IP

acl otronombre dst <número_de_ip>

#Si el tráfico va a tal dominio:

acl otronombremas dstdomain google.com

#O viene de tal dominio:

acl otronombremas srcdomain google.com
```

Y así sucesivamente, vas definiendo quien y donde. Todas las ACL que se te ocurran, una vez listo:

```
http_access allow (o deny, depende si estás permitiendo o denegando) <nombre_de_tu_acl>
```

Eso es lo poco que se, sobre el acceso temporizado, ni idea pero seguro que algo hay en google.

Pega tu squid.conf sin los comentarios si necesitas mas ayuda.

Salud!

PD: Para terminar de hacer mas raro todo el asunto, la última línea que agregues conteniendo http_access se ejecuta a la inversa de lo que hayas especificado. Me refiero a que si al final para todo el tráfico que no concuerda con ninguna acl agregas http_access deny all, entonces se permite, si la línea dice http_access allow all, entonces se deniega. (Esta me tomó bastante tiempo descubrirla  :Very Happy: )

----------

## JotaCE

 *Inodoro_Pereyra wrote:*   

> Ahhh, Squid, de lo mas críptico el archivo de configuración que tiene... Para mi jamás fué facil tampoco si te sirve de consuelo 
> 
> 

 

Algo le estoy entendiendo pero sabes ...... me hiciste reir mucho! Gracias tambien por eso!

Aqui esta el resumen de mi archivo /etc/squid/squid.conf

```
visible_hostname servidor

http_port 3128

icp_port 0

# Agregar lista de ips permitidas en el archivo /etc/squid/ip_permitida

acl red_local src "/etc/squid/ip_permitida"

http_access allow red_local

http_access deny all
```

En el archivo "/etc/squid/ip_permitida" logicamente esta la lista de las IPs permitidas por squid, lo del horario por lo pronto es irrelevante, y lo que a continuacion me interesa hacer es configurar squidguard; ya lo tengo instalado, vamos a ver que sucede.

----------

## ZaPa

Hola.

En el servidor(router) que tengo yo instalado en  una oficina tengo algo similar, el acceso por horarios, lo tienes que hacer como ha dichoi Inodoro_pereyra,editando el Acces_List, pero si quieres el control de horarios, tendrás que utilizar cronjob para hacer tareas a horas en concreto o de tal hora a tal hora.

Con cronjob, lo que tendrias que hacer es ejecutar una linea, la cual de X hora a X hora, edite el fichero de denegación de acceso a X ips, y cuando quieras habilitarle el acceso a internet, que vuelva a acceder al fichero y borre las denegaciónes para dichas ips, según el horario.

Así durante todo el día, para denegar el acceso, cronjob escribe las ips que quiere denegar en el archivo correspondiente de squid, y en las horas de habilitarle el acceso, cronjob borra el contenido y cuando pase la hora de acceso, volverá a escribir dichas ips para volverle a denegar el acceso.

Espero que hayas entendido la idea, es muy fácil aunque parece lioso.

Con cronjob se pueden hacer cosas extraordinarias, yo por ejemplo, le doy más prioridad a los p2p por la noche, y a partir de las 7 de la mañana, le doy más prioridad a los servicios convencionales.

Un saludo, espero que te haya ayudado.

----------

## Coghan

Las acl de squid son capaces de gestionar tiempos con el formato siguiente:

```
acl [nombre del horario] time [días de la semana] hh:mm-hh:mm
```

La explicación completa la tienes aquí. De todas formas googleando un poco encontraras mucha información que complemente tu squid.conf

----------

## JotaCE

Gracias a todos por sus ideas, ahora me asalta una inquietud, que ventajas o desventajas podria tener al cambiarme al perfil hardened ? para que sirve ? cual sería mi resultado ?

Saludos!

----------

## JotaCE

Estimados y Honorables Correligionarios.

Ya tengo configurado mi servidor proxy con dansguardian y apache.... nada muy producido pero en realidad funciona para lo que lo necesito.... muchas gracias.

Ahora estoy batallando con samba.

La idea de usar samba es compartir archivos y carpetas con la red, como les comente todos los puntos de red son windows menos mi servidor.

Son dos grupos de trabajo 1.- GRUPO_TRABAJO y 2.- OFICINA

son 3 carpetas las compartidas.

La primera son solo programas (/home/admin/programas) la idea es que esta carpeta tenga permisos solo de lectura y pueda ser vista por lo toda la red local.

las siguientes dos carpetas son bases de datos de aplicaciones propias de esta escuela. la idea es que solo el grupo de trabajo OFICINA pueda ver esta carpeta compartida, pueda leer los datos, escribir los datos pero no eliminar los archivos contenidos. es posible que GRUPO_TRABAJO no vea esta carpeta conpartida ?

Por ultimo como evito que cada vez que entro a las carpetas compartidas me pida contraseña ?

cualquier luz que me puedan dar les estare muy agradecido.

mi /etc/samba/smb.conf

workgroup = OFICINA

encrypt passwords = yes

[sice]

comment = Base de Datos Sice

   read only = no

   path = /home/admin/sice

   public = yes

   writable = yes

   security = share

[programas]

comment = Programas para el Centro de Computo

   read only = yes

   path = /home/admin/programas

   public = yes

   writable = no

   security = share

[innovat]

comment = Base de Datos Innovat

   read only = no

   path = /home/admin/innovat

   public = yes

   writable = yes

   security = share

----------

## Inodoro_Pereyra

Colaboro con lo poco que puedo, partiendo de la base de que no tenga mucha experiencia con samba:

Que yo sepa, la única forma de hacer visible o no un recurso compartido con samba en función del grupo al que se pertenezca es centrando la administración de usuarios en un controlador de dominio, OpenLDAP por ejemplo puede proveerte de esta función. 

No se en tu caso hasta que punto valdría la pena. Si me equivoco y se puede hacer sin un controlador de dominio me corrigen.

Si te sirve mi aproximación: Tengo un par de grupos de usuarios reales en el servidor, con un password asignado con smbpasswd a cada usuario y defino permisos en función del grupo al que pertenece el usuario haciendo algo como esto:

```
[share]

        browseable = no

        writeable = yes

        path = /mnt/backups/share

        valid users = root, @superusuarios
```

Con browseable = no, el recurso no es visible a simple vista si alguien desde windows entra a \\servidor o desde linux corre smbclient -L servidor, pero puede ser invocado a mano, desde windows con \\servidor\share y se pedirá un nombre de usuario y contraseña que se coteja contra la lista de usuarios pertenecientes al grupo superusuarios o el usuario root.

También se pueden definir permisos por usuario y grupo, que ciertos usuarios o grupos puedan escribir y otros solo leer pero de memoria no recuerdo como se hace  :Very Happy: .

Windows, por otro lado, por defecto siempre intenta acceder al recurso compartido usando como nombre de usuario "guest". Para que desde windows no se pidan contraseñas el recurso compartido debería quedar:

```
[share]

        browseable = no #o yes, si necesitas que sea visible.

        writeable = yes

        path = /mnt/backups/share

        guest ok = yes
```

Todo esto a su vez, solo funciona si globalmente se especifica security = user.

Te pego la sección global de un servidor que tengo funcionando así:

```
[global]

   log file = /var/log/samba/log.%m

   dns proxy = no 

   load printers = yes

   netbios name = servidor

   server string = Samba Server %v

   printing = cups

   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

   workgroup = WORKGROUP

   os level = 20

   map to guest = bad user

   encrypt passwords = yes

   printcap name = cups

   security = user

   max log size = 50

   interfaces = 192.168.1.1/23

   dos charset = 850

   unix charset = ISO8859-1

   vfs object = vscan-clamav

   vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
```

Respecto a eso de que se pueda leer, modificar, pero no eliminar, se que se puede hacer usando el sticky bit, pero nunca me hizo falta ver como se implementa. Ya tienes la punta del ovillo al menos.

Hasta ahí llega mi sapiencia.

Salud!

----------

## JotaCE

Estimados y Honorables Camaradas.

Ya mi servidor esta trabajando como quiero que lo haga, pero siento que podria aun mejorarlo.

El equipo lo cambie de ubicacion dado que era intervenido por muchas personas y claro no sabian lo que estaban haciendo; asi que lo puse en una oficina cerrada a la que ni yo puedo entrar. por lo que se me ofrece la necesidad de operarlo remotamente, creo que instalando OpenSSH en mi servidor y Putty en algun cliente seria suficiente no ?

Y ahi me cabe la primer gran incognita.

Si tengo OpenSSH en mi servidor, que debo configurar para poder ver mi servidor desde fuera de la red local ?

----------

