北京网络网站建设,创意网名女,做一家开发网站的公司简介,做pc端网站精英一、账号安全基本措施
1.系统账号清理
1.将用户设置为无法登录 /sbin/nologin shell——/sbin/nologin却比较特殊#xff0c;所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已#xff0c;并不是说这个账号就无法使用系统资源。举例来说#xff0c;…一、账号安全基本措施
1.系统账号清理
1.将用户设置为无法登录 /sbin/nologin shell——/sbin/nologin却比较特殊所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已并不是说这个账号就无法使用系统资源。举例来说各个系统账号中打印作业有lp这个账号管理www服务器有apache这个账号管理他们都可以进行系统程序的工作但就是无法登陆主机而已。
2.锁定长期不使用的账号 账户锁定passwd -l 用户名 或 usermod -L 用户名 账户解锁passwd -u 用户名 或 usermod -U 用户名 3.删除无用的账户
账户删除userdel -r (并删除家目录)
4.锁定配置文件 chattr
某些特定文件比较重要防止误删除添加锁定文件
锁定配置文件即锁定配置文件passwd与shadow
-i 不得任意更动文件或目录
-a 让文件或目录仅供附加用途。只能追加chattr i /etc/passwd /etc/shadow 锁定配置文件
chattr -i /etc/passwd /etc/shadow 解锁配置文件
chattr a /etc/passwd /etc/shadow 让文件或目录仅供附加用途,只能追加
lsattr /etc/passwd /etc/shadow 查看文件状态属性 5.清除历史记录 查看历史输入命令history history记录存放文件~/.bash_history 临时清空history -c 永久清空echo ~/.bash_history vim .bash_logout 退出后清除 vim .bashrc 自对自己生效 开机后清除 Shell 环境的命令历史机制为用户提供了极大的便利但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件该用户的命令操作过程将会一览无余如果曾经在 命令行输入明文的密码则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中历史命令的记录条数由变量 HISTSIZE 控制默认为 1000 条。通 过修改/etc/profile 文件中的 HISTSIZE 变量值可以影响系统中的所有用户。例如可以设 置最多只记录 200 条历史命令。 减少历史命令条数。 2.密码安全控制
1.设置密码规则 对于新建用户,可以修改 /etc/login.defs 文件里的内容来设置密码规则 小实验 2.已创建用户密码管理——chage
chage [选项] 用户名-m密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M密码保持有效的最大天数。
-w用户密码到期前提前收到警告信息的天数。
-E帐号到期的日期。过了这天此帐号将不可用。
-d上一次更改的日期。
-i停滞时期。如果一个密码已过期这些天那么此帐号将不可用。
-l例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。 强制用户下一次登录时一定修改密码此时密码应该符合复杂性的要求 chage -d 0 用户 面试设置随机密码每7天改一次对密码复杂性有要求区分大小写
你做过哪些系统安全加固
3.su 命令 切换用户身份
su命令 可以切换用户身份 并且以指定用户的身份执行命令。
切换用户的方式
su UserName非登录式切换即不会读取目标用户的配置文件不改变当前工作目录即不完全切换
su - UserName登录式切换会读取目标用户的配置文件切换至自已的家目录即完全切换
说明root su至其他用户无须密码非root用户切换时需要密码
注意su 切换新用户后使用 exit 退回至旧的用户身份而不要再用 su 切换至旧用户否则会生成很多的bash子进程环境可能会混乱。 su 与 su- 即有 - 选项切换用户身份更彻底反之只切换了一部分这会导致某些命令运行出现问题或错误例如无法使用 service 命令。 su 不加-不完全切换 su 加-完全切换 限制使用su命令的用户?
二、PAM安全认证
PAM提供了对所有服务进行认证的中央机制适用于本地登录远程登录如telnet,rlogin,fsh,ftp,点对点协议PPPsu等应用程序中系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略应用程序开发者通过在服务程序中使用PAM API(pam_xxxx( ))来实现对认证方法的调用而PAM服务模块的开发者则利用PAM SPI来编写模块主要调用函数pam_sm_xxxx( )供PAM接口库调用将不同的认证机制加入到系统中PAM接口库libpam则读取配置文件将应用程序和相应的PAM服务模块联系起来。重复利用别人的开发的功能不必自己开发会话密码验证等功能已经做好了调用下就可以了未来通用性所以有了pam框架类似淘宝 一边普通买家一边卖家淘宝上既是买家也是卖家 /usr/lib64/security存放功能模块 /etc/pam.d配置文件 特定模块相关的设置文件/etc/security/ 专用配置文件/etc/pam.d/ 格式 PAM相关文件 包名: pam 模块文件目录/lib64/security/*.so 特定模块相关的设置文件/etc/security/ man 8 加模块名 可以查看帮助 应用程序调用PAM模块的配置文件 主配置文件/etc/pam.conf默认不存在一般不使用主配置 为每种应用模块提供一个专用的配置文件/etc/pam.d/APP_NAME 注意如/etc/pam.d存在/etc/pam.conf将失效 PAM工作原理
PAM认证一般遵循这样的顺序Service(服务)→PAM(配置文件)→pam_*.so
PAM认证首先要确定那一项服务然后加载相应的PAM的配置文件(位于/etc/pam.d下)最后调用认证文件(位于/lib64/security下)进行安全认证
PAM认证过程示例
1.使用者执行/usr/bin/passwd 程序并输入密码
2.passwd开始调用PAM模块PAM模块会搜寻passwd程序的PAM相关设置文件这个设置文件一般是在/etc/pam.d/里边的与程序同名的文件即PAM会搜寻/etc/pam.d/passwd此设置文件
3.经由/etc/pam.d/passwd设定文件的数据取用PAM所提供的相关模块来进行验证
4.将验证结果回传给passwd这个程序而passwd这个程序会根据PAM回传的结果决定下一个动作重新输入密码或者通过验证 type指模块类型即功能
control PAM库该如何处理与该服务相关的PAM模块的成功或失败情况一个关健词实现
module-path 用来指明本模块对应的程序文件的路径名
Arguments 用来传递给该模块的参数
模块类型module-type Auth 账号的认证和授权 Account 帐户的有效性与账号管理相关的非认证类的功能如用来限制/允许用户对某个服务的访问时间限制用户的位置(例如root用户只能从控制台登录) Password 用户修改密码时密码复杂度检查机制等功能 Session 用户会话期间的控制如最多打开的文件数最多的进程数等 -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用 type模块类型即功能 Auth验证用户身份按照身份给你相应权限 Account验证账户是否有效 password账户密码是否有效 session管理会话可以使用多少资源 Control: 控制位
required一票否决如果失败最后一定失败但是会继续进行验证
requisite一票否决如果失败会立即结束验证反馈失败
sufficient验证成功则立即返回结果前两个有一个失败则为失败
optional 可选项 第三列代表PAM模块
默认是在/lib64/security/目录下如果不在此默认路径下要填写绝对路径。 同一个模块可以出现在不同的模块类型中它在不同的类型中所执行的操作都不相同这是由于每个模块针对不同的模块类型编制了不同的执行函数。
limit 重要的pam模块 控制进程占用资源 控制进程打开的数量
作用控制进程占用资源
在/etc/security 中的 limits.conf文件
作用控制进程打开数量
功能在用户级别实现对其可使用的资源的限制例如可打开的文件数量可运行的进程数量可用内存空间
ulimit命令
ulimit是linux shell的内置命令它具有一套参数集用于对shell进程及其子进程进行资源限制。
ulimit的设定值是 per-process 的也就是说每个进程有自己的limits值。使用ulimit进行修改立即生效。
ulimit只影响shell进程及其子进程用户登出后失效。
可以在profile中加入ulimit的设置变相的做到永久生效
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
-t size:设置CPU使用时间的最大上限.单位:seconds
-u size:最大用户进程数
-v size:设置虚拟内存的最大值.单位:kbytes
unlimited 是一个特殊值用于表示不限制 limit 功能在用户级别实现对其可使用的资源的限制例如可打开的文件数量可运行的进程数量可用内存空间 vim 打开/etc/security/limits.conf这个配置文件,这个文件的内容就是控制进程打开的数量和内存大小 查看下 limits 生产中的 建议设置 使用压力测试工具进行测试 打开的文件数 ab -c1025 -n 2000 http://192.168.246.7/ 必须这样写 包括url 后面的 斜杠/ 压力测试 先来进行一个压力测试 让它同时打开1025个文件 最多打开2000个进行测试 或者在配置文件里加上表示所有用户最大打开文件数量为100000 要是之后修改的reboot 重启会比较麻烦
这样就通过测试就知道可以同时打开的范围了不过要注意的是如果你要使用ab测试工具使用ab工具的机器也要调高最大值比如A 去访问BA要调整1024 B也要调整1024
[rootlocalhost pam.d]#ulimit -a
可以看到系统的相关 资源限制 设置#使用压力测试工具进行测试 打开的文件数
ab -c1025 -n 2000 http://192.168.91.100/
必须这样写 包括url 后面的 斜杠/[rootlocalhost pam.d]#ulimit -n 10000
修改最大值 临时修改[rootlocalhost security]#vim /etc/security/limits.conf
永久修改不用重启 软硬一起设置可以直接使用 -
zhangsan - nproc 5su - zhangsan
切换时 注意要完全切换
三、sudo---提权操作 su root---以管理员身份使用会造成安全隐患 sudo的配置文件是 sudoers 文件位置/etc/sudoers属性为0440 作用管理用户的使用权限和使用的主机 1.sudo概念
概念sudo即superuser do可翻译为以超级管理员身份做是可以让普通用户在不知道root密码的情况下执行一些或全部的root命令工具。
优点不需要指定超级管理员密码、可以指定那些组或那些账户可以执行那些特定的命令、提供了丰富的日志详细记录了每个用户干了什么
2.使用sudo 配置sudo文件/etc/sudoers直接编辑sudo文件更改完成后必须visudo -c检查语法 官方推荐配置sudovisudo 等价于修改sudo的配置文件但是此命令会自动检查语法是否正确 [rootlocalhost ~]# visudo
## Allow root to run any commands anywhere
root ALL(ALL) ALL## Allows people in group wheel to run all commands
%wheel ALL(ALL) ALL 配置语法介绍(可使用通配符): root ALL(ALL) ALL 用户或组(组前需加%) 登入主机(可写网段)以什么身份执行(可不写) 运行那些命令(命令的绝对 3.sudo特性 sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo会提示联系管理员 sudo提供了丰富的日志详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器 sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时用户获得了一张存活期为5分钟的票 sudo的配置文件是sudoers文件它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers属性必须为0440 sudo在Linux和类Unix系统中是一个非常重要的命令它的主要作用是允许普通用户以系统管理员权限通常是root权限执行特定的命令或程序而无需切换到root用户。通过使用sudo系统管理员可以对不同用户授予执行特定管理任务的能力同时保留了对系统安全性和日志记录的控制。
用户 登入主机(代表用户) 命令
user host (runas) command
root ALL (ALL) ALL(绝对路径) //root可以使用任何主机代表任何用户执行任何命令
%wheel ALL (ALL) ALLuser: 运行命令者的身份可以是用户也可以是组组前应该加%用户可以是用户名或者UID组可以是组名或者GID
host: 通过哪些主机 可以写IP地址或主机名 可以有多个主机
runas以哪个用户的身份
command: 运行哪些命令command name 命令directory 文件夹里的命令sudoedit 可以编辑sudoers这个文件变相变成管理员Cmnd_Alias 命令别名 再次执行这个命令的时候5分钟内就不需要输入密码了默认为5分钟可在/etc/sudoers自定义使用sudo不需要再次输入密码
如果想要取消密码验证需要加上N0PASSWD: 此时sudo将会询问该用户自己的密码以确认终端机前的是该用户本人 输入取反作用表示此命令不可执行 [rootlocalhost ~]#gpasswd -a lili wheel 正在将用户“lili”加入到“wheel”组中 wheel组表示管理员组是比较特殊的一个组在wheel组中的成员可以使用任何命令 4.别名
sudo别名有四种类型 User_Alias用户 Runas_Alias代表用户 Host_Alias登录主机 Cmnd_Alias命令
别名格式必须大写字母数字可以使用但是不能放在开头 上班一般不设置别名
面试题我有20个项目如何管理
写在子配置文件里不能写在配置文件里要不不方便管理 常见端口号学习