Linux 服务器的基本安全配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 服务器的基本安全配置相关的知识,希望对你有一定的参考价值。

当你新开通一台 Linux 服务器时,可以通过如下几点保证安全。

以 Ubuntu 系统为例:

1、修改 root 账户密码

将 root 密码更改为长而复杂的密码。您不需要记住它,只需将其存储在安全的地方。只有在您无法通过 ssh 登录账户 或丢失登录账户的 sudo 密码时才需要此密码。

passwd

2、保持内核最新

# 检索新的软件包列表
apt-get update

# 执行升级
apt-get upgrade

3、安装 Fail2ban

​Fail2Ban​​ 是一款入侵防御软件,可以保护服务器免受暴力攻击。 它是用 Python 编程语言编写的。 ​​Fail2Ban​​ 基于 ​​auth​​ 日志文件工作,默认情况下它会扫描所有 ​​auth​​ 日志文件,如 ​​/var/log/auth.log​​、​​/var/log/apache/access.log​​ 等,并禁止带有恶意标志的IP,比如密码失败太多,寻找漏洞等等标志。

如果找到,它将更改防火墙规则以永久或在指定的时间内拒绝攻击者的IP地址。 它也会发送邮件通知。 Fail2Ban 为各种服务提供了许多过滤器,如 ​​ssh​​、​​apache​​、​nginx​、​​squid​​、​​named​​、​mysql​、​​nagios​ 等。

Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。 这只是服务器防止暴力攻击的安全手段之一。

可以通过以下命令来安装Fail2ban:

sudo apt-get install fail2ban

然后复制包含的配置文件:

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

并重新启动Fail2ban:

$ sudo service fail2ban restart

该软件将持续检查日志文件,寻找攻击。一段时间后,该应用程序将建立一个相当多的被禁止的IP地址列表。您可以通过使用以下命令请求SSH服务的当前状态来查看此列表:

$ sudo fail2ban-client status ssh

4、创建登录用户并为其创建sudo权限

我们一般给服务器配置两个用户:root 和 deploy。deploy 帐户是开发人员登录的帐户,给deploy配置密码、赋予sudo权限。

# 创建用户
$ useradd -m deploy

# 设置用户密码
$ passwd deploy

使用 visudo 命令设置sudo权限,visudo命令是使用vi打开​​/etc/sudoers​​文件,但是在保存退出时,visudo会检查内部语法,避免用户输入错误信息

sudo visudo # 保存时会做语法检查

进入编辑模式,找到这一行:

​root ALL=(ALL) ALL ​​ 在其下面添加 ​​deploy ALL=(ALL) ALL​​ ,然后保存退出。

5、配置公钥认证登录并禁止root账户登录和密码登录

为你的帐户使用公钥身份验证,将大大提高账户的安全性和易用性。

参考文档[1]

6、设置防火墙

没有防火墙,服务器是不安全的。 Ubuntu 提供了 ufw,它使防火墙管理变得容易:

ufw allow from your-ip to any port 22
ufw allow 80
ufw allow 443
ufw enable

这将设置一个基本防火墙,并将服务器配置为接受端口 80 和 443 上的流量。您可能希望添加更多端口,具体取决于服务器将要执行的操作。

7、启用自动安全更新

多年来,我已经养成了 ​​apt-get update/upgrade​​ 的习惯,但当有十几台服务器时,我发现我登录频率较低的服务器并没有保证及时的更新。特别是对于负载平衡的机器,它们都保持更新是很重要的。虽然自动安全更新让我有些不放心,但服务器存在未修补的安全漏洞会导致更加严重的后果。

apt-get install unattended-upgrades

vim /etc/apt/apt.conf.d/10periodic

将文件修改为如下所示:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

还要编辑一个配置文件:

vim /etc/apt/apt.conf.d/50unattended-upgrades

将文件更新为如下所示。您应该禁用更新仅启用安全更新:

Unattended-Upgrade::Allowed-Origins 
"Ubuntu lucid-security";
// "Ubuntu lucid-updates";
;

8、安装 Logwatch 来监视你的服务器

Logwatch 是一个监控您的日志并将其通过电子邮件发送给您的守护程序。这对于跟踪和检测入侵很有用。如果有人非法访问您的服务器,通过电子邮件发送给您的日志将有助于确定发生了什么以及何时发生 - 因为您服务器上的异常日志可能已被清除。

apt-get install logwatch

vim /etc/cron.daily/00logwatch

添加这一行:

/usr/sbin/logwatch --output mail --mailto test@gmail.com --detail high

引用链接

​[1]​​ 参考文档: ​​https://www.muouseo.com/article/qk2vmoep0m.html

Linux服务器基本安全配置总结

我们在搭建Linux服务器的时候有很多事情需要注意,其中一个安全的配置表是一个服务器的搭建者和维护者最需要掌握的东西。在本文中你会看到一份完整的Linux服务器安全搭建手册假如你想要搭建一个Linux服务器,并且希望可以长期维护的话,就需要考虑安全性能与速度等众多因素。一份正确的linux基本安全配置手册就显得格外重要。

在日常运维工作中,对加固服务器的安全设置是一个机器重要的环境。比较推荐的做法是:

1)严格限制ssh登陆(参考:Linux系统下的ssh使用(依据个人经验总结)):

修改ssh默认监听端口 禁用root登陆,单独设置用于ssh登陆的账号或组;

禁用密码登陆,采用证书登陆;

ListenAddress绑定本机内网ip,即只能ssh连接本机的内网ip进行登陆;

2)对登陆的ip做白名单限制(iptables、/etc/hosts.allow、/etc/hosts.deny)

3)可以专门找两台机器作为堡垒机,其他机器做白名单后只能通过堡垒机登陆,将机房服务器的登陆进去的口子收紧;

另外,将上面限制ssh的做法用在堡垒机上,并且最好设置登陆后的二次验证环境(Google-Authenticator身份验证)

4)严格的sudo权限控制(参考:linux系统下的权限知识梳理)

5)使用chattr命令锁定服务器上重要信息文件,如/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers、/etc/sysconfig/iptables、/var/spool/cron/root等6)禁ping(echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all)

今天这里主要说下服务器安全登陆的白名单设置,通过下面两种方法:

1)iptables对ssh端口做限制;

2)/etc/hosts.allow和/etc/hosts.deny限制;这两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。如果当iptables、hosts.allow和hosts.deny三者都设置时或设置出现冲突时,遵循的优先级是hosts.allow > hosts.deny >iptables

以上是关于Linux 服务器的基本安全配置的主要内容,如果未能解决你的问题,请参考以下文章

你需要知道的Linux服务器安全策略问题

[译]在Linux上的提高MySQL/MariaDB安全性的12条建议

浅谈基本的网络安全

Linux相关学习

Linux服务器基本安全配置总结

linux进阶之路:linux入门