【Linux词典】之系统安全命令及其应用


系统安全!几条命令让你的服务器固若金汤!!

  • 【Linux词典】之系统安全命令及其应用
  • 前言
  • 一、账号安全控制
    • 1.1 账号安全的基本措施
      • 1.1.1 将非登录用户的Shell设为/sbin/nologin
      • 1.1.2 锁定长期不使用的账号
      • 1.1.3 删除无用的账号
      • 1.1.4 锁定账号文件
      • 1.1.5 密码安全控制
      • 1.1.6 命令历史记录限制
      • 1.1.7 终端自动注销
      • 1.1.8 使用su命令切换用户
      • 1.1.9 限制使用su命令的用户
      • 1.1.10 Linux中的PAM安全认证
      • 1.1.11 使用sudo机制提升权限
  • 二、系统引导和登录控制
    • 2.1 开关机安全控制
    • 2.2 限制root只在安全终端登录
    • 2.3 禁止普通用户登录
    • 2.4 系统弱口令检测(Joth the Ripper,检测JR)
    • 2.5 网络端口扫描
  • 总结

前言


一、账号安全控制

1.1 账号安全的基本措施

1.1.1 将非登录用户的Shell设为/sbin/nologin

[root@localhost ~]# usermod -s nologin 用户名          #格式
[root@localhost ~]# usermod -s nologin zhangsan            #实际操作

1.1.2 锁定长期不使用的账号

[root@localhost ~]# usermod -L lisi         #锁定账户方式一
[root@localhost ~]# usermod -U lisi            #解锁账户方式一
[root@localhost ~]# passwd -l lisi         #锁定账户方式二
[root@localhost ~]# passwd -u lisi         #解锁账户方式二

1.1.3 删除无用的账号

[root@localhost ~]# userdel 用户名         #格式
[root@localhost ~]# userdel lisi           #实际操作

1.1.4 锁定账号文件

[root@localhost ~]# lsattr /etc/passwd /etc/shadow              #查看文件的状态
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow         #锁定文件
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow          #解锁文件

1.1.5 密码安全控制

设置密码有效期
要求用户下次登录时修改密码
1.格式:

1.适用于新建用户
[root@localhost ~]# vim /etc/login.defs            #修改配置文件
-----此处省略部分注释及配置-------
PASS_MAX_DAYS   30                                  #修改密码有效期为30天2.适用于已有用户
[root@localhost ~]# chage -M 30 zhangsan           #修改密码有效期3.强制在下次登录成功时修改密码(/etc/shadow第三个字段被修改为0)
[root@localhost ~]# chage -d 0 zhangsan                #设置下次登录强制修改密码

2.实例1:修改密码配置文件,要求新创建的用户密码有效期都为30天

3.实例2:将现有用户zhangsan的密码有效期也修改为30天。

4.实例3:将现有用户zhangsan设置为强制下次登录时需要修改密码。

登录时输入密码后,需要设置新的密码才可以。

1.1.6 命令历史记录限制

减少记录的命令条数;
登录时自动清空命令历史 ;
系统默认保存1000条历史命令记录;
history -c命令只可以临时清除记录,重启后记录还在。
1.格式:

1.对历史命令的数量进行限制
[root@localhost ~]# vim /etc/profile       #修改配置文件
export HISTSIZE=200                #修改命令历史记录数量最大为200,前面添加export为全局有效
source /etc/profile             #刷新配置文件,立即生效2.设置登录时自动清空命令历史
vim .bashrc                     #修改/etc/profile配置文件(每次切换bash都执行)
或
vim /etc/profile                #修改/etc/profile配置文件(执行一次)
echo " " > ~/.bash_history     #

2.实例1:修改历史命令记录为200条,并设置全局有效,并验证

3.实例2:设置登录时自动清空命令历史

1.1.7 终端自动注销

闲置 [ n ] 秒后自动注销。(n为数字)
1.格式:

[root@localhost ~]# vim /etc/profile            #编辑/etc/profile文件
export TMOUT=100                               #设置全局自动注销时间

2.案例1:设置100s秒终端自动注销

1.1.8 使用su命令切换用户

1.用途和用法

用途:Substitute User,切换用户
格式:su - 目标用户(横杠“ - ”代表切换到目标用户的家目录)
2.密码验证

root - - - >任意用户,不验证密码
普通用户- - - >其他用户,验证目标用户的密码
带 “ - ” 表示将使用目标用户的登录Shell环境
3.格式:

1.切换用户
[root@localhost ~]# su - zhangsan          #root切换普通用户
[zhangsan@localhost ~]$ su - root          #普通用户切换其他用户2.查看当前登录的用户
[root@localhost ~]# whoami                 #显示当前登录的用户

4.案例:测试用户之间切换

1.1.9 限制使用su命令的用户

将允许使用su命令的用户加入wheel组中;
启用pam_wheel 认证模块
1.格式:

