A IA pode lutar contra o aumento do número de ataques de ransomware
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
Este tutorial demonstra um servidor de email com todos os recursos em execução no OpenBSD usando OpenSMTPD, Dovecot, Rspamd e RainLoop. O OpenSMTPD é o servidor de correio padrão do OpenBSD. Escolha uma instância do Vultr Compute Cloud com bastante armazenamento para o número esperado de usuários.
Configure sua conta de usuário para executar tarefas como raiz.
su -
usermod -G wheel <username>
echo "permit nopass keepenv :wheel" > /etc/doas.conf
exit
Configure o repositório de pacotes para o OpenBSD.
doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit
Adicione os pacotes necessários.
doas pkg_add opensmtpd-extras opensmtpd-filter-rspamd dovecot dovecot-pigeonhole rspamd redis
Por padrão, o OpenSMTPD escuta apenas no host local. Ele deve ser configurado explicitamente para escutar nas interfaces externas. Ele deve ser configurado para usar usuários virtuais em vez de usuários do sistema por segurança.
Faça backup do /etc/smtpd.conf
arquivo padrão e crie um novo a partir do zero.
cd /etc/mail
mv smtpd.conf smtpd.conf.default
Crie um novo smtpd.conf
como mostrado abaixo. Substitua example.com
pelo seu domínio. Essa configuração inicial não ativa o filtro rspamd ao testar o OpenSMTP. O filtro de spam será ativado mais tarde.
pki "mail" cert "/etc/ssl/mail.crt"
pki "mail" key "/etc/ssl/private/mail.key"
table aliases file:/etc/mail/aliases
table credentials passwd:/etc/mail/credentials
table virtuals file:/etc/mail/virtuals
filter "rspamd" proc-exec "/usr/local/libexec/smtpd/filter-rspamd"
# To accept external mail, replace with: listen on all
# listen on all tls pki "mail" hostname "mail.example.com"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
auth <credentials>
action "local_mail" mbox alias <aliases>
action "domain_mail" maildir "/var/vmail/example.com/%{dest.user}" \
virtual <virtuals>
action "outbound" relay
# Uncomment the following to accept external mail for domain "example.org"
# match from any for domain "example.com" action "domain_mail"
match from local for local action "local_mail"
match from local for any action "outbound"
match auth from any for any action "outbound"
O OpenSMTPD e o Dovecot podem compartilhar um banco de dados de autenticação. Esse banco de dados é semelhante ao arquivo de senha do sistema em formato, com dois campos extras para o Dovecot. Os dois campos especiais definem o diretório inicial virtual e o local do email. As senhas estão no formato blowfish. Este tutorial cria três exemplos de usuários.
Gere as senhas e concatene-as no /etc/mail/credentials
arquivo.
doas su
smtpctl encrypt example_password1 >> /etc/mail/credentials
smtpctl encrypt example_password2 >> /etc/mail/credentials
smtpctl encrypt example_password3 >> /etc/mail/credentials
exit
A saída é semelhante a esta:
$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6
$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e
$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq
Edite /etc/mail/credentials
para adicionar os campos obrigatórios. Cada linha é mapeada para uma conta do sistema, vmail , com UID e GID de 2000 . Substitua example.com pelo seu domínio. O nome do usuário virtual é o endereço de email completo.
[email protected]:$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6:vmail:2000:2000:/var/vmail/example.com/john::userdb_mail=maildir:/var/vmail/example.com/john
[email protected]:$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e:vmail:2000:2000:/var/vmail/example.com/adam::userdb_mail=maildir:/var/vmail/example.com/adam
[email protected]:$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq:vmail:2000:2000:/var/vmail/example.com/natalie::userdb_mail=maildir:/var/vmail/example.com/natalie
/etc/mail/credentials
permissões como somente leitura para _smtpd
e _dovecot
usuários do sistema.Crie o vmail
usuário, o grupo e o diretório inicial do sistema.
Ao criar o usuário do sistema vmail, receberá o seguinte aviso: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified
. Isso é esperado. Isso evita sobrecarregar o diretório com arquivos de ponto de /etc/skel
. Eles não são necessários porque a conta do vmail não permite o login.
doas chmod 0440 / etc / mail / credenciais doas chown smtpd: dovecot / etc / mail / credentials doas useradd -c "Conta de correio virtual" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -L staff vmail doas mkdir / var / vmail doas chown vmail: vmail / var / vmail
Crie /etc/mail/virtuals
para definir os endereços de email válidos.
/var/vmail/example.com/<user>
.A tentativa de entrega de correio para endereços não definidos neste arquivo será devolvida com uma Notificação de Status de Entrega.
[email protected]: [email protected] [email protected]: [email protected] [email protected]: [email protected] [email protected]: [email protected] [email protected]: vmail [email protected]: vmail [email protected]: vmail
Este exemplo usa um certificado autoassinado. Use um certificado assinado válido se você tiver um. Quando o nome comum for solicitado, verifique se ele corresponde ao FQDN do servidor. Este exemplo usa mail.example.com.
doas su
cd /etc/ssl
openssl genrsa -out private/mail.key 4096
openssl req -x509 -new -nodes -key private/mail.key -out mail.crt -days 3650 -sha256
chmod 0400 /etc/ssl/private/mail.key
exit
Use o verificador de sintaxe de configuração do OpenSMTPD. Se nenhum problema for encontrado, reinicie o daemon smtpd.
doas smtpd -n
doas rcctl restart smtpd
Em uma conta de email externa, envie um email de teste para um dos usuários.
/var/vmail
e enviará o email para /var/vmail/example.com/<username>/new
.1576339842.4d64757b.example.com:2,
.Revise o conteúdo do arquivo, incluindo todos os cabeçalhos de email, para verificar se a entrega de email funciona corretamente.
Return-Path: <n0244e80da3-54b1ed125c5342fc-adam===example.org@bounce.example.org>
Delivered-To: [email protected]
Received: from spruce-goose-ba.twitter.com (spruce-goose-ba.twitter.com [199.59.150.96])
by mail.example.com (OpenSMTPD) with ESMTPS id 75b514d3 (TLSv1.2:ECDHE-RSA-AES256-GCM- SHA384:256:NO)
for <[email protected]>;
Sat, 14 Dec 2019 11:10:40 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com;
s=dkim-201406; t=1576339839;
bh=jhKB5/w9v87GaXSuizT576ntJ/72gvLRDhsqmGQQrCE=;
h=Date:From:To:Subject:MIME-Version:Content-Type:List-Unsubscribe:
Message-ID;
b=TWn/QVUJ1VDlWiweWoanwHLABCL1nqmm0+TBzh3PjmYNm0quRMXB7QL2ykzHGME5A
DTz/JFHa0cOvQsrdhxxbjOLFKimK0nF+Ou5kI+2HzTzfVNZS0qGnTVP/tZyaIsWjjl
an5EiR6HFOHG4iClOOEOJW4oLDEZfPTefrlW+378bmHGIRUNDvVKrbXKunL9fJFAb3
JSrhWQNwbrF/aARFzw4nKfb1I7vTRSrN1eXE5JxzGwI2XAjqDIWdR5ExwUNbJH5ZPs
wQ85j8KLZEEgQkbH9CypgeUMJWsVK95FqOCCaqKMS10M7intGMb3aeiiFcB7yDHi9t
u7rVESm4eGp/g==
X-MSFBL: DM7pSZns+YDRgNEmGNre9aPjZTtc1tDlN97w5rQDBts=|eyJ1IjoibWF0dEBnb2J
sYWNrY2F0LmNvbUBpaWQjIzU0YjFlZDEyNWM1MzQyZmNiNThiMzVmNzI0NDZlMGF
mQHVzYiMjNkAyNDRAMTA4MjgwNTAxMDYzNzk1MDk3NkAwQDA4MjY5ZWI4OTI3YzR
kNTFiNTZkMjY3YzY2OGRmN2IwY2Y4M2ExZGIiLCJyIjoibWF0dEBnb2JsYWNrY2F
0LmNvbSIsImciOiJCdWxrIiwiYiI6InNtZjEtYmd4LTM0LXNyMS1CdWxrLjE4NiJ
9
Date: Sat, 14 Dec 2019 16:10:39 +0000
...
Dovecot requer a capacidade de ter um número maior de arquivos abertos para leitura e gravação do que a classe padrão permite. Não fazer isso causará erros difíceis de solucionar.
Defina uma classe de logon para o daemon Dovecot. Na parte inferior, /etc/login.conf
adicione as seguintes linhas.
dovecot:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Crie /etc/dovecot/local.conf
.
auth_mechanisms = plain
first_valid_uid = 2000
first_valid_gid = 2000
mail_location = maildir:/var/vmail/%d/%n
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = subscribe
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
}
passdb {
args = scheme=CRYPT username_format=%u /etc/mail/credentials
driver = passwd-file
name =
}
plugin {
imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_name = Junk
imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_name = *
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
inet_listener imaps {
port = 0
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
}
ssl_cert = </etc/ssl/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
args = username_format=%u /etc/mail/credentials
driver = passwd-file
name =
}
protocol imap {
mail_plugins = " imap_sieve"
}
Há um bug no Dovecot em que as configurações ssl_cert
e ssl_key
não são substituídas no local.conf
arquivo, por isso precisamos comentá-las. Se você perder esta etapa, o Dovecot falhará ao iniciar corretamente.
Edite /etc/dovecot/conf.d/10-ssl.conf
como mostrado.
...
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/ssl/dovecotcert.pem
#ssl_key = </etc/ssl/private/dovecot.pem
...
Os scripts de peneira treinam o Rspamd em spam e presunto . Mover e-mail para dentro e para fora da pasta de lixo eletrônico aciona um evento para treinar Rspamd.
Esses arquivos estão localizados em /usr/local/lib/dovecot/sieve
.
Crie o report-ham.sieve
arquivo
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.mailbox" "*" {
set "mailbox" "${1}";
}
if string "${mailbox}" "Trash" {
stop;
}
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "sa-learn-ham.sh" [ "${username}" ];
Crie o report-spam.sieve
arquivo
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "sa-learn-spam.sh" [ "${username}" ];
Compile os arquivos.
sievec report-ham.sieve
sievec report-spam.sieve
Crie os dois scripts de shell a seguir em /usr/local/lib/dovecot/sieve
Adicione o seguinte a sa-learn-ham.sh
#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_ham
Adicione o seguinte a sa-learn-spam.sh
#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_spam
Torne os arquivos executáveis.
chmod 0755 sa-learn-ham.sh
chmod 0755 sa-learn-spam.sh
Ative e inicie o Dovecot.
rcctl enable dovecot
rcctl start dovecot
Verifique se o Dovecot começou corretamente.
ps ax | grep dovecot
88005 ?? I 0:00.11 /usr/local/sbin/dovecot
69640 ?? I 0:00.03 dovecot/anvil
91207 ?? I 0:00.03 dovecot/log
98178 ?? I 0:00.19 dovecot/config
34712 ?? I 0:00.06 dovecot/stats
96674 ?? I 0:00.03 dovecot/imap-login
8891 ?? S 0:00.02 dovecot/imap
Verifique se o Dovecot pode ler corretamente /etc/mail/credentials
doveadm user [email protected]
field value
uid 2000
gid 2000
home /var/vmail/example.com/john
mail maildir:/var/vmail/example.com/john
Verifique se um usuário de email pode efetuar login.
doveadm auth login [email protected]
Password: ********
passdb: [email protected] auth succeeded
extra fields:
[email protected]
userdb extra fields:
[email protected]
mail=maildir:/var/vmail/example.com/john
uid=2000
gid=2000
home=/var/vmail/example.com/john
auth_mech=PLAIN
Esta é uma configuração básica do Rspamd, consulte a documentação oficial para obter mais detalhes. Este exemplo cria uma definição para o nosso domínio para habilitar a assinatura DKIM.
Crie um par de chaves público / privado /etc/mail/dkim
e defina as permissões corretas.
doas su
mkdir /etc/mail/dkim
cd /etc/mail/dkim
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
chmod 0440 private.key
chown root:_rspamd private.key
Crie um registro DNS para DKIM contendo a chave pública. Consulte o seu provedor de DNS para obter detalhes sobre como criar um registro DKIM. Copie o conteúdo /etc/mail/dkim/public.key
e cole-o após a p=
parte do registro DKIM, como mostrado abaixo. Observe que este exemplo também cria um registro SPF.
default._domainkey.example.com. IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClcuK3FV3Ug64li8iFsuJ2ykgb7FMZsujk9uG79ppPUp57vCfjzO7F+HBfx5qIwvlGxv2IJXK86FZwhpUX+HFCDUtfB2z0ZNGerWcZfNzM1w1Bru/fdMd2tCYkiHEa5RWIkLfs/Fm+neXxRZfAG2UDWmAghNbgzYv7xViwgufDIQIDAQAB"
example.com. IN TXT "v=spf1 a ip4:192.0.2.1 mx ~all"
Crie um registro DMARC.
_dmarc.example.com. IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:[email protected]"
Crie o /etc/rspamd/local.d/dkim_signing.conf
arquivo de configuração.
A selector="default";
linha é derivada da primeira parte do registro DNS DKIM ( default._domainkey....
) criado acima.
domain {
example.com {
path = "/etc/mail/dkim/example.com.key";
selector = "default";
}
}
Ative e inicie o Rspamd.
doas rcctl enable redis rspamd
doas rcctl start redis rspamd
Altere as linhas abaixo /etc/mail/smtpd.conf
e reinicie o OpenSMTPD para ativar o Rspamd.
...
listen on all tls pki "mail" hostname "mail.example.com" filter "rspamd"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
auth <credentials> filter "rspamd"
...
rcctl restart smtpd
Teste o servidor de email com o cliente de email POP3 ou IMAP. Se você não precisar de webmail, pare aqui.
Quando solicitado, escolha a versão mais atual do PHP.
pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl
Pegue o tarball do webmail RainLoop e extraia-o para /var/www/htdocs/
.
Use a Standard Edition, que inclui um atualizador automático.
cd /tmp
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d /var/www/htdocs/rainloop
chown -R www:www /var/www/htdocs
/etc/examples/acme-client.conf
para/etc
Adicione as seguintes linhas na parte inferior do arquivo:
domain webmail.example.com {
domain key "/etc/ssl/private/webmail.example.com.key"
domain full chain certificate "/etc/ssl/webmail.example.com.crt"
sign with letsencrypt
}
webmail.example.com
Edite /etc/httpd.conf
seguindo o exemplo abaixo.
prefork 3
types { include "/usr/share/misc/mime.types" }
server "default" {
listen on egress port 80
root "/htdocs"
directory index index.html
location "/.well-known/acme-challenge/*" {
root "/acme"
request strip 2
}
}
Execute a verificação da sintaxe httpd.
httpd -n
Ative e inicie o httpd.
rcctl enable httpd
rcctl start httpd
Solicite o certificado Let's Encrypt.
acme-client -v webmail.example.com
Adicione as definições de servidor do RainLoop ao /etc/httpd.conf
server "webmail.example.com" {
listen on egress port 80
block return 302 "https://$SERVER_NAME$REQUEST_URI"
}
server "webmail.example.com" {
listen on egress tls port 443
root "/htdocs/rainloop"
directory index "index.php"
tcp { nodelay, backlog 10 }
tls {
certificate "/etc/ssl/webmail.example.com.crt"
key "/etc/ssl/private/webmail.example.com.key"
}
hsts {
max-age 31556952
preload
}
# Value below is 25MB in bytes. 1MB = 1048576 bytes
connection max request body 26214400
location "/data*" {
block return 403
}
location "*.php*" {
fastcgi socket "/run/php-fpm.sock"
}
}
Configure o PHP para permitir anexos de até 25 megabytes. Faça as seguintes alterações em /etc/php-7.3.ini
:
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 25M
...
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 29M
Ative os módulos PHP necessários, copiando seus arquivos de configuração para /etc/php-7.3/
cp /etc/php-7.3.sample/* /etc/php-7.3/.
Verifique a sintaxe de /etc/httpd.conf
httpd -n
Habilite e inicie httpd e php-fpm.
rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm
Navegue para https://webmail.example.com/?admin
.
O nome de usuário padrão é: admin
A senha padrão é: 12345 .
Navegue até cada uma das seções de configuração e faça as alterações desejadas. Depois de concluir a configuração, faça login no webmail emhttps://webmail.example.com
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.
O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+
Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.
Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais
13 Ferramentas de Extração de Dados Comerciais de Big Data
Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true
À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.
Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1
A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA na área da saúde ainda está crescendo dia a dia.