• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linux系统安全和应用

武飞扬头像
人间若有一两风
帮助1

目录

一、账号安全基本措施

1、系统账号清理

2、密码安全控制

3、命令历史限制

4、退出时自动清理历史命令

5、关于环境变量的读取顺序:

6、终端自动注销

 二、限制su命令用户

三、PAM认证原理(了解)

四、sudo机制提升权限

1、sudo机制介绍

2、配置sudo

3、sudo参数命令

4、启用sudo操作日志

五、nmap命令-网络端口扫描

六、netstat命令


本章结构
账号安全控制
系统引导和登录控制
端口扫描

一、账号安全基本措施

1、系统账号清理

  •   将非登录用户的Shell设为/sbin/nologin
  •   锁定长期不使用的账号
  •   删除无用的账号
  •   锁定账号文件passwd、shadow
  1.  
    chattr i /etc/passwd
  2.  
    锁定文件
  3.  
    chattr -i /etc/passwd
  4.  
    解锁文件
  5.  
    lsattr [选项] [文件或目录]
  6.  
    查看锁定的状态(文件或目录的扩展属性)

2、密码安全控制

  •   设置密码有效期
  •   要求用户下次登录时修改密码
  1.  
    vi /etc/login.defs #适用于新建的用户
  2.  
    PASS_MAX_DAYS 30 #设置密码有效期30天 默认99999
  3.  
    PASS_MIN_DAYS 0 #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0
  4.  
    PASS_MIN_LEN 5 #密码最小长度,对于root无效
  5.  
    注解:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
  6.  
    PASS_WARN_AGE 7 #指定在密码到期前多少天,系统就开始提醒用户密码即将到期,默认为 7 天。

学新通

  1.  
    chage -M 30 lisi
  2.  
    三十天后修改密码
  3.  
    chage -d 0 zhangsan
  4.  
    强制在下次登录时更改密码

3、命令历史限制

  •   减少记录的命令条数
  •   注销时自动清空命令历史
  1.  
    history
  2.  
    查看历史命令记录
  3.  
     
  4.  
    减少历史命令记录的命令条数
  5.  
    vi /etc/profile 编辑环境变量
  6.  
    /HISTSIZE 搜索
  7.  
    HISTSIZE=10 设置命令只保存十条
  8.  
    source /etc/profile 加载文件在整个环境中识别

 学新通

学新通4、退出时自动清理历史命令

  1.  
    vim ~/.bash_logout
  2.  
    history -c 清空历史记录(缓存)
  3.  
    clear 自动清空缓存

5、关于环境变量的读取顺序:

  1. 用户登录
  2. 加载~/.bash_profile
  3. bash_profile中配置了首先是使~/.bashrc生效
  • bashrc       用户登录时所执行的命令
  • bash_logouot 用户登出时所执行的命令
  • bash_history 当前用户使用命令的历史记录

6、终端自动注销

  1.  
    闲置600秒后自动注销
  2.  
    vim /etc/profile
  3.  
    export TMOUT=600
  4.  
    source /etc/profile 刷新

 学新通

 二、限制su命令用户

       默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root) 的登录密码,这样带来了安全风险。为了加强 su 命令的使用控制,可以借助于 pam_wheel 认证模块,只允许极个别用户使用 su 命令进行切换。实现过程如下:将授权使用 su 命令 的用户添加到wheel 组,修改/etc/pam.d/su 认证配置以启用 pam_wheel 认证。

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

  1.  
    vim /etc/pam.d/su
  2.  
     
  3.  
    2 # auth sufficient pam_rootok.so
  4.  
    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)如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

学新通

  1.  
    这条使得wheel成员su到root不用输密码
  2.  
    auth sufficient pam_wheel.so trust use_uid
  3.  
    这条使得非wheel成员无法切换到root
  4.  
    auth required pam_wheel.so use_uid

三、PAM认证原理(了解)

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

第一列代表PAM认证模块类型
auth: 对用户身份进行识别,如提示输入密码,判断是否为root。
account: 对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等。
password: 使用用户信息来更新数据,如修改用户密码。
session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统。

第二列代表PAM控制标记
required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败。
requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。
sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。
optional: 不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型),
include:表示在验证过程中调用其他的PAM配置文件。比如很多应用通过完整调用/etc/pam.d/system-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

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

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

四、sudo机制提升权限

1、sudo机制介绍

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

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

2、配置sudo

  1.  
    visudo 或 vim /etc/sudoers (保存需要强制保存)
  2.  
    用户/组名称 主机组(主机名)=(提权的权限身份-root) 赋权的使用命令(要以绝对路径的方式来写) 【可以为多个】

用户:直接授权指定的用户名,或采用"%组名"的形式(授权一个组的所有用户)
主机名:使用此规则的主机名,每配置过主机名时可以用locathost,有配过主机名则用实际的主机名,ALL代表带所有主机。
(用户):用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令
命令程序列表:允许授权的用户通过sudo方式执行的特权命令,需要填写命令程序的完整路径,多个命令之间以逗号进行分隔。 ALL代表所有命令

学新通

3、sudo参数命令

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

学新通

4、启用sudo操作日志

  1.  
    visudo
  2.  
    Defaults logfile = "/var/log/sudq"
  3.  
     
  4.  
    sudo日志记录以备管理员查看,应在/etc/sudoers 文件中增加“Defaults logfile”设置
  5.  
    如果已经启用 sudo 日志,则可以从/var/log/sudo 文件中看到用户的 sudo 操作记录。
  6.  
    注:启用日志:Defaults logfile=/var/log/sudo
  7.  
    另外一个方法是/var/log/secure 日志可查看到sudo操作用户步骤

五、nmap命令-网络端口扫描

可以使用NMAP扫描主机,主要输出的内容在于端口、协议、主机ip、是否存活
作用常见:
1、扫描指定协议(TCP/UDP)端口的母校IP、主机名、网络号是否开启
2、扫描注定的网段中那些主机是存活/开启的学新通

  1.  
    常用的扫描类型
  2.  
    -sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
  3.  
    tcp确定三次握手
  4.  
    -sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果 成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
  5.  
    -sF,TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。
  6.  
    -sU,UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP扫描的速度会比较慢。
  7.  
    -sP,ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
  8.  
    -P0,跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。

nmap -sT 127.0.0.1     扫描常用的 TCP 端口

nmap -sU  127.0.0.1    扫描常用的 UDP 端口

nmap -sP  127.0.0.1    ICMP 扫描

学新通学新通

六、netstat命令

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

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

 学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhejic
系列文章
更多 icon
同类精品
更多 icon
继续加载