[root@localhost ~]# vim /etc/pam.d/su           #编辑/etc/pam.d/su配置文件
[root@localhost ~]# gpasswd -a zhangsan wheel  #将希望可以使用su命令的用户加入到wheel组中
auth  required  pam_wheel.so use_uid            #将此行的注释取消即可

2.实例:有zhangsan和lisi两个用户,要求设置zhangsan可以使用su命令切换用户,lisi用户不允许使用。

  1. 实例2:查看su操作记录

1.1.10 Linux中的PAM安全认证

1.su命令的安全隐患

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

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

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

3.PAM认证原理:

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

1.1.11 使用sudo机制提升权限

1.sudo命令的用途及用法

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

2.配置sudo授权

  • visudo或者vi /etc/sudoers(此文件默认权限为440,保存时必须 wq!强制执行操作)
  • 记录格式:用户 主机名=命令程序列表
  • 可以使用通配符“ * ”号任意值和“ !”号进行取反操作。
  • 权限生效后,输入密码后5分钟可以不用重新输入密码。

3.语法格式:

用户 主机名=命令程序列表
用户 主机名=(用户)命令程序列表
zhangsan ALL=(root) /sbin/ifconfig             #实际操作

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

4.启用sudo操作日志

需启用Defaults logfile配置
默认日志文件:/var/log/sudo
操作:在/etc/sudoers末尾添加Defaults logfile="/var/log/sudo"

5.查询授权的sudo操作

sudo -l

6.实例1:查看当前sudo配置文件。

实例2:配置相关文件,使得zhangsan可以通过sudo命令使用ifconfig。

切换到zhangsan用户进行测试。

末尾插入下列配置,然后强制保存并退出。

进行测试。

实例3:设置wheel组进行sudo操作时无需密码验证,并将lisi用户添加到wheel组中测试。

这里是sudo配置文件 /etc/sudoers 内的具体修改步骤:

实例4:使用关键字来进行设置别名,批量控制用户进行sudo操作时无法使用重启(reboot)、关机(poweroff)、切换init和无法删除。
第一步:vim /etc/sudoers 或者visudo 修改配置文件(这里我使用的是第一种)

第二步:添加配置

第三步:使用普通用户进行测试

第四步:查看zhangsan和lisi的可使用权限。

实例5:修改实例4,使zhangsan和lisi用户可以无需密码使用sudo可以使用的权限为/sbin下所有。

实例6: 在/car/log下创建sudo日志文件,用来存储用户使用的sudo命令记录。

二、系统引导和登录控制

2.1 开关机安全控制

1.调整BIOS引导设置

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

2.GRUB限制

使用grub2-mkpasswd-pbkdf2生成密钥;
修改/etc/grub.d/00_ header文件中, 添加密码记录;
生成新的grub.cfg配置文件。

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

4.实例:为GRUB菜单设置密码
第一步:我们先来看一下未设置之前的状态

第二步:使用grub2-mkpasswd-pbkdf2生成密钥并复制,然后备份两个配置文件。

第三步:修改/etc/grub.d/00_ header文件中, 添加密码记录,并存并退出

第四步:生成新的grub.cfg文件,然后重启系统

第五步:验证结果

2.2 限制root只在安全终端登录

安全终端配置:/etc/securetty
tty1~ 6是文本型控制台,tty7 是X Window图形显示管理器。可以通过CtrI+Alt+F1 (F1-F7键) 切换到对应的登录控制台。
实例:禁止root在tty3终端登录
第一步:更改相关配置文件

第二步:切换至tty3进行测试

第三步:切换至其他终端进行测试

2.3 禁止普通用户登录

建立/etc/nologin文件
删除nologin文件或者重启后即恢复正常
1.格式

[root@localhost ~]# touch /etc/nologin          #禁止普通用户登录
[root@localhost ~]# rm -rf /etc/nologin        #删除后即可恢复

2.禁止普通用户登录系统
第一步:创建/etc/nologin文件

第二步:使用普通用户进行测试

第三步:使用root进行测试

2.4 系统弱口令检测(Joth the Ripper,检测JR)

1.介绍:

一款密码分析工具,支持字典式的暴力破解;
通过对shadow文件的口令分析,可以检测密码强度;
官方网站:http://www.openwall.com/john

2.安装JR工具

安装方法 make clean 系统类型
主程序文件为john

3.检测弱口令账户

获得Linux/Unix服务器的shadow文件;
执行john程序,将shadow文件作为参数

4.密码文件的暴力破解

准备好密码字典文件,默认为psaaword.lst
执行john程序,结合–wordlist=字典文件(有更强大的字典可以使用).
第一步:将john-1.8.0.tar.gz安装包拖入Linux系统内。

第二步:移动至/opt 然后解压

第三步:编译安装指定程序

第四步:添加三个用户并设置简单密码,用于下面测试破解

第五步:将/etc/shadow 文件复制到/opt下进行暴力破解

第六步:可以使用–show进行查看破解处的密码

2.5 网络端口扫描

1.NMAP

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

