如何保护和加固云虚拟机(Ubuntu和CentOS)?
保护操作系统和您的网站、网络应用程序和在线业务一样重要。
您可能会花费在安全插件、WAF、基于云的安全性上来保护您的网站(第7层),但是不对操作系统进行加固可能会带来危险。
这一趋势是changing。
网络正从共享托管迁移到云,以获得多种优势。
- 由于资源不与任何其他用户共享,响应时间更快
- 完全控制技术堆栈
- 完全控制操作系统
- 成本较低
“伴随着伟大的权力而来的是伟大的责任”
在cloud VM上托管您的网站可以获得更高的控制权,但这需要一些系统管理员技能来管理您的虚拟机。
您准备好了吗?
注意:如果您不愿意投入时间,您可以选择托管AWS、Google Cloud、Digital Ocean、Linode、Vultr和Kyup VM的Cloudways。
让我们进入一个实用指南,来保护Ubuntu和CentOS虚拟机。
更改SSH默认端口
默认情况下,SSH守护程序监听端口号22。这意味着任何人都可以尝试连接到您的服务器。
如果您已使用复杂的密码保护了服务器,他们可能无法进入服务器。然而,他们可以发起暴力攻击来干扰服务器的操作。
最好的方法是将SSH端口更改为其他端口,这样即使有人知道IP,他们也无法使用默认的SSH端口尝试连接。
在Ubuntu/CentOS中更改SSH端口非常简单。
- 使用root权限登录虚拟机
- 备份sshd_config(/etc/ssh/sshd_config)
- 使用VI编辑器打开文件
vi /etc/ssh/sshd_config
找到包含Port 22
的行(通常位于文件的开头)
# What ports, IPs and protocols we listen for
Port 22
- 将22更改为其他数字(确保记住,因为您将需要连接)。我们假设为5000
Port 5000
- 保存文件并重新启动SSH守护程序
service sshd restart
现在,您或任何人都无法使用SSH默认端口连接到您的服务器。相反,您可以使用新的端口进行连接。
如果使用MAC上的SSH客户端或终端,则可以使用-p
来定义自定义端口。
ssh -p 5000 [email protected]
非常简单,是吧?
防范暴力攻击
黑客用于控制您的在线业务的常见机制之一是发起针对服务器和网络平台(如WordPress、Joomla等)的暴力攻击。
如果不认真对待,这可能是危险的。有两个常用的程序可用于保护Linux免受暴力攻击。
SSH Guard
SSHGuard监视系统日志文件中运行的服务,并阻止重复的错误登录尝试。
最初,它是为了SSH登录保护而设计的,但现在支持多种其他服务。
- Pure FTP、PRO FTP、VS FTP、FreeBSD FTP
- Exim
- Sendmail
- Dovecot
- Cucipop
- UWimap
您可以使用以下命令安装SSHGuard。
Ubuntu:
apt-get install SSHGuard
CentOS:
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/hornos:/centos/CentOS_CentOS-6/x86_64/sshguard-1.5-7.1.x86_64.rpm
rpm -ivh sshguard-1.5-7.1.x86_64.rpm
Fail2Ban
Fail2Ban是另一个保护SSH的流行程序。如果登录失败尝试达到指定的阈值,Fail2Ban会自动更新iptables规则。
在Ubuntu上安装Fail2Ban:
apt-get install fail2ban
在CentOS上安装:
yum install epel-release
yum install fail2ban
SSH Guard和Fail2Ban应该足以保护SSH登录。然而,如果您需要更多的探索,可以参考以下内容。
禁用基于密码的身份验证
如果您从一台或两台计算机登录到服务器,则可以使用基于SSH key的身份验证。
然而,如果您有多个用户并且经常从多台公共计算机登录,那么每次交换密钥可能会麻烦。
因此,根据情况,如果您选择禁用基于密码的身份验证,可以按照以下步骤操作。
注意:这假设您已经设置了SSH密钥交换。
- 使用vi编辑器修改
/etc/ssh/sshd_config
- 添加以下行或取消注释
PasswordAuthentication no
- 重新加载SSH守护程序
防御DDoS攻击
DDoS(分布式拒绝服务)可能发生在任何层次,这是作为业务所有者的最后一件事。
找到源IP是可能的,作为最佳实践,您不应该将exposing your server IP公开到公共互联网。有多种方法可以隐藏“源IP”以防止云/ VPS服务器上的DDoS攻击。
使用负载均衡器(LB) – 部署一个面向互联网的负载均衡器,这样服务器IP就不会暴露在互联网上。您可以选择许多负载均衡器,例如Google Cloud LB、AWS ELB、Linode Nodebalancer、DO LB等。
使用CDN(内容分发网络) – CDN是提高网站性能和安全性的伟大方式之一。
当您实施CDN时,您需要使用CDN提供商提供的任播IP地址配置DNS A记录。通过这样做,您为您的域名广告CDN提供商IP,而源IP不会暴露。
有许多CDN提供商可以加速网站性能、提供DDoS保护、WAF等许多其他功能。
因此,选择既提供性能又提供安全性的CDN提供商。
调整内核设置和iptables – 您可以利用iptables阻止可疑请求,非SYN,伪造的TCP标志,私有子网等。
除了iptables,您还可以配置内核设置。 Javapipe已经很好地解释了如何进行操作,因此我不会在此重复。
使用防火墙 – 如果您负担得起基于硬件的防火墙,那太好了,否则您可能希望使用基于软件的防火墙,它利用iptables保护VM的传入网络连接。
有很多选择,但最受欢迎的之一是适用于Ubuntu的UFW(不复杂的防火墙)和适用于CentOS的FirewallD。
定期备份
备份是您的朋友!当什么都不起作用时,备份将拯救您。
事情可能会出错,但如果您没有必要的备份来恢复怎么办呢?大多数云或VPS提供商提供额外收费的备份,应该始终考虑。
与您的VPS提供商确认如何启用备份服务。我知道Linode和DO对备份收费20%的云主机定价。
如果您使用的是Google Compute Engine或AWS,则可以安排每天的快照。
拥有备份将帮助您快速恢复整个虚拟机,使您能够恢复业务。或者,借助快照的帮助,您可以。
定期更新
确保虚拟机操作系统始终保持最新是确保服务器不受任何影响的重要任务之一。
在Ubuntu中,您可以使用apt-get update
来确保安装最新的软件包。
在CentOS中,您可以使用yum update
不要开放端口
换句话说,只允许所需的端口。
保持不需要的开放端口,比如以便利用。如果您只是在虚拟机上托管您的网站,那么您很可能只需要端口80(HTTP)或443(HTTPS)。
如果您在AWS上,则可以创建安全组,仅允许所需的端口并将其与虚拟机关联。
如果您在Google Cloud上,则使用“”允许必要的端口。
如果您使用VPS,则应用基本的iptables规则集,如中所述。
以上措施应帮助您加固和保护服务器,以更好地防范在线威胁。
或者,如果您还没有准备好管理虚拟机,那么您可能更喜欢的服务,他们可以管理多个云平台。如果您特别寻找高级WordPress托管,则请查看。