系统安全!几条命令让你的服务器固若金汤!!
【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用户不允许使用。
- 实例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.12(1.9以上的应该都行),废话不多说了,先开始吧 我看大家总是说我做的都是新手向,这回来一个难一点的的 大家应该都知道在服务器中 ...
- linux 命令 修改密码,一条命令修改Linux密码
方法一.直接使用passwd命令 /bin/echo newpass|/usr/bin/passwd --stdin username *注:该方式只适用于红帽系操作系统,比如centos,redha ...
- linux系统useradd及周边命令和概念详解
在Linux 系统中,所有的用户和组像一个国家.如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成.在linux 中如果你对安全需求比较苛刻,完全可以限制用户的各种行为 ...
- 系统无ifconfig,一条命令获取本机ip并将其赋值给指定变量来使用
在Linux系统中,准确地获取本机IP信息是非常有用的.在写bash shell脚本事经常会用到IP,这时就需要我们使用一些办法获取本机IP并赋值给变量来使用.最近刚刚完成grep及sed的摸索.研究 ...
- mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
<MYSQL教程Linux系统中最危险的10条命令>要点: 本文介绍了MYSQL教程Linux系统中最危险的10条命令,希望对您有用.如果有疑问,可以联系我们. Linux命令行佷有用.很 ...
- Shell 脚本 — 多行注释、开启子/不开启子进程执行、转义带颜色输出、读取键盘输入、输入输出重定向、单双引号、命令替换、读取变量、系统变量、正则过滤、算术运算、一行多条命令、字符串比较
1. 多行注释 #!/bin/bash<< COMMENT This is multi line comment COMMENTecho "This is demo script ...
- Win10系统提示过期,三条命令帮你搞定
很感谢华枚和贺信小盆友,自己的电脑用着用着提示到期了. 解决只需三条命令,前提我的电脑是Win10企业版的哦 slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmg ...
- MD5值计算方法,推荐使用linux系统计算,一条命令搞定!
一.MD5是什么? MD5是message-digest algorithm 5(信息-摘要算法)的缩写,被广泛用于加密和解密技术上,它可以说是文件的"数字指纹". 任何一个文件, ...
- 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 ...
最新文章
- Go 语言配置 TensorFlow
- python编程入门p-Python是什么?简单了解pythonp-入门
- r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
- SSH初体验系列--Hibernate--1--环境配置及demo
- POJ3250 Bad Hair Day【单调递减队列+堆栈】
- element ui 表格滚动条抖动的问题
- 一名7年总监的6点离职忠告
- 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
- ai怎么做波普风圆点_AI绘画教程,绘画波普艺术风格人像
- 动态面板数据模型及Eviews实现
- 北京的三甲医院都是定点医院吗?不列入医保卡范围不能报销?
- 交换机的原理及其配置(一)
- nodejs app.js详解
- 设置使用 CUDA/显卡 的编号
- ShareStation工作站虚拟化,实现工作站共享使用
- 04 | 连接池:别让连接池帮了倒忙
- 2017-12-1工作日志--云信音视频通话SDK开启美颜效果
- 【Linux】x86结构
- python爬取收费漫画_python爬取收费漫画_Python爬虫,爬取腾讯漫画实战
- 国外大神数据,全球主板厂商信息汇总,A B X系在主板汇总