目录
一 账户安全基本措施
1.1 账号安全基本措施
- 系统账号清理
将非登录用户的shell设为/sbin/nologin
锁定长期不使用的账号
[root@localhost ~]# usermod -L [帐号名] ########锁定帐号
[root@localhost ~]# passwd -S [帐号名] #######查看帐号状态
[root@localhost ~]# usermod -U [帐号名] #######解锁账号
[root@localhost ~]# passwd -S [帐号名]
删除无用的账号
锁定账号文件passwd、shadow
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow #######锁定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #######查看文件为锁定状态
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow #######解锁文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow #######查看为解锁状态
--------------- /etc/passwd
--------------- /etc/shadow
1.2 密码安全控制
设置密码有效期
要求用户下次登录时修改密码
vi /etc/login.defs ##适用于新建用户,搜索PASS看有没有相对应的,有就把后面的数字改为30 ,代表有效期30天修改密码
chage -M 30 账户 ##适用于已有用户 (修改账户有效期30天)
chage -d 0 账号 ##强制账号下次登录时更改密码
cat /etc/shadow ##可以看看这个账号里面的有效期生效没有
1.3 命令历史限制
- 减少记录的命令条数
方式一
vi /etc/profile ## /HISTSIZE 查看这个查参数 假设后面时2000,把它改下200,这时候他记录的命令就是200条
wq ##保存
source /etc/profile ##刷新一下,生效
方式二
还有一种改发,把当前HISTSIZE改下
export HISTSIZE=200 立马生效
1.4 注销时自动清空命令历史
vi .bash_logout ##编辑.bash_logout
echo >/root/.bash_history ##添加下面两条命令
history -c
source .bash_logout ##刷新一下
history ##看不到历史记录了
1.5 终端自动注销
vi /etc/profile ##这个是编辑全局变量的文件
export TMOUT=600 ##终端600秒没动,自动注销账户 export意思申明全局变量
soure /etc/profile ##刷新这个文件,生效下
上面是全局终端自动注销,还有一个是当前账户自动注销
vi .bash_profile
export TMOUT=600 ##终端600秒没动,自动注销账户
soure /etc/profile ##刷新这个文件,生效下
二 使用su命令切换用户
大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。鉴于这些原因,需要为普通用户提供一种身份切换或特权提升机制,以便在必要的时候执行管理任务。
Linux系统为我们提供了su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令用来提升执行权限。
2.1 su 命令——切换用户
- su用途及用法,密码验证
使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。切换时需要对目标用户的密码进行验证(从root用户切换为其他用户时除外)
root -》任意用户,不验证密码
普通用户-》其他用户,验证目标用户的密码
su - root 带- 选项表示将使用目标用户的登录shell环境
whoami 查看一下现在是什么账户
- 限制使用su命令的用户
默认情况下,任何用户都运行使用su命令,从而有机会反复尝试其他用户的登录密码,带来安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许个别用户使用su命令进行切换。
将允许使用su命令的用户加入wheel组
gpasswd -a pengpeng wheel 将pengpeng账户加入wheel组中
[root@localhost ~]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
#Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
#Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid ###去掉这里的#号,启用pam_wheel认证模块
vi /etc/login.defs ##进入这个里面编辑
SU_WHEEL_ONLY=yes ##仅允许wheel里面的用户登录(插入到最后)
安全日志文件 /var/log/secure
- PAM认证原理
PAM 认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so;
PAM 认证首先要确定哪一项服务,然后加载相应的 PAM 的配置文件(位于/etc/pam.d 下),最后调用认证文件(位于/lib/security 下)进行安全认证;
用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证。不同的应用程序所对应的 PAM 模块也是不同的。如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看,
每一行都是一个独立的认证过程;
每一行可以区分为三个字段:n 认证类型n 控制类型n PAM 模块及其参数 - PAM 认证类型包括四种
认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;
帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等;
密码管理(password management):主要是用来修改用户的密码;
会话管理(session management):主要是提供对会话的管理和记账。
2.2 sudo 命令 —— 提升执行权限
1. 在配置文件/etc/sudoers 中添加授权
vi /etc/sudoers
zp123 zhangpeng=/sbin/*,!/sbin/reboot ##授予zp123账号所有权限,除了重启
2. 进入tang8测试
sudo ifconfig ens33:1 192.168.100.100 ##测试一下,看能不能创建子端口
ifconfig ###看一下创建成功没有
三 系统引导和登录控制
3.1 开关机安全控制
-
调整 BIOS 引导设置
将第一优先引导设备(First Boot Device)设为当前系统所磁盘。
禁止从其他设备(如光盘、U 盘、网络等)引导系统,对应的项设为“Disabled”。
将 BIOS 的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改 -
限制更改GRUB引导参数
为 GRUB 菜单设置的密码建议采用“grub2-mkpasswd-pbkdf2”命令生成,表现为经过PBKDF2 算法加密的字符串,安全性更好。生成密码后在/etc/grub.d/00_header 配置文件中,添加对应的用户、密码等配置
grub2-mkpasswd-pbkdf2 ##根据提示指定密码
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
vim /etc/grub.d/00_header ##将下面内容添加到文件最后
cat << EOF
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.D294CAC961BC4FC289D217D99D5D7DE
263B314E69A1653B9EE8CC2484A7108BED00D810EE2C78A02DD4FAA4F95EC0DC7BF05C3D5BD4F
30ACFC4E9AE62C0D2789.AC5832427DB5E6BD0FD38EE05DD86010768F5743C2B7C46794A0C85D
8F8DC6FA18C78BDEBC51F09465FA31772F24AD54D271439445E902F9E035F43F801F4239
EOF
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg ##生成新的grub.cfg 文件
重新开机进入进入GRUB菜单
需要根据提示输入正确的GRUB菜单
3.2 终端登录安全控制
限制root只在安全终端登录
vi /etc/securetty ##进入安全终端配置里面
#tty5 ##在想要禁用的终端前面#
wq ##保存退出
init3 ##切入命令模式 测试一下 用Alt+F4 进入tty4终端,依次类推
禁止普通用户登录
建立/etc/nologin文件 删除nologin文件或重启后即恢复正常 touch /etc/nologin ##创建文件
vi /etc/nologin ##进入编辑 加入自己要禁止的账户名字
wq ###保存退出 这样被禁止的账户就没有办法登录了
rm -rf /etc/nologin ### 取消被禁止的账号的限制
3.3 系统弱口令检测
将 john-1.8.0.tar.gz压缩包放进opt目录下
方法一
cd /opt ##进入opt目录下
tar zxvf john-1.8.0.tar.gz ##解压这个压缩包
cd /john-1.8.0 ##进入解压好的这个文件里面
cd src/ ##进入src子目录中
make clean linux-x86-64 ##执行这条命令,执行好之后会在run下面生成一个可执行的john文件
cp -p /etc/shadow /root/shadow.txt ##将shadow文件备份到root下面
cd run/ ##进入run界面
./john /root/shadow.txt ## 执行强力破解密码
方法二
使用密码字典文件
cd …/run ##进入run界面
ll ##可以看到passwork.lst 这个文件
vi passwork.lst ##进去到最后加入密码
wq ###保存 退出
./john --wordlist=./password.lst /root/shadow.txt ##密码字典破解密码
vi john.pot ##这里面可以看到破解的密码
:>john.pot ##清空已经破解的账户列表,以便重新分析
3.4 网络端口扫码
nmap [扫描类型] [选项] <扫描目标>
-p 指定扫描端口
-n 禁用反向dns解析
-sS TCPSYN扫描(半开扫描);只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
-sF TCP FIN扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性
-sU UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sP ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不做其他扫描
P0 跳过ping检测:这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描
mount /dev/cdrom /mnt 挂载光盘
cd /mnt/Packages/ 进Packages目录下
rpm -ivh nmap-6.40-7.el7.x86_64.rpm 解压这个网络扫描文件 nmap 127.0.0.1 扫描常用的TCP的端口 nmap -sU 127.0.0.1 扫描常用的UDP端口
nmap -p 21 192.168.1.0/24 检测192.168.1.0/24 网段中有哪些主机提供FTP服务
nmap -n -sP 192.168.1.0/24 检测192.168.1.0/24网段中有哪些存活主机()
nmap -p 139,445 192.168.1.100-200 检测IP在192.168.1.100-200的主机是否开启文件共享服务