linux系统安全加固方案_linux安全加固一般需要加固哪些方面 咋加固勒

sudo systemctl list-unit-files --type=service

这个命令将列出当前系统中所有的服务及其状态,你可以查看哪些服务是不必要的或者不需要启用的。

  1. 禁用不必要的服务:
sudo systemctl stop <service_name>
sudo systemctl disable <service_name>

<service_name> 替换为你要禁用的服务的名称。这个命令会停止指定的服务,并且设置为开机不自动启动。

例如,如果要禁用SSH服务:

sudo systemctl stop ssh
sudo systemctl disable ssh

  1. 查看当前开放的端口:
sudo netstat -tuln

这个命令将列出系统中所有正在监听的TCP和UDP端口,你可以查看哪些端口是不必要开放的。

  1. 禁用不必要的端口:

要禁用某个端口,你可以使用防火墙工具(如firewalld或iptables)关闭该端口。以下是一个使用firewalld的示例:

sudo firewall-cmd --zone=public --remove-port=<port_number>/tcp --permanent
sudo firewall-cmd --zone=public --remove-port=<port_number>/udp --permanent

<port_number> 替换为你要禁用的端口号。--permanent 参数将这个更改永久保存到防火墙配置中。

例如,如果要禁用SSH服务的默认端口22:

sudo firewall-cmd --zone=public --remove-port=22/tcp --permanent

然后,重新加载防火墙配置以使更改生效:

sudo firewall-cmd --reload

请注意,禁用不必要的服务和端口前,请确保你了解其对系统的影响,以免影响系统正常运行或需要的功能。建议在操作前备份重要数据,并根据实际需求进行调整。

  1. 配置SSH安全

    • 禁用root远程登录,使用普通用户登录后再切换到root。
    • 禁用密码登录,使用公钥认证。
    • 修改SSH端口,使用非默认端口来减少暴露风险。
    • 配置登录失败次数限制,防止暴力破解攻击。
      配置SSH的安全操作非常重要,特别是用于远程访问和管理Linux系统时。以下是一些关于如何配置SSH安全操作的详细步骤:
  2. 更改SSH默认端口
    默认情况下,SSH服务使用22号端口。为了增加安全性,可以更改为其他未被常规扫描器扫描的端口。编辑SSH配置文件/etc/ssh/sshd_config,找到并修改Port项,例如:

Port 2222

然后重新加载SSH服务:

sudo systemctl reload sshd

  1. 禁用SSH的Root登录
    不建议使用Root用户直接登录SSH,可以通过修改配置文件禁用Root登录。在/etc/ssh/sshd_config中找到并修改以下行:
PermitRootLogin no

然后重新加载SSH服务。
7. 限制SSH登录用户
可以通过配置AllowUsersAllowGroups项来限制可以使用SSH登录的用户或用户组。在/etc/ssh/sshd_config中添加或修改以下行:

AllowUsers username1 username2

或者

AllowGroups groupname

然后重新加载SSH服务。
8. 使用公钥身份验证
启用公钥身份验证可以提高安全性,禁用密码登录。确保在SSH服务器上生成并安装密钥对,然后在/etc/ssh/sshd_config中启用以下设置:

PubkeyAuthentication yes
PasswordAuthentication no

  1. 限制SSH登录尝试次数
    通过配置MaxAuthTries项来限制SSH登录尝试的次数,以防止暴力破解。在/etc/ssh/sshd_config中添加或修改以下行:
MaxAuthTries 3

  1. 限制SSH登录IP范围
    如果只有特定IP地址或地址段需要访问SSH,可以通过配置AllowTcpForwardingGatewayPorts项来限制。例如,允许特定IP段访问SSH:
AllowTcpForwarding no
GatewayPorts no
Match Address 192.168.1.0/24
AllowUsers username1

  1. 使用SSH密钥代理
    SSH密钥代理可以让你在多个SSH服务器之间传递密钥,而无需在每个服务器上重新输入密码。确保在客户端启用SSH代理,并在服务器端启用AllowAgentForwarding项:
AllowAgentForwarding yes

  1. 定期更新SSH服务
    确保及时更新系统和SSH服务,以获取最新的安全补丁和功能改进。
  2. 监控SSH日志
    定期检查系统日志中的SSH登录记录,查看是否有异常活动或未经授权的访问尝试。
  3. 防火墙设置
    使用防火墙工具(如firewalld或iptables)限制SSH服务的访问,只允许来自指定IP范围的连接。
  4. 使用多因素身份验证(MFA)
    对于对安全性要求极高的环境,可以考虑启用SSH的多因素身份验证(MFA),以增加安全性。

