Compilando o Squid com autenticação PAM
Nesse artigo vamos compilar o Squid habilitando alguns parâmetros interessantes, tal como o suporte a autenticação PAM, configurar algumas funcionalidades, tal como bloqueio de site por IP ou URL e criar um ambiente de autenticação via browser.
[ Hits: 105.376 ]
Por: Claudio Mercaldo de Almeida em 06/05/2005
Execução por runlevel (/etc/init.d/squid start) - OPCIONAL
Esta fase é opcional, não interferindo na execução do Squid . É claro que caso
deseje uma execução no padrão do (runlevels - Níveis de execução), este parte deverá
ser implementada.
Quando compilamos o Squid, por padrão não será criado o arquivo de inicialização
localizado dentro do (/etc/init.d/) ou (/etc/rc.d/init.d), dependendo da distro.
A solução foi criar um arquivo no molde padrão do Squid e fazermos uma alteração no
arquivo (squid.conf ).
Alteração no squid.conf:
# vi /etc/squid/squid.conf
Linha original a ser alterada:
pid_filename /var/log/squid.pid
Por esta (este passo já foi realizado na pág 5, só estou relembrando):
pid_filename /var/run/squid.pid
squid.pid - Este arquivo é criado no momento da execução do Squid, seu conteúdo é o número do processo em execução (PID).
Após este procedimento vamos criar um arquivo de inicialização pelo "runlevel".
O arquivo abaixo, deve ser copiado e colado para um arquivo vazio dentro do diretório (/etc/init.d/) com o nome de "squid".
# vi /etc/init.d/squid
#! /bin/sh
#
# squid Startup script for the SQUID HTTP proxy-cache.
#
# Version: @(#)squid.rc 2.20 01-Oct-2001 miquels@cistron.nl
#
NAME=squid
DAEMON=/usr/sbin/squid
LIB=/usr/lib/squid
PIDFILE=/var/run/$NAME.pid
SQUID_ARGS="-D -sYC"
[ ! -f /etc/default/squid ] || . /etc/default/squid
PATH=/bin:/usr/bin:/sbin:/usr/sbin
[ -x $DAEMON ] || exit 0
grepconf () {
w=" " # space tab
sq=/etc/squid/squid.conf
# sed is cool.
res=`sed -ne '
s/^'$1'['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
grepconf2 () {
w=" " # space tab
sq=/etc/squid/$NAME.conf
# sed is cool.
res=`sed -ne '
s/^'$1'['"$w"']\+[^'"$w"']\+['"$w"']\+\([^'"$w"']\+\).*$/\1/p;
t end;
d;
:end q' < $sq`
[ -n "$res" ] || res=$2
echo "$res"
}
#
# Try to increase the # of filedescriptors we can open.
#
maxfds () {
[ -n "$SQUID_MAXFD" ] || return
[ -f /proc/sys/fs/file-max ] || return 0
[ $SQUID_MAXFD -le 4096 ] || SQUID_MAXFD=4096
global_file_max=`cat /proc/sys/fs/file-max`
minimal_file_max=$(($SQUID_MAXFD + 4096))
if [ "$global_file_max" -lt $minimal_file_max ]
then
echo $minimal_file_max > /proc/sys/fs/file-max
fi
ulimit -n $SQUID_MAXFD
}
fixperms () {
dir=$1
usr=$2
grp=$3
currusr=`/usr/bin/stat -c '%U' $dir`
currgrp=`/usr/bin/stat -c '%G' $dir`
if [ $currusr != $usr ]
then
chown $usr $dir -R
fi
if [ $currgrp != $grp ]
then
chgrp $grp $dir -R
fi
}
start () {
cdr=`grepconf2 cache_dir /var/spool/$NAME`
usr=`grepconf cache_effective_user proxy`
grp=`grepconf cache_effective_group proxy`
case "$cdr" in
[0-9]*)
echo "squid: squid.conf contains 2.2.5 syntax - not starting!" >&2
exit 1
;;
esac
#
# Create spool dirs if they don't exist.
#
if [ -d "$cdr" -a ! -d "$cdr/00" ]
then
echo "Creating squid spool directory structure"
/usr/sbin/squid -z
fi
if [ "$CHUID" = "" ]; then
CHUID=root
fi
maxfds
umask 027
cd $cdr
start-stop-daemon --quiet --start \
--pidfile $PIDFILE \
--chuid $CHUID \
--exec $DAEMON -- $SQUID_ARGS < /dev/null
sleep 1
}
stop () {
PID=`cat $PIDFILE 2>/dev/null`
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
#
# Now we have to wait until squid has _really_ stopped.
#
sleep 2
if test -n "$PID" && kill -0 $PID 2>/dev/null
then
echo -n "(waiting..."
cnt=0
while kill -0 $PID 2>/dev/null
do
cnt=`expr $cnt + 1`
if [ $cnt -gt 60 ]
then
#
# Waited 120 seconds now. Fail.
#
echo -n "failed)"
if [ "$1" = verbose ] ; then
echo "."
else
echo -n " "
fi
return
fi
sleep 2
echo -n "."
done
echo -n "done)"
if [ "$1" = verbose ] ; then
echo " $NAME."
else
echo -n " "
fi
else
[ "$1" = verbose ] && echo "$NAME."
fi
}
case "$1" in
start)
echo -n "Starting proxy server: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping proxy server: "
stop verbose
;;
reload|force-reload)
echo -n "Reloading $NAME configuration files..."
start-stop-daemon --stop --signal 1 \
--pidfile $PIDFILE --quiet --exec $DAEMON
echo "done."
;;
restart)
echo -n "Restarting proxy server: "
stop
start
echo "$NAME."
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart}"
exit 3
;;
esac
exit 0
Agora poderemos atualizar nossa lista de runlevels pelo comando:
# update-rc.d squid defaults
Para testarmos basta digitar:
# /etc/init.d/squid stop
E depois:
# /etc/init.d/squid start
Continuando...
Página anterior Próxima página
Páginas do artigo
1.
Mas o que é PAM?
2.
Qual a vantagem de utilizar o PAM?
3.
Instalando os pacotes
4.
Compilando o Squid
5.
Configurando o Squid para execução
6.
Executando o Squid pela primeira vez
7.
Bloqueando sites por palavras e IPs
8. Execução por runlevel (/etc/init.d/squid start) - OPCIONAL
9.
Testando e finalizando
Outros artigos deste autor
Monitoramento de Serviços e Servidores
BackRE - Seu script de backup remoto
Postgres e os Sistemas Alterdata
Configurando o Apache para reconhecer arquivos DWG
Coletando informações direto do FIREBIRD via D.O.S. ou SHELL
Leitura recomendada
MySAR - Um ótimo analisador de logs do Squid
Squid no FreeBSD
Limitando download com Squid
Autenticando usuários do Squid em um banco de dados MySQL
Squid - Bloqueando definitivamente o MSN Messenger e Orkut
Comentários
Cara muito legal este artigo....... bem detalhado e bastante abrangente....
Muito bom! =D
Estava com problemas na hora de autenticar usuarios utilizando o LDAP, isso vai me ajudar bastante!
Muito obrigado!
Mensagem
Muito bom! =D
Estava com problemas na hora de autenticar usuarios utilizando o LDAP, isso vai me ajudar bastante!
Muito obrigado!
Espero ter ajudado!!
Mensagem
Espero ter ajudado!!
Mensagem
Parabéns pelo artigo, super didático, prático e eficiente .......
Gerson Raymond
www.g2cinformatica.com
excelente... resolveu, mas só uma complementação... as permissões do arquido squid em /etc/init.d devem ser alteradas.
root@internet:/etc/init.d# /etc/init.d/squid stop
bash: /etc/init.d/squid: Permissão negada
root@internet:/etc/init.d# chmod 700 squid
depois de feita a alteração...
root@internet:/etc/init.d# /etc/init.d/squid stop
Stopping proxy server: (waiting..................done) squid.
root@internet:/etc/init.d# /etc/init.d/squid start
Starting proxy server: squid.
valeu !!! :)
Mensagem
excelente... resolveu, mas só uma complementação... as permissões do arquido squid em /etc/init.d devem ser alteradas.
root@internet:/etc/init.d# /etc/init.d/squid stop
bash: /etc/init.d/squid: Permissão negada
root@internet:/etc/init.d# chmod 700 squid
depois de feita a alteração...
root@internet:/etc/init.d# /etc/init.d/squid stop
Stopping proxy server: (waiting..................done) squid.
root@internet:/etc/init.d# /etc/init.d/squid start
Starting proxy server: squid.
valeu !!! :)
Tentamos sempre fazer o melhor.....mas sempre passa alguma coisa...Obrigado!!
Att.
ClaudioM
Mensagem
Tentamos sempre fazer o melhor.....mas sempre passa alguma coisa...Obrigado!!
Att.
ClaudioM
Contribuir com comentário
Enviar