只是想了解。 请纠正错误并写下build议
黑客可以访问VPS:
1.通过(使用)控制台terminal,例如使用PuTTY。
要访问,黑客需要知道端口号,用户名和密码。
端口号黑客可以知道扫描开放端口并尝试login。 唯一的方法login,据我所知,需要知道用户名和密码。
要阻塞(使更困难的)端口扫描,需要使用iptablesconfiguration/etc/sysconfig/iptables 。 我遵循这个https://www.digitalocean.com/community/articles/how-to-setup-a-basic-ip-tables-configuration-on-centos-6教程,并得到
*nat :PREROUTING ACCEPT [87:4524] :POSTROUTING ACCEPT [77:4713] :OUTPUT ACCEPT [77:4713] COMMIT *mangle :PREROUTING ACCEPT [2358:200388] :INPUT ACCEPT [2358:200388] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [2638:477779] :POSTROUTING ACCEPT [2638:477779] COMMIT *filter :INPUT DROP [1:40] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [339:56132] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -s 11.111.11.111/32 -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT -A INPUT -s 11.111.11.111/32 -p tcp -m tcp --dport 21 -j ACCEPT COMMIT
关于需要打开的港口。
如果不使用ssl,那么似乎必须离开网站开放端口80。
然后为ssh(默认22)和ftp(默认21)。 并设置IP地址,从中可以连接。 那么如果黑客使用其他的IP地址,他甚至不能访问,甚至不知道用户名和密码?
关于电子邮件不确定。
如果我发送电子邮件,使用Gmail(使用Gmail发送邮件(使用Gmail从其他电子邮件地址发送)),则不需要端口25。
对于在dynadot.com收到的电子邮件,我使用电子邮件转发。 这是否意味着电子邮件“没有到达VPS”(在到达VPS之前,电子邮件被转发到例如Gmail)? 如果电子邮件没有到达VPS,那么似乎110端口也没有必要。
如果仅使用ssl,则必须打开端口443并closures端口80。
不明白关于端口3306
在PuTTY中用/bin/netstat -lnp参见
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 992/mysqld
据了解这是为MySQL。 但是不记得我打开过这样的端口(可能是在安装mysql的时候,端口是自动打开的?)。 Mysql安装在同一台服务器上的所有其他内容中。 需要了解端口3306
2.黑客也可以通过VPS主机提供商控制面板(串口控制台紧急访问)访问控制台terminal。
由于只有使用控制台terminal(PuTTY等)才能理解“全局”更改(不能用ftp修改的更改)。
3.黑客可以访问我的VPS利用我的PHP代码中的一些漏洞,并上传,例如,木马。
不幸的是,面对VPS遭到黑客攻击的情况。 据了解,这是因为我使用了ZPanel。 在VPS上(\ etc \ zpanel \ panel \ bin))find了一个php文件,这个文件被一些病毒扫描程序(virustotal.com)识别为木马病毒。
用本地计算机上的文件(wamp)进行实验。

看来黑客可以看到VPS的所有内容,重命名,删除,上传等。从我的观点来看,如果在PuTTY中使用像chattr +i /etc/php.ini这样的命令,那么黑客就无法修改php.ini。
还有其他方法可以进入VPS吗?
你所描述的是ZPanel的一个漏洞,如果这个文件被放在它的目录中,并且可以通过Web服务器访问 – 我已经看到这在Joomla / WordPress安装上发生了一百万次。
至于提供的截图 – 这看起来像一个PHP shell,它将能够列出文件系统,因为Apache可以访问文件系统。 脚本可以访问/读取的文件/目录取决于为这些文件设置的权限。
现在回答你的问题:
您可以closures3306 – MySQL端口,如果您需要从远程位置访问MySQL服务器,您可以随时添加一个只允许远程IP地址访问端口3306的iptables规则。
另外,可以使用SSH密钥进行rootlogin,并禁用root用户的密码login(PermitRootLogin without-password),所以只有在〜/ .ssh / authorized_keys中添加了SSH密钥的用户才能访问root帐户。 另一种方法是彻底禁用根访问并使用另一个帐户,以便可以遍历到root帐户(su – root)。
但是,您的安全性与您最薄弱的环节一样强大 – 您可以locking所有内容,但是如果Web应用程序易受攻击,则会find一种方法进入。
如果您是唯一使用服务器的人,您可以在访问面板之前使用ZPanel添加HTTP身份validation,或者如果您位于VPN服务器的HTTP服务器后面,则只允许访问您的VPN IP地址。
编辑:添加chattr +i /etc/php.ini将禁用对php.ini文件的任何修改,因为它已经设置了一个不可变的属性,而不是你(root)或者其他任何能修改的文件。
至于php.ini保护,你可以考虑修改以下选项,如果这是一个生产服务器:
你也可以禁用一些不需要的PHP函数,这些函数会导致PHP shell脚本不可用:
disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo如果在禁用这些函数后脚本无法正常工作,请检查它需要启用的function,从列表中删除并重新启动HTTP服务器。
嗯,当然! 这一切都取决于攻击面。
从堆栈底部向上的任何东西都是潜在的目标。 不知道更多关于特定的VPS,我们知道他们必须至less:
在虚拟化的环境中,堆栈的种类全部开始,以便物理服务器中的应用层承载虚拟环境中的物理层。 例如,假设您正在某个虚拟机pipe理程序的单个物理服务器上托pipe一个VPS。 任何存储,networking或服务器问题都会影响生活在该服务器上的虚拟机。
另一方面,即使在物理世界中一切都很好,虚拟环境托pipe了虚拟硬件,因此您必须重新开始。
但是,这两种环境不需要完全分开考虑。 虽然虚拟环境位于物理环境之上,但它仍然可能到达物理networking。 这是虚拟和物理威胁之间重叠的地方。
例如,您的ISP可能有一个物理边缘路由器来检查和过滤stream量。 它可能会检查非encryptionURL的查询string,以查看是否有错误。 如果fitler足够好,你可能会认为你不必担心外面的stream量(感谢桥接和NAT)。 尽pipe如此,你也可以对querystrings执行你自己的检查。 在这种情况下,stream量已经消失:
我知道这是一个非常迂回的方式来回答你的问题,但我想说的是,你应该考虑你的攻击面 – 特别是最低的水果 – 而不是想一个清单。 如果你允许file upload,你必须有一个可靠的方法来过滤掉坏文件。 如果您允许基本的HTTP身份validation,您将需要防止窃听和蛮力攻击。 如果您允许使用SSH,您可能需要仔细审核login尝试。
所以不要一味地考虑安全性,而应该根据为特定服务运行而创build的攻击面来思考。