SSH免密登陆与SSH黑白名单

简介

FTP、Telnet 在网络上经过明文传输口令和数据,这是很是不安全的,很容易受到其余别有用心的人的利用,好比截获你的口令,而后冒充你的数据。ssh经过对传输数据加密实现安全登陆,并且ssh对传输数据进行加密,减少了传输时延。虽然ssh有必定的安全措施保护数据传输过程免受干扰,但若是登陆的机器自己处于危险的环境中,也难免要受收到一些干扰,所以要对处于危险环境的IP作一些限制,也就是黑名单和白名单linux

环境:两台centos7服务器。192.168.92.133和192.168.92.137vim

目的:实现SSH登陆centos

查看SSH服务

centos7默认安装了SSH,查看是否有SSH服务安全

rpm -qa|grep ssh

若是没有安装则安装一下服务器

yum -y install openssh*

注意:若是操做过程当中出现了问题,能够直接卸载,而后从新安装网络

yum remover -y openssh*

要确保登陆与被登录的两台机器都开启了SSH服务ssh

首先查看SSH状态tcp

systemctl status sshd.service

若是没有启动则启动SSH服务加密

systemctl start sshd.service

设置开机自启centos7

systemctl enable sshd.service

1、ssh登陆方式

1.不指定用户,使用默认的root帐户登陆

ssh 192.168.92.137

2.登陆时指定用户

ssh –l root 192.168.92.137
或者
ssh root@192.168.92.137

3.SSH默认使用22端口登陆,若是被登录机器更改了端口号,则须要使用指定的端口登陆

ssh –p 12580 192.168.92.137
ssh –l root –p 12580 192.168.92.137
ssh –p 12580 root@192.168.92.137

第一次登录时会出现以下状况,会问你是否继续此链接,输入yes,而后提示你输入对方机器对应帐号的密码,经过查看ip,发现已经登陆上去了

须要退出登陆的话,输入exit,能够查看IP地址验证是否退出

2、ssh实现免密登陆

每次登陆都须要输入密码挺麻烦的,若是有一种既安全又不用输密码的方式就方便许多了。这里就须要使用到公钥和私钥的知识了。

简单介绍一下。说到公钥和私钥,就要想到锁和钥匙的关系,公钥至关于锁,锁在大门上,任何人均可以看见。私钥至关于钥匙,只有有钥匙的人才能打开锁。锁和钥匙至关于验证身份的信物,只有用钥匙打开锁,我会认为是本身人,让你进来喝口茶,坐一坐。是否是整得还挺浪漫。

假如锁锁住的是宝物,而且还有人守护宝物,等待有缘人的到来。固然,守护者会去验证你的身份,验证身份的惟一标准就是是否能打开锁。当年藏宝的人把锁留下,确定还有钥匙去开锁。原本只有一把钥匙,但为了怕丢了又配了一把,因此他本人有钥匙能够随时来看看,而另外一把钥匙在他流浪江湖的时候给了一位有缘人,所以这位有缘人也能够经过验证打开锁,进而验证身份获得宝物。

说明

两台服务器:192.168.92.133和192.168.92.137

系统:centos7

目的:133服务器免密登陆到137服务器root用户

在133服务器上,生成公钥和秘钥

ssh-keygen

首先提示你生成秘钥的路径,若是不输入路径则默认生成在当前用户家目录下的.ssh目录中,当前帐户为root,因此生成的秘钥默认放在/root/.ssh/id_rsa

若是以前对应文件已经存在同名秘钥文件,则会提示你是否覆盖,若是该秘钥已用于链接其余服务器,则不要覆盖。如下为不存在同名文件,继续提示你为该秘钥设置密码,随后确认密码。设置密码后,每次使用秘钥都要输入密码。

这里咱们没有输入密码,直接两个回车

 生成以后查看.ssh隐藏文件,id_rsa为私钥文件,id_rsa.pub为公钥文件

 由于咱们要链接137服务器,所以要把公钥交给137服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.92.137

其中会提示你输入137服务器的密码,日后不会再让你输入

 如今,就能够经过SSH免密登陆到137服务器了

ssh root@192.168.92.137

 咱们能够经过查看.ssh目录下的known_hosts文件查看已知的主机

cat /root/.ssh/know_hosts

3、禁止root登陆

因为root用户具备超级权限,随意的使用root权限可能会带来一些隐患,所以咱们须要禁止root用户登陆,只开放普通用户登陆,当须要root权限时,再切换到root用户

在137服务器中修改sshd_config文件

vim /etc/ssh/sshd_config

找到PermitRootlogin yes,去掉#,把yes改成no

 重启SSH服务

systemctl restart sshd.service

从133服务器登陆到137服务器的root帐户,能够看到已被拒绝登陆

 登陆普通用户tc,可以正常登陆

4、更改默认端口号

为了安全考虑,咱们还能够修改默认的端口号,减少被黑客攻击成功的风险

找到#Port 22,去掉注释,修改为一个五位的端口:Port 12333

 重启SSH服务

systemctl restart sshd.service

防火墙放行12233端口

firewall-cmd --permanent --add-port=12233/tcp

重启防火墙

firewall-cmd --reload

查看端口放行状况

firewall-cmd -–list-port

 能够看到已经可以经过修改后的端口登陆了

5、设置SSH黑白名单

 SSH经过设置黑名单或白名单作某些限制,好比禁止经过某帐号登陆,或者禁止从某ip登陆

1.限制或容许经过某帐号登陆

在137服务器/etc/ssh/sshd_config里添加

DenyUsers tc

 能够看到如今没法经过tc用户登陆到137服务器,而root用户能够正常登陆

 若是为AllowUsers tc,则为容许tc用户登陆

AllowUsers tc

每次登陆还须要输入用户名和ip,感受比较麻烦,能够经过配置SSH快捷登陆直接登陆到linux服务器。

编辑当前用户家目录下的.ssh/config文件,若是没有则建立一个

touch config
vim config

添加以下信息

Host   alias  #自定义别名
HostName  hostname  #替换为你的ssh服务器ip
Port   port   #ssh服务器端口,默认22
User  user   #ssh服务器用户名
IdentityFile   ~/.ssh/id_rsa  #生成的公钥文件对应的私钥文件

 保存并退出

 能够看到直接经过ssh aliyun登陆到135服务器了

2.容许经过某个ip登陆

vim /etc/hosts.allow

能够编辑以下信息

sshd:192.168.92.133:allow  #容许 192.168.0.1 这个 IP 地址 ssh 登陆
sshd:192.168.92.0/24:allow #容许 192.168.92.0/24 这段 IP 地址的用户登陆
sshd:ALL # 容许所有的 ip经过ssh 登陆 

也能够限制从某ip登陆

vim /etc/hosts.deny

能够编辑以下信息

sshd:192.168.92.135:deny #拒绝135这个IP地址经过ssh登陆
sshd:all:deny    #拒绝所欲sshd远程链接

这里咱们对host.deny设置,禁止经过135服务器登陆到本机

重启服务

systemctl restart sshd

发现已经不能经过135服务器登陆到本机

那么,若是hosts.allow设置为容许133服务器登陆,同时,hosts.deny为拒绝133服务器登陆的时候,因为hosts.allow文件的优先级高,所以此时能够经过135服务器登陆到本机。

相关文章
相关标签/搜索