禁用服务器上的 root 帐号远程登陆 (SSH 和 FTP 和 MySQL 数据库)


在这篇 英文帖子里, 我们知道网络安全是多么的重要. 如果你管理你的服务器(VPS,云主机或专用服务器),那么你必须有根 root的访问.根帐号 root 就是像是 Windows 下的管理员帐户,但更强大(你基本上可以用 root 做任何事情).

把 Linux 操作系统下的 root 改名并不是一件非常好的事,因为很多程序 (比如 sendmail) 都会假定 root 帐号的存在,如果不存在,就有可能会出错.平时我们也应该有一个普通的帐户用于处理一些不涉及底层的事情.这样的好处是比较安全, 不会因为一些误操作而使服务器当机.

SSH

创建一个普通帐号很简单: 命令 sudo adduser nuser 就可以, 其中参数 nuser 就是我们创建的新普通用户. 创建的时候可以顺便指定密码,也可以之后用命令passwd nuser 来改密码.

有了普通帐号之后一定要再三确认可以远程登陆并且切换到 root 帐号 (使用 su 命令). 需要确认是因为禁掉 root 远程登陆之后就只能用普通帐号来登陆.

接下来只要改 /etc/ssh/sshd_config 文件,把其中的 PermitRootLogin yes 改成 PermitRootLogin no. 通过以下命令重新启动 SSH 服务器:

1
sudo service ssh restart
sudo service ssh restart

重新SSH登陆 root, 就会发现不管密码对不对都进不去了,这样至少安全一些,因为网上有很多肉机不停的暴力尝试 root 密码.

FTP (vsFTP)

FTP 不安全,但是如果一定要用的话,可以选择 SFTP 或者 SSL/TLS 会安全一些.在 Linux, 比较常用的是 vsFTP 服务.

vsFTP 的配置是在文件 /etc/vsftp.conf 中, 然后需要在文件尾部加入(或者更改原配置文件里的项)

1
2
3
4
5
6
anonymous_enable=NO  # no anonymous login plz
local_enable=YES
write_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.users
anonymous_enable=NO  # no anonymous login plz
local_enable=YES
write_enable=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.users

然后我们需要创建这么一个列表 /etc/vsftpd.users 把可以登陆的用户加到这个文件中(每一行对应一个用户名). 按下面的命令重新启动 vsFTP 服务

1
sudo service vsftpd restart
sudo service vsftpd restart

接下来用 root 登陆 FTP,则会显示类似这样的信息:

Connecting to: XXXXXXXXX
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
220 (vsFTPd 3.0.2)
USER root
530 Permission denied.
Certificate: 
Can't connect
LastError: 0

MySQL

禁用远程MySQL root帐号登陆

一般来说,也需要禁掉 MySQL 数据库远程 ROOT 登陆,尽量创建一个普通权限的用户来操作一些数据库.当然如果你懒的话,就一个帐号操作所有的数据库也是可以的.但是最重要的一点是不允许远程登陆 mysql 进行 root 登陆.因为很多人会不停尝试数据库的 root 登陆,有一定的风险.

登陆 MySQL, 执行以下两条命令即可:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
flush privileges;

禁用所有远程MySQL登陆

如果你想禁止所有远程用户登陆MySQL, 只允许本地服务器(localhost) 那么可以让MySQLd 进程不监听网络端口 可以在 /etc/mysql/my.cnf 配置文件里的 [mysqld] 章节加入 skip-networking

1
2
3
[mysqld]
port=3306
skip-networking
[mysqld]
port=3306
skip-networking

如果有 ;skip-networking 只需要取消注释即可, 当然保存好配置文件后还需要重启MySQL服务

1
sudo service mysqld restart
sudo service mysqld restart

英文同步: https://helloacm.com/secure-the-linux-server-by-disallow-the-remote-root-login-ssh-and-ftp/

配置服务器建议的配置

GD Star Rating
loading...
本文一共 753 个汉字, 你数一下对不对.
禁用服务器上的 root 帐号远程登陆 (SSH 和 FTP 和 MySQL 数据库). (AMP 移动加速版本)
上一篇: 如何在 Linux 下 列出最耗资源的进程 (BASH 脚本)
下一篇: VPS 有点慢啊.正在找原因,别着急.

扫描二维码,分享本文到微信朋友圈
d64a97f9f36e9daf3098971d2014d92a 禁用服务器上的 root 帐号远程登陆 (SSH 和 FTP 和 MySQL 数据库) 互联网 技术 折腾 程序员 网站信息与统计

一条回应

评论