Blog

Cuando se termina de configurar un servidor vps o dedicado, es frecuente encontrarse con el siguiente error. Probado a través de la línea de comandos: 

sudo sendmail -v -Am -i Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

 

Obteniendo el siguiente resultado

myname@fx1:/etc/mail$ sudo sendmail -v -Am -i Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.;

Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.... Connecting to aspmx.l.google.com. via esmtp...

220 mx.google.com ESMTP v1si55415385wja.21 - gsmtp

>>> EHLO staging.mydomain.com

250-mx.google.com at your service, [2a01:4f8:212:27c8::2]

250-SIZE 35882577

250-8BITMIME

250-STARTTLS

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-CHUNKING

250 SMTPUTF8

>>> STARTTLS

220 2.0.0 Ready to start TLS

>>> EHLO staging.mydomain.com

250-mx.google.com at your service, [2a01:4f8:212:27c8::2]

250-SIZE 35882577

250-8BITMIME

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-CHUNKING

250 SMTPUTF8

>>> MAIL From:<Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>

250 2.1.0 OK v1si55415385wja.21 - gsmtp

>>> RCPT To:<Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.>

>>> DATA

250 2.1.5 OK v1si55415385wja.21 - gsmtp

354  Go ahead v1si55415385wja.21 - gsmtp

>>> .

550-5.7.1 [2a01:4f8:212:27c8::2] Our system has detected that this message does

550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and

550-5.7.1 authentication. Please review

550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more

550 5.7.1 information. v1si55415385wja.21 - gsmtp

myname... Connecting to local...

myname... Sent

 

Solución

1) Comprobar el protocolo 

postconf inet_protocols

net_protocols = all

2) Editar el fichero /etc/postfix/main.cf

Cambiar inet_protocols = all por inet_protocols = ipv4

3) Reiniciar el proceso

service postfix restart

4) Comprobar de nuevo

postconf inet_protocols

 

inet_protocols = ipv4

Domingo, 24 Marzo 2019 21:43

Shell script : Como cortar cadenas con awk

Written by

Para las siguientes cadenas

â   â³ eGalax Inc. USB TouchController          id=9    [slave  pointer  (2)]

â   â³ eGalax Inc. USB TouchController          id=10   [slave  pointer  (2)]

 

Si ejecutamos 

$ cat so.txt | awk '{ print $7 }' | cut -f2 -d"="

Se mostrará en pantalla el siguiente resultado

9
10

 

$ cat so.txt | awk '{ print $7 }' 

id=9
id=10

PETICIONES GET:

Con JSON:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" http://hostname/resource

Con  XML:

curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET http://hostname/resource

 

PETICIONES POST

Para POST de parámetros

curl --data "param1=value1&param2=value2" http://hostname/resource

 

Para subida de ficheros:

curl --form "fileupload=@filename.txt" http://hostname/resource

 

RESTful HTTP Post:

curl -X POST -d @filename http://hostname/resource


Para loggear en una web (auth)

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login

curl -L -b headers http://localhost/

Hay muchas formas de proteger Wordpress. Uno de los fallos de seguridad más frecuentes es a través de peticiones POST a través de vulnerabilidades descubiertas y publicadas en foros de seguridad. 

Como siempre Wordpress ofrece un repertorio bastante amplio de plugins para todo tipo de funcionalidades que se busque. En este caso, Wordpress ofrece también plugins para bloquear peticiones POST maliciosas como es el caso de Block Bad Queries, bastante útil para proteger la web contra los ataques más frecuentes. 

Otra posibilidad es modificar el fichero .htaccess del directorio donde se encuentra la plantilla de Wordpress introduciendo el siguiente código:

$request_uri = $_SERVER['REQUEST_URI'];

$query_string = $_SERVER['QUERY_STRING'];

$user_agent = $_SERVER['HTTP_USER_AGENT'];

 

// request uri