nmap [扫描类型]  [选项]  <扫描目标>
netstat natp                                    #查看正在运行的使用TCP协议的网络状态信息
[root@localhost ~]# netstat -natp | grep httpd         #实际操作(httpd换成80也可以)netstat -naup                                  #查看正在运行的使用UDP协议的网络状态信息

3.常见的选项

常见的选项 选项的作用

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

常用选项 作用

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

5.实例1:开启本机的httpd,然后进行扫描
第一步:查询并安装nmap和httpd程序

第二步:开启httpd服务,然后对httpd进行扫描查看网络状态

实例2:查看本机开放的TCP和UDP端口

实例3:查看192.168.80.0/24网段内有多少存活主机。
第一步:开启另一台虚拟机进行查看ip地址测试

第二步:返回原虚拟机进行扫描测试

实例4:查看192.168.80.0/24网段内有哪些主机提供HTTP服务


总结

系统安全!几条命令让你的服务器固若金汤!!相关推荐

  1. 命令方块做服务器清理系统,我的世界命令方块 如何在服务器中做签到装置

    导读 这里给大家介绍一个用原版命令方块做的签到装置,我用的版本是1.12(1.9以上的应该都行),废话不多说了,先开始吧 我看大家总是说我做的都是新手向,这回来一个难一点的的 大家应该都知道在服务器中 ...

  2. linux 命令 修改密码,一条命令修改Linux密码

    方法一.直接使用passwd命令 /bin/echo newpass|/usr/bin/passwd --stdin username *注:该方式只适用于红帽系操作系统,比如centos,redha ...

  3. linux系统useradd及周边命令和概念详解

    在Linux 系统中,所有的用户和组像一个国家.如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成.在linux 中如果你对安全需求比较苛刻,完全可以限制用户的各种行为 ...

  4. 系统无ifconfig,一条命令获取本机ip并将其赋值给指定变量来使用

    在Linux系统中,准确地获取本机IP信息是非常有用的.在写bash shell脚本事经常会用到IP,这时就需要我们使用一些办法获取本机IP并赋值给变量来使用.最近刚刚完成grep及sed的摸索.研究 ...

  5. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令

    <MYSQL教程Linux系统中最危险的10条命令>要点: 本文介绍了MYSQL教程Linux系统中最危险的10条命令,希望对您有用.如果有疑问,可以联系我们. Linux命令行佷有用.很 ...

  6. Shell 脚本 — 多行注释、开启子/不开启子进程执行、转义带颜色输出、读取键盘输入、输入输出重定向、单双引号、命令替换、读取变量、系统变量、正则过滤、算术运算、一行多条命令、字符串比较

    1. 多行注释 #!/bin/bash<< COMMENT This is multi line comment COMMENTecho "This is demo script ...

  7. Win10系统提示过期,三条命令帮你搞定

    很感谢华枚和贺信小盆友,自己的电脑用着用着提示到期了. 解决只需三条命令,前提我的电脑是Win10企业版的哦 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmg ...

  8. MD5值计算方法,推荐使用linux系统计算,一条命令搞定!

    一.MD5是什么? MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的"数字指纹". 任何一个文件, ...

  9. Linux常用20条命令

    Linux常用20条命令 假装这里有个标题 1.cd 2.ls 3.grep 4.find 5.cp 6.mv 7.rm 8.ps 9.kill 10.kill all 11.file 12.tar ...

最新文章

  1. Go 语言配置 TensorFlow
  2. python编程入门p-Python是什么?简单了解pythonp-入门
  3. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
  4. SSH初体验系列--Hibernate--1--环境配置及demo
  5. POJ3250 Bad Hair Day【单调递减队列+堆栈】
  6. element ui 表格滚动条抖动的问题
  7. 一名7年总监的6点离职忠告
  8. 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
  9. ai怎么做波普风圆点_AI绘画教程,绘画波普艺术风格人像
  10. 动态面板数据模型及Eviews实现
  11. 北京的三甲医院都是定点医院吗?不列入医保卡范围不能报销?
  12. 交换机的原理及其配置(一)
  13. nodejs app.js详解
  14. 设置使用 CUDA/显卡 的编号
  15. ShareStation工作站虚拟化,实现工作站共享使用
  16. 04 | 连接池:别让连接池帮了倒忙
  17. 2017-12-1工作日志--云信音视频通话SDK开启美颜效果
  18. 【Linux】x86结构
  19. python爬取收费漫画_python爬取收费漫画_Python爬虫,爬取腾讯漫画实战
  20. 国外大神数据,全球主板厂商信息汇总,A B X系在主板汇总

热门文章

  1. python小游戏———拼图代码开源
  2. 机器人操控电脑,华为天才少年稚晖君再出手,直呼:项目不太难
  3. isFloat()函数
  4. Coursera - Algorithm (Princeton) - 课程笔记 - Week 12
  5. python中的sorted、iteritems和operator.itemgetter
  6. Linux 下Apache(httpd) 安装、配置
  7. c语言动态分配内存及内存分配部分函数
  8. 清除google缓存
  9. Pascal Voc数据集介绍
  10. vue2(webpack)调用amap高德地图及其UI组件