{"id":837,"date":"2020-02-21T14:44:37","date_gmt":"2020-02-21T13:44:37","guid":{"rendered":"https:\/\/www.tiraquelibras.com\/blog\/?p=837"},"modified":"2021-02-02T15:37:46","modified_gmt":"2021-02-02T14:37:46","slug":"mejorar-la-seguridad-de-nuestro-postfix","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=837","title":{"rendered":"Mejorar la seguridad de nuestro Postfix (parte 16)"},"content":{"rendered":"<p>Tras la publicaci\u00f3n anterior de un <a title=\"https:\/\/blog.tiraquelibras.com\/?p=601\" href=\"https:\/\/blog.tiraquelibras.com\/?p=601\" type=\"\" data-from-md=\"\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">Completo servidor de correo en Debian 9 \u2013 \u00cdndice de contenidos<\/a>, en donde se pone especial cuidado en la seguridad del servicio ( aunque como todo en la vida, es mejorable ? ), explicamos en esta entrada como mejorar la configuraci\u00f3n de nuestro&nbsp;<strong>Postfix<\/strong>&nbsp;con una serie de cambios que afecta a su configuraci\u00f3n y a las consultas que hace a la base de datos del&nbsp;<em><strong>Backend<\/strong><\/em>.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>OJOCUIDADO!!!<\/strong><\/span>&nbsp;Tener en cuenta que partimos de nuestra instalaci\u00f3n inicial, publicada en el enlace comentado en el p\u00e1rrafo anterior.<\/p>\n<hr>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a0c96061f292\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a0c96061f292\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\/#Chequeo_de_resolucion_inversa_PTR\"  rel=\"nofollow\" target=\"_blank\">Chequeo de resoluci\u00f3n inversa (PTR)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\/#Restriccion_HELOEHLO\"  rel=\"nofollow\" target=\"_blank\">Restricci\u00f3n HELO\/EHLO<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\/#Chequeo_registros_MX_en_From\"  rel=\"nofollow\" target=\"_blank\">Chequeo registros MX en From<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\/#Evitar_email_spoofing_desde_nuestros_buzones\"  rel=\"nofollow\" target=\"_blank\">Evitar email spoofing desde nuestros buzones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\/#Enlaces_de_interes\"  rel=\"nofollow\" target=\"_blank\">Enlaces de inter\u00e9s<\/a><\/li><\/ul><\/nav><\/div>\n<h1 id=\"chequeo-de-resoluci\u00f3n-inversa-ptr\"><span class=\"ez-toc-section\" id=\"Chequeo_de_resolucion_inversa_PTR\"><\/span>Chequeo de resoluci\u00f3n inversa (PTR)<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Todo servidor de correo debe de tener, entre otras cosas, una resoluci\u00f3n inversa configurada a nivel DNS. Es decir, que su direcci\u00f3n&nbsp;<strong>IP<\/strong>&nbsp;resuelva un dominio, el cual ha de coincidir con su resoluci\u00f3n directa (IP-&gt;DOMINIO). De no ser as\u00ed es recomendable rechazar el mensaje.<\/p>\n<p>En el archivo&nbsp;<em><strong>\/etc\/postfix\/main.cf<\/strong><\/em>&nbsp;configuramos la siguiente l\u00ednea, al final de la secci\u00f3n&nbsp;<em><strong>smtpd_server_restrictions<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">smtpd_server_restrictions =\n  ...\n  reject_unknown_reverse_client_hostname<\/pre>\n<p>Reiniciamos el servicio de Postfix con un&nbsp;<code class=\"inline-code\">systemctl restart postfix<\/code><\/p>\n<hr>\n<h1 id=\"restricci\u00f3n-heloehlo\"><span class=\"ez-toc-section\" id=\"Restriccion_HELOEHLO\"><\/span>Restricci\u00f3n HELO\/EHLO<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Si el servidor origen no ejecuta un comando&nbsp;<em><strong>HELO\/EHLO<\/strong><\/em>&nbsp;correcto, debemos de sospechar y, por tanto, rechazar la solicitud de conexi\u00f3n SMTP.<\/p>\n<p>Para ello configuramos las siguientes l\u00edneas en el archivo&nbsp;<em><strong>\/etc\/postfix\/main.cf<\/strong><\/em>, agregando la secci\u00f3n&nbsp;<em><strong>smtpd_helo_required<\/strong><\/em>&nbsp;y al final de la secci\u00f3n&nbsp;<em><strong>smtpd_helo_restrictions<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">smtpd_helo_required = yes\nsmtpd_helo_restrictions =\n  ...\n  reject_unknown_helo_hostname<\/pre>\n<p>Reiniciamos el servicio de Postfix con un&nbsp;<code class=\"inline-code\">systemctl restart postfix<\/code><\/p>\n<hr>\n<h1 id=\"chequeo-registros-mx-en-from\"><span class=\"ez-toc-section\" id=\"Chequeo_registros_MX_en_From\"><\/span>Chequeo registros MX en From<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Si la direcci\u00f3 origen del correo no dispone de un registro&nbsp;<em>MX<\/em>&nbsp;v\u00e1lido debemos de rechazar el mensaje, \u00bfpor qu\u00e9 no rechazar emails que no vamos a poder responder?<\/p>\n<p>Configuramos en el archivo&nbsp;<em><strong>\/etc\/postfix\/main.cf<\/strong><\/em>&nbsp;la siguiente l\u00ednea, al final de la secci\u00f3n&nbsp;<em><strong>smtpd_sender_restrictions<\/strong><\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">smtpd_sender_restrictions =\n  ...\n  reject_unknown_sender_domain<\/pre>\n<p>Reiniciamos el servicio de Postfix con un&nbsp;<code class=\"inline-code\">systemctl restart postfix<\/code><\/p>\n<hr>\n<h1 id=\"evitar-email-spoofing-desde-nuestros-buzones\"><span class=\"ez-toc-section\" id=\"Evitar_email_spoofing_desde_nuestros_buzones\"><\/span>Evitar email spoofing desde nuestros buzones<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Una buena pr\u00e1ctica en la administraci\u00f3n de un servidor de correo es evitar que nuestros buzones cambien la identidad de sus env\u00edos, es decir que se cambien el origen del correo cuando realmente est\u00e1n enviando desde otro buz\u00f3n. Esto se le llama&nbsp;<strong>Email Spoofing<\/strong>, t\u00e9cnica utilizada en el env\u00edo de mensajes de&nbsp;<strong>Phishing<\/strong>&nbsp;o&nbsp;<strong>suplantaciones de identidad<\/strong>.<\/p>\n<p>Por esta raz\u00f3n podemos evitar que nuestros buzones hagan uso de estas t\u00e9cnicas poco leg\u00edtimas. Para ello configuramos la siguiente l\u00ednea en nuestro archivo&nbsp;<em><strong>\/etc\/postfix\/main.cf<\/strong><\/em>&nbsp;agregando la siguiente l\u00ednea en la secci\u00f3n&nbsp;<em><strong>smtpd_sender_restrictions<\/strong><\/em>&nbsp;entre las l\u00edneas&nbsp;<em><strong>permit_mynetworks<\/strong><\/em>&nbsp;y&nbsp;<em><strong>permit_sasl_authenticated<\/strong><\/em>, y agregando la funci\u00f3n&nbsp;<em><strong>smtpd_sender_login_maps<\/strong><\/em>&nbsp;con el chequeo a la base de datos que mostraremos m\u00e1s adelante:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">smtpd_sender_login_maps = mysql:\/etc\/postfix\/mysql-virtual-mailbox-maps.cf\n\nsmtpd_sender_restrictions =\n  ...\n  reject_sender_login_mismatch, \n  ...\n<\/pre>\n<p>Y ahora en el archivo&nbsp;<em><strong>\/etc\/postfix\/mysql-virtual-mailbox-maps.cf<\/strong><\/em>&nbsp;modificamos el chequeo que realiz\u00e1bamos a la base de datos de la siguiente forma. Recordar cambiar los datos de la conexi\u00f3n para el ***user, password, dbname*** con lo que tengamos configurado en nuestra instalaci\u00f3n:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">user = MySQL-user\npassword = MySQL-pwd\nhosts = 127.0.0.1\ndbname = mailserverDBname\n#query = SELECT 1 FROM virtual_users WHERE email='%s' and active='1'\nquery = SELECT email FROM virtual_users WHERE email='%s' and active='1'<\/pre>\n<p>Reiniciamos el servicio de Postfix con un&nbsp;<code class=\"inline-code\">systemctl restart postfix<\/code><\/p>\n<hr>\n<h1 id=\"enlaces-de-inter\u00e9s\"><span class=\"ez-toc-section\" id=\"Enlaces_de_interes\"><\/span>Enlaces de inter\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>Fuente:&nbsp;<a title=\"https:\/\/www.linuxbabe.com\/mail-server\/block-email-spam-postfix\" href=\"https:\/\/www.linuxbabe.com\/mail-server\/block-email-spam-postfix\" type=\"\" data-from-md=\"\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">https:\/\/www.linuxbabe.com\/mail-server\/block-email-spam-postfix<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tras la publicaci\u00f3n anterior de un Completo servidor de correo en Debian 9 \u2013 \u00cdndice de contenidos, en donde se pone especial cuidado en la<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=837\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":607,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,10,22],"tags":[103,51,66],"class_list":["post-837","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ciberseguridad","category-sistemas","category-ti","tag-antispoofing","tag-email","tag-postfix"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=837"}],"version-history":[{"count":0,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/837\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/607"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}