文章目录
一、系统安全概述
1.1、系统安全是什么
系统安全(System Security)是指保护计算机系统、网络和数据免受未经授权的访问、使用、披露、修改、破坏或中断的保护措施和机制;其目的是确保系统的可靠性、完整性和机密性,防止各种安全威胁和攻击。
1.2、系统安全类别
认证和授权
- 认证(Authentication):验证用户的身份,以确保只有授权用户可以访问系统和数据。
- 授权(Authorization):控制用户对系统和数据的访问权限,确保用户只能访问授权的资源。
访问控制
- 访问控制列表(Access Control List,ACL):定义用户或组对资源的访问权限。
- 角色基于访问控制(Role-Based Access Control,RBAC):根据用户的角色来控制访问权限。
- 属性基于访问控制(Attribute-Based Access Control,ABAC):根据用户的属性来控制访问权限。
加密
- 对称加密(Symmetric Encryption):使用同一个密钥来加密和解密数据。
- 非对称加密(Asymmetric Encryption):使用一对密钥来加密和解密数据,一个公钥和一个私钥。
- 数字签名(Digital Signature):使用非对称加密来验证数据的完整性和身份。
入侵检测和防御
- 入侵检测系统(Intrusion Detection System,IDS):检测未经授权的访问和攻击。
- 入侵防御系统(Intrusion Prevention System,IPS):检测和防止未经授权的访问和攻击。
病毒和恶意软件防御
- 防病毒软件(Antivirus Software):检测和清除病毒和恶意软件。
- 反恶意软件(Anti-Malware):检测和清除恶意软件。
网络安全
- 防火墙(Firewall):控制网络流量,防止未经授权的访问。
- 虚拟私人网络(Virtual Private Network,VPN):加密网络流量,防止窃听和截获。
数据备份和恢复
- 数据备份(Data Backup):将数据存储到安全的存储设备中,以防止数据丢失。
- 数据恢复(Data Recovery):从备份中恢复数据,以恢复系统和数据。
系统更新和补丁
- 系统更新(System Update):安装最新的系统软件和补丁,以修复漏洞和弱点。
- 补丁管理(Patch Management):安装和管理补丁,以确保系统安全。
安全政策和程序
- 安全政策(Security Policy):制定和执行安全政策,以确保系统安全。
- 安全程序(Security Procedure):制定和执行安全程序,以确保系统安全。
其他安全机制
- 身份验证(Identity Verification):验证用户的身份,以确保只有授权用户可以访问系统和数据。
- 认证代理(Authentication Agent):代理身份验证,以简化身份验证过程。
- 安全信息和事件管理(Security Information and Event Management,SIEM):收集、监控和分析安全相关的信息和事件,以检测和响应安全威胁。
1.3、系统安全的目标
- 保护系统和数据免受未经授权的访问和使用。
- 防止数据泄露和破坏。
- 确保系统的可靠性和可用性。
- 防止各种安全威胁和攻击。
- 满足相关法规和标准的要求。
二、windows安全配置
以下介绍五个windows中安全配置
2.1、用户账户控制(UAC)配置
用户帐户控制(UAC)是Windows操作系统中的一个重要安全功能,它通过限制恶意软件以管理员权限执行的能力来降低系统遭受未授权更改的风险。
- 通过控制面板或搜索功能可以快速访问UAC设置;在“用户帐户”下选择“更改用户帐户控制设置”,在这里可以调整通知级别。
-
通过移动滑块,可以选择不同的通知级别,从“从不通知”到“始终通知”;选择适合的级别,可以平衡安全性和便利性。
-
对于需要更精细控制的情况,可以通过本地组策略编辑器进行设置;使用快捷键Win+R打开运行窗口,输入gpedit.msc并回车。
-
在本地组策略编辑器中,依次导航至“计算机配置” > “Windows 设置” > “安全设置” > “本地策略” > “安全选项”,在右侧找到并双击打开相关UAC设置。
UAC配置
- 配置内置管理员帐户的管理员审批模式:设置“内置管理员帐户的管理员审批模式”为“已启用”,这样内置管理员帐户将使用管理员审批模式,任何需要特权提升的操作都会提示用户批准该操作。
- 配置管理员审批模式下管理员的提升提示行为:根据需要选择不同的提升提示行为,例如“在安全桌面上提示输入凭据”或“安全桌面上的同意提示”,这决定了当操作需要特权提升时,系统如何提示用户。
- 配置标准用户的提升提示行为:设置“标准用户的提升提示行为”,如“提示输入凭据”或“自动拒绝提升请求”,这影响了当标准用户执行需要特权提升的操作时系统的响应方式。
- 检测应用程序安装并提示提升:启用或禁用“检测应用程序安装并提示提升”,以控制是否在检测到需要特权提升的应用安装包时提示用户输入管理用户名和密码。
- 仅提升已签名和验证的可执行文件:通过启用或禁用此设置,可以对请求特权提升的任何交互式应用程序强制实施签名检查,确保只有受信任的应用才能获得更高权限。
- 仅提升安装在安全位置中的UIAccess应用程序:通过启用或禁用此设置,可以控制请求使用用户界面辅助功能(UIAccess)完整性级别运行的应用程序是否必须驻留在文件系统中的安全位置。
- 提示提升时切换到安全桌面:启用此设置后,无论管理员和标准用户的提示行为策略设置如何,所有提升请求都会转到安全桌面,这为用户提供了额外的安全层。
- 将文件和注册表写入失败虚拟化到每个用户位置:启用此设置后,应用写入失败在运行时重定向到文件系统和注册表的已定义用户位置,有助于减少权限过高的应用程序对系统的影响。
2.2、防火墙配置
Windows防火墙是Windows操作系统自带的网络安全工具,它通过控制进出计算机的网络流量来保护计算机免受未授权访问和网络攻击。
- 通过“控制面板”>“Windows Defender防火墙”来打开防火墙
- 配置文件:Windows防火墙支持域、专用和公共配置文件,这些设置基于每个配置文件设置设备行为。例如,公共网络环境下的设置会比专用网络更为严格;要想开启或关闭可以通过“设置”>“更新和安全”>“Windows 安全中心”及“防火墙和网络保护”来开启或关闭公共和专用网络
- 规则设置:高级设置中的规则配置允许用户创建入站和出站规则,以根据应用程序、协议、IP地址等条件允许或阻止流量。出站规则通常允许所有连接,但也可以按需进行配置。
其他防火墙配置
- 命令行管理:对于需要批量或自动化配置的场景,可以使用PowerShell和netsh.exe来管理Windows防火墙。这包括设置全局默认值、定义入站和出站操作、指定受保护的网络连接等。
- 组策略应用:在企业环境中,可以通过具有高级安全性的Windows防火墙控制台来使用组策略对象(GPO)配置Windows防火墙规则。
- 防御功能:Windows防火墙不仅提供数据过滤功能,还能防御来自内部网络和外部网络间的威胁。它可以控制哪些服务公开在网络上,并根据不同场景使用不同的配置文件。
- ICMP规则:有时候需要允许或阻止网络上的设备接收ICMP请求和响应,这时可以创建入站ICMP规则来实现这一需求。
- 端口过滤:通过入站和出站规则,Windows防火墙可以进行端口过滤,允许或阻止某些程序、协议和IP地址的网络连接。
2.3、BitLocker 配置
BitLocker配置是确保存储在Windows系统中的数据安全的重要手段。
- 系统版本和许可要求:BitLocker是Windows操作系统中的一个功能,主要用于加密存储设备以防止未授权的访问。要使用BitLocker,需要确保你的Windows版本支持此功能。通常,BitLocker在Windows 10专业版、企业版及教育版中可用。
- 硬件和软件需求:为了最大化BitLocker的保护能力,建议使用配备了受信任平台模块(TPM)1.2或更高版本的硬件。TPM是一个专门用于存储加密密钥和实现加密操作的芯片,可以提供硬件级别的安全防护。
- 在Windows系统中,可以通过控制面板中的“BitLocker管理”选项来启动和管理BitLocker;通过这个工具,可以实现加密、解密以及备份恢复密钥等操作;在启用BitLocker时,可以选择使用TPM加PIN、仅TPM或者TPM加启动密钥等不同方式来配置保护措施。
- 加密选项和性能影响:BitLocker使用的加密算法是AES(高级加密标准),提供了128位和256位两种密钥强度选择;虽然256位提供了更高的安全性,但也会对系统性能产生更大的影响;对于大多数用户来说,128位的加密已经足够安全,并且对性能的影响较小。
- 管理和维护:在使用BitLocker的过程中,可能会遇到需要禁用或更改配置的情况;例如,如果电脑需要维修或者硬盘升级,可能需要暂时禁用BitLocker;这时,可以通过控制面板中的BitLocker管理工具进行操作;同时,定期检查系统的BitLocker状态也是一个好习惯,以确保加密功能正常运行。
- 密钥管理和恢复:妥善保管恢复密钥是至关重要的;建议将密钥保存在安全的位置,如使用密码管理器或在纸上打印并存放在安全的地方;如果丢失了PIN或者硬件出现问题,恢复密钥将是解锁驱动器的唯一方式。
- 组策略和服务配置:对于企业用户,可以通过组策略(GPO)或配置服务提供程序(CSP)来统一管理和部署BitLocker策略;这可以帮助管理员更高效地管理大量设备的BitLocker设置,并根据需要调整策略。
- 兼容性和其他安全措施:在使用BitLocker的同时,还应考虑其他安全措施,如使用强密码、定期更新系统和应用程序等;这些措施可以与BitLocker一起形成多层次的防护,从而更全面地保护数据安全。
2.4、访问控制列表(ACL)配置
访问控制列表(ACL)配置是网络安全中的关键组成部分,它通过设定的规则对数据包进行过滤,以允许或拒绝网络流量。
基本概念和分类
- 定义与功能:访问控制列表是基于包过滤的访问控制技术,它可以对接口上的数据包进行过滤,根据设定的条件允许或拒绝数据包通过。
- 主要类型:ACL主要分为标准ACL和扩展ACL两种。标准ACL主要检查数据包的源地址,而扩展ACL则可以匹配源地址、目的地址、IP协议以及TCP、UDP等协议的具体端口号。
标准ACL配置
- 配置步骤:首先确定需要阻止或允许的源IP地址,然后使用access-list命令指定相关的规则。例如,使用access-list 1 deny 192.168.1.0 0.0.0.255来拒绝来自192.168.1.0/24网段的所有通信流量。
- 注意事项:在配置标准ACL时,应特别注意ACL末尾隐含的拒绝所有流量的规则。因此,至少需要有一条允许数据通过的规则语句,以避免所有数据包都被默认拒绝。
扩展ACL配置
- 配置步骤:扩展ACL提供了更细致的控制,可以根据源地址、目的地址及具体的协议和端口号进行配置。例如,若要允许所有目的端口为TCP 80端口的流量,可以使用命令access-list 100 permit tcp any any eq 80。
- 应用场景:扩展ACL因其高度的灵活性和控制力度,常用于复杂的网络环境中,如企业内部网络,以实现精细的访问控制策略。
2.5、Windows Update 配置
配置Windows Update是确保Windows操作系统保持最新状态的关键步骤,涉及多个方面和设置选项。
- 用户可以通过“设置”>“更新和安全”>“Windows Update”,在这里可以查看更新状态、进行手动检查更新以及修改一些基本设置。
- 在“Windows Update”设置页面中,用户可以进入“高级选项”,这里允许用户设定更新的安装方式,例如是否自动下载和安装更新,以及如何安排重启以应用更新。
- 处理更新问题:在遇到更新卡住或失败的情况时,可以尝试几种方法解决。如通过“高级启动”进入“安全模式”或者使用系统恢复点回滚到前一个状态来解决安装更新时遇到的问题。
- 禁用自动更新:对于需要关闭自动更新的情况,可以通过服务列表将Windows Update服务设置为手动启动或禁用,但这样做可能会错过重要的安全更新和功能改进,因此不建议长时间禁用。
- 优化存储空间:如果设备空间有限,可能需要先清理空间再进行更新。Windows提供了工具帮助管理和清除不必要的文件,以确保有足够的空间进行更新。
- 网络连接问题:在进行更新之前,确保设备具有稳定的网络连接。如果遇到网络问题,可以先解决网络故障后再尝试更新。
- 企业环境管理:在企业环境中,IT管理员可能需要使用组策略或其他管理工具来统一控制和部署更新,以确保所有设备符合企业的更新政策。
- 隐藏特定更新:如果某些更新不适用于特定的硬件或软件配置,Windows提供了隐藏更新的选项,以防止这些不兼容的更新被安装。
三、Linux安全配置
3.1、用户账号和密码安全
针对用户账号和密码的攻击是黑客入侵系统的主要手段之一。一个使用了弱密码(容易猜测或破解的密码)或设置了不适当权限的用户账号,将给系统留下重大的安全隐患,入侵者可以通过这些用户账号进入系统并进行权限扩张。所以,管理员应采取必要的技术手段强制用户使用强壮密码并定期更改,定期检查系统中的所有用户账号,删除或禁止不必要的用户、检查超级用户的唯一性等,保证系统用户账号和密码的安全。
- 在CentOS Stream中,创建用户账号可以通过useradd命令来完成。
[root@root ~]# useradd king
[root@root ~]# id king
uid=1000(king) gid=1000(king) groups=1000(king)
[root@root ~]# getent passwd king
king:x:1000:1000::/home/king:/bin/bash
- CentOS Stream系统中的用户账号信息主要存储在/etc/passwd和/etc/shadow两个文件中,/etc/passwd文件保存用户的基本信息,如用户名、用户ID(UID)、组ID(GID)等;而/etc/shadow文件则存储用户的密码信息,包括加密后的密码、密码更改日期等。
[root@root ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:992:992:daemon account for libstoragemgmt:/:/usr/sbin/nologin
systemd-oom:x:991:991:systemd Userspace OOM Killer:/:/usr/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
cockpit-ws:x:990:990:User for cockpit web service:/nonexisting:/sbin/nologin
cockpit-wsinstance:x:989:989:User for cockpit-ws instances:/nonexisting:/sbin/nologin
sssd:x:988:988:User for sssd:/:/sbin/nologin
setroubleshoot:x:987:987:SELinux troubleshoot server:/var/lib/setroubleshoot:/sbin/nologin
clevis:x:986:986:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/usr/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
chrony:x:985:985:chrony system user:/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/usr/sbin/nologin
king:x:1000:1000::/home/king:/bin/bash
[root@root ~]# cat /etc/shadow
root:$6$0EZrVBb/fjyk6oJu$8ToHEs176BqFm4H8TJg0XBJBToLe28KyVZRnwGTOs8CbZMgAGQnBcDmWsT0iFzdVUVi1og8vUnZHTU6HxMu1e.:19880:0:99999:7:::
bin:*:19347:0:99999:7:::
daemon:*:19347:0:99999:7:::
adm:*:19347:0:99999:7:::
lp:*:19347:0:99999:7:::
sync:*:19347:0:99999:7:::
shutdown:*:19347:0:99999:7:::
halt:*:19347:0:99999:7:::
mail:*:19347:0:99999:7:::
operator:*:19347:0:99999:7:::
games:*:19347:0:99999:7:::
ftp:*:19347:0:99999:7:::
nobody:*:19347:0:99999:7:::
systemd-coredump:!!:19836::::::
dbus:!!:19836::::::
polkitd:!!:19836::::::
libstoragemgmt:!*:19836::::::
systemd-oom:!*:19836::::::
tss:!!:19836::::::
cockpit-ws:!!:19836::::::
cockpit-wsinstance:!!:19836::::::
sssd:!!:19836::::::
setroubleshoot:!!:19836::::::
clevis:!!:19836::::::
sshd:!!:19836::::::
chrony:!!:19836::::::
tcpdump:!!:19836::::::
nscd:!!:19836::::::
king:!!:19880:0:99999:7:::
为了增强密码的安全性,可以设置密码复杂度要求,这通常通过Pluggable Authentication Modules(PAM)模块来实现。
- 编辑 /etc/pam.d/system-auth 文件启用密码复杂度检查。
[root@root ~]# vi /etc/pam.d/system-auth
# Generated by authselect on Tue Apr 23 16:08:34 2024
# Do not modify this file manually.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth sufficient pam_unix.so nullok
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password [success=1 default=ignore] pam_localuser.so
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
# 在上面找个合适的位置添加以下代码启用密码复杂度检查
password requisite pam_cracklib.so try_first_pass retry=3
- 编辑 /etc/security/pwquality.conf 文件来设置密码复杂度。
[root@root ~]# cat /etc/security/pwquality.conf
# Configuration for systemwide password quality limits
# Defaults:
#
# Number of characters in the new password that must not be present in the
# old password.
# difok = 1
#
# Minimum acceptable size for the new password (plus one if
# credits are not disabled which is the default). (See pam_cracklib manual.)
# Cannot be set to lower value than 6.
# minlen = 8
#
# The maximum credit for having digits in the new password. If less than 0
# it is the minimum number of digits in the new password.
# dcredit = 0
#
# The maximum credit for having uppercase characters in the new password.
# If less than 0 it is the minimum number of uppercase characters in the new
# password.
# ucredit = 0
#
# The maximum credit for having lowercase characters in the new password.
# If less than 0 it is the minimum number of lowercase characters in the new
# password.
# lcredit = 0
#
# The maximum credit for having other characters in the new password.
# If less than 0 it is the minimum number of other characters in the new
# password.
# ocredit = 0
#
# The minimum number of required classes of characters for the new
# password (digits, uppercase, lowercase, others).
# minclass = 0
#
# The maximum number of allowed consecutive same characters in the new password.
# The check is disabled if the value is 0.
# maxrepeat = 0
#
# The maximum number of allowed consecutive characters of the same class in the
# new password.
# The check is disabled if the value is 0.
# maxclassrepeat = 0
#
# Whether to check for the words from the passwd entry GECOS string of the user.
# The check is enabled if the value is not 0.
# gecoscheck = 0
#
# Whether to check for the words from the cracklib dictionary.
# The check is enabled if the value is not 0.
# dictcheck = 1
#
# Whether to check if it contains the user name in some form.
# The check is enabled if the value is not 0.
# usercheck = 1
#
# Length of substrings from the username to check for in the password
# The check is enabled if the value is greater than 0 and usercheck is enabled.
# usersubstr = 0
#
# Whether the check is enforced by the PAM module and possibly other
# applications.
# The new password is rejected if it fails the check and the value is not 0.
# enforcing = 1
#
# Path to the cracklib dictionaries. Default is to use the cracklib default.
# dictpath =
#
# Prompt user at most N times before returning with error. The default is 1.
# retry = 3
#
# Enforces pwquality checks on the root user password.
# Enabled if the option is present.
# enforce_for_root
#
# Skip testing the password quality for users that are not present in the
# /etc/passwd file.
# Enabled if the option is present.
# local_users_only
minlen = 12
dcredit = -1
ucredit = -1
ocredit = -1
lcredit = -1
参数解析
- minlen = 12 设置密码最小长度为 12 个字符。
- dcredit = -1 设置数字字符的最小数量为 1。
- ucredit = -1 设置大写字母的最小数量为 1。
- ocredit = -1 设置特殊字符的最小数量为 1。
- lcredit = -1 设置小写字母的最小数量为 1。
重新加载PAM
[root@root ~]# systemctl restart systemd-logind
测试密码的新策略(更新密码)
[root@root ~]# passwd king
Changing password for user king.
New password:
BAD PASSWORD: The password is shorter than 12 characters
Retype new password:
passwd: all authentication tokens updated successfully.
如果您想要设置更多的密码复杂度规则,可以编辑 /etc/security/pwquality.conf 文件,添加以下参数
- maxrepeat = 3 设置相同字符的最大重复次数为 3。
- maxsequence = 3 设置相同字符的最大序列次数为 3。
- maxclassrepeat = 3 设置相同字符类别的最大重复次数为 3。
通过设置/etc/login.defs文件中的密码更改间隔字段,可以强制用户定期更改密码,从而减少密码被破解的风险。
[root@root ~]# vi /etc/login.defs
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
- PASS_MAX_DAYS:指定密码的最大有效天数。
- PASS_MIN_DAYS:指定用户必须使用密码的最小天数。
- PASS_WARN_AGE:指定在密码过期之前提前多少天向用户发出警告。
3.2、安装破解shadow口令文件软件
安装破解shadow口令文件软件,通常指的是使用密码破解工具来尝试恢复或揭示存储在/etc/shadow文件中的加密密码;这种操作通常用于恢复遗忘的密码或系统安全审计,但也可能被恶意使用以获取未经授权的访问权限。
Shadow文件的结构与重要性
- /etc/shadow文件包含了系统中所有用户的密码信息,这些信息是通过哈希算法加密的。了解其结构对于后续的破解过程至关重要。
- /etc/shadow文件的每个条目都由若干字段组成,包括用户名、加密密码、最后一次修改时间等。其中加密密码字段使用了如MD5、SHA-256或SHA-512等哈希算法,并附带了salt值以增强安全性。
适合的密码破解工具
- John the Ripper是最常用的开源密码破解工具之一,支持多种操作系统和多种哈希算法,非常适合用于破解Linux的shadow文件。
- John the Ripper提供了命令行界面,通过一系列的命令选项可以指定破解的方式、使用的字典等,从而适配不同的安全审计需求。
安装John the Ripper
# 安装 EPEL 仓库
[root@root ~]# dnf install epel-release
# 安装 John the Ripper
[root@root ~]# dnf install john
# 创建一个密码文件,例如 password.txt
[root@root ~]# echo "username:password" > password.txt
# 使用 John the Ripper 破解密码
[root@root ~]# john password.txt
# 使用 --wordlist 选项指定词典文件,John the Ripper 将使用指定的词典文件来破解密码
[root@root ~]# john --wordlist=/usr/share/wordlists/rockyou.txt password.txt
# 使用 --rules 选项指定破解规则,John the Ripper 将使用指定的破解规则来破解密码
[root@root ~]# john --rules=unix password.txt
# 使用 --incremental 选项进行增量破解,John the Ripper 将进行增量破解,尝试破解密码
[root@root ~]# john --incremental=password.txt
3.3、编写没有登录过系统用户的脚本
python脚本示例
import subprocess
# 获取所有用户列表
users = subprocess.check_output(["getent", "passwd"]).decode("utf-8").splitlines()
# 初始化一个空列表来存储没有登录过系统用户
no_login_users = []
# 遍历所有用户
for user in users:
# 获取用户的最后登录时间
last_login = subprocess.check_output(["lastlog", "-u", user.split(":")[0]]).decode("utf-8").strip()
# 如果用户从未登录过系统,添加到列表
if last_login == "Never logged in":
no_login_users.append(user.split(":")[0])
# 打印结果
print("以下用户从未登录过系统:")
for user in no_login_users:
print(user)
3.4、host.equiv文件
hosts.equiv 文件是系统中用于定义远程主机可信列表的配置文件,通常位于 /etc/ 目录下。此文件的主要作用是允许受信任的远程主机在不提供密码的情况下执行如 rlogin, rcp, rexec 等远程命令。
基本用途
- hosts.equiv 文件被用来指定哪些远程主机和用户可以在本地系统上执行命令而无需密码验证。这在信任的网络环境中非常有用,可以简化访问流程并提高效率。
文件格式与配置方式
- 添加信任主机:通过简单的条目,如 “hostname” 或 “hostname +username” 来信任特定主机上的所有用户或特定用户。符号 “+” 表示信任所有用户,而具体的用户名则限制只有该用户可以无密码访问。
- 禁止信任主机:使用 “-hostname” 或 “hostname -username” 来明确排除某些主机或用户。这种格式帮助管理员精细化控制访问权限,防止未授权的访问。
- 网络组设置:hosts.equiv 文件支持对NIS网络组的信任设置。例如,“+@netgroup”表示信任netgroup中的所有计算机,而“-@netgroup”则是禁止该网络组的所有计算机。
安全性管理与考虑因素
- 文件权限:为保证安全,hosts.equiv 文件的权限应该设置为只有 root 用户可以写入(建议权限为600)。这是为了防止未授权的修改,确保只有管理员能更改信任设置。
- 谨慎操作:在配置 hosts.equiv 文件时需格外小心,因为不当的配置可能导致系统暴露给潜在的攻击者。应定期审查此文件的内容,确保所有条目都是必要的,并且符合当前的网络安全策略。
- 特殊用户处理:如果远程命令是由root用户发起的,相关服务进程将忽略 hosts.equiv 文件,直接检查用户的 $HOME/.rhosts 文件。这一点在管理 root 用户权限时需要特别注意。
3.5、.rhosts文件
.rhosts 文件是用户家目录下用于远程登录认证和授权的配置文件,通常位于每个用户的家目录中。这个文件允许指定哪些远程用户可以在不提供密码的情况下登录到本地主机并执行特定的操作。
- 基本用途:.rhosts 文件主要用于定义哪些用户可以从指定的远程主机进行无密码登录。这对于信任的内部网络中的多用户系统非常有用,可以简化操作流程并提高效率。
文件格式与配置方式
- 添加信任用户和主机:通过简单的条目,如 “username@hostname” 或 “+username@hostname” 来信任特定用户从特定主机访问。加号 “+” 表示允许所有用户从该主机登录。
- 权限设置:可以为每个条目指定权限级别,例如 “username@hostname LL”,其中 “LL” 表示该用户可以在远程主机上执行任何命令。
- 特殊权限标记:可以使用特殊的权限标记来简化权限分配,例如 “++” 表示允许任何用户从任何主机进行无密码登录,但这种配置也带来了很高的安全风险。
安全性管理与考虑因素
- 文件权限:为保证安全,.rhosts 文件的权限应该设置为只有属主用户可读写(建议权限为 600)。这是为了防止未授权的修改,确保只有用户可以管理自己的远程访问策略。
- 谨慎操作:在配置 .rhosts 文件时需格外小心,不当的配置可能导致未授权的访问,增加系统的安全风险。应定期审查此文件的内容,确保所有条目都是必要的,并且符合当前的网络安全策略。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Linux系统安全
发表评论 取消回复