在执行任何更改之前,请务必备份重要的配置文件,并确保你有管理员权限和足够的了解来避免意外中断系统访问。

  1. 使用安全的密码策略
    要求用户使用复杂的密码,并定期更换密码。可以使用工具如 pam_cracklib 来增强密码策略。
    在Linux系统中,可以通过配置密码策略来增强系统的安全性,包括密码长度、复杂度、过期时间等方面的设置。以下是一些操作案例,展示如何配置安全的密码策略。
  2. 查看当前密码策略

首先,你可以查看当前系统上的密码策略设置。在大多数Linux系统中,可以使用 pam_pwquality 模块来控制密码策略。使用以下命令查看当前的密码策略设置:

grep -E "^(min|max).\*(len|class|repeat|sequence)" /etc/security/pwquality.conf

这将显示当前系统中密码策略的相关参数,如最小长度、最大长度、允许的最大重复字符数、最大字符序列长度等。

  1. 修改密码策略

接下来,你可以根据实际需求修改密码策略。编辑 /etc/security/pwquality.conf 文件,根据下面的案例进行修改:

sudo nano /etc/security/pwquality.conf

示例配置文件:

# 密码长度要求
minlen = 12  # 最小密码长度
minclass = 3  # 至少包含的字符类别数(大写字母、小写字母、数字、特殊字符)

# 其他要求
dcredit = -1  # 密码中至少包含一个数字的要求
ucredit = -1  # 密码中至少包含一个大写字母的要求
lcredit = -1  # 密码中至少包含一个小写字母的要求
ocredit = -1  # 密码中至少包含一个特殊字符的要求

# 密码历史记录要求
remember = 5  # 记住最近使用的密码次数,防止重复使用相同密码

在这个示例中,密码策略要求密码长度至少为12个字符,必须包含至少一个数字、一个大写字母、一个小写字母和一个特殊字符,同时密码历史记录中会记住最近5次使用的密码。

  1. 应用新的密码策略

完成修改后,重新加载PAM模块以应用新的密码策略:

sudo pam-auth-update

在配置过程中,系统可能会提示你选择使用的认证方式。确保选中“PAM密码强度约束”,以确保新的密码策略生效。

  1. 设置密码过期策略

另一个安全实践是设置密码的过期时间。可以使用以下命令设置用户的密码过期时间:

sudo chage -M 90 username

username 替换为你要设置的用户名,上面的命令将设置用户的密码在90天后过期。你也可以使用 chage -l username 命令来查看当前用户的密码过期策略。

通过以上步骤,你可以配置一个相对安全的密码策略,包括密码长度、复杂度、过期时间等方面的设置。这些策略有助于增强系统的安全性,提高密码的复杂度和安全性。

  1. 限制文件和目录权限
    • 使用最小权限原则,给予用户和组合适当的权限。
    • 避免给予文件和目录过大的权限,尤其是对于敏感文件。

在Linux系统中,可以使用chmod和chown命令来限制文件和目录的权限。这些命令允许你设置文件和目录的所有者、权限和访问控制列表(ACL),以确保系统和数据的安全性。以下是关于如何限制文件和目录权限的详细操作说明:

1. 使用 chmod 命令设置文件和目录权限
1.1. 基本权限设置:
  • 数字方式设置权限
    使用数字方式可以更快速地设置权限,其中每个权限位对应的数字如下:

    • 读权限(r):4
    • 写权限(w):2
    • 执行权限(x):1示例:将文件 example.txt 设置为只有所有者具有读写权限,组用户和其他用户没有任何权限:
chmod 600 example.txt

  • 符号方式设置权限
    使用符号方式可以根据需要对不同用户设置不同的权限。符号方式的基本语法为:[ugoa][±=][rwx]。

示例:给文件 example.txt 添加其他用户的读权限:

chmod o+r example.txt

1.2. 递归设置目录权限:
  • 递归设置目录权限
    使用 -R 参数可以递归地设置目录及其子目录的权限。
    示例:将目录 docs 及其所有子目录和文件设置为所有者具有读写权限,组用户和其他用户没有任何权限:
chmod -R 600 docs

2. 使用 chown 命令设置文件和目录所有者
2.1. 更改所有者:
  • 更改所有者
    使用 chown 命令可以更改文件或目录的所有者。语法为:chown 新所有者 文件或目录

示例:将文件 example.txt 的所有者更改为用户 user1

chown user1 example.txt

  • 同时更改所有者和组
    使用 :组名 可以同时更改所有者和组。

示例:将文件 example.txt 的所有者更改为用户 user1,组更改为 group1

