Linux:系统安全及应用

目录

一、系统账号管理

1.1、系统账号清理

1.2、密码安全控制

1.3、命令历史限制

二、限制su命令用户

三、PAM安全认证

四、sudo机制提升权限

4.1、sudo机制介绍

4.2、用户别名案例

4.3、启用sudo操作日志

4.4、其他案列sudo

4.5、开关机安全控制

4.6、限制更改GRUB引导参数

4.7、终端登录安全控制

五、系统弱口令检测

六、网络端口扫描nmap

6.1、nmap扫描类型

6.2、netstat命令


一、系统账号管理

1.1、系统账号清理

grep "/sbin/nologin$" /etc/passwd
usermod -s /sbin/nologin 用户名

案例
#账号锁住
usermod -L zhangsan #锁定账号 
passwd -S zhangsan # 查看账号状态
passwd -l zhangsan 锁定用户账户

#解锁账号
usermod -U zhangsan #解锁账号 
passwd -u zhangsan  #解锁账号 

删除无用账号
userdel -r 用户名

#锁定文件
chattr +i /etc/passwd /etc/shadow    #锁定文件

lsattr /etc/passwd /etc/shadow       #查看为锁定的状态

chattr -i /etc/passwd /etc/shadow    #解锁文件

1.2、密码安全控制

vim /etc/login.defs    #适用于新建的用户

PASS_MAX_DAYS 30      #设置密码有效期30天   默认99999      30  90  60 天很少

PASS_MIN_DAYS   0    #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0

PASS_MIN_LEN    5    #密码最小长度,对于root无效   18位包含密码复杂性 大写 、小写、字符、数字

PASS_WARN_AGE   7    #指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。

#chage 命令用于设置密码时限

chage -M 30 lisi  #适用于已有的 lisi 用户

#执行以下操作可强制要求用户zhangsan下次登录时重设密码

chage -d 0 zhangsan

1.3、命令历史限制

history
history -c 临时的清除

clear

二、限制su命令用户

默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root) 的登录密码,这样带来了安全风险。

为了加强 su 命令的使用控制,可以借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换。

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

vim /etc/pam.d/su
2 # auth sufficient pam_ rootok.so
6 #auth required pam_ wheel.so use_ _uid

a)以上两行是默认状态(即开启第一行,注释第二行),这种状态下是允许所有用户间使用su命令进行切换的。

b)两行都注释也是运行所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码)。

c)如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令

d)如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

三、PAM安全认证

可插拔是形象说法 不是外部设备也不是U盘,可插拔可以理解为可配置、可定制的一个模块,你想让某个服务具有什么样的认证功能,你就可以通过配置它的配置文件实现;
可以理解为可配置、可定制、我们可以编辑,我们可以定制某个服务的认证就是可插拔试认证模块,它是一种高效而且灵活的便利的用户级的认证,也是现在linux 服务器普遍使用的认证方式。

PAM认证原理:
1.PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_ *.so;
2. PAM认证首先要确定哪一项应用 服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(位于
/lib64/security/下)进行安全认证。
3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。
如果想查看某个程序是否支持PAM 认证,可以用ls命令进行查看/etc/pam.d/
PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用

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

PAM 认证类型包括四种:
认证管理(authentication management):接受用户名和密码,进而对该用户的密码进行认证;
帐户管理(account management):检查帐户是否被允许登录系统,帐号是否已经过 期,帐号的登录是否有时间段的限制等;
密码管理(password management):主要是用来修改用户的密码; 
会话管理(session management):主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。 
1)required 验证失败时仍然继续,但返回 Fail 
2)requisite 验证失败则立即结束整个验证过程,返回 Fail 
3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续 
4)optional 不用于验证,只是显示信息(通常用于 session 类型)

四、sudo机制提升权限

4.1、sudo机制介绍

  通过su命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登 录密码。例如,若要从zhangsan 用户切换为 root 用户,必须知道 root 用户的密码。对于生产环 境中的 Linux 服务器,每多一个人知道特权密码,其安全风险也就增加一分。 有没有一种折中的办法,既可以让普通用户拥有一部分管理权限,又不需要将 root 用户的密码告诉他呢?答案是肯定的,使用 sudo命令就可以提升执行权限。不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令。

sudo [参数选项] 命令
-l :列出用户在主机上可用的和被禁止的命令;一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置正确的;
-v :验证用户的时间戳;如果用户运行sudo 后,输入用户的密码后,在短时间内可以不用输入口令来直接进行sudo 操作;用-v 可以跟踪最新的时间戳;
-u: 指定以以某个用户执行特定操作;
-k: 删除时间戳,下一个sudo 命令要求用求提供密码;

/etc/sudoers文件的默认权限为440,需使用专门的 visudo 工具进行编辑。虽然也可以用 vi 进行编辑,但保存时必须执行“:w!”命令来强制操作,否则 系统将提示为只读文件而拒绝保存。

4.2、用户别名案例

当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户、 主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias,Cmnd_Alias来进行设置。

用户别名的语法格式:
1)User_Alias  用户别名:包含用户、用户组(%组名(使用%引导))、还可以包含其他其他已经用户的别名
 User_Alias OPERATORS=zhangsan,tom,lisi 
2)Host_Alias
主机别名:主机名、IP、网络地址、其他主机别名 !取反
 Host_Alias MAILSVRS=smtp,pop 
