月度归档:2015年01月

glibc bug

Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235。黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限
 
一、    漏洞发布日期 
2015年1月27日 
 
二、    已确认被成功利用的软件及系统 
Glibc 2.2到2.17 (包含2.2和2.17版本) 
 
三、    漏洞描述 
GNU glibc标准库的gethostbyname 函数爆出缓冲区溢出漏洞,漏洞编号:CVE-2015-0235。 Glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态连接的程序都要用到Glibc。远程攻击者可以利用这个漏洞执行任意代码并提升运行应用程序的用户的权限。 
 
四、    漏洞检测方法 
请自行检测: 
[[test]] 
$ cat > GHOST.c << EOF 
#include <netdb.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <errno.h> 
#define CANARY"in_the_coal_mine" 
struct { 
  char buffer[1024]; 
  char canary[sizeof(CANARY)]; 
} temp = { "buffer", CANARY }; 
int main(void) { 
  struct hostent resbuf; 
  struct hostent *result; 
  int herrno; 
  int retval; 
  /*** strlen (name) = size_needed -sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/ 
  size_t len = sizeof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof(char *) - 1; 
  char name[sizeof(temp.buffer)]; 
  memset(name, '0', len); 
  name[len] = '\0'; 
  retval = gethostbyname_r(name,&resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); 
  if (strcmp(temp.canary, CANARY) !=0) { 
    puts("vulnerable"); 
    exit(EXIT_SUCCESS); 
  } 
  if (retval == ERANGE) { 
    puts("notvulnerable"); 
    exit(EXIT_SUCCESS); 
  } 
  puts("should nothappen"); 
  exit(EXIT_FAILURE); 

EOF 
[test] 
$ gcc GHOST.c -o GHOST 
[test] 
$./GHOST 
vulnerable 
 
五、    建议修补方案 
 
 
Centos 5/6/7:
 
 
yum update glibc

 

资料来源:http://bbs.aliyun.com/read/227885.html

systemctl, chkconfig

systemctl 对比表
任务 旧指令 新指令
使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig --level 3 httpd off systemctl disable httpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息) systemctl is-active httpd.service (仅显示是否 Active)
显示所有已启动的服务 chkconfig --list systemctl list-units --type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service

linux install

passwd
update openssl

update glibc

vi /etc/hosts
vi /etc/resolv.conf
vi /etc/sysconfig/network
import iptables
hostname xxxxxxxxxxxxxx
vi /etc/modprobe.d/dist.conf

alias net-pf-10 off
alias ipv6 off

vi /etc/inittab

date -R

1.查看当前使用的时区
cat /etc/sysconfig/clock
# The timezone of the system is defined by the contents of /etc/localtime.
ZONE="Asia/Shanghai"
UTC=true
ARC=false

2.修改时区
进入/usr/share/zoneinfo目录,可以看到很多时区文件,将其中要用的时区(此处以上海为例)
命令:
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3. ntp时间更新
yum install ntp
ntpdate us.pool.ntp.org

4.时间修改参考

http://www.xiaobo.li/linux/472.html

logrotate 日志轮转

logrotate -f /etc/logrotate.conf

 

手动执行:

logrotate 可以直接执行,后面跟配置文件就可以了,如:/usr/sbin/logrotate -f /etc/logrotate.d/nginx

参数:

-v 显示指令执行过程

-d Debug模式(模拟执行),详细显示指令执行过程,便于排错或了解程序执行的情况。

-f 强制执行

-s <状态文件> 使用指定的状态文件

 

主要参数:

默认配置文件 /etc/logrotate.conf:

daily指定转储周期为每天

weekly指定转储周期为每周

monthly指定转储周期为每月

dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号.

dateformat 配合dateext使用可以为切割后的日志加上YYYYMMDD格式的日期,如dateformat -%Y%m%d

compress通过gzip 压缩转储以后的日志

nocompress不需要压缩时,用这个参数

copytruncate先把日志内容复制到旧日志文件后才清除日志文件内容,可以保证日志记录的连续性

nocopytruncate备份日志文件但是不截断

create mode owner group转储文件,使用指定的文件模式创建新的日志文件

nocreate不建立新的日志文件

delaycompress和 compress 一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress覆盖 delaycompress 选项,转储同时压缩。

errors address专储时的错误信息发送到指定的Email 地址

ifempty即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty如果是空文件的话,不转储

mail address把转储的日志文件发送到指定的E-mail 地址

nomail转储时不发送日志文件

olddir directory转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir转储后的日志文件和当前日志文件放在同一个目录下

rotate count指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份

tabootext [+] list让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~

size size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

prerotate/endscript在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

 

案例一:

vi /etc/logrotate.d/nginx

/var/log/nginx/*.log

{

daily#指定转储周期为每天

missingok #跳过错误日志文件

rotate 5#保留5个文件

compress#通过gzip 压缩转储以后的日志

delaycompress#和 compress 一起使用时,转储的日志文件到下一次转储时才压缩

ifempty

create 0640 www-data adm

sharedscripts

postrotate

#kill -USR1 `cat /var/run/nginx.pid不是中止Nginx的进程,而是传递给它信号重新生成日志,如果nginx没启动不做操作

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

endscript

}

 

案例二:

/var/log/debug.log
{
        daily   ;每天转储
        rotate 30  ;保留30个备份
        compress   ;压缩转储的备份文件
        copytruncate ;备份当前日志并截断
        nocreate      ;不创建新的日志文件
        delaycompress  ;转储的日志文件到下一次转储时才压缩
        notifempty  ;日志为空不转储
        dateext   ; 为日志文件打上日期标签
}

 

案例三:

/var/log/messages
{
missingok
notifempty
copytruncate
size 1M
daily
rotate 10
create 0600 root root
dateformat -%Y%m%d.%s
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}

 

 

 

 

 

 

ssh

#添加用户

useradd uesrname

#设置用户密码

passwd username

 

允许/禁止root登录
vi /etc/ssh/sshd_config

#是否允许root登录

PermitRootLogin yes/no

 

#是否允许不输入密码登录
PermitEmptyPasswords yes

 

#设置允许远程登录的用户

AllowUsers uesrname username1

 

[修改文件权限,700表示为用户设置读、写、执行的权限(开头的 7),而不给组和其他用户的权限(后面的两个 0)]
$ chmod u+w /etc/sudoers
$ vi /etc/sudoers
$ chmod u-w /etc/sudoers


保存公钥/私钥,在服务器上执行以下命令:
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys

#权限设置(RHEL/CENTOS系统必需)
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

ssh-rsa TMiZRfW0cENRnGRgQPR1dCDv4GJwpcQi... ... username

 

配置说明:

AcceptEnv

 只支持SSHv2协议

 指定客户端发送的哪些环境变量将会被传递到会话环境中。具体的细节可以参考 ssh_config5 中的 SendEnv 配置指令。

该关健字的值是空格分隔的变量名列表(其中可以使用’*'和’?'作为通配符),也可以使用多个AcceptEnv达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用默认值:是不传递任何环境变量

 

AddressFamily 

指定sshd8)应当使用哪种地址族,取值范围:”any”(默认)、”inet”(仅IPv4)、”inet6″(仅IPv6

 

AllowGroups 

这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*”和”?”通配符),默认允许所有组登录。如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:DenyUsers --> AllowUsers --> DenyGroups-->AllowGroups

 

AllowTcpForwarding

是否允许TCP转发,默认值为”yes”。

禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器

 

AllowUsers 

这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*”和”?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。

如果指定了 USER@HOST 模式的用户,那么 USER  HOST 将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:

DenyUsers -->AllowUsers-->DenyGroups --> AllowGroups

 

AuthorizedKeysFile

存放该用户可以用来登录的 RSA/DSA 公钥。

该指令中可以使用下列根据连接时的实际情况进行展开的符号:%% 表示’%'%h 表示用户的主目录、%u 表示该用户的用户名。经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。默认值是”.ssh/authorized_keys

 

Banner

 只支持SSHv2协议

 将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。默认什么内容也不显示。”none”表示禁用这个特性

ChallengeResponseAuthentication 

 是否允许质疑-应答(challenge-response)认证。默认值是”yes”。所有login.conf5 中允许的认证方式都被支持

 

Ciphers

 只支持SSHv2协议

 指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:

aes128-cbc”, aes192-cbc”, aes256-cbc”, aes128-ctr”, aes192-ctr”, aes256-ctr”, 3des-cbc”, arcfour128″,arcfour256″, arcfour”, blowfish-cbc”, cast128-cbc

默认值是可以使用上述所有算法

 

ClientAliveCountMax

 只支持SSHv2协议

 Sshd8)在未收到任何客户端回应前最多允许发送多少个”alive”消息。默认值是 3 

到达这个上限后,sshd8 将强制断开连接、关闭会话。

需要注意的是,”alive”消息与 TCPKeepAlive 有很大差异。

alive”消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。

如果ClientAliveInterval被设为15 并且将 ClientAliveCountMax 保持为默认值,那么无应答的客户端大约会在45秒后被强制断开

 

ClientAliveInterval

 只支持SSHv2协议

 设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,sshd8 将通过安全通道向客户端发送一个”alive”消息,并等候应答。默认值 0 表示不发送”alive”消息

 

Compression

 是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。可用值:”yes” “delayed”(默认), “no”

 

DenyGroups

 这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*””?”通配符)。默认允许所有组登录。

如果使用了这个指令,那么这些组中的成员将被拒绝登录。

这里的是指主组primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups

 

DenyUsers

 这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*””?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么这些用户将被拒绝登录。

如果指定了 USER@HOST 模式的用户,那么 USER  HOST 将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:

DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups

 

ForceCommand 

强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。

这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。

这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的

 

GatewayPorts

 是否允许远程主机连接本地的转发端口。默认值是”no”

sshd8 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。

GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。

“no”表示仅允许本地连接,”yes”表示强制将远程端口转发绑定到统配地址(wildcard address),

“clientspecified”表示允许客户端选择将远程端口转发绑定到哪个地址

 

GSSAPIAuthentication

只支持SSHv2协议

是否允许使用基于 GSSAPI 的用户认证。默认值为”no”

 

GSSAPICleanupCredentials

只支持SSHv2协议

是否在用户退出登录后自动销毁用户凭证缓存。默认值是”yes”

 

HostbasedAuthentication

只支持SSHv2协议

这个指令与 RhostsRSAAuthentication 类似,推荐使用默认值”no”不禁止这种不安全的认证方式

 

HostbasedUsesNameFromPacketOnly

 在开启 HostbasedAuthentication 的情况下,

指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。

“yes”表示 sshd8 信任客户端提供的主机名而不进行反向查询。默认值是”no”

 

HostKey

 主机私钥文件的位置。如果权限不对,sshd8 可能会拒绝启动。

SSHv1默认是: /etc/ssh/ssh_host_key 

SSHv2默认是:/etc/ssh/ssh_host_rsa_key  /etc/ssh/ssh_host_dsa_key 。一台主机可以拥有多个不同的私钥。”rsa1″仅用于SSH-1”dsa””rsa”仅用于SSH-2

 

IgnoreRhosts

 是否在 RhostsRSAAuthentication  HostbasedAuthentication 过程中忽略 .rhosts  .shosts 文件。不过 /etc/hosts.equiv  /etc/shosts.equiv 仍将被使用。推荐设为默认值”yes”

 

IgnoreUserKnownHosts

 是否在 RhostsRSAAuthentication  HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。默认值是”no”。为了提高安全性,可以设为”yes”

 

KerberosAuthentication

 是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。要使用Kerberos认证,服务器需要一个可以校验 KDC identity  Kerberos servtab 。默认值是”no”

 

KerberosGetAFSToken

 如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token 。默认为”no”

 

KerberosOrLocalPasswd

 如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。默认值为”yes”

 

KerberosTicketCleanup

 是否在用户退出登录后自动销毁用户的 ticket 。默认值是”yes”

 

KeyRegenerationInterval

只支持SSHv1协议

SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。

这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。

设为 0 表示永不重新生成,默认为 3600(秒)

 

 

whois协议

IP系统
RFC812定义了一个非常简单的Internet信息查询协议——WHOIS协议。其基本内容是,先向服务器的TCP端口43建立一个连接,发送查询关 键字并加上回车换行,然后接收服务器的查询结果。
  世界上各级Internet管理机构秉承公开、公正、共享的原则,设立了可以查知IP地址和域名所有者登记资料的WHOIS服务器,以便所有Internet的使用者排除故障、打击网上非法活动。全世界国际区域性的IP地址管理机构有四个:
ARINRIPEAPNICLACNIC,他们负责的IP地址的地理区域如下图所示。

点击查看原图

四个国际区域性IP地址管理机构所负责的区域
(此图摘自《RIPE 2002年度报告》)

 

域名系统

域名的查询主要是基于RFC 954提供的WHOIS协议。在上述过程中,我们实际上是访问了InterNIC站点的WHOIS服务器,该服务器从WHOIS数据库中查询我们所需要的内容。
WHOIS服务器是一个基于"查询/响应"的TCP事务服务器,它运行在SRI-NIC机器上(26.0.0.73或10.0.0.51),向用户提供internet范围内的目录服务。本地主机上的用户程序可以通过Internet访问该服务器,其过程主要有下面三步:
(1)在TCP服务端口43(十进制)连接SRI-NIC服务主机;
(2)发送一个命令,以回车和换行(<CRLF>)结尾;
(3)接受相应命令的返回信息,一旦输出结束,服务器将关闭连接。
命令的格式非常简单。可以直接输入域名,例如,可以使用"sohu.com"查询"搜狐"网站的域名信息;也可以使用"help"得到详细的帮助信息。

2.全球列表

.br.com       whois.centralnic.com
.cn.com       whois.centralnic.com
.de.com       whois.centralnic.com
.eu.com       whois.centralnic.com
.gb.com       whois.centralnic.com
.gb.net       whois.centralnic.com
.hu.com       whois.centralnic.com
.no.com       whois.centralnic.com
.qc.com       whois.centralnic.com
.ru.com       whois.centralnic.com
.sa.com       whois.centralnic.com
.se.com       whois.centralnic.com
.se.net       whois.centralnic.com
.uk.com       whois.centralnic.com
.uk.net       whois.centralnic.com
.us.com       whois.centralnic.com
.uy.com       whois.centralnic.com
.za.com       whois.centralnic.com
.com.au       whois.ausregistry.net.au
.net.au       whois.ausregistry.net.au
.org.au       whois.ausregistry.net.au
.asn.au       whois.ausregistry.net.au
.id.au        whois.ausregistry.net.au
.ac.uk        whois.ja.net
.gov.uk       whois.ja.net
.museum       whois.museum
.asia         whois.crsnic.net
.info         whois.afilias.net
.name         whois.nic.name
.aero         whois.information.aero
.coop         whois.nic.coop
.com          whois.crsnic.net
.net          whois.crsnic.net
.org          whois.publicinterestregistry.net
.edu          whois.educause.net
.gov          whois.nic.gov
.int          whois.iana.org
.mil          whois.nic.mil
.biz          whois.neulevel.biz
.as           whois.nic.as
.ac           whois.nic.ac
.al           whois.ripe.net
.am           whois.amnic.net
.at           whois.nic.at
.au           whois.aunic.net
.az           whois.ripe.net
.ba           whois.ripe.net
.be           whois.dns.be
.bg           whois.ripe.net
.br           whois.nic.br
.by           whois.ripe.net
.ca           whois.cira.ca
.cc           whois.nic.cc
.cd           whois.nic.cd
.ch           whois.nic.ch
.cl           whois.nic.cl
.cn           whois.cnnic.net.cn
.cx           whois.nic.cx
.cy           whois.ripe.net
.cz           whois.ripe.net
.de           whois.denic.de
.dk           whois.dk-hostmaster.dk
.dz           whois.ripe.net
.ee           whois.eenet.ee
.eg           whois.ripe.net
.es           whois.ripe.net
.eu           whois.eu
.fi           whois.ripe.net
.fo           whois.ripe.net
.fr           whois.nic.fr
.gb           whois.ripe.net
.ge           whois.ripe.net
.gr           whois.ripe.net
.gs           whois.adamsnames.tc
.hk           whois.apnic.net
.hr           whois.ripe.net
.hu           whois.ripe.net
.ie           whois.domainregistry.ie
.il           whois.isoc.org.il
.in           whois.ncst.ernet.in
.ir           whois.nic.ir
.is           whois.ripe.net
.it           whois.nic.it
.jp           whois.jp
.kh           whois.nic.net.kh
.kr           whois.krnic.net
.li           whois.nic.ch
.lt           whois.ripe.net
.lu           whois.dns.lu
.lv           whois.ripe.net
.ma           whois.ripe.net
.md           whois.ripe.net
.mk           whois.ripe.net
.ms           whois.adamsnames.tc
.mt           whois.ripe.net
.mx           whois.nic.mx
.nl           whois.domain-registry.nl
.no           whois.norid.no
.nu           whois.nic.nu
.nz           whois.srs.net.nz
.pl           whois.dns.pl
.pt           whois.ripe.net
.ro           whois.ripe.net
.ru           whois.ripn.ru
.se           whois.nic-se.se
.sg           whois.nic.net.sg
.si           whois.ripe.net
.sh           whois.nic.sh
.sk           whois.ripe.net
.sm           whois.ripe.net
.su           whois.ripn.net
.tc           whois.adamsnames.tc
.tf           whois.adamsnames.tc
.th           whois.thnic.net
.tj           whois.nic.tj
.tn           whois.ripe.net
.to           whois.tonic.to
.tr           whois.ripe.net
.tv           whois.tv
.tw           whois.twnic.net
.ua           whois.ripe.net
.uk           whois.nic.uk
.us           whois.nic.us
.va           whois.ripe.net
.vg           whois.adamsnames.tc

.ws           whois.nic.ws

其它参考:

http://www.nirsoft.net/whois_servers_list.html

hmailserver密码算法

表 hm_accounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:

0 -> 用明码来保存密码,即不对密码进行加密;

1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;

2 -> 使用 MD5 加密算法来加密密码;

3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法

 

盐是第6 SHA256哈希值在数据库中看到的字符。 盐是一个随机字符串。 这已经不是第6,在用户的密码字符。



1。 生成随机字符串,其中包含6个字符的字符0-9,自动对焦(十六进制字符串)。 这是盐。

2。 创建一个新字符串,温度含有盐+用户的密码。

3。 生成的SHA256哈希温度。 这是哈希。

4。 在数据库中,存储字符串盐+在密码栏哈希。



这里是用GOOGLE翻译的, 很多词语不对,不过大概意思还是能理解;

盐其实是一个随机字符串,我们就理解为每次创建密码时,生成的随机字符串;





hmailserver用户密码的加密算法是这样的:

1.假设随机字符串:8et5p9 , 假设密码是:123456;



2.将”随机字符串”和”密码”连起来:8et5p9123456;



3.将连起来的新字符串,用SHA256加密,如:hash(‘sha256′,”8et5p9123456″)

得到的密文是:2dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1



4.将”随机字符串”与”SHA256加密后的密文”连起来,

得到新密文:8et5p92dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1

SMTP 命令

SMTP 命令:
HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应 OK
RSET 重置会话,当前传输被取消
QUIT 结束会话

gb,mb,kb

KB ,2 的 10 次方 : 1024 BYTE.
MB ,2 的 20 次方 : 1048576 BYTE, 或 1024 KB.
GB ,2 的 30 次方 : 1073741824 BYTE, 或 1024 MB.
TB ,2 的 40 次方 : 1099511627776 BYTE, 或 1024 GB.
PB ,2 的 50 次方 : 1125899906842624 BYTE, 或 1024 TB.
EB ,2 的 60 次方 : 1152921504606846976 BYTE, 或 1024 PB.
ZB ,2 的 70 次方 : 1024 EB.
YB ,2 的 80 次方 : 1024 ZB.

--------------------------------------------

1024MB(兆)=1GB
1024GB=1TB
1024TB=1PB
1024PB=1EB
1024EB=1ZB
1024ZB=1YB

mail port | 邮箱端口

mail 常规支持smtp转发和pop3接收.
POP3服务器地址: pop.gmail.com 端口:110,   SSL 995

SMTP服务器地址: smtp.gmail.com 端口:25,   SSL: 465     STARTTLS: 587

IMAP服务器地址: imap.gmail.com 端口:143,  SSL:993

465端口是SMTPS(SMTP-over-SSL)SSL/TLS通讯协议的 内容一开始就被保护起来了 是看不到原文的。
587端口是STARTTLS协议的 属于TLS通讯协议 只是他是在STARTTLS命令执行后才对之后的原文进行保护的。
994端口为个别邮局用于SMTPS(SMTP-over-SSL)的端口。

 

=========================================================

 

25端口(SMTP):25端口为SMTP(Simple Mail Transfer
Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。

如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。

109端口(POP2):109端口是为POP2(Post Office Protocol Version2,邮局协议2)服务开放的,是用于接收邮件的。

110端口(POP3):110端口是为POP3(Post Office Protocol Version3,邮局协议3)服务开放的,是用于接收邮件的。

143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

目前POP3使用的比POP2广得多,POP2几乎被淘汰,也有某些服务器同时支持POP2和POP3协议。客户端可以使用POP3协议来访问服务端的邮件服务,如今ISP的绝大多数邮件服务器都是使用POP3协议(极少用POP2协议)。在使用邮件客户端程序的时候,会要求输入POP3服务器地址,默认情况下使用的就是110端口。当你用邮件客户端(比如、Thunderbird、foxmail、MS
Outlook
Express以及各类邮件精灵)登录时,你的机器就会自动用机器的某一个动态端口(大于1024)连接邮件服务器的110端口,服务器就把别人给你发的邮件(之前保存在邮件服务器上),发送到你机器,这样你就可以看到你客户端工具上的收件箱里的新邮件了。

IMAP协议,和POP3协议一样是用来接收邮件的,但是它有它的特别和新颖之处,它是面向用户的,它和POP3协议的主要区别是:用户可以不用把所有的邮件内容全部下载,而是只下载邮件标题和发件人等基本信息,用户可以由标题等基本信息,去决定是否下载邮件全文,用户可以通过客户端的浏览器直接对服务器上的邮件进行操作(比如:打开阅读全文、丢进垃圾箱、永久删除、整理到某文件夹下、归档、)。再简单来说就是:浏览器用的IMAP协议(143端口)来为你接收邮件以及让你很方便的操作服务器上的邮件。邮件客户端用的POP3协议(110端口)来为你接收邮件的全部信息和全文内容保存到你的本地机器成为一个副本,你对邮件客户端上的副本邮件的任何操作都是在副本上,不干涉邮件服务器上为你保存的邮件原本。

上面介绍的SMTP协议、POP2协议、POP3协议、IMAP协议都是不安全的协议。因考虑到网络安全的因素,下面给你介绍基于SSL(SecureSockets Layer
安全套接层)协议的安全的邮件收发协议。你的邮件在传输过程中可能被网络黑客截取邮件内容,如果你的邮件机密性非常强,不想被收件人以外的任何人和任何黑客截取,或者是涉及国家机密安全的,等等。那么你的邮件就不该使用上述的三种协议进行收发。

若你采用SMTP协议发邮件,那么你发出的邮件从你的机器传到服务器的过程中,可能被黑客截取从而泄露。若你采用POP2或者POP3协议收取邮件,那么你的邮件从服务器传至你当前机器的过程可能被黑客截取从而泄露。

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。

995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。

993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。