Linux安全设置

账号安全基本措施(很重要)

将非登录用户的shell设为/sbin/nologin

usermod -s /sbin/nologin 用户名
禁止登录

锁定长期不使用的账号

usermod -L 用户名
passwd -l 用户名          锁定用户

passwd -S 用户名          查看是否锁定

删除无用账号

userdel [-r] 用户名   
删除用户以及家目录

锁定账号文件passwd shadow

chattr +i /etc/passwd /etc/shadow    锁定文件,无法对其修改则做到了对账户的保护
lsattr /etc/passwd /etc/shadow       查看锁定状态

chattr -i /etc/passwd /etc/shadow    解锁

查看用户是否被偷改

cat /etc/passwd | wc -l        统计数量
md5sum /etc/shadow             计算账户文件md5校验和
md5sum /etc/shadow >> usermd5.txt    输出md5校验和

chattr 相关面试题
假如一个文件无法写入,什么原因?

1 权限不够

2 权限够了,chattr锁定

密码安全控制(很重要)

设置密码有效期

要求用户下次登录修改密码

vi /etc/login.defs          修改密码配置文件 适用于新建用户
PASS_MAX_DAYS 30            修改密码有效期

chage -M 30 lisi            修改密码有效期   适用于已有用户
cat /etc/shadow | grep lisi     查看

chage -d 0 zhangsan         强制在下次登录时更改密码
cat /etc/shadow | grep zhangsan 查看(shadow第三个字段被修改为0)

历史命令记录限制(很重要)

减少记录条数

vi /etc/profile

按G到底添加,或是直接添加
export HISTSIZE=200

source /etc/profile 重新加载

临时清除历史记录

history -c

登录时清空命令历史

vi ~/.bashrc
vi /etc/bashrc    三选一,作用范围不同
vi /etc/profile

添加
echo '' > ~/.bash_history    把家目录bash_history文件写空字符达到清除效果
或者
history -c                   每次登录都临时清除    

终端自动注销(很重要)

闲置600秒后自动注销

vi /etc/profile

按G到底添加,或是直接添加
export TMOUT=600

source /etc/profile 重新加载 source代表当前环境




使用su切换用户(很重要)

su 用户

root→用户                         不验证密码

普通用户→普通用户         验证目标用户密码

使用PAM认证 限制使用su命令的用户(了解即可)

将允许使用su命令的用户加入wheel组

启用pam_wheel认证模块

vi /etc/pam.d/su

关注第二行和第六行的auth

第二行表示root用户可以免密切换用户

第六行代表只有wheel组用户才能进行认证操作

将第六行的注释去除(修改为只有wheel组用户才能认证)

用户加入、退出wheel组

gpasswd -a zhangsan wheel
gpasswd -d lisi wheel

此时zhangsan可以进行认证,lisi不在组中无法认证

PAM认证原理(了解即可)

遵循的顺序

service(服务)→PAM(配置文件)→pam_*.so

  • 首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib64/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块是不同的
ls /etc/pam.d/
查看pam支持的服务(是否存在pam配置文件)

vim /etc/pam.d/su
查看配置文件内的认证模块

 ls /lib64/security
查看调用的认证模块的位置

 

 PAM认证的构成(了解即可)

查看某程序是否支持PAM认证

ls /etc/pam.d | grep su
从目录中过滤su

 查看su的PAM配置文件

cat /etc/pam.d/su
  • 每一行都是一个独立的认证过程
  • 每一行都可分三个字段
    • 认证类型
    • 控制类型
    • PAM模块以及参数

第一列代表PAM认证模块类型

auth:对用户身份进行识别,如提示输入密码,判断是否为root

account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。

password:使用用户信息来更新数据,如修改用户密码

session: 定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记

required:如果验证失败继续验证下一个选项,完成所有验证后才返回失败
requisite: 与required类似,但如果此模块验证失败,立刻返回失败

sufficient: 如果此模块返回成功,则直接向程序返回成功。如果失败,也不影响,继续认证

optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于 session 类型)。

inciude:表示在验证过程中调用其他的M配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

实例

authrequired模块1
authsufficient模块2
authrequired模块3
用户1用户2用户3用户4
passfailpasspass
passpassfailpass
passpasspassfail
结果  pass结果  fail结果  pass结果  pass
 