chown user1:group1 example.txt

3. 使用 ACL 设置详细权限

Linux还支持ACL(Access Control List),允许更详细地控制文件和目录的访问权限。这是在基本权限之上的一层额外权限设置。

3.1. 设置 ACL 权限:
  • 添加 ACL 权限
    使用 setfacl 命令添加 ACL 权限。

示例:给文件 example.txt 添加用户 user2 的读权限:

setfacl -m u:user2:r example.txt

3.2. 查看 ACL 权限:
  • 查看 ACL 权限
    使用 getfacl 命令查看文件或目录的 ACL 权限。

示例:查看文件 example.txt 的 ACL 权限:

getfacl example.txt

通过上述操作,你可以灵活地设置和限制文件和目录的权限,确保系统和数据的安全性。请根据实际需求和安全策略合理设置权限。

  1. 监控日志
    定期检查系统日志,查看异常登录、攻击尝试等安全事件,并及时做出响应。
    在Linux系统中,监控日志是非常重要的,可以帮助你发现系统问题、安全事件和性能瓶颈。以下是一些常见的监控日志的案例:
  2. 使用 journalctl 查看系统日志
journalctl

这个命令会显示系统的全部日志,你可以使用 -f 参数来实时监控日志的变化。

  1. 筛选特定服务或单元的日志
journalctl -u service_name

service_name 替换为你要监控的服务名称,这个命令会显示指定服务的日志。

  1. 按时间范围查看日志
journalctl --since "2023-01-01" --until "2023-12-31"

这个命令可以按照指定的时间范围查看日志,可以根据需要调整起始时间和结束时间。

  1. 使用 grep 筛选关键词
journalctl | grep "error"

这个命令可以筛选包含特定关键词的日志条目,例如筛选所有包含 “error” 的日志。

  1. 监控系统日志文件
tail -f /var/log/syslog

这个命令可以实时监控系统的 syslog 日志文件,可以查看系统的各种事件和消息。

  1. 监控安全日志文件
tail -f /var/log/auth.log

这个命令可以实时监控系统的 auth.log 日志文件,可以查看登录和认证相关的安全事件。

  1. 监控应用程序日志

应用程序通常会将日志记录在特定的日志文件中,你可以使用 tail -f 命令实时监控这些日志文件,例如:

tail -f /var/log/nginx/error.log

这个命令可以实时监控 Nginx 服务器的错误日志。

总的来说,通过使用 journalctl 命令查看系统日志以及使用 tail 命令实时监控特定日志文件,你可以及时发现系统问题、安全事件或者应用程序的错误,有助于及时处理和排查问题。

  1. 加密通信
    使用 SSL/TLS 加密协议来保护网络通信,尤其是对于 Web 服务器和数据库等敏感服务。

在Linux系统中配置加密通信通常涉及使用SSH(Secure Shell)和TLS/SSL(Transport Layer Security/Secure Sockets Layer)等协议来确保通信的安全性。下面是一些配置加密通信的案例:

  1. 使用SSH加密远程访问

SSH是一种加密的远程访问协议,用于安全地连接到远程服务器。以下是一些配置SSH加密通信的案例:

  • 生成SSH密钥对(如果尚未生成):
ssh-keygen -t rsa -b 4096

  • 将公钥复制到远程服务器:
ssh-copy-id username@remote_host

  • 禁用SSH密码登录(仅允许密钥登录):
    编辑SSH配置文件 /etc/ssh/sshd_config,确保以下设置生效:
PasswordAuthentication no

  • 重新加载SSH服务以使更改生效:
sudo systemctl reload sshd

现在,你可以使用SSH密钥对进行加密的远程访问。

  1. 配置Web服务器的TLS/SSL加密通信

如果你在Linux上运行Web服务器(如Apache或Nginx),可以配置TLS/SSL证书以加密通信。以下是一个基本的配置示例:

  • 安装Let’s Encrypt证书(以certbot为例):
sudo apt update
sudo apt install certbot python3-certbot-apache
sudo certbot --apache

  • 配置HTTP到HTTPS的重定向(可选):
    在Web服务器配置文件中添加重定向规则,将HTTP流量重定向到HTTPS。例如,在Apache上编辑配置文件 /etc/apache2/sites-available/000-default.conf,添加以下内容:
<VirtualHost *:80>
    ServerName your_domain.com
    Redirect permanent / https://your_domain.com/
</VirtualHost>

  • 重新加载Web服务器以使更改生效:
sudo systemctl reload apache2

  1. 使用OpenVPN配置加密通信

