admin管理员组

文章数量:1547948

每日分享:
哪有什么一夜成名,其实都是百炼成钢。


文章目录

  • 一、账号安全控制
    • 1、账号安全基本措施
      • 1.1、系统账号清理
        • 1.1.1、将用户设置为无法登录
        • 1.1.2、锁定用户——passwd
        • 1.1.3、删除用户——userdel
        • 1.1.4、锁定配置文件——chatter
      • 1.2、密码安全控制
        • 1.2.1、设置密码
      • 1.3、历史命令
      • 1.4、切换用户——su
      • 1.5、PAM安全认证
        • 1.5.1、PAM相关文件
        • 1.5.2、PAM工作原理
      • 1.6、提升权限——sudo
  • 二、系统引导和登录控制
    • 1、GRUB加密
    • 2、修改密码
  • 三、端口扫描——NMAP


一、账号安全控制

1、账号安全基本措施

1.1、系统账号清理

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

  • 锁定长期不适用的账号

  • 删除无用的账号

  • 锁定账号文件passwd、shadow

shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。

1.1.1、将用户设置为无法登录

1.1.2、锁定用户——passwd
[root@localhost ~]# usermod -L 用户名    ##锁定用户账号方法一
[root@localhost ~]# passwd -l 用户名     ##锁定用户账号方法二
[root@localhost ~]# usermod -U 用户名    ##解锁用户账号方法一
[root@localhost ~]# passwd -u  用户名    ##解锁用户账号方法二


1.1.3、删除用户——userdel
[root@localhost ~]# userdel 用户名		
[root@localhost ~]# userdel -r 用户名     ##加上-r可以把家目录下的用户目录一起删除
1.1.4、锁定配置文件——chatter

-a     让文件或目录仅供附加用途。只能追加

-i      不得任意更动文件或目录。

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow   ##锁定文件,包括root也无法修改
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow    ##解锁文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow    ##查看文件状态属性

1.2、密码安全控制

1.2.1、设置密码

对于新建用户
可以修改 /etc/login.defs 文件里的内容来设置密码规则

[root@localhost ~]# vim /etc/login.defs   ##适用于修改后生效后修改的用户

对于已有用户可以使用chage命令

chage [选项] 用户名
-m:   密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:   密码保持有效的最大天数。
-w:   用户密码到期前,提前收到警告信息的天数。
-E:   帐号到期的日期。过了这天,此帐号将不可用。
-d:   上一次更改的日期。
-i:   停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:   例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

[root@localhost ~]# chage -M 天数  用户名     ##修改用户密码的最大有限天数
[root@localhost ~]# chage -d 0 用户名         ##强制要求用户下次登陆时修改密码

1.3、历史命令

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。

#可以使用以下命令临时清除历史命令
history -c 
clear

1.[root@localhost ~]# vim /etc/profile  进入配置文件修改限制命令条数。适合新用户
   HISTSIZE=200     						  ##修改限制命令为200条,系统默认是1000条profile 
   [root@localhost ~]# source /etc/           ##刷新配置文件,使文件立即生效
 
2.[root@localhost ~]# export HISTSIZE=200     ##适用于当前用户
   [root@localhost ~]# source /etc/profile 
   [root@localhost ~]# source /etc/profile    ##刷新配置文件,使文件立即生效

3. 退出时自动清空命令:
[root@localhost ~]#vim .bash_logout 
#退出后清除
# ~/.bash_logout
echo " " >~/.bash_history

1.4、切换用户——su

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令

切换用户的方式:

su username:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换

su - username:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换

说明:root su至其他用户无须密码;非root用户切换时需要密码
注意:su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

su 与 su-
即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误

1.5、PAM安全认证

PAM 只关注如何为服务验证用户的 API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序一种认证框架,自身不做认证。