第三列代表PAM模块,默认是在/lib64/securitv/目录下,如果不在此默认路径下,要填写绝对路径司一个模块,可以出现在不同的模块类型中,它在不同的举型中所执行的换作都不相同,这是中于每个模块针对不同的模中举型编制了不同的执行函数

第四列代表PAM模块的参数,这个需要根据所使用的模央来添加。传递给模块的参数。参数可以有多个,之间用空格分隔开

使用sudo提升权限(很重要)

以其他用户的身份执行授权的命令

sudo 授权命令

配置sudo授权

  • visudo或者vi /etc/sudoers(无权限,root特权可写,但也需要强制保存)
  • 记录格式
    用户 主机名=命令程序列表
    
    xue localhost=/sbin/ifconfig
    xue localhost=(zhangsan) /sbin/ifconfig  
    #可以加上括号表示以zhangsan的身份运行 默认以root用户运行
    
    %wheel ALL=NOPASSWD:ALL  #组用户   NOPASSWD:不需要密码验证
    
    用户xue可在本机执行网络配置
    组wheel成员在所有设备(all)不需要密码就可以sudo操作 所有命令(all)
    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    Host_Alias MAILSERVERS = smtp, smtp2(主机名)
    User_Alias ADMINS = jsmith, mikem
    
    #设置别名 直接调用
    ADMINS MAILSERVERS =NETWORKING   

    命令建议使用绝对路径,可以使用 which 命令 查看

  •   

不给lisi删除命令权限

which rm
    /bin/rm

vim /etc/
    lisi ALL=!/bin/rm

! 表示取反 ,不给权限

 lisi删除自己的文件不影响,但是若遇到需要权限才能删除的文件,无法请求sudo rm命令。 

zhangsan lisi可以使用所有命令 但是不能关机重启

[root@xue xue]# which reboot
/usr/sbin/reboot
[root@xue xue]# which poweroff
/usr/sbin/poweroff
[root@xue xue]# which init
/usr/sbin/init
[root@xue xue]# which shutdown
/usr/sbin/shutdown