如果你需要在Linux上配置VPN(Virtual Private Network)来实现加密通信,可以使用OpenVPN。以下是一个简单的配置示例:

  • 安装OpenVPN:
sudo apt update
sudo apt install openvpn

  • 创建OpenVPN配置文件并编辑:
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo nano /etc/openvpn/server.conf

  • 修改配置文件中的加密参数,例如:
cipher AES-256-CBC
auth SHA256

  • 启动OpenVPN服务并设置开机自启动:
sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server

以上是一些常见的在Linux系统上配置加密通信的案例。这些配置可以帮助你确保网络通信的安全性和隐私性。请根据实际需求和环境进行调整和配置。

  1. 安装安全软件
    安装并配置安全软件,如入侵检测系统(IDS)、入侵防御系统(IPS)、恶意软件扫描器等,用于实时监测和阻止安全威胁。

安装安全软件在Linux系统中通常涉及到防病毒软件、防火墙、入侵检测系统(IDS)、漏洞扫描工具等。以下是一些常见安全软件的安装操作详解:

  1. ClamAV - 防病毒软件

ClamAV是一个开源的防病毒软件,适用于Linux系统。安装ClamAV的步骤如下:

  • 使用包管理器安装ClamAV(例如,对于Debian/Ubuntu系统):
sudo apt update
sudo apt install clamav

  • 定期更新病毒数据库:
sudo freshclam

  • 扫描文件或目录:
clamscan -r /path/to/directory

  1. UFW - Uncomplicated Firewall

UFW是一个简单易用的防火墙管理工具,适用于大多数Linux发行版。以下是安装UFW的步骤:

  • 使用包管理器安装UFW(例如,对于Debian/Ubuntu系统):
sudo apt update
sudo apt install ufw

  • 启用UFW:
sudo ufw enable

  • 配置防火墙规则,例如允许SSH访问:
sudo ufw allow ssh

  1. Snort - 入侵检测系统(IDS)

Snort是一个流行的开源入侵检测系统,用于监视网络流量并检测潜在的攻击。以下是安装Snort的步骤:

  • 安装Snort和相关依赖(具体依赖可能因系统版本而异):
sudo apt update
sudo apt install snort

  • 配置Snort规则和配置文件,可以根据需要自定义规则和配置。
  1. OpenVAS - 漏洞扫描工具

OpenVAS是一个开源的漏洞扫描工具,用于发现系统中的漏洞和安全问题。以下是安装OpenVAS的步骤:

  • 安装OpenVAS(对于Debian/Ubuntu系统):
sudo apt update
sudo apt install openvas

  • 初始化OpenVAS并启动服务:
sudo openvas-setup
sudo systemctl start openvas-scanner
sudo systemctl start openvas-manager

  • 使用Web界面访问OpenVAS控制台,并进行漏洞扫描和报告生成。

请注意,以上步骤是一般的安装和配置过程,具体操作可能会因Linux发行版、版本和软件包管理器而有所不同。建议在安装和配置安全软件时参考官方文档或指南,并根据实际需求进行调整和配置。同时,定期更新软件和数据库是保持系统安全性的重要步骤之一。

  1. 备份和恢复
    定期备份系统和重要数据,并确保备份数据的安全存储,以便在发生安全事件或数据丢失时能够及时恢复。

在Linux系统中,备份和恢复是非常重要的操作,可以帮助你保护数据并在需要时快速恢复系统或文件。以下是备份和恢复操作的详细步骤:

1. 文件和目录备份
1.1 使用 tar 命令备份文件和目录:
tar -cvzf backup.tar.gz /path/to/directory

  • -c:创建新的备份文件。
  • -v:显示备份过程中的详细信息。
  • -z:使用 gzip 压缩备份文件。
  • -f:指定备份文件的名称。
1.2 使用 rsync 命令同步文件和目录:
rsync -av /source/path /destination/path

  • -a:保持文件属性和权限。
  • -v:显示详细输出。
  • --delete:删除目标路径中不存在于源路径中的文件。
2. 完整系统备份
2.1 使用 tar 和 rsync 备份整个系统:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

限。

  • -v:显示详细输出。
  • --delete:删除目标路径中不存在于源路径中的文件。
2. 完整系统备份
2.1 使用 tar 和 rsync 备份整个系统:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-EFlmJN4g-1715531119851)]

[外链图片转存中…(img-5D6zouge-1715531119852)]

[外链图片转存中…(img-MFbRE9Au-1715531119852)]

[外链图片转存中…(img-RP2ho9Df-1715531119852)]

[外链图片转存中…(img-ORX06pRg-1715531119853)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值