sshd服务安装-ssh命令使用方法

OpenSSH配置文件


OpenSSH常用配置文件有两个/etc/ssh/ssh_config和/etc/sshd_config。

ssh_config为客户端配置文件

sshd_config为服务器端配置文件

服务启动关闭脚本:

[root@localhost ~]# systemctl stop|restart|start sshd

开机启动服务:

[root@localhost ~]# chkconfig sshd on # 6版本

[root@localhost ~]# systemctl enable sshd # 7 版本

[root@localhost ~]#

如何使用ssh来远程连接主机:

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

方法一、

ssh [远程主机用户名] @[远程服务器主机名或IP地址]:

[root@localhost ~]# ssh root@192.168.170.14

The authenticity of host ‘192.168.170.14 (192.168.170.14)’ can’t be established.

ECDSA key fingerprint is SHA256:nnfwBTJ/q92m4MGlb6HOdwbx0dJXCMAX1llYmqEADJI.

ECDSA key fingerprint is MD5:31:00:86:ea:c5:b8:9b:86:93:58:33:90:3f:50:9a:58.

Are you sure you want to continue connecting (yes/no)? yes #这里输入yes

Warning: Permanently added ‘192.168.170.14’ (ECDSA) to the list of known hosts.

root@192.168.170.14’s password: #这里输入你的密码

Last login: Fri Sep 6 22:07:09 2019 from 192.168.170.1

[root@localhost ~]#

第一次登录服务器时系统没有保存远程主机的信息,为了确认该主机身份会提示用户是否继续连

接,输入yes 后登录,这时系统会将远程服务器信息写入用户主目录下的$HOME/.ssh/known_hosts文件中,下次再进行登录时因为保存有该主机信息就不会再提示了

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

方法二、

ssh -l [远程主机用户名] [远程服务器主机名或IP 地址]

[root@localhost ~]# ssh -l root 192.168.170.14

The authenticity of host ‘192.168.170.14 (192.168.170.14)’ can’t be established.

ECDSA key fingerprint is SHA256:nnfwBTJ/q92m4MGlb6HOdwbx0dJXCMAX1llYmqEADJI.

ECDSA key fingerprint is MD5:31:00:86:ea:c5:b8:9b:86:93:58:33:90:3f:50:9a:58.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘192.168.170.14’ (ECDSA) to the list of known hosts.

root@192.168.170.14’s password:

Last login: Fri Sep 6 22:41:59 2019 from 192.168.170.13

[root@localhost ~]#

1.3、sshd服务配置和管理

介绍下配置文件,以及需要安全调优的地方

注:参数前面有#,表示是默认值。 当然#号也表示注示。

/etc/ssh/sshd_config配置文件

设置sshd监听端口号

选择的 SSH 协议版本,可以是 1 也可以是 2 安全考虑,设置为最新的协议版本

#LogLevel INFO # 登录记录的等级!INFO级别以上

LoginGraceTime 2m #grace 优雅 登录超时时间

PermitRootLogin yes #是否允许 root 登入!预设是允许的,但是建议设定成 no !

真实的生产环境服务器,是不允许root账号直接登陆的!!!

PasswordAuthentication yes # 密码验证当然是需要的!所以这里写 yes,也可以设置为no

PrintMotd yes # 登录提示,警告等

PrintLastLog yes # 显示上次登入的信息!预设也是 yes !

UseDNS yes #一般来说,为了要判断客户端来源是正常合法的,因此会使用 DNS 去反查客户端的主机名

PermitEmptyPasswords no # 若上面那一项如果设定为 yes 的话,这一项就最好设定为 no

SSH 预设使用 22 这个port,也可以使用多个port,即重复使用 port 这个设定项目!

例如想要开放sshd端口为 22和222,则多加一行内容为: Port 222 即可

然后重新启动sshd这样就好了。 建议大家修改 port number 为其它端口。防止别人暴力破解。

修改完端口默认端口后,登录方法:

root@localhost ~]# ssh -p 222 192.168.14

ListenAddress 0.0.0.0

设置sshd服务器绑定的IP 地址,0.0.0.0 表示侦听所有地址

这个值可以写成本地IP地址也可以写成所有地址

#HostKey /etc/ssh/ssh_host_key

设置包含计算机私人密匙的文件

SyslogFacility AUTHPRIV

当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型为AUTHPRIV。

sshd服务日志存放在: /var/log/secure 。

SSHD服务防止暴力破解

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

防止暴力破解的方法有三种:

方法一、

配置安全的sshd服务

1、 密码足够的复杂,密码的长度要大于8位最好大于20位。密码的复杂度是密码要尽可能有数字、大小写字母和特殊符号混合组成,

2、修改默认端口号

3 、不允许root账号直接登陆,添加普通账号,授予root的权限

互动:是否可以禁止root身份登录? 不行,因为有些程序需要使用root身份登录并运行。另外判断一个用户是不是超级管理员,看的是用户的ID是否为0。

4、不允许密码登陆,只能通过认证的秘钥来登陆系统

  • 通过密钥认证实现sshd认证

实验环境:

| 服务端 | ip |

| — | — |

| [root@server_14 ~]# | 192.168.170.14 |

| [root@client_13 ~]# | 192.168.170.13 |

  • 客户端生成密钥对,然后把公钥传输到服务端

[root@client_13 ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): #提示输入保存路径,一般默认

Enter passphrase (empty for no passphrase): 求输入密码,这里的passphrase 密码是对生成的私匙文件,下面要(/root/.ssh/id_dsa)

