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


这个命令将列出系统中所有正在监听的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

* 修改配置文件中的加密参数,例如:

 

cipher AES-256-CBC
auth SHA256

* 启动OpenVPN服务并设置开机自启动:

 

sudo systemctl start openvpn@server
sudo systemctl enable openvpn@server



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


9. **安装安全软件**:  
 安装并配置安全软件,如入侵检测系统(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



2. **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



3. **Snort - 入侵检测系统(IDS)**:


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


* 安装Snort和相关依赖(具体依赖可能因系统版本而异):

 

sudo apt update
sudo apt install snort

* 配置Snort规则和配置文件,可以根据需要自定义规则和配置。


4. **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发行版、版本和软件包管理器而有所不同。建议在安装和配置安全软件时参考官方文档或指南,并根据实际需求进行调整和配置。同时,定期更新软件和数据库是保持系统安全性的重要步骤之一。


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


在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 备份整个系统:



tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system /



rsync -av --exclude=/backup.tar.gz --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media --exclude=/lost+found --exclude=/var/cache/apt/archives / /path/to/backup


这些命令会备份整个系统,但排除了不需要备份的文件和目录,例如备份文件自身、临时目录、挂载点等。


#### 3. 数据库备份和恢复


##### 3.1 MySQL/MariaDB 数据库备份和恢复:


备份数据库:



mysqldump -u username -p database_name > backup.sql


恢复数据库:



mysql -u username -p database_name < backup.sql

最后

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

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

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

img

img

img

img

img

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

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

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

rname -p database_name > backup.sql


恢复数据库:



mysql -u username -p database_name < backup.sql

最后

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

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

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

[外链图片转存中…(img-GHNpENxo-1715531087951)]

[外链图片转存中…(img-gP02NdxD-1715531087952)]

[外链图片转存中…(img-V5XyShON-1715531087952)]

[外链图片转存中…(img-NoX221QJ-1715531087952)]

[外链图片转存中…(img-mLefbeeX-1715531087953)]

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

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

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

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值