3)Cmnd_Alias
命令路劲、目录(此目录内的所有命令)、其他事先定义过的命令别名
Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum 

4.3、启用sudo操作日志

visudo
Defaults logfile = "/var/log/sudq"

sudo日志记录以备管理员查看,应在/etc/sudoers 文件中增加“Defaults logfile”设置
如果已经启用 sudo 日志,则可以从/var/log/sudo 文件中看到用户的 sudo 操作记录。

4.4、其他案列sudo

sudo 配置记录的命令部分允许使用通配符“*”、取反符号“!”,当需要授权某个目录下的 所有命令或取消其中个别命令时特别有用。例如,若要授权用户 syrianer 可以执行/sbin/目录下除 ifconfig、route 以外的其他所有命令程序,可以执行以下操作。

4.5、开关机安全控制

在互联网环境中,大部分服务器是通过远程登录的方式来进行管理的,而本地引导和终端登录过程往往容易被忽视,从而留下安全隐患。特别是当服务器所在的机房环境缺乏严格、 安全的管控制度时,如何防止其他用户的非授权介入就成为必须重视的问题;

对于服务器主机,其物理环境的安全防护是非常重要的,不仅要保持机箱完好、机柜锁 闭,还要严格控制机房的人员进出、硬件设备的现场接触等过程。在开关机安全控制方面, 除了要做好物理安全防护以外,还要做好系统本身的一些安全措施。

4.6、限制更改GRUB引导参数

从系统安全的角度来看,如果任何人都能够修改 GRUB 引导参数,对服务器本身显然是一个极大 的威胁。为了加强对引导过程的安全控制,可以为 GRUB 菜单设置一个密码,只有提供正 确的密码才被允许修改引导参数。 
为 GRUB 菜单设置的密码建议采用“grub2-mkpasswd-pbkdf2”命令生成,表现为经过 PBKDF2 算法加密的字符串,安全性更好。生成密码后在/etc/grub.d/00_header 配置文件 中,添加对应的用户、密码等配置。

重启系统进入GRUB菜单时,按e键将需要输入账号密码才能修改引导参数。

[root@kgc ~]# grub2-mkpasswd-pbkdf2      #根据提示设置GRUB菜单的密码
输入口令:
Reenter password:  123456
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i

[root@kgc ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@kgc ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
[root@kgc ~]# vim /etc/grub.d/00_header
cat << EOF 
set superusers="root"       #设置密码,省略部分内容为经过加密生成的密码字符串
password_pbkdf2 root grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i
EOF
使用 grub2-mkconfig 命令生成新的 grub.cfg 配置文件。
[root@kgc ~]# grub2-mkconfig -o /boot/grub2/grub.cfg //生成新的 grub.cfg 文件



一步到位
grub2-setpassword

4.7、终端登录安全控制

限制root只在安全终端登录
禁止普通用户登录 当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登录系统。

只需要简单地建立/etc/nologin 文件即可。login 程序会检查/etc/nologin 文件是否存在, 如果存在,则拒绝普通用户登录系统(root 用户不受限制)。
touch /etc/nologin  #除root以外的用户不能登录了。

虚拟控制台的选择可以通过按下Ctrl+Alt键和功能键Fn(n=1~6)来实现(tty1-tty6) tty1 图形界面  tty2-6 字符界面

注释 tty4
root 就不能登录

五、系统弱口令检测

一款密码分析工具,支持字典式的暴力破解通过对shadow文件的口令分析,可以检测密码强度

1.首先将准备好的john工具包通过xshell直接拖到/opt日录下,并进行解压

tar zxvf john-1.8.0.tar.gz  

2.安装软件编译环境

cd /opt/john-1.8.0/src

yum install gcc gcc-c++ -y

3.破解

[root@wangming john-1.8.0]# cd ./run
[root@wangming run]# ./john /etc/passwd /etc/shadow
Loaded 2 password hashes with 2 different salts (crypt, generic crypt(3) [?/64])
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:09 64% 1/3 0g/s 331.7p/s 331.7c/s 331.7C/s Wangming74..wangming99999E
000000           (wangming)
000000           (root)
2g 0:00:00:25 100% 2/3 0.07936g/s 278.1p/s 323.8c/s 323.8C/s serena..88888888
Use the "--show" option to display all of the cracked passwords reliably
Session completed

六、网络端口扫描nmap

6.1、nmap扫描类型

-p:分别用来指定扫描的端口

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

-sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 
tcp确定三次握手
-sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果 成功则认为目标端口正在监听服务,否则认为目标端口并未开放。 

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

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

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

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

6.2、netstat命令

查看当前操作系统的网络连接状态、路由表、接口统计等信息,它是了解网络状态及排除网络服务故障的有效工具 。

-n          以数字的形式显示相关的主机地址、端口等信息                   
-r          显示路由表信息                                           
-a          显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-l          显示处于监听(Listening)状态的网络连接及端口信息。         
-t          查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。
-u          显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。 
-p          显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限。

用法:①通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显示对应的进程信息;
②配合管道符grep过滤出特定的记录。

Proto显示连接使用的协议,
RefCnt表示连接到本套接口上的进程数量,
Types显示套接口的类型,
State显示套接口当前的状态,
Path表示连接到套接口的其它进程使用的路径名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值