如何在Linux上用一次性密码确保SSH登录安全

如何在Linux上用一次性密码确保SSH登录安全,第1张

第一步:在Linux上安装和配置OTPW

在Debian、Ubuntu或Linux Mint上:

用apt-get安装OTPW程序包。

$ sudo apt-get install libpam-otpw otpw-bin

使用文本编辑工具,打开SSH的PAM配置文件(/etc/pamd/sshd),注释掉下面这行代码(以禁用密码验证)。

#@include common-auth

然后添加下面两行代码(以启用一次性密码验证):

auth required pam_otpwso

session optional pam_otpwso

在Fedora或CentOS/RHEL上:

在基于红帽的系统上,没有作为预制程序包的OTPW。于是,我们通过从源代码来构建的方法,安装OTPW。

首先,安装基本组件:

$ sudo yum git gcc pam-devel

$ git clone https://wwwclcamacuk/~mgk25/git/otpw

$ cd otpw

使用文本编辑工具打开Makefile,编辑以“PAMLIB=”开头的这一行,如下所示。

在64位系统上:

PAMLIB=/usr/lib64/security

在32位系统上:

PAMLIB=/usr/lib/security

编译后安装。请注意:安装环节会自动重启SSH服务器。所以如果你使用SSH连接,就要准备好断开。

$ make

$ sudo make install

现在你需要更新SELinux策略,因为/usr/sbin/sshd试图写入到用户的主目录,而默认的SELinux策略不允许这个操作。下面这些命令可以起到更新策略的作用。如果你不使用SELinux,跳过这一步好了。

$ sudo grep sshd /var/log/audit/auditlog | audit2allow -M mypol

$ sudo semodule -i mypolpp

下一步,用文本编辑工具打开SSH的PAM配置文件(/etc/pamd/sshd),注释掉下面这行代码(以禁用密码验证)。

#auth substack password-auth

然后添加下面两行代码(以启用一次性密码验证):

auth required pam_otpwso

session optional pam_otpwso

第二步:针对一次性密码配置SSH服务器

下一步是配置SSH服务器,以接受一次性密码。

用文本编辑工具打开/etc/ssh/sshd_config,设置下列三个参数。确保你没有不止一次地添加这几行,因为那会引起SSH服务器失效。

UsePrivilegeSeparation yes

ChallengeResponseAuthentication yes

UsePAM yes

你还需要禁用默认的密码验证。可以视情况,禁用公密验证,那样万一你没有一次性密码,就可以恢复到基于密钥的验证。

PubkeyAuthentication yes

PasswordAuthentication no

现在,重启SSH服务器。

在Debian、Ubuntu或Linux Mint上:

$ sudo service ssh restart

在Fedora或CentOS/RHEL 7上:

$ sudo systemctl restart sshd

 

第三步:用OTPW生成一次性密码

如前所述,你需要事先创建一次性密码,并将它们存储在远程SSH服务器主机上。为此,以你登录时所用的用户身份运行otpw-gen工具。

$ cd ~

$ otpw-gen > temporary_passwordtxt

它会要求你设置一个前缀密码。你以后登录时,就需要输入这个前缀密码以及一次性密码。实际上前缀密码是另一层保护机制。即使密码表落到了不法分子手里,前缀密码也会迫使对方采用蛮力攻击。

一旦前缀密码设置完毕,命令会生成280个一次性密码,并将它们存储在输出文本文件(比如temporary_passwordtxt)中。每个密码(默认情况下长度是8个字符)的前面是三位数的索引号。你可以将文件打印在纸张上,随身携带。

你还会看到~/otpw文件已创建,这些密码的密码散列就存储在其中。每一行的头三位表明了将用于SSH登录的密码的索引号。

$ more ~/otpw

OTPW1

280 3 12 8

191ai+:ENwmMqwn

218tYRZc%PIY27a

241ve8ns%NsHFmf

055W4/YCauQJkr:

102ZnJ4VWLFrk5N

2273Xww55hteJ8Y

1509d4b5=A64jBT

168FWBXY%ztm9j%

000rWUSdBYr%8UE

037NvyryzcI+YRX

122rEwA3GXvOk=z

测试用于SSH登录的一次性密码

现在,不妨像平常那样登录到SSH服务器:

$ ssh user@remote_host

如果OTPW成功设置,你会看到略有不同的密码提示符:

Password 191:

现在打开密码表,寻找密码表中的索引号“191”。

023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt

据上面密码表显示,编号“191”的一次性密码是“fOO+PeiD”。你需要在前面加上前缀密码。比如说,如果你的前缀密码是“000”,那么需要输入的实际的一次性密码是“000fOO+PeiD”。

一旦你成功登录,所使用的密码会自动作废。如果你查看~/otpw,就会注意到第一行被换成了“---------------”,这意味着密码“191”已经无效。

OTPW1

280 3 12 8

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

218tYRZc%PIY27a

241ve8ns%NsHFmf

055W4/YCauQJkr:

102ZnJ4VWLFrk5N

2273Xww55hteJ8Y

1509d4b5=A64jBT

168FWBXY%ztm9j%

000rWUSdBYr%8UE

037NvyryzcI+YRX

122rEwA3GXvOk=z

