Hardening Hardening ( Técnica de blindagem de sistema ) é um

Transcrição

Hardening Hardening ( Técnica de blindagem de sistema ) é um
Hardening
Hardening ( Técnica de blindagem de sistema ) é um processo de
mapeamento das ameaças, mitigação dos riscos e execução das
atividades corretivas em um sistema. Seu foco é a infraestrutura
e seu objetivo é tornar um sistema mais seguro para enfrentar
tentativas de ataques e invasões.
A técnica de Hardening pode ser utilizada em qualquer sistema
operacional, implementando medidas e ações com o objetivo de
fortalecer a segurança e proteger o sistema de possíveis
invasores. A implementação das diretivas de segurança devem ser
seguidas antes, durante e após a instalação e configuração do
sistema operacional em uso.
Quando se utiliza a técnica de Hardening existem três grandezas
que devem ser consideradas e analisadas: a segurança, os riscos e
a flexibilidade do sistema. Quando essas grandezas são analisadas
se definem e são aplicadas as boas práticas de segurança mais
adequadas ao sistema em uso, com o objetivo de se oferecer
produtividade e segurança, levando em consideração que quanto
maior a segurança menor o risco e também a flexibilidade do
sistema.
Algumas técnicas importantes que merecem atenção para um
bom Hardening:
Acesso Remoto
Utilizar o acesso remoto para não ter acesso físico ao servidor é
uma técnica que pode ser utilizada, como o ssh no Linux.
Sistemas de Detecção e Prevenção de Intrusão
Um sistema de detecção e prevenção de intrusão permite
notificar, rastrear e identificar tentativas de ataques e invasões
em um sistema. Baseado na detecção de uma tentativa de ataque
ou invasão a ferramenta é acionada e toma um ação baseada na
detecção do problema e conforme as configurações da
ferramenta que está sendo utilizada.
Antivírus
Antivírus é um software que detecta, evita, atua, remove e
neutraliza programas mal – intencionados (vírus). Os Vírus são
programas desenvolvidos para interferir no comportamento do
computador, gravando, corrompendo ou excluindo dados ou para
se espalharem para outros computadores através da internet. A
melhor forma de prevenção é a atualização do antivírus utilizado
no computador constantemente; grande parte dos softwares
antivírus permitem uma atualização automática, programada pelo
administrador do sistema.
.
Criptografia
A criptografia permite guardar e transmitir mensagens de forma
segura, garantindo a privacidade da informação. Benefícios da
criptografia para a segurança da informação:
Integridade: É possível ao receptor de uma mensagem verificar se
esta foi alterada durante o trânsito.
Autenticação: É possível ao receptor de uma mensagem, verificar
sua origem, um intruso não pode se fazer passar pelo remetente
desta mensagem.
Disponibilidade: O sistema deve estar sempre pronto a responder
as requisições de usuários autenticados como legítimos pelo
sistema, através de login e senha.
Fechar Portas da Rede
Quando um sistema operacional é instalado, alguns aplicativos
(serviços) abrem portas introduzindo vulnerabilidades no sistema,
facilitando uma invasão através da exploração dessas portas
abertas. Existe um aplicativo chamado Nmap (Network Mapper é
um aplicativo livre e de código aberto, utilizado para explorar uma
rede para efetuar uma auditoria de segurança), que permite que
se faça uma varredura por todas as portas abertas no sistema e se
possa criar com essa lista de portas abertas, regras no firewall para
bloquear as portas que não devem estar disponíveis. Depois que
as regras forem configuradas no firewall é importante fazer uma
nova varredura e analisar se as portas abertas que poderiam
colocar o sistema em risco foram fechadas.
Firewall
Barreira de proteção que ajuda a controlar o tráfego de dados
entre um computador ou rede onde o computador está instalado
e a internet. Permite a transmissão e recepção de dados
autorizados pelo administrador da rede. É considerado um ponto
de conexão entre duas redes não confiáveis e permite que a
comunicação entre elas seja segura e monitorada a todo
momento. Como funciona o Firewall do Windows: Quando
alguém utilizando a internet ou uma rede tenta se conectar ao
computador, essa tentativa é chamada de pedido não solicitado,
quando o firewall recebe um pedido não solicitado ele bloqueia a
conexão. Quando houver necessidade do usuário executar
programas de mensagens instantâneas ou utilizar a internet ou
uma rede para receber informações o firewall sempre perguntará
se o usuário deseja bloquear ou desbloquear esses tipos de
conexão.
Remoção de Logins e Usuários desnecessários
Após a instalação do sistema e no dia a dia é importante que o
administrador da rede faça a análise de todas as contas de
usuários e remova as contas desnecessárias. Contas que não são
mais utilizadas devem ser removidas para evitar que pessoas mal
intencionadas utilizem essas contas para realizar atividades
suspeitas ou indevidas, que comprometam a segurança da rede.
A conta de usuário administrador é a conta mais visada por
usuários mal intencionados e cracker, quando se consegue acesso
a conta do administrador, se consegue acesso total ao sistema e
rede de uma empresa. Essa conta deve conter uma senha
considerada forte e só deve ser utilizada pelo administrador
quando for necessário fazer configurações no sistema, em outros
casos é recomendando que até mesmo o administrador use uma
conta de usuário comum no sistema, para que a segurança seja
garantida
Remoção de Programas e Serviços desnecessários
Desativar serviços desnecessários e inseguros é uma medida de
segurança que deve ser tomada pelos administradores do
sistema. Todos os serviços instalados devem ser verificados,
quanto a necessidade de utilização, se não forem necessários ou
considerados inseguros devem ser removidos. A desinstalação de
serviços considerados desnecessários deve ser executada para
evitar que possíveis vulnerabilidades sejam exploradas e o sistema
venha a sofrer ameaças que afetem a segurança. Os serviços que
permitem acesso remoto ao sistema são considerados inseguros
e devem ser desativados, porém conforme a necessidade da rede
alguns serviços não podem ser desativados, o administrador deve
analisar e procurar deixar habilitados somente serviços
considerados necessários ao sistema em uso.
Essas foram somente algumas das muitas técnicas e configurações
que podemos pensar em verificar e implementar para melhor
blindagem no servidor e dos dados da empresa.
Segue agora algumas execuções de comandos e configurações
que podem ajudar a blindar melhor um sistema Linux:
#! /bin/bash
set -x #
# Configurando o path dos executáveis usados no script
export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
# Mudando a permissão dos arquivos com SUID, exceto alguns :
# /sbin/pwdb_chkpwd
# /sbin/unix_chkpwd
# /sbin/pam_timestamp_check
# /bin/su
# /usr/bin/passwd
# /usr/bin/sudo
# /usr/bin/crontab
find / \( -perm -4000 -o -perm -2000 \) -mount -type f -print >
/tmp/suids
sed -e '/\/sbin\/pwdb_chkpwd/ d' \
-e '/\/sbin\/unix_chkpwd/ d'\
-e '/\/sbin\/pam_timestamp_check/ d'\
-e '/\/bin\/su/ d'\
-e '/\/usr\/bin\/passwd/ d'\
-e '/\/usr\/bin\/sudo/ d'\
-e '/\/usr\/bin\/crontab/ d'\
/tmp/suids > /tmp/suids2
for arquivo in $(cat /tmp/suids2); do
chmod -s $arquivo
done
rm /tmp/suids /tmp/suids2
# Mundando a permissão dos compiladores
chmod go-rwx /usr/bin/gcc
chmod go-rwx /usr/bin/cc
# Parando os serviços desnecessários
service gpm stop
service apmd stop
service atd stop
service xinetd stop
service sendmail stop
service cups stop
# Retirando do startup os serviços desnecessários
chkconfig --level 12345 cups off
chkconfig --level 12345 sendmail off
chkconfig --level 12345 xinetd off
chkconfig --level 12345 gpm off
chkconfig --level 12345 apmd off
chkconfig --level 12345 atd off
# -> Criado por Robs
# ctrl alt del p/ boot
sed 's/^ca::ctrlaltdel/#ca::ctrlaltdel/' /etc/inittab > tmp.01
mv tmp.01 /etc/inittab
# password no grub
grep ^password /boot/grub/grub.conf >/dev/null 2>&1
case "$?" in
0)
;;
1)
echo -n "senha do LOADER:"
read -r password
if test "x$password" = x; then
echo "password em branco"
fi
md5=`grub --batch --device-map=/dev/null <
| grep "^Encrypted: " | sed 's/^Encrypted: //'
md5crypt
$password
quit
EOF`
if test "x$password" != x; then
echo "password --md5 $md5" > tmp.01
cat /boot/grub/grub.conf >> tmp.01
mv tmp.01 /boot/grub/grub.conf
chmod 600 /boot/grub/grub.conf
fi
;;
2)
esac
# seguranca de rede
grep ^net.ipv4.tcp_syncookies=1 /etc/sysctl.conf >/dev/null
2>&1
if test $? = 1; then
echo 'net.ipv4.conf.all.forwarding=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.log_martians=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_ignore_bogus_error_responses=1
#net.ipv4.icmp_echo_ignore_broadcasts=0
#net.ipv4.icmp_ignore_bogus_error_responses=0
net.ipv4.ip_local_port_range = 16384 65535
net.ipv4.ipfrag_high_thresh = 512000
net.ipv4.ipfrag_low_thresh = 446464
net.ipv4.tcp_mem = 688128 737280 786432
net.ipv4.tcp_wmem = 393216 1572864 12582912
net.ipv4.tcp_rmem = 1179648 4718592 37748736
net.ipv4.tcp_max_tw_buckets = 2000000
net.ipv4.tcp_max_syn_backlog = 8192
kernel.msgmni = 1024
kernel.sem = 1000 32000 32 512
kernel.shmmax = 2147483648
fs.file-max = 65535
vm.bdflush = 100 1200 128 512 500 6000 500 0 0
vm.kswapd = 1024 32 16
vm.page-cluster = 16
vm.pagetable_cache = 35 60
net.core.rmem_max = 6291360
net.core.rmem_default = 6291360
net.core.wmem_max = 6291360
net.core.wmem_default = 6291360
net.core.optmem_max = 688128
net.core.hot_list_length = 12288
' >> /etc/sysctl.conf
sysctl -p
fi
# auditagem
chmod o-rwx /var/log/*
# perm xinetd
chmod 700 /etc/xinetd.d
chmod 600 /etc/xinetd.conf
# tamanho e expiracao do password
sed '/^PASS_MIN_LEN/c \
PASS_MIN_LEN 8
/^PASS_MAX_DAYS/c \
PASS_MAX_DAYS 30
' /etc/login.defs > tmp.01
mv tmp.01 /etc/login.defs
# su irrestrito
chgrp wheel /bin/su
chmod 4750 /bin/su
# criando usuarios
useradd -g 10 -u 1505 -d /home/bob -s /bin/bash bob
useradd -g 10 -u 1500 -d /home/buba -s /bin/bash buba
useradd -g 10 -u 1510 -d /home/glima -s /bin/bash glima
chown -R weblogic:as /bea /domains
echo bob!@#' | passwd --stdin bob
echo buba!@#' | passwd --stdin buba
echo glima!@#' | passwd --stdin glima
# Alteração no /etc/security/limits.conf
echo bob soft nofile 50000
bob hard nofile 50000
bob soft nproc 10000
bob hard nproc 10000' >> /etc/security/limits.conf
Outro ponto de atenção é quanto a parametrização dos buffers e
utilização de memória das interfaces de rede. Isso pode mudar e
muito de acordo com o modelo de cada interface.
#Kernel sysctl configuration file for Red Hat Linux
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Disables packet forwarding
net.ipv4.ip_forward=0
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Enable Log Spoofed Packets, Source Routed Packets, Redirect
Packets
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.eth0.log_martians = 0
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
# Disables the magic-sysrq key
kernel.sysrq = 0
# Decrease the time default value for tcp_fin_timeout
connection
net.ipv4.tcp_fin_timeout = 15
# Decrease the time default value for tcp_keepalive_time
connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off the tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
# Turn off the tcp_timestamps
net.ipv4.tcp_timestamps = 0
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 1
# Increases the size of the socket queue (effectively, q0).
net.ipv4.tcp_max_syn_backlog = 1024
# Increase the tcp-time-wait buckets pool size
net.ipv4.tcp_max_tw_buckets = 1440000
# Allowed local port range
net.ipv4.ip_local_port_range = 16384 65536

Documentos relacionados