文章目录

  • Linux系统安全及应用
  • 一、账号安全基本措施
    • 【一】系统账号清理
    • 小实验
    • 【二】密码安全控制
    • 小实验
    • 【三】命令历史限制
    • 小实验
    • 【四】终端自动注销
  • 二、使用su命令切换用户
      • 用途及用法
      • 密码验证
    • 限制使用su命令的用户
    • 查看su操作记录
  • 三、Linux中的PAM安全认证
      • su命令的安全隐患
      • PAM(Pluggable Authentication Modules)可插拔式认证模块
      • 在/etc/pam.d/su文件里设置禁止用户使用su命令
    • PAM认证原理:
    • PAM认证的构成
    • PAM安全认证流程
      • 控制类型也称做Control Flags,用于PAM验证类型的返回结果
      • 第一列代表PAM认证模块类型
      • 第二列代表PAM控制标记
      • 第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。
      • 第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。
      • PAM实际例子:
  • *使用sudo机制提升权限
    • 【一】**su命令的缺点**
    • **【二】配置sudo授权**
    • **【三】启用sudo操作目志**
  • 四、开关机安全控制(系统引导)
    • 调整BIOS引导设置
    • GRUB限制
      • 限制更改GRUB 引导参数
  • 五、终端登录安全控制
    • 限制root只在安全终端登录
    • 禁止普通用户登录
  • 六、系统弱口令检测
    • JR包安装步骤:
  • 七、网络端口扫描
      • 网络扫描-NMAP
      • 安装NMAP软件包
    • nmap命令常用的选项和扫描类型
      • natstat命令常用选项

Linux系统安全及应用

一、账号安全基本措施

【一】系统账号清理

●将非登录用户的Shell设为

/sbin/nologin  usermod -s /sbin/nologin 用户名

●锁定长期不使用的账号

#usermod -L  用户名
#passwd -l  用户名
#passwd -S  用户名

●删除无用的账号

#userdel [-r]  用户名 -----加r是连宿主目录一起删

●锁定账号文件passwd、shadow
锁定文件并查看状态,锁定之后不能创建和更改账户

#chattr +i /etc/passwd /etc/shadow-----锁定#lsattr /etc/passwd /etc/shadow-----用来查看#chattr -i /etc/passwd /etc/shadow------解锁

小实验

先锁定文件passwd和shadow
#charrr +i /etc/passwd /etc/shadow

查看状况
#lsattr /etc/passwd /etc/shadow
会发现有个i挡着
之后再试着创建用户和更改密码,都会失败

解锁文件passwd、shadow
#chattr -i /etc/passwd /etc/shadow
查看状况
lsattr /etc/passwd /etc/shadow(注意当前如果不在etc文件夹里,一定要机上etc目录)
再试着创建用户以及更改密码

成功就行

【二】密码安全控制

设置密码有效期

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

注意不能和原来密码太相似否则会失败

#vim /etc/login.defs-----修改密码配置文件,适用于新建用户PASS_MAX_DAYS 30-----将密码有效期设置为30天
#chage -M 30 lisi-----适用于已有用户,-M后面是天数和用户#cat /etc/shadow | grep lisi-----查看并检索lisi行信息#change -d 0 zhangsan-----强制在下次登录时更改密码#cat /etc/shadow | grep zhangsan------查看后会发现shadow文件中的第三个字段被修改为0

小实验

更改现有用户密码有效期

可以看到默认为99999天,而lisi的为30天

如果要更改还没有创建的用户密码天数,输入此命令进行更改

将此处编辑为30

这个命令可以设置用户下次登录系统时需要修改密码

【三】命令历史限制

减少记录的命令条数

注销时自动清空命令历史

#vim /etc/profile-----修改改配置文件
export HISTSIZE=200-----修改历史命令最大为200条#source /etc/profile设置登录时自动化清空命令历史
#vi~/.bashrc
在最后加上
echo“  ”>~/.bash_history
然后init 6重启
再history查看

