linux安全加固常见加密协议(续)

OPENSSH

是一个程序,ssh协议的实现方式。

服务器端称为sshd,客户端称为ssh。

SSH是提供安全加密通讯的远程登陆服务,称为安全的壳程序协议。

sshv1已经淘汰,建议使用sshV2

运行于windows上的ssh客户端:

xmanager-->xshell

securecrt

putty

sshclient

SSH服务连接步骤:

1、SSH服务器主动生成公钥和私钥、并将公钥放在/etc/.ssh/ssh_host_*中

2、客户端通过ssh请求建立连接。

3、服务器发送公钥要求客户端安装。

4、客户端安装,默认放在~/.ssh/known_hosts中,并计算自己的公私秘钥。

5、客户端用服务器的公钥加密自己的公钥,并传送给服务器

6、服务器和客户开始通讯,客户端的公钥是临时的,每次通讯的公私秘钥是不同的。

认证方式:

    用户认证:

        基于口令的认证:username:password

        基于秘钥的认证:用户登录不需要密码,自动完成,需要将自己的公钥放在对方服务器上来实现认证。

配置文件:

/etc/ssh/sshd_config  //服务器端

/etc/ssh/ssh_config    //客户端

采用哪种方式需要考虑对方是否支持,如果随意的话建议rsa。

总结建议:

使用默认方式创建私钥和公钥,即ssh-keygen -t rsa即可,不要使用-f参数,使用-f创建的在实验中不可用。

在.ssh/目录下创建本地公钥和其他主机的公钥文件夹并分别存放,方便查找和使用。

设置.ssh的权限为700,authorized_keys的权限是600,比较妥当。

经验:养成查看日志的习惯,.ssh和authorized_keys的权限并不是也大越好,设置大了也会造成问题,/root目录权限也会影响ssh服务,养成定期备份authorized_keys的习惯。

1、修改监听端口

2、启用基于秘钥的认证

3、禁用version 1

4、禁止主机认证机制,默认为禁止。

5、禁止dns反解析。

6、禁止显示lastlogin。

7、显示banner以提示用户。

登录验证信息放在用户家目录下的.ssh里。

ssh常用命令:

ssh ipaddr:如果不指定用户名的话,默认以本地主机自己的账户名登录远程主机,(如果服务器端没有这个用户,肯定登不上去。)

ssh username@ipaddr:指定登陆的用户名

ssh username@ipadr‘command’:不进入远程主机,只是执行命令。

-p :用于指定特殊端口

ssh gong@192.168.1.8 -p 2222:    //通过ssh服务使用gong账户登录远程主机192.168.1.55的2222端口。

基于秘钥的认证:

1、客户端在本地生成一对秘钥。(将自己的公钥放到服务器上,单向信任,如果服务器要登陆客户端需要同样传输公钥到客户端)

如果是linux系统,使用ssh-keygen -t rsa 来完成。

-P:设置密码,可以通过‘’来设置密码为空。

-f:指定文件存储位置

在etc/ssh/sshd_conf中设置登陆用户的范围:AllowUsers。

设置会话超时时长:ClientAliveInterval

2、将公钥传送到远程主机,并保存到目标家目录下的.ssh/authorized_keys里面。

SCP

基于ssh协议,在主机间复制工具。

格式:scp [-pr] [-l 速率] [username@ipaddr:/path/filename]

选项和参数

-p:保留文件原有的权限信息

-r:复制来源为目录是,将复制整个目录的内容

-l:设置传输的速率,默认单位kbits/s

scp .ssh/id_rsa.pub root@192.168.1.9:/root/.ssh/



ssh-copy-id -i .ssh/id.pub root@192.168.1.9:/root/.ssh/



ssh_conf文件配置详解


配置“/etc/ssh/ssh_config”文件

“/etc/ssh/ssh_config” 文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词,用man命令查看帮助页(ssh (1))可以得到详细的列表。

编辑“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改变下面的参数:

# Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
Port 22
Cipher blowfish
EscapeChar ~

下面逐行说明上面的选项设置:

Host *
选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。

ForwardAgent no
“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11 no
“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。

RhostsAuthentication no
“RhostsAuthentication”设置是否使用基于rhosts的安全验证。

RhostsRSAAuthentication no
“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否使用RSA算法进行安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否使用口令验证。

FallBackToRsh no
“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。

UseRsh no
“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。

BatchMode no
“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。

CheckHostIP yes
“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。

StrictHostKeyChecking no
“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile ~/.ssh/identity
“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。

Port 22
“Port”设置连接到远程主机的端口。

Cipher blowfish
“Cipher”设置加密用的密码。

EscapeChar ~
“EscapeChar”设置escape字符。



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

配置“/etc/ssh/sshd_config”文件

“/etc/ssh/sshd_config”是OpenSSH的配置文件,允许设置选项改变这个daemon的运行。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词,用man命令查看帮助页(sshd (8))可以得到详细的列表。

编辑“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改变下面的参数:

# This is ssh server systemwide configuration file.
Port 22
ListenAddress 192.168.1.1
HostKey /etc/ssh/ssh_host_key
ServerKeyBits 1024
LoginGraceTime 600
KeyRegenerationInterval 3600
PermitRootLogin no
IgnoreRhosts yes
IgnoreUserKnownHosts yes
StrictModes yes
X11Forwarding no
PrintMotd yes
SyslogFacility AUTH
LogLevel INFO
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
PermitEmptyPasswords no
AllowUsers admin

下面逐行说明上面的选项设置:

Port 22
“Port”设置sshd监听的端口号。

ListenAddress 192.168.1.1
“ListenAddress”设置sshd服务器绑定的IP地址。

HostKey /etc/ssh/ssh_host_key

“HostKey”设置包含计算机私人密匙的文件。

ServerKeyBits 1024
“ServerKeyBits”定义服务器密匙的位数。

LoginGraceTime 600
“LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。

KeyRegenerationInterval 3600
“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。

PermitRootLogin no
“PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。

IgnoreRhosts yes
“IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。

IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts”

StrictModes yes
“StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。

X11Forwarding no
“X11Forwarding”设置是否允许X11转发。

PrintMotd yes
“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。

SyslogFacility AUTH
“SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。

LogLevel INFO
“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。

RhostsAuthentication no
“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。

RhostsRSAAuthentication no
“RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。

RSAAuthentication yes
“RSAAuthentication”设置是否允许只有RSA安全验证。

PasswordAuthentication yes
“PasswordAuthentication”设置是否允许口令验证。

PermitEmptyPasswords no
“PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。

AllowUsers admin
“AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。




本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968756,如需转载请自行联系原作者
上一篇:Linux系统安全加固(一)


下一篇:java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次