目次和文件
ls -l 检察目次和文件的权限的设置环境
加固方法
对于紧张目次,建议实验如下类似操作
Chmod -R 750 /etc/rc.d/init.d/*
这样只有root可以读写和实验这个目次下的脚本
新建了一个用户Q
写入了一些信息
发现在root用户下可以进行文件打开
接下来用平凡用户进行登录
发现没有权限进行检察
设置默认的umask值,增强安全性
umask 是 Linux 体系中用于控制 新建文件 / 目次默认权限 的掩码。体系创建文件 / 目次时,会基于默认权限(文件默认 666,目次默认 777)减去 umask 值,天生终极权限。比方 umask 027,表示从默认权限中扣除对应权限,确保新建文件 / 目次的权限更安全。
利用命令“/vi/etc/profile” 修改配置文件,添加行“umask 027”,及新创建的文件属主读写实验权限,同组用户读写和实验权限,其他用户无权限,利用”umask 027”
应用设置
vi /etc/profile # 打开文件
进入编辑模式(按 i 键),在文件末尾添加:
umask 027
保存退出(按 Esc 键,输入 :wq 回车)
source /etc/profile # 立即生效配置
平凡用户进入修改文件,报错此用户没有读写权限,增强了安全性
Bash历史命令
Bash历史命令
可以设置保存历史命令的条数
利用命令 “cat/etc/profile | group HISTSIZE ” 和“cat /etc/profile | grep HISTFILESIZE=”检察保存历史命令的条数
利用命令“vi/etc/profile”修改配置文件,修改HISTSIZE=5和HISTFLESIZE=5
既保存最新实验的5条命令
通过检察发现有1000条历史命令,严峻影响体系安全
进行配置文件编辑
发现已经成功改变了配置文件信息
退出,先按esc :wq! 再按enter
退出,先按esc :wq! 再按enter
登陆超时,设置体系登陆后,毗连超时时间增强安全性
利用命令 cat /etc/profile | grep TWOUT 检察TMOUT是否被设置
加固方法:利用命令“vi/etc/profile”修改配置文件,添加“TMOUT”行开头的注释,设置为“TMOUT=180”,及超时时间为三分钟
发现没有输出,我们进行配置
配置完成,要在末了一行添加,不然会被覆盖
G跳转到末了一行 i 进入编辑模式 Esc退出编辑模式,输入1:wq!保存并退出
配置文件生效
source /etc/profile
root路径
检查体系root用户环境变量path是否包含”.”
检查方法:以root用户环境变量path中不应该包含当前目次
以root身份实验如下操作
#echo $PATH
/usr/local/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:.
加固方法:
利用命令“vi/etc/profile” 修改echo $PATH后面的路径
但是我发现我的原来就不包含当前目次,所以不消修改
运行配置文件
运行配置文件
Source /etc/profile
验证修改结果:
Echo $PATH
看一看结果中是否包罗当前目次“.”
账户安全
禁用无用账号:减少安全风险
检查方法:利用/etc/passwd 检察口令文件,与体系管理员确认不须要的账户
FTP等服务的账号,如果不必要登陆下体系,shell应该/sbin/nologin
加固方法:利用命令“passwd -l <用户名>” 锁定不须要的账号
发现已经成功锁定了Q用户克制登录
扩展
在 Linux 体系中,用户信息存储在 /etc/passwd 文件中,每行记录对应一个用户,其中末了一个字段是用户登录时利用的 Shell 程序。
- /sbin/nologin 的作用:
它是一个特殊的 “伪 Shell”,当用户的 Shell 设置为 /sbin/nologin 时,该用户无法通过终端交互式登录体系(如 SSH 登录、当地控制台登录等)。体系会提示 “This account is currently not available”,拒绝登录请求。
- 应用场景:
对于 FTP 服务账号、仅用于运行服务的账号(如某些程序运行的用户),这些账号不必要登录体系实验命令,只需保存服务功能。将它们的 Shell 设置为 /sbin/nologin,既能包管服务正常运行,又能克制用户通过这些账号登录体系,降低安全风险。
- 安全意义:避免无用账号被攻击者利用进行登录操作,减少体系暴露面,提拔安全性。比方,若攻击者破解了一个设置为 /sbin/nologin 的账号密码,也无法通过该账号登录体系实验恶意命令。
检察指定用户的默认登录 Shell
通过/etc/passwd文件检察:体系用户信息存储在/etc/passwd文件中,每行对应一个用户的信息,每行末了一个字段就是该用户的默认登录 Shell。比如检察root用户的 Shell,在终端实验命令cat /etc/passwd | grep ^root ,其中^表示匹配行首,命令实验结果中末了一个:号后的内容,即为root用户的登录 Shell 范例 ,常见的如/bin/bash 。如果想检察其他用户,将root更换为对应的用户名即可
- 通过echo $SHELL检察当前用户默认登录 Shell:在终端输入echo $SHELL命令,会返回当前正在利用终端的用户的默认登录 Shell。比方返回/bin/bash,则表示默认登录 Shell 是 Bash。
检察当前正在运行的 Shell
- 利用echo $0命令:在终端中输入echo $0,会输出当前正在运行的 Shell 名称。比如表现bash,就表示当前运行的是 Bash Shell。
- 利用ps -p $$命令:$$代表当前 Shell 的历程号,该命令会返回当前 Shell 的详细信息,其中包罗正在运行的 Shell 范例。实验命令后,在输出结果中找到CMD列,对应的值就是正在运行的 Shell。
创建ftp账号
扩展知识
以下以 Linux 体系中常见的 vsftpd 软件为例,介绍创建 ftp 服务账号且该账号不必要登录体系(shell 为 /sbin/nologin )的教程:
1. 安装 vsftpd
打开终端,利用包管理工具安装 vsftpd。以 CentOS、RHEL 体系为例,实验命令:
bash
sudo yum -y install vsftpd
对于 Debian、Ubuntu 体系,则实验:
bash
sudo apt-get -y install vsftpd
发现没有进行激活
发现安装成功
2. 创建当地映射用户(非虚拟用户方式)
利用useradd命令创建一个体系用户,该用户将作为 FTP 用户的映射用户,且设置其 shell 为 /sbin/nologin,使其无法登录体系。假设创建用户名为ftpuser,命令如下:
bash
sudo useradd -d /var/ftp/pub -s /sbin/nologin ftpuser
其中-d参数指定用户的家目次为/var/ftp/pub,你可以根据现实需求修改。
3. 设置用户密码
实验以下命令为新创建的用户设置密码:
sudo passwd ftpuser
按照提示输入并确认密码。
4. 配置 vsftpd
打开 vsftpd 的配置文件vsftpd.conf,一般路径为/etc/vsftpd/vsftpd.conf:
sudo vi /etc/vsftpd/vsftpd.conf
根据需求修改以下一些关键配置项:
- 克制匿名登录:确保anonymous_enable=NO ,防止匿名用户访问 FTP 服务器。
- 允许当地用户登录:确保local_enable=YES 。
- 启用写入权限:若必要让用户有上传文件的权限,设置write_enable=YES 。
- 锁定用户主目次:为了安全,建议设置chroot_local_user=YES ,将用户限定在其主目
- 录中,防止访问其他体系目次。
- 修改完成后,保存并退出编辑器。
5. 检查并添加 shell 到合法列表(可选但建议)
vsftpd 默认会检查用户的 shell 是否在/etc/shells文件中列出 ,如果不在大概导致用户无法登录 FTP。因此,必要检查并添加/sbin/nologin到该文件中。
利用以下命令检察当前/etc/shells文件内容:
bash
cat /etc/shells
如果其中没有/sbin/nologin这一行,则利用编辑器添加:
bash
sudo vi /etc/shells
在文件末尾添加/sbin/nologin ,保存并退出。
6. 重启 vsftpd 服务
使配置生效,实验命令:
对于 CentOS、RHEL、Fedora 等体系:
bash
sudo systemctl restart vsftpd
对于 Debian、Ubuntu 体系:
bash
sudo service vsftpd restart
7. 测试
利用 FTP 客户端软件,如 FileZilla、CuteFTP 等,输入 FTP 服务器的地点、创建的用户名和密码进行毗连测试,验证是否能够正常访问 FTP 服务器。
分享
账号计谋
操作目标:防止口令暴力破解,降低风险
检查方法:利用命令“cat/etc/pam.d/ system-auth”检察配置文件
加固方法:
设置一连输错10次密码,账号锁定5分钟
利用命令“vi /etc/pam.d/ system-auth”修改配置文件,添加 auth required pam_tally.so onerr=fail deny=10 unlock_time=300
检查特殊账号
操作目标:
检察空口令和root权限的账号
检查方法;
利用命令:“awk -F:’($2==””)’/etc/shadow” 检察空口令账号
利用命令:“awk -F:’($3==0)’/etc/passwd”检察UID为零的账号
加固方法:
利用命令“passwd<用户名>“为空命令账号设置密码
UID为零的账号应该只有root,设置UID方法:
usermod -u UID<用户名>
口令周期计谋
操作目标:
增强口令的复杂度,降低被猜解的大概性
检查方法:
利用命令:“cat /etc/login.defs| grep PASS“和 ”cat /etc/pam.d/system-auth“检察密码计谋设置
加固方法:
利用命令“vi /etc/login.defs“修改配置文件
PASS_MAX_DAYS 90 #新建用户的密码最长利用天数
PASS_MAX_DAYS 0 #新建用户的密码最短利用天数
PASS_WARN_AGE 7 #新建用户的密码到期提条件醒天数
利用change命令修改用户设置,比方:
Chage -m 0 -M 30 -E 2000-01-01 -W 7<用户名>
表示:将此用户的密码最长利用天数设为30,最短利用天数设为0,账号2000年1月1日过期,过期前7天告诫用户。
口令复杂计谋
操作目标:增强口令的复杂度等,降低被猜解的大概性
检查方法;利用命令“cat/etc/pam.d/system-auth | grep pam_cracklib.so”
检察密码复杂度计谋设置
没有发现密码计谋配置
加固方法:建议在/etc/pam.d/system-auth文件中配置:
适用于平凡用户
Passwd requisite pam_cracklib.so retry=5 difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
这一句适用于平凡用户和root用户
password requisite pam_cracklib.so retry=5 difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 enforce_for_root
至少八位,包含一位大写字母,一位小写字母和一位数字
进来是这个界面,点击i进行输入
按esc, “:wq!”进行退出编辑模式,并保存
进行验证,发现进行了提示,密码计谋小于8位
限定root远程登陆
操作目标:限定root远程telent登录
检查方法:
利用命令“cat/etc/securetty | grep CONSOLE” 检察是否克制root远程登陆
加固方法:
Vi编辑/etc/securetty 文件,配置:CONSOLE=/dev/tty01
直接点击G进入末了一行,
Esc :wq!
扩展知识:
利用xshell进行远程毗连kali教程
sudo -i 进入(root)管理员模式
Xshell下载链接
Xshell安装教程
发现已经成功毗连
发现正常的linux命令都能利用
重新毗连,发现失败
限定用户 su
操作目标:检查是否利用pam 认证模块克制wheel组之外的用户为root
检查方法:
利用命令:“cat /etc/pam.d/su | grep pam_wheel.so”检察配置文件,确认是否有相干的限定
加固方法
编辑su 配置文件,vi 打开/etc/pam.d/su 文件,添加大概修改以下配置
Auth required pam_wheel.so use_uid:强制要求实验su 操作的用户属于wheel组,use_uid表示通过用户id,验证构成员身份。这一句话前面没有注释符号,说明体系已经强制要求实验su 操作用户必须属于wheel组。
若文件存在其他与pam_wheel.so相干的注释行(#auth sufficient pam_wheel.so trust use_uid),可取消注释·并调整为上述规范配置
对允许利用su 切换为root的用户,实验命令usermod -G wheel用户名(比方:usermod -G wheel user1),将其参加wheel组,使其得到su至root的权限
通过以上配置,非wheel组,使其得到su 至root的权限。
发现B用户已经可以进行su 命令的利用了
检查Grub/Lilo密码
操作目标:
检察体系引导管理器是否设置密码
检查方法
利用命令:“cat /etc/grub.conf | grep password”检察grub是否设置密码
利用命令:“cat /etc/lilo.conf | grep password”检察lilo是否设置密码
加固方法
Vi编辑 /etc/grub.conf
Splashimage 这个参数下一行添加:password密码
如果必要md5加密,可以添加一行:password --md5 密码
Vi编辑/etc/lilo.conf
Password=密码
发现上述的方法已经不适用于新版kali
所以又找了一个方法
检查GBUB2是否设置密码
Sudo grep -i ‘password_pbkdf2’ /boot/grub/grub.cfg
在 GRUB2 中,password_pbkdf2 用于标识通过 PBKDF2 算法加密的启动密码配置。
这条命令通过搜索 GRUB2 配置文件中是否存在 password_pbkdf2 相干内容,判定体系是否为 GRUB2 设置了加密启动密码。如有对应输出,说明已设置;若无输出,则表示未配置密码。
设置GBUB2密码(精确加固方法)
- 天生加密密码:
实验命令天生PBKDF2加密密码,按提示输入密码,添加或修改以下内容(将加密字符串更换为现实天生的内容)
GRUB_ENABLE_CRYPTODISK=y
GBUB_PASSWORD=”grub.pbkdf2.sha512. ………”#填入天生的加密字符串
Snmp团体字
操作目标:
如果打开了snmp协议,snmp团体字设置不能利用默认的团体字
检查方法:
检察配置文件 cat /etc/snmp/snmpd.conf
加固方法:
Vi编辑 /etc/snmp/snmpd.cof 文件
应克制利用public.private 默认团体字,利用用户自定义的团体字,比方将以下设置中的public更换为用户自定义的团体字:com2sec notConfig notConfigUser default public
编辑文件:
bash
sudo vi
/etc/snmp/snmpd.conf
2. 添加配置:
在文件中添加:
Conf
com2sec notConfigUser default YourCustomCommunity # 将 YourCustomCommunity 更换为自定义强团体字(如包含巨细写字母、数字、符号)
access notConfigGroup "" any noauth exact all none none
3. 保存退出:按 Esc,输入 :wq 保存并退出。
4. 重启服务:bash

sudo
systemctl restart snmpd
弱口令审计
检查方法:
john /etc/shadow –single
john /etc/shadow –wordlist=pass.dic
加固方法:
利用“passwd 用户名” 命令为用户设置复杂密码
若表现!! *表示密码未设置,大概密码已经锁定,无有用哈希可破解
服务历程
Linux体系的服务历程
体系守护历程(服务)
服务就是运行在网络服务器上监听用户请求的历程
服务就是通过端口号来区分的
常见的服务及其对应端口号
ftp:21
ssh:22
telnet:23
smtp:25
ssl:443
http(www):80
pop3:110
体系守护历程(服务)
在unix/linux体系中,服务是一般通过inted历程大概启动脚原来启动。
通过inted来启动的服务可以通过在/etc/inted.conf文件进行注释来禁用。
通过启动脚本启动的服务可以通过改变脚本名称的方式禁用。
检察linux历程的命令
检查ssh服务
操作目标:对ssh服务进行安全检查
检查方法:
利用命令“cat /etc/ssh/sshd_config”检察配置文件
加固方法:
利用命令“vi /etc/ssh/sshd_config”编辑配置文件
- 不允许root直接登录 设置“PermitRootLogin”的值为no
无法通过ssh进行远程登陆
修改SSH利用的协议版本 设置“Protocol” 的版本为2,如果没有这一行,直接添加这一行。
- 修改允许密码错误次数(默认6次)设置“MaxAuthTries” 值为3
Tcp Wrapper
操作目标:
利用tcp wrapper 对 libwrap库支持的程序做访问控制
检查方法:
利用命令“vi /etc/hosts.allow” 和 “cat /etc/hosts.deny” 检察配置
加固方法:
利用命令“vi /etc/hosts.allow” 和”vi /etc/hosts.deny” 修改配置
- 若允许 Windows 主机访问 Linux 虚拟机的 SSH:
- 检察 Windows 主机 IP:按 Win + R,输入 cmd 打开命令提示符,实验 ipconfig,找到 IPv4 地点(如 192.168.1.100)。
- 在 Linux 虚拟机的 hosts.allow 中填写:sshd:Windows主机的IPv4地点(比方 sshd:192.168.1.100),表示仅允许该 Windows 主机 IP 访问 Linux 的 SSH 服务。
- 若允许其他设备访问:
- 同理,获取对应设备的 IP(如另一台 Linux 服务器、手机等),填写到 hosts.allow 中。
终极目标是:填写 “希望被允许毗连到 Linux 虚拟机 SSH 服务的设备 IP”,而非固定填主机或虚拟机 IP,需根据现实访问需求决定。
Vi /etc/hosts.allow
按i 进入编辑模式
参加: sshd:IP地点
Vi /etc/hosts.deny
按I 进入编辑模式
Sshd:ALL
(该配置为仅允许特定ip地点访问ssh)
NFS共享
操作目标:
检察NFS共享
检查方法:
利用命令“exportfs” 检察NFS输出的共享文件
加固方法:
利用命令:“vi /etc/exports”编辑配置文件,删除不须要的共享
如果发现配置文件内里没有命令,说明你没有配置过共享
如果有的话,进行删除,并用下面的两条命令进行实验
systemctl restart nfs-server
systemctl restart nfs-kernel-server
syslogd认证相干记录
操作目标:
检察全部日志记录
检查方法:
#cat /etc/rsyslog.conf | grep authpriv
检察是否有 authpriv.* /var/log/secure
加固方法:
添加相干日志的记录:
将authpirv 设备的任何级别的信息记录到 /var/log/secure
发现原来就在这个路径当中,所以不消进行修改
Syslogd 日志设置
操作目标:
检察全部日志记录
检查方法:
利用命令:”cat /etc/rsyslog.conf” 检察rsyslogd
体系日志(默认) /var/log/messages
Cron日志(默认) /var/log/cron
安全日志(默认) /var/log/secure
加固方法:
添加相干日志的记录
- local1:属于为当地利用预留的日志办法(local0 - local7 )之一,没有固定的日志记录范例限定 ,可由用户自定义用于记录特定应用程序或服务产生的日志。比方,可以将自定义脚本的运行日志、一些特定业务体系的日志通过配置利用 local1 来记录,方便区分和管理。
- auth:主要记录与安全和认证相干的消息,比如用户登录、注销信息,身份验证成功或失败的记录等。像用户通过 SSH 登录体系、利用 sudo 命令提权等操作产生的相干认证信息,通常会由 auth 办法来记录 。不外,对于一些更私密的安全认证信息,会利用 authpriv 办法记录。
防止误利用ctrl+alt+del重启命令
检查方法
利用命令“cat /etc/inittab | grep ctrlaltdel” 检察输入行是否被注释
加固方法:
先利用命令“vi /etc/inittab” 编辑配置文件,在行开头添加注释符号“#”,
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now,在利用命令“init q” 应用设置
新旧体系判定
从体系初始化机制来看,当前填写方式需联合体系范例判定:
- 若体系利用 systemd(多数新 Linux 发行版,如 CentOS 7+、Ubuntu 16.04+):
/etc/inittab 已不再生效(图中文件开头也提示 inittab is no longer used when using systemd),此时即使注释 #ca::ctrlaltdel:/sbin/shutdown -t3 -r now,也无法限定 Ctrl+Alt+Del。需通过 systemd 机制处理,比方:
bash
systemctl mask ctrl-alt-del.target # 屏蔽 Ctrl+Alt+Del 对应的体系目标
- 若体系仍利用传统初始化(极老旧体系):
在 /etc/inittab 中注释 ca::ctrlaltdel:/sbin/shutdown -t3 -r now 行是精确的,注释后 Ctrl+Alt+Del 的重启功能会被禁用,后续实验 init q 革新配置即可生效。
因此,需先确认体系初始化范例:新体系需用 systemd 方案,老旧体系此填写有用
检察发现是属于新版本的
这个是新版本的教程
bash
systemctl mask ctrl-alt-del.target
实验此命令后,Ctrl+Alt+Del 的重启功能会被禁用。
bash
systemctl status ctrl-alt-del.target
若表现 masked,则表示屏蔽成功。
此方法适配 systemd 初始化机制,是 CentOS 7 等新体系限定 Ctrl+Alt+Del 的精确操作。
发现虚拟机已经克制了这个命令,实验成功。
服务历程安全
关闭不须要的服务
- 利用服务:“who -r” 检察当前init级别
- 利用命令“chkconfig --list”检察全部服务的状态
- 利用命令“chkconfig -level <init级别> <服务名> on | off | reset”设置服务在个init 级别下开机是否启动
克制 httpd 服务在运行级别 3、5 开机启动:
chkconfig --level 35 httpd off
设置 sshd 服务在运行级别 2、3、4、5 开机启动:
chkconfig --level 2345 sshd on
规复 network 服务默认启动设置:
chkconfig --level 3 network reset
完结撒花
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |