这并不是一个全面的安全指南。它可以帮助你防止近90%的流行后端攻击,例如尝试登录暴力破解和DDoS。最好是你可以在一两个小时内实现它们。
前置条件
- 您需要一个Linux服务器。
- 您需要对命令行有一个基本的了解。
如果您已经设置好了上述要求,让我们继续进行第一步。
1. 配置SSH密钥
要访问远程服务器,要么使用密码登录,要么使用SSH密钥。密码的问题在于它们很容易被暴力破解(你将在后面学习如何防止这种情况)。此外,在需要访问服务器时,您必须使用键盘输入。
为了避免上述缺点,你可以设置SSH密钥验证。它比密码更安全,因为黑客无法暴力破解它们。由于不需要输入密码,连接到服务器也更容易、更快。
以下是如何为服务器设置SSH身份验证。
- 在本地计算机上输入以下命令生成SSH密钥对:
ssh - keygen
上面的命令会带你完成几个步骤来生成SSH密钥。注意存储密钥的文件。
- 使用以下命令将公钥添加到服务器:
ssh-copy-id username@remote_host
确保将 username 和 remote_host 替换为你的真实用户名和服务器的IP地址。系统将提示您输入密码。
- 尝试使用以下命令登录服务器:
ssh username@remote_host
别忘了把 username 和 remote_host 替换成你服务器的信息。您应该注意到,这一次不会提示您输入密码。
2. 保持你的系统时间是最新的
许多安全协议利用您的系统时间来运行定时任务、记录日志和执行其他关键任务。
如果您的系统时间不正确,可能会对服务器产生负面影响。为了防止这种情况发生,你可以安装一个NTP客户端。此客户端将使您的系统时间与网络时间协议Network Time Protocol(NTP)保持同步。
使用下面的命令安装NTP客户端:
sudo apt install ntp
这样你就再也不用担心系统时间不同步了。
3. 查看活动端口
服务器上的应用程序公开某些端口,以便网络中的其他应用程序可以访问它们。黑客也可以在你的服务器上安装后门并暴露一个端口,通过这个端口他们可以控制服务器。
出于这个原因,我们不希望你的服务器监听我们不知道的端口。
使用如下命令查看活动端口:
sudo ss -lntup
看一下输出,并研究一下您不熟悉的端口或进程。尝试发现并跟踪潜在的有害服务和进程。
首先,看看这个"Bad" TCP/UDP Ports List。
4. 设置防火墙
你可以通过防火墙设置停止/允许服务器上特定端口的进行通信。为此,我通常使用UFW(uncomplicated firewall).
UFW的工作原理是让你配置以下规则:
- 允许或拒绝
- 流入或流出流量
- 往返
- 指定端口或所有端口
在本节中,您将阻断除明确允许的网络流量之外的所有网络流量。在安装其他程序时,请记住启用运行它所需的必要端口。
设置UFW
- 安装ufw。
sudo apt-get install ufw
- 你可以拒绝所有传出的流量…
sudo ufw default deny outgoing comment 'deny all outgoing traffic'
- 或允许所有传出流量
sudo ufw default allow outgoing comment 'allow all outgoing traffic'
- 接下来,我们要拒绝所有传入的流量…
sudo ufw default deny incoming comment 'deny all incoming traffic'
- 限制使用SSH方式访问服务器
sudo ufw limit in ssh comment 'allow SSH connections in'
- 如果配置UFW拒绝所有流出流量,请不要忘记根据需要允许特定的流量流出。下面是一些例子:
# 允许流量出53端口 -- DNS
sudo ufw allow out 53 comment 'allow DNS calls out'
# 允许流量出123端口 -- NTP
sudo ufw allow out 123 comment 'allow NTP out'
# 放开 HTTP, HTTPS, or FTP
# apt可能需要这些,这取决于你使用的资源
sudo ufw allow out http comment 'allow HTTP traffic out'
sudo ufw allow out https comment 'allow HTTPS traffic out'
sudo ufw allow out ftp comment 'allow FTP traffic out'
# 允许域名查询服务
sudo ufw allow out whois comment 'allow whois'
# 允许流量出68端口 -- the DHCP client
# 只有在使用DHCP时才需要这个
sudo ufw allow out 68 comment 'allow the DHCP client to update'
- 要拒绝99端口的任何流量,使用下面的命令:
sudo ufw deny 99
- 最后,使用下面的命令启动UFW:
sudo ufw enable
- 您也可以使用以下命令查看UFW状态:
sudo ufw status
5. 防止自动攻击
有两个工具可以防止大多数自动攻击:
- PSAD.
- Fail2Ban.
PSAD和Fail2Ban之间的区别
我们了解了端口可以访问服务器上的应用程序。
攻击者可能会扫描你的服务器,寻找他们可以用来访问服务器的开放端口。
PSAD可以监控网络活动,以检测并有选择地阻止此类扫描和其他类型的可疑流量,如DDoS或操作系统指纹尝试。
Fail2Ban会扫描各种应用程序(如FTP)的日志文件,并自动禁止显示恶意迹象的ip地址,如自动登录尝试。
6. 安装 logwatch
服务器上的应用程序通常会将日志消息保存到日志文件中。除非你想手动监控日志文件,否则需要安装logwatch。
Logwatch扫描并汇总系统日志文件。
您可以直接从命令行运行它,也可以将它安排为按定期计划运行。例如,您可以配置logwatch,以电子邮件向您发送日志文件的每日摘要。请注意,您的服务器需要能够发送电子邮件才能工作。
Logwatch使用服务文件来了解如何读取和汇总日志文件。你可以在/usr/share/logwatch/scripts/services
目录中看到所有的服务文件。
Logwatch的配置文件/usr/share/ Logwatch /default.conf/ Logwatch .conf
指定了默认选项。你可以通过命令行参数来覆盖它们。
要在Ubuntu或Debian上安装logwatch,请执行以下命令:
apt-get install logwatch
对于使用其他Linux发行版的用户,请查看Linode的epic指南。
您可以尝试直接运行logwatch,以便查看它收集的内容的示例。
sudo /usr/sbin/logwatch --output stdout --format text --range yesterday --service all
最后,告诉logwatch每天给我们发送一封包含日志文件摘要的电子邮件。为此,打开文件_/etc/cron。并找到execute行,然后将其更改为以下内容:
/usr/sbin/logwatch --output mail --format html --mailto root --range yesterday --service all
7. 执行安全审计
在确保Linux服务器的安全之后,您应该执行安全审计,以便发现您可能错过的任何安全漏洞。你可以使用Lynis,这是一个开源软件,它可以执行:
- 安全审计;
- 符合性测试(如PCI, HIPAA, SOx);
- 渗透测试;
- 漏洞检测;
- 系统加固。
如何使用Lynis
首先,通过克隆Lynis的Github仓库来安装它。这可以确保你安装最新版本的Lynis。
git clone https://github.com/CISOfy/lynis
切换到我们克隆Lynis的目录:
cd lynis
最后,使用以下命令运行Lynis:
lynis audit system
你可以在他们的官方网站了解更多关于Lynis的信息。文章来源:https://www.toymoban.com/news/detail-652767.html
恭喜你阅读了另一篇加固Linux服务器的指南。我希望你学到了新东西。文章来源地址https://www.toymoban.com/news/detail-652767.html
到了这里,关于加强你的Linux服务器安全性的7个步骤,可以防止至少90%的攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!