sudo systemctl list-unit-files --type=service
这个命令将列出当前系统中所有的服务及其状态,你可以查看哪些服务是不必要的或者不需要启用的。
- 禁用不必要的服务:
sudo systemctl stop <service_name>
sudo systemctl disable <service_name>
将 <service_name>
替换为你要禁用的服务的名称。这个命令会停止指定的服务,并且设置为开机不自动启动。
例如,如果要禁用SSH服务:
sudo systemctl stop ssh
sudo systemctl disable ssh
- 查看当前开放的端口:
sudo netstat -tuln
这个命令将列出系统中所有正在监听的TCP和UDP端口,你可以查看哪些端口是不必要开放的。
- 禁用不必要的端口:
要禁用某个端口,你可以使用防火墙工具(如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
请注意,禁用不必要的服务和端口前,请确保你了解其对系统的影响,以免影响系统正常运行或需要的功能。建议在操作前备份重要数据,并根据实际需求进行调整。
-
配置SSH安全:
- 禁用root远程登录,使用普通用户登录后再切换到root。
- 禁用密码登录,使用公钥认证。
- 修改SSH端口,使用非默认端口来减少暴露风险。
- 配置登录失败次数限制,防止暴力破解攻击。
配置SSH的安全操作非常重要,特别是用于远程访问和管理Linux系统时。以下是一些关于如何配置SSH安全操作的详细步骤:
-
更改SSH默认端口:
默认情况下,SSH服务使用22号端口。为了增加安全性,可以更改为其他未被常规扫描器扫描的端口。编辑SSH配置文件/etc/ssh/sshd_config
,找到并修改Port
项,例如:
Port 2222
然后重新加载SSH服务:
sudo systemctl reload sshd
- 禁用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
- 限制SSH登录尝试次数:
通过配置MaxAuthTries
项来限制SSH登录尝试的次数,以防止暴力破解。在/etc/ssh/sshd_config
中添加或修改以下行:
MaxAuthTries 3
- 限制SSH登录IP范围:
如果只有特定IP地址或地址段需要访问SSH,可以通过配置AllowTcpForwarding
和GatewayPorts
项来限制。例如,允许特定IP段访问SSH:
AllowTcpForwarding no
GatewayPorts no
Match Address 192.168.1.0/24
AllowUsers username1
- 使用SSH密钥代理:
SSH密钥代理可以让你在多个SSH服务器之间传递密钥,而无需在每个服务器上重新输入密码。确保在客户端启用SSH代理,并在服务器端启用AllowAgentForwarding
项:
AllowAgentForwarding yes
- 定期更新SSH服务:
确保及时更新系统和SSH服务,以获取最新的安全补丁和功能改进。 - 监控SSH日志:
定期检查系统日志中的SSH登录记录,查看是否有异常活动或未经授权的访问尝试。 - 防火墙设置:
使用防火墙工具(如firewalld或iptables)限制SSH服务的访问,只允许来自指定IP范围的连接。 - 使用多因素身份验证(MFA):
对于对安全性要求极高的环境,可以考虑启用SSH的多因素身份验证(MFA),以增加安全性。
在执行任何更改之前,请务必备份重要的配置文件,并确保你有管理员权限和足够的了解来避免意外中断系统访问。
- 使用安全的密码策略:
要求用户使用复杂的密码,并定期更换密码。可以使用工具如pam_cracklib
来增强密码策略。
在Linux系统中,可以通过配置密码策略来增强系统的安全性,包括密码长度、复杂度、过期时间等方面的设置。以下是一些操作案例,展示如何配置安全的密码策略。 - 查看当前密码策略:
首先,你可以查看当前系统上的密码策略设置。在大多数Linux系统中,可以使用 pam_pwquality
模块来控制密码策略。使用以下命令查看当前的密码策略设置:
grep -E "^(min|max).\*(len|class|repeat|sequence)" /etc/security/pwquality.conf
这将显示当前系统中密码策略的相关参数,如最小长度、最大长度、允许的最大重复字符数、最大字符序列长度等。
- 修改密码策略:
接下来,你可以根据实际需求修改密码策略。编辑 /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次使用的密码。
- 应用新的密码策略:
完成修改后,重新加载PAM模块以应用新的密码策略:
sudo pam-auth-update
在配置过程中,系统可能会提示你选择使用的认证方式。确保选中“PAM密码强度约束”,以确保新的密码策略生效。
- 设置密码过期策略:
另一个安全实践是设置密码的过期时间。可以使用以下命令设置用户的密码过期时间:
sudo chage -M 90 username
将 username
替换为你要设置的用户名,上面的命令将设置用户的密码在90天后过期。你也可以使用 chage -l username
命令来查看当前用户的密码过期策略。
通过以上步骤,你可以配置一个相对安全的密码策略,包括密码长度、复杂度、过期时间等方面的设置。这些策略有助于增强系统的安全性,提高密码的复杂度和安全性。
- 限制文件和目录权限:
- 使用最小权限原则,给予用户和组合适当的权限。
- 避免给予文件和目录过大的权限,尤其是对于敏感文件。
在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
通过上述操作,你可以灵活地设置和限制文件和目录的权限,确保系统和数据的安全性。请根据实际需求和安全策略合理设置权限。
- 监控日志:
定期检查系统日志,查看异常登录、攻击尝试等安全事件,并及时做出响应。
在Linux系统中,监控日志是非常重要的,可以帮助你发现系统问题、安全事件和性能瓶颈。以下是一些常见的监控日志的案例: - 使用 journalctl 查看系统日志:
journalctl
这个命令会显示系统的全部日志,你可以使用 -f
参数来实时监控日志的变化。
- 筛选特定服务或单元的日志:
journalctl -u service_name
将 service_name
替换为你要监控的服务名称,这个命令会显示指定服务的日志。
- 按时间范围查看日志:
journalctl --since "2023-01-01" --until "2023-12-31"
这个命令可以按照指定的时间范围查看日志,可以根据需要调整起始时间和结束时间。
- 使用 grep 筛选关键词:
journalctl | grep "error"
这个命令可以筛选包含特定关键词的日志条目,例如筛选所有包含 “error” 的日志。
- 监控系统日志文件:
tail -f /var/log/syslog
这个命令可以实时监控系统的 syslog 日志文件,可以查看系统的各种事件和消息。
- 监控安全日志文件:
tail -f /var/log/auth.log
这个命令可以实时监控系统的 auth.log 日志文件,可以查看登录和认证相关的安全事件。
- 监控应用程序日志:
应用程序通常会将日志记录在特定的日志文件中,你可以使用 tail -f
命令实时监控这些日志文件,例如:
tail -f /var/log/nginx/error.log
这个命令可以实时监控 Nginx 服务器的错误日志。
总的来说,通过使用 journalctl 命令查看系统日志以及使用 tail 命令实时监控特定日志文件,你可以及时发现系统问题、安全事件或者应用程序的错误,有助于及时处理和排查问题。
- 加密通信:
使用 SSL/TLS 加密协议来保护网络通信,尤其是对于 Web 服务器和数据库等敏感服务。
在Linux系统中配置加密通信通常涉及使用SSH(Secure Shell)和TLS/SSL(Transport Layer Security/Secure Sockets Layer)等协议来确保通信的安全性。下面是一些配置加密通信的案例:
- 使用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密钥对进行加密的远程访问。
- 配置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
- 使用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系统上配置加密通信的案例。这些配置可以帮助你确保网络通信的安全性和隐私性。请根据实际需求和环境进行调整和配置。
- 安装安全软件:
安装并配置安全软件,如入侵检测系统(IDS)、入侵防御系统(IPS)、恶意软件扫描器等,用于实时监测和阻止安全威胁。
安装安全软件在Linux系统中通常涉及到防病毒软件、防火墙、入侵检测系统(IDS)、漏洞扫描工具等。以下是一些常见安全软件的安装操作详解:
- ClamAV - 防病毒软件:
ClamAV是一个开源的防病毒软件,适用于Linux系统。安装ClamAV的步骤如下:
- 使用包管理器安装ClamAV(例如,对于Debian/Ubuntu系统):
sudo apt update
sudo apt install clamav
- 定期更新病毒数据库:
sudo freshclam
- 扫描文件或目录:
clamscan -r /path/to/directory
- 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
- Snort - 入侵检测系统(IDS):
Snort是一个流行的开源入侵检测系统,用于监视网络流量并检测潜在的攻击。以下是安装Snort的步骤:
- 安装Snort和相关依赖(具体依赖可能因系统版本而异):
sudo apt update
sudo apt install snort
- 配置Snort规则和配置文件,可以根据需要自定义规则和配置。
- 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发行版、版本和软件包管理器而有所不同。建议在安装和配置安全软件时参考官方文档或指南,并根据实际需求进行调整和配置。同时,定期更新软件和数据库是保持系统安全性的重要步骤之一。
- 备份和恢复:
定期备份系统和重要数据,并确保备份数据的安全存储,以便在发生安全事件或数据丢失时能够及时恢复。
在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年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合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%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!