标签:ssh
前言:
整理下很久之前做异地备份、数据同步都有使用到的ssh免密码通过密钥登陆的步骤。
出于安全考虑,需要对ssh服务做下简单配置
说明:
服务端:既服务器(或异地保存数据的目的机),或理解为IP通信中的目的地址
客户端:既工作站,个人电脑(或数据源服务器),或理解为IP通信中的源地址
思路:
要做的有几个地方:
默认服务端口修改(可以避免部分针对22端口的暴力破解或扫描)
ssh版本协议(这个现在基本默认就是版本2)
禁止root账户ssh登陆
自定义登陆消息(可以给非本人的登陆行为一个友好提醒)
只允许指定ip登入
iptables 规则修改
重启服务,验证修改是否生效
正文:
1.ssh服务配置(主要配置服务端,如是双向登陆则都需要配置)
linux ssh服务的配置文件为/etc/ssh/sshd_config,对此文件修改以下几个地方,本文给出修改后的参数及说明
Port 2020 #修改ssh服务端口为2020 Protocol 2 #只允许SSH2协议链接 ServerKeyBits 1024 #serverkey强度为1024 PermitRootLogin no #禁止root账户ssh登陆 PermitEmptyPasswords no #禁止空密码登陆 PasswordAuthentication no #禁止密码方式登陆 Banner /etc/ssh/ssh_banner.txt #自定义登陆前欢迎语的具体文件(文件内容为登陆前欢迎消息)
以上某些参数在大部分系统中已默认为以上值,如serverkeybit
2.自定义登陆提示信息
账户登陆前的提示信息设置已经在上面做了设置,接下来做下账户登陆成功后的提示信息,将提示内容写入如下文件即可
/etc/motd
3.只允许指定IP登陆
配置这个一般都是在你有固定公网IP的情况下才做的,或者你有一个可以连接到服务器内网的vpn,否则不要轻易设置这个,设置后很可能会无法登陆
这里我们使用hosts.allow和hosts.deny两个文件进行控制,这两个文件为TCP wrappers规则文件既ACL,有兴趣的朋友可自行了解下
简单说下安全规则,ssh登陆时,主机会先检测hosts.deny文件中是否有拒绝列表,然后在检测hosts.allow中是否有允许列表。有关ACL访问控制列表的详情,请自行了解。
这里有两种用法,一种是将已确认的危险IP加入到hosts.deny文件中,另一种是直接带hosts.deny文件中拒绝所有,然后将允许的IP加入到hosts.allow中,这里我们采用后一种方式
编辑hosts.deny hosts.allow文件,在最后一行加入 如下内容,格式为[,]逗号是分割多个ip,而[:]冒号是分割它的处理,处理方式只能为allow或deny,分割方式可省略
vim /etc/hosts.deny sshd:All #下载deny文件中就是默认拒绝所有
vim /etc/hosts.allow sshd:118.144.133.66 #允许指定单一IP地址 sshd:192.168.1.2/24 #允许指定单一IP地址 sshd:192.168.2. #允许指定IP地址段
这个密钥是要在客户端,既个人电脑工作站上生成,密钥分为私钥与公钥,私钥是保存在自己客户端上的,而公钥是发送给服务端保存在服务端上的
生成密钥,密钥分为rsa与dsa,在算法上有所区别,具体有待理解。
执行以下命令,一路回车,切记不要输入密码,不然就达不到免密码登陆的效果了,当然如果是使用密钥验证的登陆方式,可以设置密码,这样在登陆时除了需要密钥,还需要正确密码才可登陆成功
ssh-keygen -t rsa
将生成的id_rsa.pub公钥文件传送到服务端,另存为authorized_keys,并赋予755权限,切记,此文件一定要保存到登陆用户的~/.ssh目录下。如我是以om用户登陆,我保存的文件就是/home/om/.ssh/authorized_keys。
如服务端已有此文件,则注意文件内容是否为自方人员公钥信息,若是则将自己的公钥追加到文件内,可使用以下命令。若不是自方人员信息,就要排查服务器了
cat id_rsa.pub >> /home/om/.ssh/authorized_keys
最后要赋予authorized_keys 755权限
控制sudo权限的文件为/etc/sudoers,默认为只读文件,即使是root账号
首先修改sudoers用户权限,使root账号拥有写权限
chmod u+w /etc/sudoers
找到如下一行,按相同格式增加一行
最后去掉写权限
chmod u-w /etc/sudoers
这里使用了简单粗暴的配置方式,有关sudoers文件的详细说明,带我研究后再写篇^_^
6.增加iptables规则
将修改后的ssh端口号加入到iptables内,以防止因iptables为允许端口通信导致的无法链接
7.重启服务
重启ssh及iptables服务
service sshd restart service iptables restart
每次修改ssh配置文件,都需要重启服务才会生效
8.验证
不要急着退出当前登陆窗口,重新开启一个命令行窗口,进行登陆测试,因为如果登陆失败,还有修改的机会,若要已经退出原有登陆窗口,那就悲剧了……
本文出自 “morrowind” 博客,请务必保留此出处http://morrowind.blog.51cto.com/1181631/1702194
标签:ssh
原文地址:http://morrowind.blog.51cto.com/1181631/1702194