[root@xue xue]# vim /etc/sudoers
    User_Alias WLFC = zhangsan,lisi
    Cmnd_Alias ADMIN = /sbin/*, !/usr/sbin/reboot, !/usr/sbin/poweroff, !/usr/sbin/init, !/usr/sbin/shutdown
    WLFC ALL=NOPASSWD: ADMIN       
    #wlfz组(张三李四),所有主机上,不需要密码,可以执行所有命令除了关机重启

wq!

测试

which route
    /usr/sbin/route

su -zhangsan
sudo route add -net 10.0.0.0/24 gw 192.168.80.2 dev ens33
route -n #检查刚刚添加的路由 可以添加(是sbin里的命令)
sudo reboot  #没有权限

su -lisi
sudo ifconfig ens33:1 192.168.80.124/24
ifconfig #检查刚刚添加的网卡地址 可以添加(是sbin里的命令)
sudo init 6 #没有权限

sudo -l 查看当前用户有哪些sudo权限

sudo -l

启用sudo操作日志 

vim /etc/sudoers
    Defaults logfile="/var/log/sudo"
    #默认日志文件路径/var/log/sudo

 执行操作,产生日志

 

cat /var/log/sudo
查看日志

 开关机安全控制(不多用)

调整BIOS引导设置

  • 将第一引导设备作为当前系统所在硬盘
  • 禁止从其他设备(光盘 U盘 网络)引导系统 上班不要随便用U盘!容易背锅!预先打报告!
  • 将安全级别设为setup,设置管理员密码

GRUB限制

  • 使用grub2-mkpasswd-pbkdf2生成秘钥
  • 修改/etc/grub.d/00_header文件中,添加密码记录
  • 生成新的grub.cfg文件

GRUB设置密码

grub2-mkpasswd-pbkdf2

 备份旧的grub文件

cd /boot/grub2
cp grub.cfg grub.cfg.bak

cd /etc/grub.d
cp 00_header{,.bak}

 修改/etc/grub.d/00_header文件

vim /etc/grub.d/00_header

cat << EOF
set superusers='root'
password_pbkdf2 root grub.pbkdf2.sha512.10000.9414E82C48FE169E37667C7BD9968E3392F1A57472B5F15CA13C7BA76B8BD5DD0438BD237748A9F1D84DA01AC234DB89F7CA77FDDBA94F84620DF4802B1E07B2.D41C46D2AA711A0A7173DF4C2C578F80FDABF937622C8FF70909CD2A76BBA7E23EF6A3096C148322FCBA3E12346F4AD61DF5AA54C38D9CA9496310012D1311E2
EOF

 生成新的带密码grub配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

密码设置完成 再次来到grub菜单按e测试

需要密码才能更改grub配置

终端登录安全控制

限制root用户只能在安全终端登录(不常用 了解即可)

vim /etc/securetty

备注掉tty5.6 表示禁止从tty5 6终端登录root用户

ctrl+alt+F3 切换tty3
登录root,可以登陆

ctrl+alt+F5 切换tty5
登录root,无法登陆

 禁止普通用户登录

建立/etc/nologin文件

删除nologin文件或重启后恢复正常

touch /etc/nologin
rm -rf /etc/nologin #解除限制

系统弱口令检测

Joth the Ripper 简称JR (了解即可)

通过对shadow文件口令分析 根据字典暴力破解 可以检测密码强度

#解压压缩包
cd /opt
tar zxf john-1.8.0.tar.gz

#安装编译工具
yum install -y gcc gcc-c++ make

#切换到src子目录
cd /opt/john-1.8.0/src

#进行编译安装
make clean linux-x86-64

#准备待破解的密码文件
cp /etc/shadow /opt/shadow.txt

#执行暴力破解
cd /opt/john-1.8.0/run
./john /opt/shadow.txt

#查看已破解出的账户列表
./john --show /opt/shadow.txt
字典文件位置 /opt/john-1.8.0/run/password.lst
根据需求添加

#使用密码字典文件
> john.pot        #清空已破解出的账户列表,以便重新分析

./john --wordlist=./password.lst /opt/shadow.txt         #使用指定的字典文件进行破解

 

网络端口扫描 NMAP (熟记 常用)

NMAP 强大的端口扫描工具 安全检测工具 支持 ping 扫描、多端口检测等多种技术。

http://nmap.org

centOS7.3 光盘中安装包nmap-6.40-7.el7.x86_64.rpm

可以yum配置本地源安装

安装 NMAP 软件包

rpm -qa | grep nmap
yum install -y nmap

nmap命令常用的选项和扫描类型
-p: 指定扫描的端口。

-n: 禁用反向 DNS 解析 (以加快扫描速度)

-sS TCP的SYN扫瞄(半开扫描),只向标发出S数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接:否则认为目标端口并未开放;

-sT:TCP连接扫描,这是完整的TP扫播方式(默认扫描类型),用来建立一个Tcp连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放

-sF:TCP的FIN扫描,开放的端口会忽略这种教据包,关闭的端口会回应RST数据包。许多防火墙只对SYN数据包进行简单过滤,而忽略了其他形式的 TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。

-sU: UDP 扫描,探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢

-sP: ICMP 扫描,类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
-P0:跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描

#分别查看本机开放的TCP端口、UDP端口

nmap -sT 127.0.0.1
nmap -sU 127.0.0.1


#检测192.168.80.0/24网段有哪些主机提供HTTP服务

nmap -p 80 192.168.80.0/24


#检测192.168.80.0/24网段有哪些存活主机

nmap -n -sP 192.168.80.0/24

 

网络状态信息 netstat / ss

netstat命令常用选项 (ss与netstat相似 执行速度更快)
a:显示主机中所有活动的网络连接信息 (包括监听、非监听状态的服务端口)。

n:以数字的形式显示相关的主机地址、端口等信息
t:查看 TCP相关的信息。

u:显示 UDP协议相关的信息。

p:显示与网络连接相关联的进程号、进程名称信息 (该选项需要 root 权限)。

r:显示路由表信息。

l:显示处于监听状态的网络连接及端口信息。

netstat -natp       查看正在运行的使用TCP协议的网络状态信息
netstat -naup       查看正在运行的使用UDP协议的网络状态信息
netstat -natp | grep 80      过滤查看80端口进程

ss -natup       查看正在运行的使用TCP UDP协议的网络状态信息

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值