Linux 操作系统安全加固措施

# Linux 操作系统安全加固措施

1.定期更新系统和软件包

定期更新操作系统和软件包可以保持系统最新,以修复已知的安全漏洞和弱点。您可以使用以下命令在 CentOS 上更新软件包:

sudo yum update

2.禁用不必要的服务

禁用不必要的服务可以减少系统暴露在攻击风险之下的机会。您可以使用以下命令列出所有正在运行的服务:

systemctl list-unit-files --type=service
然后,您可以使用以下命令禁用任何不必要的服务:

sudo systemctl disable <服务名称>

3.安装并启用防火墙

防火墙是保护 Linux 系统的重要组成部分。您可以使用以下命令在 CentOS 上安装 firewalld:

sudo yum install firewalld
然后,您可以使用以下命令启动和启用 firewalld:

sudo systemctl start firewalld
sudo systemctl enable firewalld

4.禁止 root 用户 SSH 登录

禁止 root 用户 SSH 登录可以减少暴露在恶意攻击风险之下的机会。您可以使用以下命令修改 SSH 配置文件:

sudo vi /etc/ssh/sshd_config
在文件中找到 PermitRootLogin yes 行,并将其更改为 PermitRootLogin no。然后,重新启动 SSH 服务:

sudo systemctl restart sshd

5.配置强密码策略

强密码策略可以防止使用弱密码对系统进行攻击。您可以使用以下命令安装 cracklib 库和 pam_pwquality 模块:

sudo yum install cracklib pam_pwquality
然后,您可以使用以下命令编辑
/etc/pam.d/system-auth 文件,以添加密码策略:

sudo vi /etc/pam.d/system-auth
在文件中找到以下行,并进行修改:

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
添加以下内容:

minlen=14 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
然后,保存并退出文件。

6.禁用不必要的系统用户

禁用不必要的系统用户可以减少系统面临的攻击风险。您可以使用以下命令禁用不必要的用户:

sudo usermod -s /sbin/nologin <用户名>
例如,禁用 apache 用户:

sudo usermod -s /sbin/nologin apache

7.限制文件和目录权限

限制文件和目录权限可以防止未经授权的访问和修改。以下是一些常见的文件和目录权限设置:

为目录设置 700 权限: chmod 700 <目录>
为文件设置
600 权限: chmod 600 <文件>
为 SUID 文件设置
4755 权限: chmod 4755 <文件>
为 SGID 文件设置
2755 权限: chmod 2755 <文件>
为 Sticky Bit 目录设置
1777 权限: chmod 1777 <目录>

8.配置 SELinux

SELinux 是一种强制访问控制机制,可防止未经授权的访问和操作。您可以使用以下命令安装 SELinux:

sudo yum install selinux-policy selinux-policy-targeted
然后,您可以使用以下命令启用 SELinux:

sudo setenforce 1

9.禁用 IPv6

禁用 IPv6 可以减少系统受到攻击的机会。您可以使用以下命令编辑 /etc/sysctl.conf 文件:

sudo vi /etc/sysctl.conf
在文件底部添加以下行:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6
= 1
然后,保存并退出文件。

10.定期备份数据

定期备份数据可以保护您的数据免受灾难性事件和安全漏洞的影响。您可以使用以下命令将数据备份到远程服务器或本地存储设备:

rsync -avz --delete <源目录> <目标目录>

11.安装防病毒软件

安装防病毒软件可以帮助检测和清除病毒和恶意软件,从而保护您的系统和数据。您可以选择市场上广泛使用的防病毒软件,例如 ClamAV 或 Sophos。

12.配置 SSH

SSH 是远程登录的主要方式,但它也是黑客攻击的一个重要入口。以下是一些安全配置 SSH 的建议:

禁用 SSH root 登录:在 /etc/ssh/sshd_config 文件中设置 PermitRootLogin no。
更改 SSH 端口:在
/etc/ssh/sshd_config 文件中设置 Port <新端口号>
配置 SSH 公钥认证:在 SSH 客户端上生成公钥和私钥,然后将公钥上传到服务器,将私钥保留在客户端。
禁用 SSH
1:在 /etc/ssh/sshd_config 文件中设置 Protocol 2
启用 SSH 会话超时:在
/etc/ssh/sshd_config 文件中设置 ClientAliveInterval 300 和 ClientAliveCountMax 0
配置 Fail2Ban:Fail2Ban 可以监视 SSH 登录尝试,当有多次失败的登录尝试时,它会暂时禁止来源 IP 的访问。

13.配置审计

配置审计可以跟踪系统和应用程序活动,并为您提供有关访问和操作的详细信息。您可以使用以下命令安装审计工具:

sudo yum install auditd
然后,您可以使用以下命令编辑
/etc/audit/auditd.conf 文件:

sudo vi /etc/audit/auditd.conf
在文件中找到并取消注释以下行:

max_log_file_action = ROTATE

space_left_action = SYSLOG

admin_space_left_action = SUSPEND

https://deepinout.com/linux-cmd/linux-audit-system-related-cmd/linux-cmd-auditctl.html

14.安装和配置防火墙

防火墙可以帮助防止未经授权的访问和攻击。您可以使用以下命令安装和配置防火墙:

sudo yum install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --permanent --zone=public --add-port=<端口号>/tcp
sudo firewall-cmd --reload
第一行命令安装防火墙,第二行命令启用防火墙,第三行命令启动防火墙。第四行命令允许 HTTP 和 HTTPS 流量,第五行命令允许指定端口的流量。最后一行命令重新加载防火墙规则。

15.安装和配置 IDS/IPS

IDS/IPS 是入侵检测和预防系统,可以监视网络流量并检测潜在的攻击。您可以使用以下命令安装和配置 IDS/IPS:

sudo yum install snort
sudo snort -T -c /etc/snort/snort.conf
sudo systemctl enable snort
sudo systemctl start snort
第一行命令安装 Snort,一个广泛使用的 IDS
/IPS 工具。第二行命令测试 Snort 配置是否正确。第三行和第四行命令启用并启动 Snort 服务。

https://blog.leonshadow.cn/763482/1255.html

16.配置 SELinux

SELinux(Security-Enhanced Linux)是一种强制访问控制机制,可以限制进程的访问权限,防止恶意进程的执行。在 CentOS 中,SELinux 默认是开启的。您可以使用以下命令配置 SELinux:

sudo setenforce 1
sudo vi /etc/selinux/config
第一行命令开启 SELinux。第二行命令编辑
/etc/selinux/config 文件,并将 SELINUX 的值设置为 enforcing,以确保 SELinux 在系统重启后仍然保持开启状态。

17.配置 sudo

sudo 可以授予普通用户执行特权命令的权限。为了防止滥用,应该限制哪些用户可以使用 sudo,以及哪些命令可以使用 sudo。您可以使用以下命令编辑 /etc/sudoers 文件:

添加以下行,以允许 username 用户使用 command 命令:

username ALL=(ALL) command

18.禁用不必要的服务

不必要的服务可能存在漏洞,或者可能被黑客用来入侵系统。因此,您应该禁用不必要的服务。您可以使用以下命令列出正在运行的服务:

sudo systemctl list-unit-files --type=service --state=running
然后,您可以使用以下命令禁用服务:

sudo systemctl disable service-name
其中,service
-name 是要禁用的服务的名称。

19.配置 SSH 隧道

SSH 隧道可以加密和保护通过公共网络传输的数据。您可以使用以下命令创建 SSH 隧道:

ssh -L <本地端口>:<目标地址>:<目标端口> <SSH 服务器地址>
其中,本地端口 是您本地计算机上要使用的端口,目标地址 是要访问的目标地址,目标端口 是要访问的目标端口,SSH 服务器地址 是 SSH 服务器的地址。

20.安装并使用加密工具

加密工具可以帮助加密和保护敏感数据,例如加密文件、加密邮件和加密聊天。您可以选择使用市场上广泛使用的加密工具,例如 GnuPG 或 OpenSSL。

21.配置系统日志

系统日志可以记录重要事件和错误,以便在需要时进行故障排除。您可以使用以下命令配置系统日志:

sudo vi /etc/rsyslog.conf
然后,您可以将以下行添加到 rsyslog.conf 文件中,以将系统日志记录到
/var/log/messages 文件中:

*.info;mail.none;authpriv.none;cron.none /var/log/messages

22.定期备份数据

数据备份是防止数据丢失和恢复数据的重要步骤。您应该定期备份数据,并将备份文件存储在安全的位置。您可以使用以下命令备份文件:

tar -czvf backup.tar.gz /path/to/backup
其中,
/path/to/backup 是要备份的文件夹的路径,backup.tar.gz 是要创建的备份文件的名称。

23.定期更新系统和应用程序

定期更新系统和应用程序是保持系统安全的重要步骤。您可以使用以下命令更新系统和应用程序:

sudo yum update

24.定期进行漏洞扫描和安全评估

定期进行漏洞扫描和安全评估是发现潜在漏洞和安全问题的重要步骤。您可以使用市场上广泛使用的漏洞扫描和安全评估工具,例如 OpenVAS 或 Nessus。

25.配置访问控制列表 (ACLs)

访问控制列表 (ACLs) 可以帮助您控制用户或用户组对特定文件或目录的访问权限。您可以使用以下命令设置 ACL:

setfacl -m u:<user>:<permissions> <file/directory>
其中
<user> 是用户的用户名,<permissions> 是要授予的权限,<file/directory> 是要设置 ACL 的文件或目录。例如,以下命令将用户 john 添加到 /var/www/html 目录的 ACL,并授予读取和写入权限:

setfacl -m u:john:rw /var/www/html

26.禁用不必要的服务和端口

Linux 操作系统默认启动许多服务和端口,这些服务和端口可能存在安全风险。您可以使用以下命令检查系统上正在运行的服务和端口:

sudo netstat -tulpn
然后,您可以禁用不必要的服务和端口,以提高系统安全性。

27.配置 SELinux

SELinux 是 Linux 操作系统的一个强制访问控制 (MAC) 机制,它可以帮助您保护系统免受恶意代码和攻击。您可以使用以下命令配置 SELinux:

arduino
Copy code
sudo vi /etc/selinux/config
然后,您可以将 SELINUX 设置为 enforcing,并重新启动系统:

SELINUX=enforcing

28.配置 SSH

SSH 是一种安全远程登录协议,它可以帮助您在网络上安全地远程登录 Linux 系统。您可以使用以下命令配置 SSH:

sudo vi /etc/ssh/sshd_config
然后,您可以禁用密码身份验证,并启用密钥身份验证:

PasswordAuthentication no
PubkeyAuthentication yes

29.配置防火墙

Linux 操作系统默认启用防火墙,但您可以使用以下命令检查防火墙状态:

sudo systemctl status firewalld
如果防火墙未启用,则可以使用以下命令启用防火墙:

sudo systemctl enable firewalld
然后,您可以使用以下命令添加防火墙规则:

css
Copy code
sudo firewall-cmd --add-port=<port>/tcp --permanent
sudo firewall-cmd --reload
其中
<port> 是要开放的端口号。

 

posted @ 2023-05-17 15:27  Leonardo-li  阅读(487)  评论(0编辑  收藏  举报