系统安全及应用

这里写目录标题

  • 系统安全及应用
    • 一.账号安全措施
      • 1.将账号设置为无法登录
      • 2.锁定用户
      • 3.锁定配置文件
      • 4.密码限制
      • 5.历史命令
      • 6.切换用户
      • 7.PAM安全认证
      • 8.sudo
      • 9.grub加密
      • 10.nmap扫描

系统安全及应用

一.账号安全措施

1.将账号设置为无法登录

usermod -s

[root@localhost ~]#usermod -s  /sbin/nologin lisi
[root@localhost ~]#su lisi
This account is currently not available.
[root@localhost ~]#
//lisi无法登录

2.锁定用户

passwd -l

[root@localhost ~]#passwd -l lisi
锁定用户 lisi 的密码 。
passwd: 操作成功
//锁定lisi密码无法登录

3.锁定配置文件

chattr

选项 说明
-a 让文件或目录仅供附加用途
+i 不得任意更动文件或目录
[root@localhost ~]#chattr +i /etc/passwd
[root@localhost ~]#useradd wang
useradd:无法打开 /etc/passwd
//不得更改passwd文件无法添加用户
[root@localhost ~]#chattr -i /etc/passwd
[root@localhost ~]#useradd wang
[root@localhost ~]#
//解除

4.密码限制

chage 选项 用户名

选项 说明
-m 密码可更改的最小天数
-M 密码保持有效的最大天数
-w 用户密码到期前,提前收到警告信息的天数
-E 帐号到期的日期。过了这天,此帐号将不可用
-d 上一次更改的日期
-i 停滞时期
-l 例出当前的设置

5.历史命令

history -c

清除

[root@localhost ~]#vim /etc/profile
.............................
export HISTSIZE=200
[root@localhost ~]#source /etc/profile
[root@localhost ~]#history
  263  userdel -r wangwu
  264  su wang
  265  chattr +i /etc/passwd
  266  useradd wang
  267  chattr -i /etc/passwd
  268  useradd wang
  269  vim /etc/profile
  270  history
  271  source /etc/profile
  272  history
[root@localhost ~]#
//只显示十条
[root@localhost ~]#vim .bash_logout 
//退出后清除
// ~/.bash_logout
echo "   " >~/.bash_history
//一定要加空格
[root@localhost ~]#vim .bashrc     自对自己生效

6.切换用户

su与su-

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

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

[root@localhost ~]#su lisi
[lisi@localhost root]$ exit
exit
[root@localhost ~]#su - lisi
上一次登录:日 7月 30 14:26:52 CST 2023pts/0 上
[lisi@localhost ~]$ 

7.PAM安全认证

PAM:Pluggable Authentication Modules,插件式的验证模块,Sun公司于1995 年开发的一种与认证相关的通用框架机制。

相关文件:

包名: pam

