jueves, 12 de marzo de 2015

FINALIZANDO CONFIGURACION DE SQUID

GENERANDO LOS CERTIFICADOS SSL


# Generando Cache del certificado - creo un script
[root@fircentos6 squid]# vim ssl_crtd.sh
SQUIDSSLCRTDDIR=/usr/lib/squid/ssl_db/
SSLCRTD=/usr/lib/squid/ssl_crtd
$SSLCRTD -c -s $SQUIDSSLCRTDDIR
[ -d $SQUIDSSLCRTDDIR ] && chown squid.squid -R $SQUIDSSLCRTDDIR

[root@fircentos6 squid]# sh ssl_crtd.sh
Initialization SSL db...
Done

# Cambiamos el propietario del certificado cache (solo si es necesario)
[root@fircentos6 squid]# chown squid: /var/lib/squid/ssl_db

# Generamos la Private Key y creamos el certificado (tomado de Internet)
[root@fircentos6 squid]# openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout miempresaCA.pem  -out miempresaCA.pem
Generating a 2048 bit RSA private key
writing new private key to 'miempresaCA.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:PE
State or Province Name (full name) []:Lima
Locality Name (eg, city) [Default City]:Miraflores
Organization Name (eg, company) [Default Company Ltd]:MIEMPRESA
Organizational Unit Name (eg, section) []:SISTEMAS
Common Name (eg, your name or your server's hostname) []:fircentos6.miempresa.com
Email Address []:soporte@miempresa.com

# Generamos el certificado para nuestras PCs.
[root@fircentos6 squid]# openssl x509 -in miempresaCA.pem -outform DER -out miempresaCA.der


# Ingresamos a squid.conf

[root@fircentos6 squid] vim /etc/squid/squid.conf

#################################################################################
#WELCOME TO SQUID
#       ----------------------------
acl snmppublic snmp_community public
#acl redlocal src 10.10.10.0/24
acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 1935          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
#
acl CONNECT method CONNECT

##### ACCESO A RED LOCAL
acl redlocal src 11.11.11.0/24

####### ACCESO A SITES x IP RETENCION ###############
acl ipretencion src "/etc/squid/ippagretencion.txt"
acl sitiosretencion url_regex "/etc/squid/sitiospagretencion.txt"

####### ACCESO A SITES MICROSOFT x IP  ###############
acl ipupdatemicrosoft src "/etc/squid/ipupdatems.txt"
acl sitiosupdatems url_regex "/etc/squid/sitiosupdatems.txt"

####### ACCESO SOLO A FACEBOOK ###############
acl ipfacebook src "/etc/squid/ipfacebook.txt"
acl sitiosfacebook url_regex "/etc/squid/sitiosfacebook.txt"

####### ACCESO A PAGINAS AMPLIADAS ###############
acl ipampliados src "/etc/squid/ipampliados.txt"
acl sitiosampliados url_regex "/etc/squid/sitiosampliados.txt"

####### ACCESO SOLO A INTRANET ##############
acl ipintranet src "/etc/squid/ipintranet.txt"
acl sitiosintranet url_regex "/etc/squid/sitiosintranet.txt"

################ ACCESO FULL A INTERNET  #############
acl fullacceso src "/etc/squid/ipfullacceso.txt"

######### LISTA DE EXTENSIONES #############################
acl listadeextensiones urlpath_regex "/etc/squid/listadeextensiones.txt"

############### SITIOS BLOQUEADOS PARA TODOS #########################
acl sitiosbloqueados url_regex "/etc/squid/sitiosbloqueados.txt"

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

#########################################
http_access allow fullacceso
http_access allow ipretencion sitiosretencion
http_access allow ipfacebook sitiosfacebook
http_access allow ipampliados sitiosampliados

########### PARA ACTUALIZAR MICROSOFT ################
http_access allow ipupdatemicrosoft sitiosupdatems
http_access allow ipintranet sitiosintranet
http_access deny ipintranet
http_access deny listadeextensiones
http_access deny sitiosbloqueados

http_access allow redlocal
http_access deny all

# Squid normally listens to port 3128
http_port 3128 transparent
https_port 3129 transparent ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/miempresaCA.pem

always_direct allow all
ssl_bump server-first all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
sslcrtd_program /usr/lib/squid/ssl_crtd -s /usr/lib/squid/ssl_db -M 4MB
sslcrtd_children 5

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?
# ==============================================
cache_mem 256 MB
cache_dir ufs /var/spool/squid 300 16 256
maximum_object_size 4096 KB
cache_swap_low 90
cache_swap_high 100
cache_access_log /var/log/squid/access.log squid
logfile_rotate 5
coredump_dir /var/spool/squid
url_rewrite_children 10

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
#================================================
cache_mgr sistemas@miempresa.com
cache_effective_user squid
cache_effective_group squid
error_directory /usr/share/squid/errors/es-pe
visible_hostname fircentos6.miempresa.com
dns_nameservers 8.8.8.8 200.48.225.130

#####################################################
#Verificar

[root@fircentos6 squid] tail -f /var/log/squid/access.log

# Instalamos el certificado a cada PC o por politica AD (solo para IE y Chrome - miempresaCA.der)

Herramientas/Opciones de Internet/contenido/Certificados/Entidades de Certificacion raiz de confianza/Importar/Buscamos miempresa.der/Damos ok a todo
Algunas paginas o conexiones VPN que usan certificados por el puerto 443 pueden no autenticar, por lo general funciona en todo.

lunes, 5 de enero de 2015

Instalación y Configuración de SQUID

Una mala costumbre la mía es instalar el rpm de SQUID (crea el usuario, grupo y el archivo de arranque del servicio del squid ubicado en: “/etc/rc.d/init.d/squid” este archivo lo copiamos en otra carpeta.


Eliminamos el SQUID
[root@fircentos6 init.d]# rpm -q squid
      squid-3.1.10-16.el6.x86_64
[root@fircentos6 etc]# rpm -e squid



COMPILANDO SQUID 3.4.8

Descargando el Programa SQUID[root@fircentos6 temporal]# yum install wget  (instalamos esta herramienta)
[root@fircentos6 init.d]# cd /temporal
[root@fircentos6 local]# wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.8.tar.gz
[root@fircentos6 temporal]# yum install libssh2 libssh2-devel penssh libcurl curl libcurl-devel gcc gcc-c++ gcc-objc++ make perl -y
[root@fircentos6 temporal]# yum install openssl libtool -y


Instalando el Programa SQUID


[root@fircentos6 temporal]# tar zxvf squid-3.4.8.tar.gz
[root@fircentos6 temporal]# cd squid-3.4.8
[root@fircentos6 temporal]#./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/sbin --sbindir=/usr/sbin --sysconfdir=/etc/squid --datadir=/usr/share/squid --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/lib/squid --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --x-includes=/usr/include --x-libraries=/usr/lib --enable-shared=yes --enable-static=no --enable-carp --enable-storeio=aufs,ufs --enable-removal-policies=heap,lru --disable-icmp --disable-delay-pools --disable-esi --enable-icap-client --enable-useragent-log --enable-referer-log --disable-wccp --enable-wccpv2 --disable-kill-parent-hack --enable-snmp --enable-cachemgr-hostname=localhost --enable-arp-acl --disable-htcp --disable-forw-via-db --enable-follow-x-forwarded-for --enable-cache-digests --disable-poll --enable-epoll --enable-linux-netfilter --disable-ident-lookups --enable-default-hostsfile=/etc/hosts --with-default-user=squid --with-large-files --enable-mit=/usr --with-logdir=/var/log/squid --enable-http-violations --enable-zph-qos --with-filedescriptors=65536 --enable-gnuregex --enable-async-io=64 --with-aufs-threads=64 --with-pthreads --with-aio --enable-default-err-languages=English --enable-err-languages=English --disable-hostname-checks --enable-underscores --enable-ssl --enable-ssl-crtd;


[root@fircentos6 squid-3.4.8]# make all && echo "Compiled Successfully"
[root@fircentos6 squid-3.4.8]# make install && echo "Installed Successfully"
[root@fircentos6 squid-3.4.8]# make samples (no funciono en esta versión use archivos de la versión anterior)


[root@fircentos6 squid-3.4.8]# make config (crea el servicio – no funciono en esta versión)


Colocamos como propietario de la carpeta “/var/cache/squid/” al usuario y grupo “squid”
[root@fircentos6]# chown squid:squid /var/cache/squid


Creación del SCRIPT del SQUID (ejecutable)
Colocamos el archivo “squid” ejecutable en /etc/rc.d/init.d
Usamos el archivo de arranque “SQUID” de la versión anterior RPM que guardamos.


Cambiamos los permisos por default del script ejecutable
[root@fircentos6 init.d]#  chmod 700 /etc/rc.d/init.d/squid
[root@fircentos6 init.d]#  chmod 755 /etc/rc.d/init.d/squid  (usamos este configuración)
 -rwx------. 1 root root  4548 Oct 30 09:28 squid
 -rwxr-xr-x. 1 root root  4548 Oct 30 09:28 squid


Creamos el acceso directo en la carpeta rc.d
[root@fircentos6 init.d]#  chkconfig --add squid


Hacemos que arranque el servicio squid cuando se enciende el equipo
[root@fircentos6 init.d]# chkconfig --level 345 squid on


Iniciamos el servicio manualmente
[root@fircentos6 init.d]# /etc/rc.d/init.d/squid start
[root@fircentos6 init.d]# service squid start
Starting squid: init_cache_dir ufs... squid


Este archivo (/etc/rc.d/init.d/squid) debe tener la opción de ser ejecutable
 -rwxr-xr-x. 1 root root  3492 Feb 22  2013 squid     (r=4,w=2;x=1,-=0)




viernes, 5 de diciembre de 2014

Configuracion de IPTABLES

[root@fircentos6 bin]#vim reglas-basicas.sh
# Reglas para Firewall
todas=0/0
netext=eth0
netint=eth1
redint=11.11.11.1/24

ipfirewall=192.168.1.54

#Limpiando reglas:
/sbin/iptables -F INPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F OUTPUT
/sbin/iptables -F -t nat

#Forward entre paquetes del Firewall
echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

/sbin/iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Acepto cadenas de entrada que vengan de conexiones establecidas
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Aceptando todo el trafico de la red privada hacia internet
/sbin/iptables -A FORWARD -i $netint -o $netext -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Aceptando cadenas de entradas que vengan con conexiones establecidas
/sbin/iptables -A FORWARD -i $netext -o $netint -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -s $redint -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Drop invalid packets.
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN              -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST              -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,RST FIN,RST              -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,FIN FIN                  -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags ACK,URG URG                  -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --syn -j REJECT
/sbin/iptables -A INPUT -p udp -m udp -j REJECT

# Aceptando Administracion Remota conexion SSH (cualquier puerto ejm. 45683)
#/sbin/iptables -A INPUT -m tcp -p tcp --dport 45683 -m state --state NEW,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 45683 -j ACCEPT
# en caso de Output DROP
#/sbin/iptables -A OUTPUT -m tcp -p tcp --sport 45683 -m state --state ESTABLISHED -j ACCEPT

# Habilitando el NAT - General of MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s $redint -j MASQUERADE

# Haciendo PROXY TRANSPARENTE
/sbin/iptables -A OUTPUT -p tcp --sport 3128 -d $redint -j ACCEPT
#/sbin/iptables -A OUTPUT -p tcp --sport 3129 -d $redint -j ACCEPT

/sbin/iptables -t nat -A PREROUTING -i $netint -p tcp --dport 80 -j REDIRECT --to-port 3128
/sbin/iptables -t nat -A PREROUTING -i $netint -p tcp --dport 443 -j REDIRECT --to-port 3129

jueves, 27 de noviembre de 2014

CENTOS 6.4 CON SQUID 3.4 SSL E IPTABLES

Configuración de Squid 3.4 habilitando SSL para filtrar el contenido de trafico HTTPS, algunos de los procedimientos implementados fueron tomados de la gran legión de personas que amamos Linux.

Vamos a realizar la configuración desde una instalación básica de Centos 6.4 en modo consola y para el ingreso de datos utilizamos Putty.

Lo primero que hacemos es configurar las tarjetas de red, para nuestro caso usaremos 2.

Se configuro un servidor DNS que será el que distribuirá el Internet a nuestra configuración.

 Grafico 1:

Configuracion de tarjetas de red

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:D5:D3:96
TYPE=Ethernet
UUID=eb22e0d8-4552-4317-ae54-e64abb398467
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.1.54
PREFIX=24
GATEWAY=192.168.1.53
DEFROUTE=yes
IPV_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
DNS1=192.168.1.53

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:0C:29:D5:D3:8C
TYPE=Ethernet
UUID=b6083420-8ba2-4ad0-b059-2798f1393e06
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=11.11.11.1
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"

Desactivamos servicios

Desactivamos SELINUX

[root@localhost /]# vim  /etc/selinux/config  -> acceso directo: /etc/sysconfig/selinux
SELINUX=disabled
SELINUXTYPE=targeted

Desactivamos NetworkManager Centos 6.4 (en la configuracion basica no se instala)

root@localhost ~]# service NetworkManager status
NetworkManager (pid  1782) is running...

[root@ localhost ~]# service NetworkManager stop
Stopping NetworkManager daemon:                            [  OK  ]

[root@mail ~]#  chkconfig NetworkManager off

Otros

[root@localhost ~]# service iptables.stop
[root@localhost ~]# service ip6tables stop
[root@localhost ~]# chkconfig iptables off
[root@localhost ~]# chkconfig ip6tables off

Configuracion de SSH

Cambiamos el puerto 22 por otro mas complejo
[root@localhost /]# vi /etc/ssh/sshd_config
17 Port 45683
23 Protocol 2
39 SyslogFacility AUTHPRIV
45 PermitRootLogin no
74 PermitEmptyPasswords no
75 PasswordAuthentication yes
79 ChallengeResponseAuthentication no
90 GSSAPIAuthentication yes
92 GSSAPICleanupCredentials yes
108 UsePAM yes
114 X11Forwarding yes
138 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
139 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
140 AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
141 AcceptEnv XMODIFIERS
144 Subsystem       sftp    /usr/libexec/openssh/sftp-server

[root@localhost ~]# service sshd status
openssh-daemon (pid  2009) is running...

[root@localhost ~]# service sshd restart
 

Configuraciones Adicionales

Actualizando el sistema

[root@localhost /]# yum update
 Otro
[root@localhost /]# su –c ‘yum –y update’

[root@localhost /]# yum install vim
[root@localhost /]# yum install bind-utils

Nombre del servidor

[root@localhost /]#  vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
11.11.11.1    fircentos6    fircentos6.sistelcom.com

Chequeando Kernel:

[root@fircentos6 ~]# uname -r
2.6.32-358.el6.x86_64

[root@fircentos6 ~]# uname -a
L
inux fircentos6.sistelcom.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@fircentos6 ~]# rpm -q -a |less (paquetes instalados)

Verificamos los DNS

[root@fircentos6 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
domain sistelcom.com
search sistelcom.com
nameserver 192.168.1.53
nameserver 8.8.8.8
nameserver 127.0.0.1

[root@fircentos6 ~]# vim /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
Hosts:      files dns

[root@fircentos6 ~]# vim /etc/host.conf
multi on

Verificamos FQDN (Fully Qualified Domain Name)

[root@fircentos6 ~]# vim /etc/sysconfig/networkNETWORKING=yes
HOSTNAME=fircentos6.sistelcom.com
(reiniciar el servidor para que los valores se actualicen)

Verificamos nombre del servidor
#hostname (nombre complete FQDN)
#hostname –s (nombre corto)
#hostname –i (da el IP)
#hostname –h (todas las opciones)

Chequeamos el Forward

[root@fircentos6 ~]# vim /etc/sysctl.conf
(Cambiamos de 0 a 1 o en su defecto lo invocamos en las reglas y no seria necesario el cambio.)
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0