小实验

修改文件属性

在最后面加上此命令表示只显示最近20条历史命令

刷新

【四】终端自动注销

闲置600秒后自动注销

#vim /etc/profile----修改配置文件
....
export TMOUT=600-----设置为600秒后注销#source /etc/profile

二、使用su命令切换用户

用途及用法

  • **用途:**Substitute User,切换用户
  • **格式:**su - 目标用户

密码验证

  • root–>任意用户,不验证密码
  • 普通用户–>其他用户,验证目标用户的密码
$ su - root 带 - 选项表示将使用目标用户的登录shell环境#whoami

限制使用su命令的用户

  • 将允许使用su命令的用户加入wheel组
  • 启用pam_wheel认证模块

#gpasswd -a tsengyia wheel

tsengyia

----正在将用户“tsengyia”加入到“wheel”组中


查看su操作记录

安全日志文件:/var/log/secure

查看安全日志文件: cat /var/log/secure

三、Linux中的PAM安全认证

用户查看服务器时会经过PAM认证

su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su命令进行切换

PAM(Pluggable Authentication Modules)可插拔式认证模块

  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

在/etc/pam.d/su文件里设置禁止用户使用su命令

#vim /etc/pam.d/su
auth sufficient pam_rootok.so
............
#auth required pam_wheel.so use_uid
............

加了#是指注释,类似取消

  1. 以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。
  2. 两行都注释也是运行所有用户都能使用su命令,但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok.so模块的主要作用是使uid为o的用户,即root用户能够直接通过认证而不用输入密码)。
  3. 如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令。
  4. 如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。
#gpasswd -a zhangsan wheel------添加授权用户 zhangsan 到wheel 组中#groups zhangsan#vim /etc/pam.d/suauth required pam_wheel.so use_uid-------去掉此行开头的注释

启用 pam_wheel 认证以后,未加入到wheel组内的其他用户将无法使用su命令

Linux-PAM,是linux可插拔认证模块,是一套可定制、可动态加载的共享库,使本地系统管理员可以随意选择程序的认证方式。PAw使用/etc/pam.d/下的配置文件,来管理对程序的认证方式。应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证。比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的。

PAM认证原理:

1.PAM认证一般遵循的顺序:Service (服务)–> PAM(配置文件)–> pam_*.so;

2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d 下),最后调用认证模块(位于/ lib64/ security/下)进行安全认证。

3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。

4.不同的应用程序所对应的PM模块也是不同的。

PAM认证的构成

查看某个程序是否支持 PAM认证,可以用ls命令进行查看

查看su是否支持PAM模块认证:#ls /etc/pam.d | grep su查看su的PAM配置文件:#cat /etc/pam.d/su

其中每一行都是一个独立的认证过程
每一行可以区分为三个字段,

认证类型 控制类型 PAM模块及其参数

PAM安全认证流程

控制类型也称做Control Flags,用于PAM验证类型的返回结果

1.required验证失败时仍然继续,但返回Fail

2.requisite验证失败则立即结束整个验证过程,返回Fail

3.sufficient验证成功则立即返回,不再继续,否则忽略结果并继续

4.optional不用于验证,只显示信息
(通常用于session类型)

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

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

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

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

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

第二列代表PAM控制标记

**required:**表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。

requisite: 与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

**sufficient:**如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。

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

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

第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径。

同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数。

第四列代表PAM模块的参数,这个需要根据所使用的模块来添加。

传递给模块的参数。参数可以有多个,之间用空格分隔开

PAM实际例子:

用户1 用户2 用户3 用户4
auth requisite 模块1 pass fail pass pass
auth substack 模块2 pass pass fail pass
auth required 模块3 pass pass pass fail
结果 pass fail pass pass

substack失败fail不返回,并不影响别的通过,如果成功pass直接通过,前提是之面的required要通过

*使用sudo机制提升权限

【一】su命令的缺点

sudo命令的用途及用法

用途:以其他用户身份(如root)执行授权的命令

