关于阿里云centos7服务器SSH的安全设置

  
  

如何更改SSH的默认端口

  上一篇文章讲到了关于centos7更改默认端口的方法,如要查看请点击 添加自定义的SSH端口。
主要内容概括如下:
1、要知道centos7的默认防火墙是firewall;
2、修改sshd_config文件,解开Port22端口注释,并在下一行添加新的端口号,保存退出;

vim /etc/ssh/sshd_config

3、重启SSH服务;

systemctl restart sshd

4、在防火墙配置中添加自定义的端口;

firewall-cmd --zone=public --add-port=2333/tcp --permanent

5、重载防火墙规则;

firewall-cmd --reload

6、验证是否添加成功;

firewall-cmd --zone=public --query-port=2333/tcp

7、安装semanage和policycoreutils-python

yum install policycoreutils-python
yum provides semanage

8、向 SELinux 中添加 ssh 端口;

semanage port -a -t ssh_port_t -p tcp 2333

9、验证和重启;

semanage port -l | grep ssh
systemctl restart sshd.service

10、在ECS控制台的安全组配置规则开放自定义的端口号;
11、用新的端口号重新登录SSH,并且去sshd_config文件将Port 22删除,保存退出且重启SSH服务,以后就不能使用22号端口登录了。

vim /etc/ssh/sshd_config
systemctl restart sshd

  
  

可以更改SSH登录用户名吗

  对于其他安全方面,我设置了一定长度的复杂密码,还是不够放心,然后寻思着将ssh登录的用户名改了,而不是使用默认的root会不会更安全一点,经过网上查询,发现有类似的做法。
1、修改passwd文件第1行第1个root为新的用户名

vim /etc/passwd

2、修改shadow文件第1行第1个root为新的用户名

vim /etc/shadow

3、esc键退出编辑状态,并输入:x!强制保存并退出
4、下次登录SSH时,只有输入新的用户名才能登录,但是对于sudo命令不能使用,显示以下错误:

sudo: unknown user: root
sudo: unable to initialize policy plugin

  根据网上教程说,为了正常使用sudo,需要修改/etc/sudoers的设置:
5、运行visudo
  找到 root ALL=(ALL) ALL
  在下面添加一行:新用户名 ALL=(ALL) ALL
6、修改并保存后,重启服务器后即可生效。
但是我跟着操作的时候,发现sudo命令还是不能使用,使我接着给了文件权限,还是不行。

chmod 440 /etc/sudoers

  

  所以这里说明一下:在Linux中默认的最高管理权限用户是 root,uid 为 0。在系统中只识别 uid,因此只要 uid 为 0,系统就视为最高管理用户。
  但是对于应用程序可能会存在一定的问题,有些软件默认使用的是 root 用户,所以在对软件应用的了解有限的情况下,不推荐对 root 进行用户名称调整。
  经过我的测试,比如如果按照以上步骤修改了登录用户名,下次再修改实例密码的时候,会出现实例密码重置不生效的情况,应该是在修改密码的时候也是默认root用户名才行,现在我还没有搞明白。

  
  

了解一下SSH是什么

  SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。

SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用SSH协议可以有效的防止远程管理过程中的信息泄露问题,在当前的生产环境运维工作中,绝大多数企业普通采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

  在默认状态下,SSH服务主要提供两个服务功能:

(1)一个是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务;
(2)另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的,提供更安全的SFTP服务(vsftp.proftp)

特别提醒:

SSH客户端(ssh命令)还包含一个很有用的远程安全拷贝命令scp,也是通过ssh协议工作的。

SSH服务由服务端软件OpenSSH(openssl)和客户端(常见的有SSH),SecureCRT,Putty,xshell组成,SSH服务默认使用22端口提供服务。
  
  

SSH服务的基础配置

  万事没有绝对的安全,我们只是将危险降低而已。我们只针对于ssh服务最基本的安全设置,毕竟刚开始学习,一步一步来!

  点击连接查看一般暴力破解密码的思路 Linux SSH密码暴力破解技术及攻击实战

一、禁用Root 远程登陆

 注意:这里必须要先新建一个用户,否则将会造成无法通过远程ssh登录服务器。
  用这个用户登陆之后,再切换到root用户,拿到最高权限。这样即使root用户密码泄漏,别人也无法通过root用户直接连接服务器,可以理解成就算被暴力破解出root密码,直接使用root登录是不行的,需要使用新设置的账户才能远程登录。【这里的root密码和新账户密码可以不相同

1、创建一个普通用户user并加入相应的组

groupadd user
useradd -g user user

更改用户 user的密码(密码简单了通不过)

passwd user

2、给予新用户和root一样的权限

vim /etc/sudoers

找到下面一行,在root下面添加一行

 #Allow root to run any commands anywhere
 root  ALL=(ALL)   ALL
 user  ALL=(ALL)   ALL

3、修改sshd_config文件

vim /etc/ssh/sshd_config
找到 PermitRootLogin 改为 PermitRootLogin no

4、重启ssh服务

systemctl status sshd.service

  只是禁止了root用户登陆,先用别的用户登陆,在 su root 切回root用户,切换到root用户需要输入密码,因此建议在root的密码基础上稍作一点修改作为user新用户的密码。

附加:
查看所有用户和组:cat /etc/passwd
删除用户:userdel+username
切换用户:su切换到对应的用户时会将当前的工作目录自动转换到切换后的用户主目录。切换到root用户,如果是ubuntu平台,需要在命令前加“sudo”或使用sudo -s命令

二、设置用户登录验证次数

  验证的次数可以大大降低别人暴力破解你的密码。 登录验证失败到达次数自动退出,并且结束会话

vim /etc/ssh/sshd_config
MaxAuthTries = 3   #在41行 #这仅是超过3次验证错误断开连接

禁止使用空密码登录,是否允许使用空密码的用户远程登录,默认是 no,如果你的这个选项是yes,那就要悲催了。

PermitEmptyPasswords:no  #源代码是注释起来的,可以检查一下

重启ssh服务

systemctl status sshd.service

  
  

结束

  如有错误,还望指正,谢谢!

发布了17 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fengge2018/article/details/104795209