Enter same passphrase again: 在输入一次

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:nmDdBbg/oR6hgAXuND4+fGup/pa7IDwPZzDJLf4flEQ root@client_13

The key’s randomart image is:

±–[RSA 2048]----+

| … E … |

| . o . . |

| +o . . . |

|.++.o …o… |

| *+. +o.S+… |

|oo+…oo.o |

|.==o.+ .o. . |

| .B+=… . |

| .oB*+ |

±—[SHA256]-----+

[root@client_13 ~]#

[root@client_13 ~]# cd /root/.ssh/ #查看生成的秘钥

[root@client_13 .ssh]# ls

id_rsa id_rsa.pub known_hosts

  • 发布公钥到服务端:

使用ssh-copy-id 命令将客户端生成的公钥发布到远程服务器192.168.170.14

[root@client_13 .ssh]# ssh-copy-id -i 192.168.170.14

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/root/.ssh/id_rsa.pub”

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed – if you are prompted now it is to install the new keys

root@192.168.170.14’s password:

Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘192.168.170.14’”

and check to make sure that only the key(s) you wanted were added.

[root@client_13 .ssh]#

#这个时候可以通过ssh 无密钥直接登陆主机

[root@client_13 .ssh]# ssh -l root 192.168.170.14

Last login: Fri Sep 6 22:47:01 2019 from 192.168.170.14

[root@client_13 ~]#

注意:如果服务器不是监听22端口,则需要这样传输密钥:

ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 222 root@192.168.0.63”

方法二:通过开源的防护软件来防护安全

简单、灵活、功能强大

实战背景:

最近公网网站一直被别人暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!

#ban (bæn)禁令

简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。

注:重启iptables服务的话,所有DORP将重置。

下载软件包:

官方地址:

http://www.fail2ban.org

http://www.fail2ban.org/wiki/index.php/Downloads

HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私钥

HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私钥

注:

RSA 是一种非对称加解密算法。

RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);

DSA 的安全性是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。

公钥用于加密,它是向所有人公开的;私钥用于解密,只有密文的接收者持有。

ServerKeyBits 1024 #定义服务器密匙长度

安装:

互动这个陌生的软件包如何安装?

解压查看readme文件

[root@localhost ~]#tar -zxvf fail2ban-0.8.14.tar.gz

[ root@localhost fail2ban-0.8.14]# vim README.md #查看以下内容

需要安装python开发环境,并且版本要大于2.4

查看当前系统中python的版本:

[root@localhost fail2ban-0.8.14]# python -V

Python 2.6.6

安装:

[root@server_14 ~]#cd fail2ban-0.8.14

[root@loaclhost fail2ban-0.8.14]#python setup.py install

相关主要文件说明:

/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置

/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置

/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置

/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值

  • jail [dʒeɪl]监狱

生成服务启动脚本:

[root@localhost fail2ban-0.8.14]# pwd

/root/fail2ban-0.8.14

[root@localhost fail2ban-0.8.14]# cp files/redhat-initd /etc/rc.d/init.d/fail2ban

[root@localhost fail2ban-0.8.14]#chkconfig --add fail2ban #开机自动启动

互动: 你怎么知道要复制这个文件? 一个新的软件包,后期怎么可以知道哪个文件是启动脚本文件?

这就要找服务器启动脚本文件中有什么特点,然后过滤出来对应的文件名。

[root@localhost fail2ban-0.8.14]# grep chkconfig ./* -R --color

./files/redhat-initd:# chkconfig: - 92 08

启动脚本里都包含chkconfig 字段

应用实例

设置条件:ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。

因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用sshd服务的日志分析,指定动作阀值即可。

实例文件/etc/fail2ban/jail.conf及说明如下:

[DEFAULT] #全局设置

ignoreip = 127.0.0.1/8 #忽略的IP列表,不受设置限制

bantime = 600 #屏蔽时间,单位:秒

findtime = 600 #这个时间段内超过规定次数会被ban掉

maxretry = 3 #最大尝试次数

backend = auto #日志修改检测机制(gamin、polling和auto这三种)

[ssh-iptables] #单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

enabled = true #是否激活此项(true/false)修改成 true

filter = sshd #过滤规则filter的名字,对应filter.d目录下的sshd.conf

action = iptables[name=SSH, port=ssh, protocol=tcp] #动作的相关参数,对应action.d/iptables.conf文件

sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.c

om, sendername=“Fail2Ban”]#触发报警的收件人

logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath = /var/log/sshd.log

#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下

bantime = 3600 #禁止用户IP访问主机1小时

findtime = 300 #在5分钟内内出现规定次数就开始工作

maxretry = 3 #3次密码验证失败

启动服务:

[root@localhost fail2ban-0.8.14]# systemctl start fail2ban

[root@localhost fail2ban-0.8.14]# systemctl enable fail2ban

测试:

[root@localhost fail2ban]# > /var/log/secure #清日志。 从现在开始

[root@loaclhost fail2ban]# systemctl restart fail2ban

Stopping fail2ban: [ OK ]

Starting fail2ban: [ OK ]

[root@localhost fail2ban]# iptables -L -n

会多生成一个规则链。

测试:故意输入错误密码3次,再进行登录时,会拒绝登录

[root@localhost ~]# ssh 192.168.170.14

root@192.168.170.14’s password:

Permission denied, please try again.

root@192.168.170.14’s password:

Permission denied, please try again.

root@192.168.170.14’s password:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**[外链图片转存中…(img-e8LcH7kH-1713341066717)]

[外链图片转存中…(img-33aFUb4O-1713341066718)]

[外链图片转存中…(img-5HuJUhbR-1713341066719)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值