用法:

sudo 授权命令

【二】配置sudo授权

使用sudo机制提升

visudo或者vi /etc/sudoers(注意此文件的默认权限为440,保存瑞出时必须执行“wq!”命令来强制操作)

语法格式:

用户 主机名=命令程序列表
用户 主机名=(用户) 命令程序列表

用户:
直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)

主机名:
使用此规则的主机名。没配置过主机名时可用localhost,有配过主机名则用实际的主机名,ALL则代表所有主机

用户):
用户能够以何种身份来执行命令。此项可以省略,缺省时以root用户的身份来运行命令()可加可不加

命令程序列表:
允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分割。要用完整的路径

ALL
则代表系统中的所有命令

假设给用户配置sudo到/etc/sysconfig的权限
使用vim /etc/sudoers

输入#visudo
会出现下列

可以使用通配符#和取反符号!
%wheel ALL=NOPASSWD:ALL
jerry localhost=/sbin/ifconfig
syrianer localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum
mike localhost=PKGTOOLS
Tom ALL=/sbin/ifconfig
Jerry localhost=/sbin/*, ! /sbin/reboot, ! /sbin/poweroff-----#通配符"*"表示所有、取反符号"!"表示排除%wheel ALL=NOPASSWD: ALL
---#表示wheel组成员无需验证密码即可使用sudo执行任何命令Mike ALL=(root)NOPASSWD: /bin/kill,/usr/bin/killall---表示不使用密码就可以执行这些命令

使用关键字User_Alias、Host_Alias、Cmnd_Alias来进行设置别名(别名必须为大写)

User_Alias USERS=Tom, Jerry,Mike
Host_Alias HOSTS=localhost,bogon
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/sbin/useradd,/usr/sbin/userdel
USERS HOSTS=CMNDS

【三】启用sudo操作目志

#visudo
Defaults logfile = " /var/log/sudo"
su - Tom
/sbin/ifconfig ens33:0 192.168.1.11/24
sudo /sbin/ifconfig ens33:0 192.168.1.11/24
---#初次使用sudo时需验证当前用户的密码,默认超时时长为5分钟,在此期间不再重复验证密码。sudo -l
---#查看当前用户获得哪些sudo授权

**补贴小知识:**有时候发现上下键出现太多没有用的命令或者打错的命令,可以使用以下两种方法清空命令
一、$ history -c
该命令可以清空木次登入的所有输出命令,但不清空.bash_history文件,所以下次登陆后,旧命令还将出现,历史命令是存在于当前用户根目录下的.7bash_history文件。
二、echo >$HOME./ -bash_history
每个用户根目录下都有一个.bash _history文件用于保存历史命令,当每次注销时,本次登陆所执行的命令将被写入该文件。所以可以清空该文件,下次登陆后上次保存的命令将消失,清空效果将在下次登陆生效。
clear作用是清屏

四、开关机安全控制(系统引导)

调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全级别设为setup,并设置管理员密码

GRUB限制

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

限制更改GRUB 引导参数

通常情况下在系统开机进入GRUB菜单时,按e键可以查看并修改GRUB 引导参数,这对服务器是一个极大的威胁可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

grub2-mkpasswd-pbkdf2
#根据提示设置GRUB菜单的密码PBKDF2 hash of your password is grub.pbkdf2.......
---#省略部分内容为经过加密生成的密码字符串cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
cp /etc/grub.d/00_header /etc/grub.d/00_header.bakvim letc/ grub.d/00_header
cat <<EOF
set superusers="root"
#设置用户名为rootpassword pbkdf2 root grub. pbkdf2......
#设置密码,省略部分内容为经过加密生成的密码字符串
EOFgrub2-mkconfig -o /boot/grub2/grub.cfg#生成新的grub.cfg 文件重启系统进入、GRUB菜单时,按e键将需要输入账号密码才能修改引导参数

五、终端登录安全控制

限制root只在安全终端登录

  • 安全终端配置:/etc、/securetty

#vi .etc.securetty

#tty5
#tty6

(禁止root用户从终端tty5、tty6登录)

禁止普通用户登录

  • 建立/etc/nologin文件
  • 删除nologin文件或重启后即恢复正常

#touch /etc/nologin------禁止普通用户登录

#rm -rf /etc/nologin------取消上诉登录限制

六、系统弱口令检测

Joth the Ripper,简称为JR

一款密码分析工具,支持字典式的暴力破解

通过对shadow文件的口令分析,可以检测密码强度,是一款开源的密码破解工具,可使用密码字典(包括各种密码组合的列表文件)来进行暴力破解。

官方网站:http://www.openwall.com/john/

JR包安装步骤:

  1. 解压工具包

    cd /opt
    tar zxf john-1.8.0.tar.gz
    
  2. 安装软件编译工具

    yum install -y gcc gcc-c++ make
    
  3. 切换到src子目录

    cd /opt/john-1.8.0/src
    
  4. 进行编译安装

    make clean linux-x86-64
    
  5. 准备待破解的密码文件

    cp /eyc/shadow /opt/shadow.txt
    
  6. 执行暴力破解

    cd /opt/john-1.8.0/run
    ./john /opt/shadow.txt
    
  7. 查看已破解出的账户列表

    ./john --show /opt/shadow.txt
    
  8. 使用密码字典文件

> john.pot  ------清空已破解出的账户列表,以便重新分析
./john --wordlist=./password.lst /opt/shadow.txt-----使用指定的字典文件进行破解

七、网络端口扫描

网络扫描-NMAP

  • 是一款强大的网络扫描、安全检测工具
  • 官方网站:http://nmap.org/
  • CentOS 7.3光盘中安装包nmap-6.40-7.el7.x86_64.rpm

安装NMAP软件包

#rpm -qa l grep nmap#yum install -y nmap

nmap命令常用的选项和扫描类型

-p:
指定扫描的端口。

-n:
禁用反向DNS 解析(以加快扫描速度)。
-sS:
ncP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。

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

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

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

-sP:
ICMP扫描,类似于ping 检测,快速判断目标主机是否存活,不做其他扫描。

-P0:
跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应TCNP请求时,使用这种方式可以避免因无法ping 通而放弃扫描。

#netstat -natp
查看正在运行的使用TCP协议的网络状态信息
#netstat -naup
查看正在运行的使用UDP协议的网络状态信息

示例:
分别查看本机开放的TCP端口、UDP端口

#nmap -sT 127.0.0.1
#nmap -sU 127.0.0.1

检测192.168.4.0/24网段有哪些主机提供HTTP服务#nmap -p 80 192.168.4.0/24检测192.168.4.0/24网段有哪些存活主机#nmap -n -sP 192.168.4.0/24

natstat命令常用选项

-a:显示主机中所有活动的网路连接信息(包括监听、非监听状态的服务端口)。

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

-t:查看TCP相关的信息

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

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

-r:显示路由表信息

可以使用 netstat -natp 命令来查看本机开了多少个TCP 协议

也可使用netstat -naup 是查看开启了多少个UDP 协议

Linux系统安全基本措施及应用(关于账户安全以及sudo权限,安全认证等)相关推荐

  1. Linux系统安全与应用(一)——账号安全与控制与PAM认证模块

    Linux系统安全与应用(一)--账号安全与控制与PAM认证模块 一.账号安全控制 1.系统账号清理 2.密码安全控制 ①.设置密码有效期 ②.要求用户下次登陆时更改密码 3.命令历史限制 4.终端自 ...

  2. Linux系统安全保护措施

    1.系统安全记录文件 操作系统内部的记录文件是检测是否有网络入侵的重要线索.如果系统是直接连接到Internet的,且发现有很多人对系统做telnet/FTP登录尝试,可以运行"#more/ ...

  3. 【AWSL】之Linux系统安全及应用(su、PAM、sudo、GRUB、JR、NMAP)

    序言 这里我主要介绍Linux系统安全与应用 系统安全与应用 序言 一 .账号安全控制 1.账号安全基本措施 ①系统账号清理 ②密码安全控制 ③命令历史限制 ④终端自动注销 二 .系统引导和登录控制 ...

  4. linux系统中acpid的作用,ACPID电源按钮事件本地权限提升漏洞

    发布日期:2011-12-08 更新日期:2012-08-21 受影响系统: acpid acpid 2.0.10 acpid acpid 1.0.8 acpid acpid 1.0.3 acpid ...

  5. linux系统下修改某个文件夹下所有的文件权限

    sudo chmod -R 777 /home/pi/micropython/ 转载于:https://www.cnblogs.com/sunsuoli/p/11089331.html

  6. 十个效果酷炫的Linux系统操作指令(像黑客帝国般的效果~)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 想想电影黑客帝国中的画面,估计会令很多人都叹为观止,其实最简单的只 ...

  7. 服务器linux系统支持php好,关于Linux服务器系统的七大优势,你知道几个?

    Linux是开源的操作系统,主要支持PHP,在目前市场上Linux系统在互联网企业中使用率也是非常广泛的,具有不可或缺的作用,那么Linux服务器有哪些优势?总结了七点,你都知道吗? 1.开源:Lin ...

  8. Linux学习之CentOS(八)--Linux系统的分区概念

    不知不觉已经记录了8篇Linux学习随笔了,虽然还是漂浮在Linux系统的表面,还有很多很多没有学,但是坚持学下去.坚持写下去就是成功的!!!! 在讲Linux系统分区之前,首先得介绍一下硬盘分区的知 ...

  9. Linux系统中常用操作命令

    常用指令 ls        显示文件或目录      -l          列出文件详细信息l(list)      -a         列出当前目录下所有文件及目录,包括隐藏的a(all) m ...

  10. Linux系统chmod命令读、写、执行

    一.chmod命令  u - 表示用户 (user)      g - 表示用户组 (group)       o - 表示其它 (others)        a - 表示所有 (all) 1.ch ...

最新文章

  1. Block的声明和线程安全
  2. FastReport.Net使用:[36]续表
  3. Jenkins的入门(二)配置
  4. oracle 11g的em界面按钮乱码的解决办法
  5. 小ck活动机器人包包_别只知道小 CK!这 5 款小众包包更值得买
  6. 计算机应用大一题,大一计算机应用基础习题与答案(精选).doc
  7. [转载]【Java EE】Struts2.1.6与Spring2.5.6框架整合
  8. 【4】协同过滤算法的原理与实现
  9. php判断访问的当前设备是手机还是电脑
  10. python open打开文件的方式
  11. LanguageTool最简范例代码
  12. Icons8 Cube4Nano专业外置声卡设备与windows event log无法启动
  13. 计算机应用期刊查重率要求,计算机学报先审稿还是先查重
  14. PFC离散元与FLAC3D数值仿真核心技术与应用” 线上培训
  15. 计算机怎么给硬盘加密,电脑上的硬盘如何加密?几种文件加密的方法
  16. echarts 柱状图渐变色背景
  17. MySQL学习篇(一 安装)
  18. Navicat for MySQL 安装(百度云链接)
  19. 5 种sem追踪区分客户电话来源的方式
  20. 联想机型报 enter your input here

热门文章

  1. 解密QQ的MsgEx.db消息文件格式
  2. ASCII表,二进制、十进制对照表
  3. node.js实现网络爬虫获取区划代码和城乡划分代码
  4. 2016年考研数学一解析 ​​​
  5. 手机号码校验正则表达式
  6. 软件工程--需求分析的任务详解
  7. PCB绘图要点QA汇总
  8. WS2811芯片 SM16703 SOP8 RGB流水幻彩灯LED驱动IC
  9. 激活navicat提示rsa public key not find的问题
  10. 【Red5流媒体服务器搭建】