模块文件目录:/lib64/security/*.so

特定模块相关的设置文件:/etc/security/

man 8 加模块名 可以查看帮助

应用程序调用PAM模块的配置文件

  1. 主配置文件:/etc/pam.conf,默认不存在,一般不使用主配置
  2. 为每种应用模块提供一个专用的配置文件:/etc/pam.d/APP_NAME
  3. 注意:如/etc/pam.d存在,/etc/pam.conf将失效

工作原理:

PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so

专用配置文件/etc/pam.d/ 格式

type control module-path arguments



application:指服务名,如:telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
type:指模块类型,即功能
control :PAM库该如何处理与该服务相关的PAM模块的成功或失败情况,一个关健词实现
module-path: 用来指明本模块对应的程序文件的路径名
Arguments: 用来传递给该模块的参数

shell模块

功能:检查有效shell

帮助:man pam_shells

案例:不允许使用/bin/csh的用户本地登录

模块: pam_shells.so 只允许 规定的shell类型通过, 是在/etc/shells 文件中存在的 类型通过

[root@localhost ~]#vim /etc/shells

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh


//去掉/bin/csh
使用csh的用户将无法登录

securetty模块

功能:只允许root用户在/etc/securetty列出的安全终端上登陆

vim /etc/pam.d/remote

[root@localhost ~]#vi /etc/pam.d/remote

#%PAM-1.0
auth       required     pam_securetty.so
auth       substack     password-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin
//将auth required pam_securetty.so注释

limit

功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间

修改限制的实现方式:

(1) ulimit命令

ulimit是linux shell的内置命令,它具有一套参数集,用于对shell进程及其子进程进行资源限制。

ulimit的设定值是 per-process 的,也就是说,每个进程有自己的limits值。使用ulimit进行修改,立即生效。

ulimit只影响shell进程及其子进程,用户登出后失效。

可以在profile中加入ulimit的设置,变相的做到永久生效

选项 说明
-H 设置硬件资源限制
-S 设置软件资源限制.
-c 设置core文件的最大值.单位:blocks
-d 设置数据段的最大值.单位:kbytes
-f 设置创建文件的最大值.单位:blocks
-l 设置在内存中锁定进程的最大值.单位:kbytes
-m 设置可以使用的常驻内存的最大值.单位:kbytes
-n 设置内核可以同时打开的文件描述符的最大值.单位:n
-p 设置管道缓冲区的最大值.单位:kbytes
选项 说明
-s 设置堆栈的最大值.单位:kbytes
-t 设置CPU使用时间的最大上限.单位:seconds
-u 最大用户进程数
-v 设置虚拟内存的最大值.单位:kbyte
-a 显示当前所有的资源限制
[root@localhost ~]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7168
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7168
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited





//open files                      (-n) 1024
这一条限制了进程能打开的文件数,1024远远不够使用。所以得为其增加
[root@localhost ~]#ulimit -n 100000
[root@localhost ~]#ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7168
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 100000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7168
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

limits 生产中的 建议设置

*                soft    core            unlimited
*                hard    core            unlimited
*                soft    nproc           1000000
*                hard    nproc           1000000
*                soft    nofile          1000000
*                hard    nofile          1000000
*                soft    memlock         32000
*                hard    memlock         32000
*                soft    msgqueue        8192000
*                hard    msgqueue        8192000

//注意通信是相互得,所以两端必须一样设置

8.sudo

sudo特性:

sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员

sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器

sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票

sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0440

[root@localhost ~]#vim /etc/sudoers
[root@localhost ~]#visudo
//语法检查

visudo -c
//检查语法
//建议使用visudo

配置文件格式说明:/etc/sudoers, /etc/sudoers.d/

配置文件中支持使用通配符 glob

[root@localhost ~]#visudo
...........
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
//允许root在任何地方使用任何命令
..............
//用户    登入主机    =    (代表用户)     命令
user  	host       =    (runas)       command
user: 运行命令者的身份
host: 通过哪些主机 多个 192.168.91.100 - 110  localhost
(runas):以哪个用户的身份
command: 运行哪些命令


//也可以对组进行操作
%在前表示组
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL 

root ALL=(ALL) ALL

当root得uid不为0时

别名

sudo别名有四种类型:

User_Alias(用户)

Runas_Alias(代表用户)

Host_Alias(登录主机)

Cmnd_Alias(命令)

必须大写字母,数字可以使用但是不能放在开头

示例

Host_Alias MYHOSTS = kgc,localhost
User_Alias MYUSERS = zhangsan,wangwu,lisi
Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm


MYUSERS MYHOSTS=NOPASSWD:MYCMNDS

子目录

为了不对全局生效,可以在/etc/sudoers.d/下创建子目录,只对部分生效,此原理适用于其他软件

9.grub加密

[root@localhost ~]#grub2-setpassword
//直接设置密码

10.nmap扫描

选项 说明
-p 指定扫描的端口
-n 禁用反向DNS解析(以加快扫描速度)
-sS TCP的SYN扫描 (半开扫描),只向目标发出SYN数据包
-sT TCP连接扫描,这是完整的TCP扫描方式
-sF TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包
-sU UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢
-sP ICMP 扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描
-P0 跳过ping检测, 这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描
-sL List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
选项 说明
-sn Ping Scan 只进行主机发现,不进行端口扫描
-Pn 将所有指定的主机视作开启的,跳过主机发现的过程
-PS/PA/PU/PY 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现
-PE/PP/PM 使用ICMP echo, timestamp, and netmask 请求包发现主机
-n/-R -n表示不进行DNS解析;-R表示总是进行DNS解析
nmap -n -sP 192.168.80.0/24 
//检测192.168.80.0/24网段有哪些存活主机   

你可能感兴趣的:(系统安全,安全)