当我ps aux
在 Centos 7 机器上运行命令时,我看到大约 100 个条目:
root 19862 0.0 0.0 151692 8 ? Ss Oct09 0:00 sshd: unknown [priv]
sshd 19864 0.0 0.0 105068 0 ? S Oct09 0:00 sshd: unknown [net]
我想问一下这是否正常,或者我的系统是否受到了某种 ssh 暴力攻击?
谢谢!
答案1
是的,这是正常的。sshd 为每个当前尝试验证的用户打开 2 个新进程。
是的,这很可能表示有人试图未经授权验证您的服务器。如果不是,只需查看一下您的网络,/var/log/auth.log
就会发现您的网络中的服务器正在运行已弃用的 cron 脚本。
经验法则:如果你担心有人可能会闯入,那么问题不在于有人试图闯入!相反,确保没有人会曾经暴力破解成功。
你能按顺序调整你的 sshd 配置,并在一定程度上限制处理这些问题所花费的系统资源量。但对于任何服务器来说,默认设置都应该没问题,除了最薄的服务器,这真的不是什么大问题。
# Disable unused authentication methods
# !! ONLY DISABLE PASSWORDS IF ALL USERS LOGIN USING KEYS !!
PasswordAuthentication no
# If the above is true, also limit the time users have to present
# their authentication
# If theres no passwords typed, something <60 seconds is reasonable
# !! DO NOT SET TOO LOW! USERS MAY STILL NEED TO UNLOCK THEIR KEY/CARD !!
LoginGraceTime 120
# Limit how many times a user can attempt to authenticate
# !! Users who initially try the wrong key or invalid method will
# !! first need to configure their ssh client properly
# !! else they will be locked out if this is too low!
MaxAuthTries 6
# Limit the number of concurrently authenticating users
# start not accepting some connections if there are already 10 clients
# stop accepting any connections if there are already 100 clients
# !! one may even argue leaving this high is helpful, because
# !! an attacker needs more resources to prevent legitimate connections
MaxStartups 10:30:100
你也能将你的 ssh 移到另一个端口,这将大大限制尝试的人数。我愿意不是建议这样做。它不仅不会提高安全性,反而会使事情变得更加复杂。
答案2
首先我同意@anx 所说的。
补充几点(这是我做的):
- 为了方便起见,可以使用 fail2ban 来解析日志文件并阻止暴力攻击。这不会增加安全性,但会减少日志中的噪音。
- 为了提高安全性,请使用基于密钥的登录。
- 为了将其提升到一个新的水平,可以使用 openpgp 卡来存储密钥,这样它就不再是可以被窃取的磁盘文件了。(卡可以签署请求,但无法从卡中获取密钥。)
- 不完全禁用基于密码的登录的折衷方案是添加第二因素验证。
- 可以安装 google authenticator pam 模块和 android 应用程序。可以这样设置:登录时,除了密码外,您还需要输入手机生成的数字(或其他基于硬件的计算器软件)。这是一个基于时间的令牌,因此如果加密检查成功,它就会允许您登录。
- 基于密钥的登录和第二因素身份验证可以同时启用。