我对 Linux 和系统管理员领域都很陌生,所以我正在寻找一些建议和一些答案。我设置了一个运行 Ubuntu 12.04 的 EC2 实例,并通过密钥对进行 SSH 连接。
首先,我通读了Ubuntu 用户管理页面但它让我有几个问题。我在页面上注意到了这一点
Sudo 允许授权用户使用自己的密码暂时提升其权限,而不必知道属于 root 帐户的密码。
当我运行 sudo 命令时,使用 SSH 访问服务器后不会提示我输入密码。我读到不要将数据库访问密码(例如 PHP 和 MySQL)存储在纯文本文件中,而是使用 .cnf 文件并将权限设置为 600。如果有人设法进入我的服务器,他们所要做的就是输入密码,sudo vi /path/to/cnf
然后他们就可以查看密码。这样做的目的是假设我有 sudo 的密码吗?
考虑到默认情况下我没有密码,我是否应该为 sudo 添加密码?
考虑到我使用 UFW 来限制对端口 22 的访问并且使用密钥对,那么如果有人能够通过 SSH 进入我的服务器,风险有多大?
因为我使用 EC2 设置了我的 Ubuntu 服务器,所以我看到的所有关于添加/更改密码的资料都说默认情况下使用设置时设置的密码。我实际上没有设置任何东西。一切都是通过 AWS 预先配置的。这是个问题吗?
答案1
答案2
首先是一些常规安全提示:
- 使用 Key 登录 - 你在这方面做得很好
- 使用大密钥 - 例如生成一个 4k rsa 密钥(可能当前的是 1k 或 2k
- 使用强密码作为密钥 - 你应该这样做。如果我能得到你未受保护的无密码密钥……一切都没有意义
- 将 ssh 移至更高的端口 - 例如 12322 - 这将有助于探测服务。并且不要忘记在安全组中打开端口
- 监控服务器的运行情况 - fail2ban 是一款非常棒的工具
- 禁用密码登录(其他回复中有说明)
- 实现 AllowUsers/AllowGroups 以仅允许特定用户(并且 root 不是其中之一) - 再加上积极的 fail2ban 配置,这几乎是一个杀手。
现在问题是:
对于能够使用 SSH 的人来说,风险有多大
没什么,只要设置一些安全措施即可
我应该添加密码吗?
是的,这很好,但并不是严格强制使用类似的东西
sudo 密码 ubuntu
会让你在不知情的情况下更改密码。
NOPASSWD 表示任何命令都可以在无需密码的情况下执行。是的,我经常使用它,但只在我随身携带的机器上(例如笔记本电脑)。建议在设置已知(复杂)密码后将其删除。