Linux系统——系统安全及应用
系统账号清理
将非登录用户的shell设为/sbin/nologin
方法一:usermod -s
方法二: chsh命令,交互式修改,用来修改用户的登录情况
方法三: chsh -s
方法四:vim /etc/passwd
锁定长期不使用的账号
方法一:passwd -l 用户名 密文前会出现2个! 解锁passwd -u 查看passwd -S
方法二:usermod -L 用户名 密文前会出现1个!解锁usermod -U
删除无用的账号
userdel -r 用户名
锁定账号文件
(1)i锁
查看:lsattr /etc/passwd /etc/shadow
锁定:chattr +i /etc/passwd /etc/shadow
解锁: chattr -i /etc/passwd /etc/shadow
i锁一般只用于超级用户;锁定后即便是超级用户,也不能修改文件,既不能创建、删除、修改用户信息;常使用在passwd上,因为一旦使用i锁,就不能创建用户,只能查看,可以保证文件安全。
(2)a锁
查看:lsattr /etc/passwd /etc/shadow
锁定:chattr +a /etc/passwd /etc/shadow
解锁: chattr -a /etc/passwd /etc/shadow
a锁可以正常查看,可以追加内容(echo),不能修改内容(vim);如果,用a锁锁定passwd,可以创建用户不能修改、删除用户。
-R 递归增加权限
密码安全控制
(1)设置密码有效期
修改某个已存在用户的密码有效期:
chage -M 天数 用户名
passwd -x 天数 用户名
设置今后添加用户时的默认密码有效期:
方法一:vim编辑/etc/login.defs文件,修改“PASS_MAX_DAY”后面的数值
方法二:vim编辑/etc/shadow文件,修改第五部分
(2)要求用户下次登录时修改密码
方法:chage -d 0 用户名
命令历史限制
(1)减少历史的命令条数
history命令(默认保留1000条)
History 查看使用过的历史命令
history -c 清空历史记录
方法一: vim编辑/etc/profile文件(系统全局变量文件,所有和变量相关的命令都放在这个文件中),修改“HISTSIZE=”后面的数值
方法二: export HISTSIZE=数值(仅当前环境用户下生效)
(2)注销时自动清空历史命令
方法:vim编辑宿主目录下的“.bash_logout”文件,添加“history -c”
终端自动注销
方法一:vim编辑/etc/profile文件,添加“TMOUT=数值”
方法二: export TMOUT=数值(仅当前环境用户下生效)
更改端口号
在/etc/ssh/目录下
# vim sshd_config
在port 22处更改端口号(工作中一般将端口号设置为一万以上)
*******************************************************************************
su命令
作用:切换用户
su 目标用户 切换账号,之前的进程并没消失;环境变量不改变
(exit也可用Ctrl+d操作,退出用户)
su - 目标用户 以普通用户的初始环境切换成普通用户,环境变量会重置成普通用户环境变量
su -c 临时切换到某一个用户,执行一个命令,执行完,自动返回当前用户;切换到一个shell,执行一个命令,然后退出所切换的用户环境
su -m 切换用户时,不重置用户环境
su -s 若/etc/shell允许,则运行指定的shell
su命令常用在/etc/rc.local
# vim /etc/rc.local
su - 用户 -c 命令 实现以普通用户实现进程,安全操作,表示仅限在xx用户下启动的服务命令脚本
查看su操作记录
安全日志文件:/var/log/secure
# tar /var/log/secure|less
sudo命令
su命令的缺点:在使用su命令时,不指定用户名默认切换至root用户,需要经常输root用户密码,但实际生产中root密码是不可以被广泛告知的。如果需要执行root用户才有权限的命令,需要通过sudo命令或wheel组的设置来实现。
sudo的配置文件 /etc/sudoers
sudo命令
-l 列出用户在主机上可用的和被禁止的命令:当配置好sudo权限规则后,可用这个参数来查看授权情况
-v 验证用户的时间戳,当用户运行sudo,输入用户的密码后,在短时间内可以不用输入口令直接进行sudo操作;用-v可以跟踪最新的时间戳
-u指定以某个用户身份执行特定的命令操作,chensiqi ALL=(ALL) /bin/cp
-k同-K,删除时间戳,下一个sudo命令要求提供密码,前提是该用户授权中不能有NOPASSWD参数。时间戳默认5分钟也会失效。
配置sudo授权(激活sudo)
方法一:# visudo 或# vim /etc/sudoers 修改,只有root用户才能使用
在root这一行下面,按照root的格式,对benet进行授权
visudo授权配置中,ALL的表示:
第一个ALL:IP地址
第二个ALL:主机别名
第三个ALL:限制的命令
visudo -c 检查sudo配置文件是否有错误
sudo 授权命令
默认设置为首次执行时,需输入当前用户的登陆密码,5分钟内再次执行sudo命令式则无需再输入密码。
设置IP地址权限
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134= ALL
单独授权某个命令
在第三个ALL上操作(绝对路径)
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134= /sbin/fdisk
此时,只有sudo fdisk这个命令可以使用(因为只有fdisk被授权)
授权多个命令
在第三个ALL上操作(绝对路径),用逗号“,”分隔。
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134= /sbin/fdisk,/bin/ls
批量授权(存在优先级,先输入允许操作的命令(绝对路径),在输入不允许操作的命令(绝对路径))
对benet用户授权/sbin/下所有目录,除了/sbin/reboot命令
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134=(ALL) /sbin/*,! /sbin/reboot
批量授权,排除多个命令权限,用“,! ”分隔
若为! /sbin/fdisk /dev/sda 表示不允许/sbin/fdisk执行/dev/sda*
让一个普通用户自己分区,但禁止该用户采取任何破坏系统的操作(将A盘进行分区会破坏系统)
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134=(ALL) /sbin/*,! /sbin/reboot,! /sbin/fdisk /dev/sda*
不允许/sbin/fdisk 执行/dev/sda*,但由于授予/sbin/所有前线,则可以对其他盘进行分区
对普通用户授权:只看日志
# visudo
在“root ALL=(ALL) ALL”行下,输入
benet 192.168.214.134=(ALL) /bin/cat /var/log/messages*
!!!但是“看”的命令不仅仅是cat,还有more、less、head、tail、tac、sed、awk等,需要将它们全部授权(绝对路径)。
查看sudo操作记录
先# visudo 添加“Defaults logfile=/var/log/sudo”,再# cat /var/log/sudo
*************************************
Grub菜单限制
密码设置方式
将明文密码设为密文
grub-md5-crypt命令获取加密密码串
将加密密码串复制进/etc/grub.conf文件
**************************************
终端登录安全控制
减少开放终端个数
vim编辑两个配置文件:/etc/init/start-ttys.conf和/etc/sysconfig/init
限制root只在安全终端登录
vim编辑/etc/securetty配置文件,将禁止的终端注解掉(在注解的终端前加#号)
禁止普通用户登录
# touch /etc/nologin,删除/etc/nologin 这个空文件即可恢复(rm -f /etc/nologin)。
***************************************
NMAP端口检测
Nmap -sS TCP同步扫描(TCP SYN)
-sT TCP连接扫描
-sn 不进行端口扫描,只检查主机正在运行
-sU 扫描UDP端口
-sV 探测服务版本信息
-Pn 只进行扫描,不ping主机
-PS 使用SYN包对目标主机进行扫描,默认是80端口,也可以指定端口,格式为-PS22或-PS22-25,80,113,1050,35000,记住PS和端口号之间不要有空格
-PU 使用UDP ping扫描端口
-O 激活对TCP/IP指纹特征的扫描,获得远程主机的标志,也就是操作系统类型
-v 显示扫描过程中的详细信息
-S 设置扫描的源IP地址
-g part 设置扫描的源端口
-oN 把扫描的结果重定向到文件中
Linux系统——系统安全及应用的更多相关文章
- Linux查看系统状态命令
Linux查看系统状态命令 iostat iostat 命令详细地显示了存储子系统方面的情况.你通常用iostat来监控存储子系统总体上运行状况如何,并且在用户注意到服务器运行缓慢之前提早 ...
- 82 fsck-检查与修复 Linux 档案系统
Linux fsck命令用于 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统. 语法 fsck [-sACVRP] [-t fstype] [--] [fsck-opt ...
- 解决:WPS for Linux提示“系统缺失字体symbol、wingdings、wingdings 2、wingdings 3、webding”
WPS for Linux提示“系统缺失字体symbol.wingdings.wingdings 2.wingdings 3.webding” 出现提示的原因是因为WPS for Linux没有自带以 ...
- 如何查看、修改Linux的系统时间
如题: 如何修改Linux的系统时间? date -s 05/27/2011 date -s 10:24:00 clock -w 就这三条命令就OK了! 查看/修改Linux时区和时间 一.时区 1. ...
- 【解决方法】安装Win7和linux双系统后,linux报错“无法分配所提交的分区 not enough free space on disks”问题,以及win7无法启动“BootMGR image is corrupt....”问题
近日,在笔记本上重装了Win7 企业版(64位)后,想装个linux双系统,于是开始安装 centOS 6.2(光盘安装) 硬盘分了一个主分区(c盘),一个扩展分区(3个逻辑分区:d,e,f盘),然后 ...
- Win7下硬盘安装Linux双系统
Win7下硬盘安装CentOS6.2 一.准备工作:划出磁盘空闲空间和准备安装文件 参考文献: [Win7下硬盘安装Linux总结(CentOS)]来源:Linux社区 作者:lixianlin ...
- 如何安装win10+Red Hat Enterprise Linux双系统?
1,如何安装win10+Red Hat Enterprise Linux双系统???? 有很多人(没做过调查,可能就我自己想装吧)想要安装Red Hat Enterprise Linux系统,但是又不 ...
- [嵌入式开发入门]4412开发板从零建立Linux最小系统
本文转自iTOP-4412开发板实战教程书籍 http://www.topeetboard.com iTOP-4412开发板不仅可以运行Android,还可以运行简单的Linux最小文件系统. 最小L ...
- Linux(centos)系统各个目录的作用详解
Linux(centos)系统各个目录的作用详解 文件系统的类型 LINUX有四种基本文件系统类型:普通文件.目录文件.连接文件和特殊文件,可用file命令来识别. 普通文件:如文本文件.C语言元代码 ...
- Windows与Linux/Mac系统时间不一致的解决方法
Windows与Linux/Mac系统时间不一致的解决方法 分类: linux2012-02-12 14:25 1691人阅读 评论(1) 收藏 举报 windowsubuntusystemlinux ...
随机推荐
- 【BZOJ】1176: [Balkan2007]Mokia(cdq分治)
http://www.lydsy.com/JudgeOnline/problem.php?id=1176 在写这题的时候思维非常逗啊........2333................... 最后 ...
- SqlAlchemy使用详解
python之sqlalchemy创建表的实例详解 通过sqlalchemy创建表需要三要素:引擎,基类,元素 from sqlalchemy import create_engine from sq ...
- C语言的代码内存布局详解
一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...
- JQuery------鼠标双击时,不选中div里面的文字
如图:(去掉选中文字的蓝色背景色) 代码: //方法一:<div class="test" onselectstart="return false" &g ...
- Struts2_day03--课程安排_OGNL概述入门_什么是值栈_获取值栈对象_值栈内部结构
Struts2_day03 上节内容 今天内容 OGNL概述 OGNL入门案例 什么是值栈 获取值栈对象 值栈内部结构 向值栈放数据 向值栈放对象 向值栈放list集合 从值栈获取数据 获取字符串 获 ...
- oracle数据库查询时间sql
select * from cc_picture_info where PICTURE_SOURCE = 3 AND UPLOAD_TIME > to_date('2017-03-29 16:5 ...
- Codelf 搜索开源代码帮程序员命名
"计算机科学里两件最难的事:缓存失效和命名." Codelf通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sourcefo ...
- hdu 1300(dp)
一个模式的dp. Pearls Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- js 中导出excel 较长数字串会变成科学计数法(转载)
在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...
- Spring的泛型依赖注入
Spring 4.x 中可以为子类注入子类对应的泛型类型的成员变量的引用,(这样子类和子类对应的泛型类自动建立关系)具体说明: 泛型注入:就是Bean1和Bean2注入了泛型,并且Bean1和Bean ...