8 ssh exploit webserver ubuntu
我已经租了半年的 VPS(出于教育目的),我一直在努力学习尽可能多的关于保持安全的知识。
最近,它被入侵了,我怀疑它在我意识到之前已经被用作某人的代理约一周。我有来自用户“匿名”和“无人”的日志,通过 SSH 登录和注销,CPU 使用率超出了图表 - 字面意思。
无论如何,我重新安装了它并重新应用了我所知道的一切来测试它是否会再次发生,并且在重新安装后的短短 24 小时内,我认为它确实发生了。
以下是/var/log/auth.log
让我感到偏执的相应日志:
Oct 31 06:30:21 vultr su[24157]: Successful su for nobody by root
Oct 31 06:30:21 vultr su[24157]: + ??? root:nobody
Oct 31 06:30:21 vultr su[24157]: pam_unix(su:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd: pam_unix(systemd-user:session): session opened for user nobody by (uid=0)
Oct 31 06:30:21 vultr systemd-logind[503]: New session 40 of user nobody.
Oct 31 06:30:24 vultr su[24157]: pam_unix(su:session): session closed for user nobody
Oct 31 06:30:24 vultr systemd-logind[503]: Removed session 40.
Run Code Online (Sandbox Code Playgroud)
我不是早上 6:30 认证的人,所以我很自然地担心我又在某个地方搞砸了……
(注意:.bash_history
ofroot
显示没有任何可疑之处,据我所知,用户nobody
没有.bash_history
- 如果我错了,请纠正我)
SSH 禁用密码身份验证,只能进行 SSH 密钥身份验证,这就是为什么我真的很困惑接下来要尝试什么,因为有人仍然设法获得访问权限(我认为)。
我读过这篇关于 phpMyAdmin 漏洞的文章,攻击者在该漏洞中获得了“nobody”用户的访问权限。但是我不认为它适用于我的情况,因为根据我的 Apache 日志,没有任何尝试访问 phpMyAdmin 页面,更不用说这篇文章的日期是 2010 年,我的 phpMyAdmin 页面目前甚至无法访问.
但是,Apache 收到的请求类型让我有点担心,这是一个示例(来自/var/log/apache2/access.log
):
192.99.144.140 - - [31/Oct/2015:03:43:48 +0000] "PROPFIND /webdav/ HTTP/1.1" 405 569 "-" "WEBDAV Client"
185.25.151.159 - - [31/Oct/2015:03:59:35 +0000] "GET http://testp2.czar.bielawa.pl/testproxy.php HTTP/1.1" 404 460 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"
61.228.95.69 - - [31/Oct/2015:09:07:39 +0000] "CONNECT 126mx00.mxmail.netease.com:25 HTTP/1.0" 405 536 "-" "-"
185.25.151.159 - - [31/Oct/2015:09:15:13 +0000] "GET http://testp4.pospr.waw.pl/testproxy.php HTTP/1.1" 404 457 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"
Run Code Online (Sandbox Code Playgroud)
而我会期待更像这样的东西:
my ip - - [31/Oct/2015:14:47:58 +0000] "GET / HTTP/1.1" 200 589 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)
我不明白通过尝试完成了什么
"GET http://testp4.pospr.waw.pl/testproxy.php"
从我的服务器。中没有这样的文件或目录/var/www/html
我将列出我为尝试在重新安装后保持安全所做的所有事情。如果您认为我做错了什么,或者我根本没有做某事,请指出。
我做了什么:
authorized_keys
我服务器上的文件中在 中更改这些设置/etc/ssh/sshd_config
,从而禁用密码身份验证并仅允许 SSH 密钥身份验证
PermitRootLogin without-password
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
Run Code Online (Sandbox Code Playgroud)重启
按以下顺序安装我需要的东西:
zip
unzip
apache2
mysql-server
php5 libapache2-mod-php5
openjdk-7-jdk
gcc
g++
screen
vsftpd
auditd
Run Code Online (Sandbox Code Playgroud)删除默认值 /var/www/html/index.html
配置 vsftpd 工作(我有一个强密码FtpUser
)。我遵循了 DigitalOcean 的这个教程
mkdir /home/proj
groupadd ftp-users
chown root:ftp-users /home/proj
chown root:ftp-users /var/www
useradd -g ftp-users -d /home/proj FtpUser
chown FtpUser /home/proj
passwd FtpUser (add strong password)
Run Code Online (Sandbox Code Playgroud)
我改变了这些设置 /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=NO
pam_service_name=ftp
Run Code Online (Sandbox Code Playgroud)重启
我没有提到的其他一切都是默认的,所有安装的软件都是最新的。
请让我知道我之前显示的日志是否值得担心。如果您能告诉我我的配置是否不正确以及我可以做些什么来进一步提高我的安全性,我也将不胜感激。此外,如果你知道任何关于这个问题的好文章,从长远来看这将是非常有帮助的。
在您的网络服务器前面运行hiawatha 网络服务器reverse proxy
。它将在日志中阻止此类漏洞利用(它们将被视为“垃圾”):
91.196.50.33|Sat 19 Mar 2016 21:12:15 +0000|GET http://testp3.pospr.waw.pl/testproxy.php HTTP/1.1
Host: testp3.pospr.waw.pl
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Run Code Online (Sandbox Code Playgroud)
在单独的容器内运行网络服务器和代理lxc
以进一步隔离进程。
使用chroot
内置的功能php-fpm
。
安装您的/var/www/public_html
as noexec nosuid nodev
。