23 个 CentOS 服务器强化安全提示 - 第 2 部分23 个 CentOS 服务器强化安全提示 - 第 2 部分23 个 CentOS 服务器强化安全提示 - 第 2 部分23 个 CentOS 服务器强化安全提示 - 第 2 部分
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

23 个 CentOS 服务器强化安全提示 - 第 2 部分

继续上一篇关于如何保护和强化 CentOS 服务器的教程,在本文中,我们将讨论以下清单中列出的其他安全提示。

要求

  1. 20 个 CentOS 服务器强化安全提示 – 第 1 部分

21.禁用无用的SUID和SGID命令

如果在二进制程序上设置了 setuid 和 setgid 位,这些命令可以使用其他用户或组权限运行任务,例如 root 权限可能暴露严重的安全问题。

通常,缓冲区溢出攻击可以利用此类可执行二进制文件以 root 高级用户的权限运行未经授权的代码。

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

要取消设置 setuid 位,请执行以下命令:

chmod u-s /path/to/binary_file

要取消设置 setgid 位,请运行以下命令:

chmod g-s /path/to/binary_file

22.检查无主文件和目录

必须删除不属于有效帐户的文件或目录,或为其分配用户和组的权限。

发出以下 find 命令来列出没有用户和组的文件或目录。

find / -nouser -o -nogroup -exec ls -l {} \;

23. 列出世界可写文件

在系统上保留全局可写的文件可能很危险,因为任何人都可以修改它们。执行以下命令以显示可字写入的文件,但符号链接除外,它们始终是全局可写的。

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. 创建强密码

创建至少包含八个字符的密码。密码必须包含数字、特殊字符和大写字母。使用pwmake从/dev/urandom文件生成128位的密码。

pwmake 128

25.应用强密码策略

通过在 /etc/pam.d/passwd 文件中添加以下行来强制系统使用强密码。

password required pam_pwquality.so retry=3

添加上面这行,输入的密码不能包含超过 3 个单调序列的字符,例如 abcd,也不能包含超过 3 个相同的连续字符,例如 第1111章

要强制用户使用最小长度为 8 个字符(包括所有类别的字符)的密码,请对字符序列和连续字符进行强度检查,将以下行添加到 /etc/security /pwquality.conf 文件。

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26.使用密码时效

chage命令可用于用户密码老化。要将用户的密码设置为在 45 天后过期,请使用以下命令:

chage -M 45 username

要禁用密码过期时间,请使用以下命令:

chage -M -1 username

通过运行以下命令强制密码立即过期(用户必须在下次登录时更改密码):

chage -d 0 username

27. 锁定账户

可以通过执行 passwd 或 usermod 命令来锁定用户帐户:

passwd -l username
usermod -L username

要解锁帐户,请使用 passwd 命令的 -u 选项和 usermod 的 -U 选项。

28. 阻止帐户 Shell 访问

要防止系统帐户(普通帐户或服务帐户)访问 bash shell,请将 root shell 更改为 /usr/sbin/nologin 或 /bin/false通过发出以下命令来创建 /etc/passwd 文件:

usermod -s /bin/false username

要在创建新用户时更改 shell,请发出以下命令:

useradd -s /usr/sbin/nologin username

29. 使用 vlock 锁定虚拟用户控制台

vlock 是一款用于在 Linux 控制台上锁定多个会话的程序。安装程序并通过运行以下命令开始锁定终端会话:

yum install vlock
vlock

30.使用集中式系统来管理帐户和身份验证

使用集中式认证系统可以大大简化账户管理和控制。可以提供此类帐户管理的服务包括 IPA Server、LDAP、Kerberos、Microsoft Active Directory、Nis、Samba ADS 或 Winbind。

默认情况下,其中一些服务通过加密协议和对称密钥加密技术(例如 Kerberos)受到高度保护。

31. 强制以只读方式安装 USB 介质

使用blockdev实用程序,您可以强制将所有可移动媒体安装为只读。例如,在 /etc/udev/rules.d/ 目录中创建一个名为 80-readonly-usb.rules 的新 udev 配置文件包含以下内容:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

然后,使用以下命令应用规则:

udevadm control -reload

32. 通过 TTY 禁用 Root 访问

要防止 root 帐户通过所有控制台设备 (TTY) 执行系统登录,请以 root 身份在终端提示符下键入以下命令来删除 securetty 文件的内容。

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

请记住,此规则不适用于 SSH 登录会话
要阻止 root 通过 SSH 登录,请编辑文件 /etc/ssh/sshd_config 并添加以下行:

PermitRootLogin no

33.使用POSIX ACL扩展系统权限

访问控制列表不仅可以为单个用户或组定义访问权限,还可以指定程序、进程、文件和目录的权限。如果对目录设置 ACL,其后代将自动继承相同的权限。

