我正在查看我的服务器上的日志文件,我发现以下行/var/log/.auth.log.1
::
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruse r= rhost=218.87.109.156 user=root
Failed password for root from 218.87.109.156 port 7612 ssh2
message repeated 5 times: [ Failed password for root from 218.87.109.156 port 7 612 ssh2]
error: maximum authentication attempts exceeded for root from 218.87.109.156 po rt 7612 ssh2 [preauth]
Disconnecting: Too many authentication failures [preauth]
PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= 218.87.109.156 user=root
PAM service(sshd) ignoring max retries; 6 > 3
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruse r= rhost=218.87.109.156 user=root
Failed password for root from 218.87.109.156 port 50092 ssh2
message repeated 5 times: [ Failed password for root from 218.87.109.156 port 5 0092 ssh2]
Failed password for invalid user service from 188.187.119.158 port 52722 ssh2
pam_unix(sshd:auth): check pass; user unknown
Failed password for root from 113.195.145.79 port 6500 ssh2
Received disconnect from 121.18.238.39 port 58070:11: [preauth]
Failed password for root from 121.18.238.119 port 57538 ssh2
Failed password for root from 121.18.238.39 port 57268 ssh2
Failed password for root from 121.18.238.106 port 34360 ssh2
Disconnected from 92.222.216.31 port 58960 [preauth]
Invalid user truman from 92.222.216.31
Received disconnect from 92.222.216.31 port 33922:11: Normal Shutdown, Thank you for playing [preauth]
input_userauth_request: invalid user truman [preauth]
并且它一直这样持续上千行!
还有我有的地方:
Nov 30 13:17:01 Aran CRON[6038]: pam_unix(cron:session): session opened for user root by (uid=0)
CRON 在这里是什么意思?那么有人可以向我解释一下这些日志是什么吗?我有危险吗?我应该怎么做才能让自己更安全?
所有这些尝试登录都是针对 root 用户的,因此看起来只是通过 SSH 进行的基本暴力尝试。
面向公众的服务器每天进行大量 SSH 蛮力尝试是完全正常的。这是生活中的事实。您可以开始向拥有该 IP 地址的 ISP 报告它们,但这很麻烦,您不会有太大的不同。他们在整个互联网上使用受感染的计算机和/或托管他们在虚假详细信息下注册的帐户。
如果每个人都决定通过 SSH 禁用 root 登录,和/或要求 root(或每个人)使用基于密钥的登录,那么会有什么不同。只要您完成了其中一项,蛮力尝试基本上是无效的。但是因为有足够多的人仍然启用普通 root 登录,并且上面有一个可猜测的密码,所以这些攻击仍在继续。
有人推荐的另一件事是将 SSH 守护进程切换到非标准端口号。这并没有真正带来显着的安全优势,但会减少尝试到达日志文件的次数。
至于你的第二个问题,这只是 Cron 运行,也就是运行计划任务的程序。所有系统都有一堆系统默认配置的计划任务。由于 cron 可以以不同的用户身份运行不同的任务,因此它使用 pam_unix 来处理启动用户会话,即使是 root 用户也是如此,所以这就是它出现在该日志中的原因。
此答案并不能真正回答谁在尝试登录您的主机,但它可以让您了解此人来自何处。还有助于防止黑客甚至进入您的主机。
如果您打算使用密码通过 ssh 登录,您应该采取一些预防措施,以防有人试图侵入您的系统。对于我个人的使用,我喜欢使用
fail2ban
,然后我编写了自己的脚本,使用iptables
和ipset
. 后一部分用于完全阻止国家/地区 IP 在端口 22 上进入我的主机。我还安装geoiplookup
了一种查看 IP 来自哪里来决定是否要阻止该国家/地区的方法。我在下面的脚本从ipdeny.com
. 自从我大部分时间都打开端口 22 以来,它大大减少了我主机上的尝试次数。安装
fail2ban
:一般用
fail2ban
默认设置就OK了。如果要更改它们,请确保复制/etc/fail2ban/jail.conf
为并对您创建/etc/fail2ban/jail.local
的文件进行修改。jail.local
您还可以在/var/log/fail2ban.log
文件中看到失败的尝试。安装
geoiplookup
:然后你可以看到IP地址来自哪里。
我创建的国家/地区屏蔽脚本。
国家/地区块的必需申请是
ipset
。此应用程序允许iptables
使用 IP 块,而不是在您检查iptables
.我确信有很多东西可以清理。我将我的放在我的主文件夹中的脚本子文件夹中并调用它
country_block.bsh
。由于脚本对其进行了更改,iptables
因此必须从sudo
. 我确实将检查添加到脚本中。我最近对脚本进行了一些更改,以拒绝数据包而不是丢弃数据包,因此连接会立即断开。确保使脚本可执行 (
chmod +x country_block.bsh
)。然后,您可以custom.zone
在与文件相同的文件夹中创建一个country_block.bsh
仅包含 IP 的文件,这些 IP 可能会一遍又一遍地尝试破解您的系统。/32
在 IP 地址的末尾添加它们,例如256.99.265.106/32
. 添加自己的自定义 IP 后,只需运行以下命令即可重新加载它们:注意不要屏蔽您自己的国家或您自己的公共 IP。
还要注意不要阻塞任何其他未打开的端口。如果您阻止了 80 端口,那么如果您从该国家/地区访问一个网站,它就有可能无法加载,因为它无法通过 80 端口返回您的系统。
然后我在我的主文件夹中创建了另一个脚本
cb_update.bsh
,其中包含我要阻止的所有国家:如果您想阻止除您自己以外的所有国家/地区,请将上面的行更改为以下内容,并确保将您的国家/地区添加到
" "
行尾以从列表中删除您的国家/地区:然后我将以下行添加到我的
/etc/crontab
文件中。它涵盖了每次我的系统重新启动并在早上 01:05 更新列表。如果你自己运行脚本,它会给你国家代码:
然后,您可以随时检查您的系统可能发生的点击。
希望这可以帮助!
除非您对服务器可用的所有计算机/网络具有国家级控制/访问权限,否则在功能上不可能找到登录尝试背后的人。但是,您可以努力强化您的服务器。看,如何加固 SSH 服务器?,以及可以做些什么来保护 Ubuntu 服务器?
IP 地址
218.87.109.156
不在 DNS 中,并且 tracepath(来自加拿大渥太华)显示:在其余的 IP 上做
dig -x
和tracepath
处理留作练习。我猜你正在受到攻击。如果您不在防火墙后面(为什么不呢?),请调查该
fail2ban
软件包,或者,如果您不使用它,请停止运行sshd
.CRON
是系统的作业调度程序,在我的系统上,我每天看到数百个。如果您不需要 Internet 上的端口 22,您还可以将默认端口更改为另一个非标准端口。
即使您使用fail2ban,您仍然会每天尝试多次失败。我从不让默认端口对互联网开放。至少对于 SSH。现在很多机器人都在暴力破解。
您可以通过编辑文件来做到这一点。
/etc/ssh/sshd_config
必须有类似于以下内容的行:#Port 22
删除前面的 # 并将 22 更改为您想要的端口值( 1 到 65535 )例子:
Port 1337
然后您可以测试配置的有效性(确保没有多余的字符,否则它可能无法启动 - 这在您重新启动 sshd 远程时很有用,它可能无法正确重新启动并且您需要通过其他路由访问)使用命令 :
/usr/sbin/sshd -t
请记住:没有输出通常意味着没有错误。
然后你需要重启 sshd 服务:
sudo systemctl restart sshd
或者
sudo service sshd restart
或者
sudo killall -HUP sshd
然后,您可以使用自定义端口 ssh 进入您的服务器。从其他终端您可以使用:
ssh <serverHostname> -p <port>
.对于像我这样的懒人,如果你不想一直指定那个端口,你可以在文件中以相同的方式更改默认端口
/etc/ssh/ssh_config
(这是 ssh 命令的文件),这样你就不必一直添加-p <port>
选项。我赞同大多数人所说的,但根据我的经验,如今大多数 SSH 蛮力攻击都是分布式攻击(来自数百或数千个不同的 IP 地址,很少或没有重复),所以像以前那样的包
fail2ban
用处不大是。基本的预防措施是:
ufw
断开与除允许端口之外的所有端口的连接/etc/ssh/sshd_config
确保 root 登录行显示PermitRootLogin no
)AllowUsers myuser
)您还可以做很多其他事情,只需查找有关 SSH 强化的文章即可。从本质上讲,如果您使用的是 2048 位或 4096 位密钥,则没有人能够暴力破解它。
正如已经指出的,每次系统启动计划作业时(每当 CRON 运行时),都会自动创建 CRON 条目。
您还可以查看软件包,例如
logwatch
获取日志正在执行的每日摘要,并在发生需要您注意的事情时更快地做出响应。它不止一次救了我的培根。