一般不推荐在同一个容器内运行多个应用进程,如果有类似需求,可以通过额外的进程管理机制,比如supervisord来管理所运行的进程,我推荐你去看看时速云,他们是一家全栈云原生技术服务提供商,提供云原生应用及数据平台产品,其中涵盖容器云PaaS、DevOps、微服务治理、服务网格、API网关等。大家可以去体验一下。 如果我的回答能够对您有帮助的话,求给大大的赞。

1 更换sshd端口2 禁用ssh密码登录,仅使用证书登录 VPS默认的SSHD服务开启在22端口,互联网上有很多所谓的“hacker”时刻用ssh扫描工具扫描IP上的22端口,然后用字典工具尝试是否有类似于“123abc”这样的若密码,一旦您的root密码是弱密码的话,您的VPS就会成为“肉鸡”。下面Hi-VPS介绍几种简单的方法来保护您的VPS SSH安全。 1 更换sshd端口 最简单的办法就是更改sshd默认的22端口,这样ssh扫描工具就以为这个IP上并没有开启sshd服务。 sed -i -e 's/Port 22/Port 22233/' /etc/ssh/sshd_config 运行上面的命令就把ssh的默认端口改为22233,然后需要重启sshd服务,生效更改: service sshd restart 这样就能在很大程度上解决VPS的ssh被扫描的风险。只需在ssh登录软件上把默认的ssh端口也改为22233即可。 2 禁用ssh密码登录,仅使用证书登录(使用证书登录SSH操作比较麻烦,一般用户在更改默认sshd端口后既可以抵挡一般性的ssd扫描,在不设置ssh证书的前提下也能在很大程度上增加系统的安全性) 使用ssh私钥登录而不使用密码登录,能在更大程度上保证ssh的安全。 (1) 创建私钥 可以用putty自带的“PUTTYGEN”来创建私钥,PUTTYGEN就在putty的目录下面,双击运行后弹出界面 点击界面中的Generate按钮,开始生成一个私钥,在过程中鼠标要不停的随机移动产生足够的随机数来帮助生成高强度的私钥: 组后生成的私钥就是一个很长的随机字符串,然后输入私钥密码提示(防止你忘了私钥密码),私钥密码: 先在复制生成的私钥字符串,然后点击save private key来保存私钥 (2) 上传私钥至VPS 先通过ssh登录后,运行如下命令创建ssh服务端配对私钥: mkdir -p $HOME/ssh && touch $HOME/ssh/authorized_keys \ && chmod go-w $HOME $HOME/ssh $HOME/ssh/authorized_keys && vim $HOME/ssh/authorized_keys 在VIM中按o(小写),然后右键(通过putty登录ssh的时候,putty右键表示复制内容),刚才的私钥密码就复制进去了,然后按Esc,按两次大写字母Z,保存退出 (3) 在putty中导入私钥 点击“Broser”按钮,导入私钥: 然后设置自动登录用户,这就不用每次都输入登录用户名了: OK,保存session 导入私钥后,再登录putty就可以直接输入比较简单的私钥密码了,不用输入几十位原始密码 (4) 禁用VPS的SSHD的密码登录 首先需要编辑sshd_config文件: vim /etc/ssh/sshd_config 把PasswordAuthentication yes这一行改为: PasswordAuthentication no 然后重启ssh服务: service sshd restart(5) 使用PAGEANT代理私钥 如果您有好几台VPS需要管理,就可以用使用PAGEANT,每次甚至不用输入私钥密码就能登录 运行PAGEANTexe,导入你刚才保存的私钥文件,PAGEANT会让你输入私钥密码,输入后PAGEANT就待在右下角任务栏中,如果需要连接那个ssh,就右键点击PAGEANT,从saved sessions中选择,直接登录

通过ssh可管理Linux设备,但是Linux ssh如果没设置好,很容易被黑客攻击,那么要如何保证Linux ssh的安全呢?下面小编给大家介绍一种保护Linux ssh免受黑客攻击的方法,即修改SSH端口号,一起来了解下吧。

工具/原料

Xshell putty 等远程工具 Linux系统

SSH是什么?

SSH 为 Secure Shell

由 IETF 的网络工作小组(Network Working Group)所制定;

SSH 是建立在应用层和传输层基础上的一种安全协议。

SSH传输数据是加密的,可以有效防止传输过程被截取数据保障安全。

SSH的数据是经过压缩的,所以可以加快传输的速度

查看SSH服务

首先查看一下当前linux是否已经安装SSH软件包,使用 rpm -qa|grep ssh

2确认ssh服务已经开启,下面小编以centos 系统为例

3找到SSh服务配置文件路径一般都是在 /etc/ssh这个目录下面 sshd_config 这个文件

END

编辑修改SSH端口号

1使用VI /vim编辑器,打开sshd_config这个文件,搜索找到 port字段。如下图

2 将光标定位到port 22这行 yy 然后键盘 P复制一行, insert插入编辑22端口为2222

3设置好之后如下图,wq保存退出, 表示已经增加了一个2222端口号啦

4设置好之后,当然需要重启SSH服务了。

5如果您有设置防火墙,请修改增加防火墙规则,或者直接关闭防火墙也行

END

注意事项

SSH端口默认是22,如果要修改直接编辑22端口注意前面的“#”要去掉,然后保存重启

如果是增加端口号,直接按照小编的方法,增加一个port端口即可

上面就是Linux下修改ssh端口号的方法介绍了,Linux下的ssh是十分不安全的,通过修改ssh端口号就能完美解决安全性的问题,赶紧试试看吧。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在Linux上用一次性密码确保SSH登录安全

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情