1.5.1、PAM相关文件
  • 包名: pam
  • 模块文件目录:/lib64/security/*.so
  • 特定模块相关的设置文件:/etc/security/
  • 应用程序调用PAM模块的配置文件
  1. 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
  2. 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
  3. 注意:如/etc/pam.d存在,/etc/pam.conf将失效
1.5.2、PAM工作原理
  • PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so

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

  • 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证。不同的应用程序所对应的PAM模块也是不同的。

  • 如果想查看某个程序是否支持PAM认证,可以用ls命令进行查看/etc/pam.d/。
    ls /etc/pam.d/ | grep su

  • PAM的配置文件中的每一行都是一个独立的认证过程,它们按从上往下的顺序依次由PAM模块调用。


1.6、提升权限——sudo

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性

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

配置sudo授权:
visudo 或者 vim /etc/sudoers
记录格式:
用户 主机名列表=命令程序列表
可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
权限生效后,输入密码后5分钟可以不用重新输入密码。

sudo别名有四种类型:
 Host_Alias MYHOST= localhost  主机名
 User_Alias MYUSER = yxp,zhangsan,lisi  需要授权的用户   
 Cmnd_Alias MYCMD = /sbin/*,/usr/bin/passwd  授权
 MYUSER  MYHOST = NOPASSWD : MYCMD  授权格式
​
查看sudo操作记录
需启用Defaults logfile
配置默认日志文件: /var/log/sudo

二、系统引导和登录控制

1、GRUB加密

定义每个菜单项的所有脚本都存放在/etc/grub.d目录中,这些脚本的名称必须有两位的数字前缀,其目的是构建GRUB 2菜单时定义脚本的执行顺序以及相应菜单项的顺序

由于GRUB 2负责引导linux系统,其作为系统中的第一道屏障的安全性非常重要,对GRUB 2进行加密可以实现安全性。
GRUB 2密码支持以下两种格式:

  • 明文密码:密码数据没有经过加密,安全性差

  • PBKDF2加密密码:密码经过PBKDF2哈希算法进行加密,在文件中存储的是加密后的密码数据,安全性较高。

2、修改密码

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

[root@localhost ~]## cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]## cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
#备份文件  
[root@localhost ~]## vim /etc/grub.d/00_header
#最后
cat << EOF 
set superusers="root"       ##设置登录用户

password_pbkdf2 root        ##设置密码
grub.pbkdf2.sha512.10000.E96097D1B1E470345D9FB62759335832B4A0F39CD4C9A57B502BD59CF1B8C393EEA37847984E242AAD4BFBB72E4BDC2196E6A7495CE7C86BF3D2498A34CAC2B7.B2EB99ED40267AE9496357B78C0DC04CE79957980A4A3FFA577B7502D70A5412D2EAD5CE4DAAC0FE068621CB29B76E44A7645EDCC7784FF20E113AF0B95E3467i
EOF
[root@localhost ~]## grub2-mkconfig -o /boot/grub2/grub.cfg    ##生成新的 grub.cfg 文件

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

cat << EOF
set superusers="root"
password_pbkdf2 root  grub.pbkdf2.sha512.10000.4F3CD9383616C3AAFB1E98A289CB707A6FEEDAE7BEFB10A59642FE641C8F13AD9A27EAD43DEB07D9F4228149C716FA40C8C04E13E98FFAC45EF7AA2AD76C96B9.49CEC46B324DC9A94D0B461C711569ADB79213708929B1891232DB5FE31EC6F5A0A4E4D0A4AA0EAA64E38A6876EEB3B5EBF8991D0FB04537E1F39D1AA40D1AD5
EOF


cat << EOF
set superusers="用户" 
password_pbkdf2 用户  加密密码
EOF

方法二:
[root@localhost ~]#grub2-setpassword      ##直接设置密码

三、端口扫描——NMAP

  • 一款强大的网络扫描、安全 检测工具

  • 官方网站:Nmap: the Network Mapper - Free Security Scanner

  • CentOS 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

控制位
SYN         建立链接
ACK         确认
FIN  		结束断开
PSH  	    传送 0 数据缓存   上层应用协议
RST  		重置
URG 	  	紧急

紧急URG(URGent) 当URG等于1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按照原来的排队顺序来传送。
当URG置为1的时,发松应用进程就告诉发送方的TCP的有紧急数据要传传送,于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据,这时要与首部的紧急指针配合来使用。
确认ACK(ACKnowledgment) 仅当ACK = 1 时确认号字段才有效,当ACK = 0时,确认号无效。TCP规定,在连接建立之后所有的传送的报文段都必须把ACK置为1;

推送PSH(PuSH) 当两个应用进程进行交互式的通信时,有时在一端的应用进程希望键入一个命令后立即就能够收到对方的响应,在这种情况下,TCP就可以使用推送PSH操作,发送方的TCP把PSH置为1,并立即创建一个报文段发送出去。接收方收到PSH = 1的报文段,就尽快地(即“推送”向前)交付接受应用进程,而不再等到整个缓存都填满了再向上交付;

复位RST(ReSeT)当RST = 1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝一个打开一个连接。RST也称为重建位或重置位;

同步SYN(SYNchronization) 在连接建立时用来同步序号。当SYN = 1时而ACK = 1时表示这是一个连接请求报文段。对方若同意连接,则应在响应的报文段中是SYN = 1 和ACK = 1,因此SYN = 1就表示这是以恶搞连接请求或连接接受报文;
终止FIN(FINis) 用来释放一个连接,当FIN = 1时,表示次报文段的发送方的数据已经发送完毕,并要求释放运输连接





rpm -qa|grep nmap        ##查看nmap是否安装
yum install -y nmap		 ##安装nmap

常见的选项

选项说明
-p指定扫描的端口
-n禁用反向DNS解析(以加快扫描速度)
-sSTCP的SYN扫描 (半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放
-sTTCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sFTCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
-sUUDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sPICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描
-P0跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
nmap [扫描类型]  [选项]  <扫描目标>
netstat natp                                        #查看正在运行的使用TCP协议的网络状态信息
netstat -natp | grep httpd                          #实际操作(httpd换成80也可以)

常见端口号及服务

服务端口号
HTTP80
HTTPS443
Telnet23
FTP21
SSH(安全登录)、SCP(文件传输)、端口重定向22
SMTP25
POP3110
WebLogic7001
TOMCAT8080
WIN2003远程登录3389
Oracle数据库1521
MS SQL* SEVER数据库sever1433
MySQL 数据库sever3306

本文标签: 系统安全Linux