例如,

setfacl -m u:user:rw file
getfacl file

34. 在强制模式下设置 SELinux

Linux 内核的 SELinux 增强功能实现了强制访问控制 (MAC) 策略,允许用户定义安全策略,为所有用户、程序、进程、文件和设备提供精细的权限。

内核的访问控制决策基于所有与安全相关的上下文,而不是基于经过身份验证的用户身份。

要获取 Selinux 状态并执行策略,请运行以下命令:

getenforce
setenforce 1
sestatus

35.安装SELinux附加实用程序

安装 policycoreutils-python 软件包,它提供了用于操作 SELinux 的附加 Python 实用程序:audit2allow、audit2why、chcat 和语义管理。

要显示所有布尔值以及简短说明,请使用以下命令:

semanage boolean -l

例如,要显示和设置httpd_enable_ftp_server的值,请运行以下命令:

getsebool httpd_enable_ftp_server

要使布尔值在重新启动后保持不变,请将 -P 选项指定为 setsebool,如以下示例所示:

setsebool -P httpd_enable_ftp_server on

36.使用集中式日志服务器

配置rsyslog守护进程将敏感实用程序日志消息发送到集中式日志服务器。另外,借助 logwatch 实用程序监视日志文件。

将日志消息发送到远程服务器可确保一旦系统受到损害,恶意用户就无法完全隐藏其活动,总是在远程日志文件上留下痕迹。

37.启用进程记帐

通过安装 psacct 实用程序启用进程记帐,并使用 lastcomm 命令显示系统记帐文件中记录的先前执行的命令的信息,并使用 sa 总结记录的先前执行的命令的信息在系统记帐文件中。

38. 强化/etc/sysctl.conf

使用以下内核参数规则来保护系统:

禁用源路由

net.ipv4.conf.all.accept_source_route=0

禁用 IPv4 转发

ipv4.conf.all.forwarding=0

禁用 IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

除非特别需要,否则禁用 ICMP 重定向数据包的接受和发送。

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

禁用反向路径转发

net.ipv4.conf.all.rp_filter=2

忽略所有 ICMP 回显请求(设置为 1 启用)

net.ipv4.icmp_echo_ignore_all = 0

39. 使用 VPN 服务通过不受保护的公共网络访问您的场所

运营商始终使用 VPN 服务通过互联网远程访问 LAN 场所。此类服务可以使用免费的开源解决方案(例如 OpenVPN)或使用专有解决方案(例如 Cisco VPN)进行配置(安装 Epel Repositories 提供的 vpnc 命令行实用程序)。

40. 执行外部系统扫描

使用特定工具通过 LAN 远程点扫描系统,评估系统安全性是否存在漏洞:

  1. Nmap – 网络扫描仪 29 Nmap 命令示例
  2. Nessus – 安全扫描器
  3. OpenVAS – 用于扫描漏洞和进行全面的漏洞管理。
  4. Nikto – 一款出色的通用网关接口 (CGI) 脚本扫描程序 扫描 Linux 中的 Web 漏洞

41. 内部保护系统

使用内部系统保护来防御病毒、rootkit、恶意软件,并且作为良好实践,安装可以检测未经授权的活动(DDOS 攻击、端口扫描)的入侵检测系统,例如:

  1. AIDE – 高级入侵检测环境 – http://aide.sourceforge.net/
  2. ClamAV – 防病毒扫描程序 https://www.clamav.net
  3. Rkhunter – Rootkit 扫描程序
  4. Lynis – Linux 安全审计和扫描工具
  5. Tripwire – 安全性和数据完整性 http://www.tripwire.com/
  6. Fail2Ban – 入侵网络防御
  7. OSSEC – (HIDS) 基于主机的入侵检测系统 http://ossec.github.io/
  8. Mod_Security – 保护暴力或 DDoS 攻击

42.修改用户环境变量

通过发出以下命令附加日期和时间格式来存储命令执行情况:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

每次键入命令时强制立即记录HISTFILE(而不是注销):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

限制登录会话超时。当空闲时间段内没有执行任何活动时,自动拆除 shell。自动断开 SSH 会话非常有用。

echo ‘TMOUT=120’ >> .bashrc

通过执行以下命令应用所有规则:

source .bashrc

43. 备份数据

使用备份实用程序(例如 tar、cat、rsync、scp、LVM 快照等)来存储系统的副本(最好是异地存储),以防系统出现故障。

如果系统受到威胁,您可以从以前的备份中执行数据恢复。

最后,不要忘记,无论您采取多少安全措施和对策来保证系统安全,只要您的机器已插入电源并开机,您就永远不会 100% 完全安全。

©2015-2025 艾丽卡 support@alaica.com