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

sudo apt update && sudo apt upgrade -y


这个命令会先更新可用的软件包列表,然后再升级所有已安装的软件包到最新版本。


2. 使用DNF包管理器(适用于Fedora系统):



sudo dnf check-update
sudo dnf upgrade -y


首先使用`dnf check-update`命令检查可用更新,然后使用`dnf upgrade -y`命令升级所有可用的软件包。


3. 使用YUM包管理器(适用于老版本的Red Hat Enterprise Linux、CentOS等系统):



sudo yum check-update
sudo yum upgrade -y


类似地,首先使用`yum check-update`命令检查可用更新,然后使用`yum upgrade -y`命令升级所有可用的软件包。


4. 使用Snap包管理器(适用于Ubuntu和其他Linux发行版):



sudo snap refresh


这个命令会更新所有已安装的Snap软件包到最新版本。


5. 使用Flatpak包管理器:



flatpak update


这个命令会更新所有已安装的Flatpak软件包到最新版本。


6. 定时任务(Cron Job):


你还可以设置定时任务来定期执行系统和软件更新。比如,你可以创建一个每天自动更新系统的定时任务。


首先,打开Cron配置文件:



crontab -e


然后,在文件中添加以下行来设置每天自动更新系统的任务:



0 0 * * * sudo apt update && sudo apt upgrade -y


这个任务将在每天的午夜执行系统更新和软件升级。


请注意,使用sudo命令来运行更新命令可能需要输入密码,你可以根据需要进行相应的配置,以便在不需要密码的情况下运行这些命令。


以上是一些常见的Linux系统和软件更新命令案例及定时任务设置。你可以根据自己的需求和系统环境选择合适的方法来进行系统和软件更新。


2. **启用防火墙**:  
 配置防火墙规则,限制进入和离开系统的网络流量,只允许必要的服务和端口。  
 在Linux系统上启用防火墙通常涉及使用防火墙管理工具,如iptables(传统的Linux防火墙工具)或者更现代化的firewalld(用于CentOS/RHEL 7及更新版本的默认防火墙管理工具)。以下是一些针对firewalld的配置案例:
3. 查看防火墙状态:



sudo firewall-cmd --state


此命令将显示防火墙的当前状态,以确保是否已经启用了防火墙。


2. 启用防火墙并设置开机自启动:



sudo systemctl start firewalld
sudo systemctl enable firewalld


这将启用防火墙并设置在系统启动时自动启动防火墙服务。


3. 查看防火墙规则:



sudo firewall-cmd --list-all


这个命令将显示当前防火墙的所有规则,包括允许的服务、端口以及其他配置信息。


4. 允许特定服务或端口通过防火墙:



sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent


这里,我们允许HTTP服务和TCP端口8080通过防火墙。`--permanent`参数将这些规则永久性地保存在防火墙配置中,以便重启后仍然有效。


5. 重新加载防火墙配置:



sudo firewall-cmd --reload


这个命令会重新加载防火墙配置,使最新的更改生效。


6. 查看防火墙日志:



sudo journalctl -u firewalld


这个命令将显示防火墙的日志,可以用来查看防火墙活动和事件。


以上是针对firewalld的一些常见防火墙配置案例。请注意,实际的防火墙配置可能因系统版本、需求和网络环境而有所不同,建议根据具体情况进行调整和配置。


3. **禁用不必要的服务和端口**:  
 关闭不需要的网络服务和端口,减少系统暴露的攻击面。


禁用不必要的服务和端口可以帮助提高系统的安全性和性能。以下是一些常见的在Linux系统上禁用不必要服务和端口的操作案例:


1. 查看当前开启的服务列表:



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


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


2. 禁用不必要的服务:



sudo systemctl stop <service_name>
sudo systemctl disable <service_name>


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


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



sudo systemctl stop ssh
sudo systemctl disable ssh


3. 查看当前开放的端口:



sudo netstat -tuln


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


4. 禁用不必要的端口:


要禁用某个端口,你可以使用防火墙工具(如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


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


4. **配置SSH安全**:


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

 

Port 2222

 然后重新加载SSH服务:

 

sudo systemctl reload sshd

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

 

PermitRootLogin no

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

 

AllowUsers username1 username2

 或者

 

AllowGroups groupname

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

 

PubkeyAuthentication yes
PasswordAuthentication no

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

 

MaxAuthTries 3

10. **限制SSH登录IP范围**:  
 如果只有特定IP地址或地址段需要访问SSH,可以通过配置`AllowTcpForwarding`和`GatewayPorts`项来限制。例如,允许特定IP段访问SSH:

 

AllowTcpForwarding no
GatewayPorts no
Match Address 192.168.1.0/24
AllowUsers username1

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

 

AllowAgentForwarding yes

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


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


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


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



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


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


2. **修改密码策略**:


接下来,你可以根据实际需求修改密码策略。编辑 `/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次使用的密码。


3. **应用新的密码策略**:


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



sudo pam-auth-update


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


4. **设置密码过期策略**:


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



sudo chage -M 90 username


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


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


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


在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



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


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



journalctl


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


2. **筛选特定服务或单元的日志**:



journalctl -u service_name


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


3. **按时间范围查看日志**:



journalctl --since “2023-01-01” --until “2023-12-31”


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


4. **使用 grep 筛选关键词**:



journalctl | grep “error”


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


5. **监控系统日志文件**:



tail -f /var/log/syslog


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


6. **监控安全日志文件**:



tail -f /var/log/auth.log


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


7. **监控应用程序日志**:


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



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


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


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


8. **加密通信**:  
 使用 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密钥对进行加密的远程访问。


2. **配置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/

* 重新加载Web服务器以使更改生效:

 

sudo systemctl reload apache2



3. **使用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

最后

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

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

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

img

img

img

img

img

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

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

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

g-files/server.conf.gz /etc/openvpn/
sudo gzip -d /etc/openvpn/server.conf.gz
sudo nano /etc/openvpn/server.conf

最后

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

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

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

[外链图片转存中…(img-t9L0khDL-1715531056977)]

[外链图片转存中…(img-pHYXn9A9-1715531056978)]

[外链图片转存中…(img-Q8iaKTbQ-1715531056978)]

[外链图片转存中…(img-Ev5DW6KV-1715531056978)]

[外链图片转存中…(img-smXpm0oD-1715531056979)]

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值