if (    //strlen($request_uri) > 255 || 

    stripos($request_uri, 'eval(') || 

    stripos($request_uri, 'CONCAT') || 

    stripos($request_uri, 'UNION+SELECT') || 

    stripos($request_uri, '(null)') || 

    stripos($request_uri, 'base64_') || 

    stripos($request_uri, '/localhost') || 

    stripos($request_uri, '/pingserver') || 

    stripos($request_uri, '/config.') || 

    stripos($request_uri, '/wwwroot') || 

    stripos($request_uri, '/makefile') || 

    stripos($request_uri, 'crossdomain.') || 

    stripos($request_uri, 'proc/self/environ') || 

    stripos($request_uri, 'etc/passwd') || 

    stripos($request_uri, '/https/') || 

    stripos($request_uri, '/http/') || 

    stripos($request_uri, '/ftp/') || 

    stripos($request_uri, '/cgi/') || 

    stripos($request_uri, '.cgi') || 

    stripos($request_uri, '.exe') || 

    stripos($request_uri, '.sql') || 

    stripos($request_uri, '.ini') || 

    stripos($request_uri, '.dll') || 

    stripos($request_uri, '.asp') || 

    stripos($request_uri, '.jsp') || 

    stripos($request_uri, '/.bash') || 

    stripos($request_uri, '/.git') || 

    stripos($request_uri, '/.svn') || 

    stripos($request_uri, '/.tar') || 

    stripos($request_uri, ' ') || 

    stripos($request_uri, '<') || 

    stripos($request_uri, '>') || 

    stripos($request_uri, '/=') || 

    stripos($request_uri, '...') || 

    stripos($request_uri, '+++') || 

    stripos($request_uri, '://') || 

    stripos($request_uri, '/&&') || 

    // query strings

    stripos($query_string, '?') || 

    stripos($query_string, ':') || 

    stripos($query_string, '[') || 

    stripos($query_string, ']') || 

    stripos($query_string, '../') || 

    stripos($query_string, '127.0.0.1') || 

    stripos($query_string, 'loopback') || 

    stripos($query_string, '%0A') || 

    stripos($query_string, '%0D') || 

    stripos($query_string, '%22') || 

    stripos($query_string, '%27') || 

    stripos($query_string, '%3C') || 

    stripos($query_string, '%3E') || 

    stripos($query_string, '%00') || 

    stripos($query_string, '%2e%2e') || 

    stripos($query_string, 'union') || 

    stripos($query_string, 'input_file') || 

    stripos($query_string, 'execute') || 

    stripos($query_string, 'mosconfig') || 

    stripos($query_string, 'environ') || 

    //stripos($query_string, 'scanner') || 

    stripos($query_string, 'path=.') || 

    stripos($query_string, 'mod=.') || 

    // user agents

    stripos($user_agent, 'binlar') || 

    stripos($user_agent, 'casper') || 

    stripos($user_agent, 'cmswor') || 

    stripos($user_agent, 'diavol') || 

    stripos($user_agent, 'dotbot') || 

    stripos($user_agent, 'finder') || 

    stripos($user_agent, 'flicky') || 

    stripos($user_agent, 'libwww') || 

    stripos($user_agent, 'nutch') || 

    stripos($user_agent, 'planet') || 

    stripos($user_agent, 'purebot') || 

    stripos($user_agent, 'pycurl') || 

    stripos($user_agent, 'skygrid') || 

    stripos($user_agent, 'sucker') || 

    stripos($user_agent, 'turnit') || 

    stripos($user_agent, 'vikspi') || 

    stripos($user_agent, 'zmeu')

) {

    @header('HTTP/1.1 403 Forbidden');

    @header('Status: 403 Forbidden');

    @header('Connection: Close');

    @exit;

Conviene aclarar que cada plantilla de wordpress tiene sus peculiaridades, por lo tanto no es aconsejable introducir el código a pelo en el fichero .htaccess. Si lo haces, lo más probable es que la web deje de funcionar. 

Página 1 de 2