系统安全与应用

目录

账号安全基本措施

  系统账号清理

清楚历史命令

终端自动注销

密码安全控制

通过pam模块来防止暴力解密

使用chage命令

限制su命令用户

Sudo机制提升权限

Netstat命令

Nmap命令


账号安全基本措施

  系统账号清理

  1. 将非用户的shell设备/sbin/nologin

查看用户命令 cat /etc/passwd

在使用yum install命令时他会自动给一个用户并且其shell设备为/sbin/nologin无法登录状态。

  1. 锁定长期不使用的账号

查看用户或者目录文件是否被锁。

Chattr +I /etc/passwd

对用户系统文件进行加锁,最终结果为无法再次创建用户

对文件进行加锁

查看结果

对这个文件进行修改已经无效了

删也删不掉限制的非常死

对其解锁

chattr -i /1.txt

       3.删除无用的账号

      

清楚历史命令

History

限制history命令查看行数

Vim /etc/profile

/HISTSIZE找寻此关键词

如上,默认是保留history的1000条命令,修改其参数即可限制history

重新加载history配置文件让他在整个系统中识别

Source /etc/profile

再次使用history命令,发现的确是显示20条历史信息

清空history

History -c

永久清空:

Vim .bash_history

清空里面的配置文件

Vim .bash_logout

在里面输入

终端自动注销

闲置n秒后自动注销

Vim /etc/profile

输入export TMOUT=40

Source /etc/profile重新激活其环境。

密码安全控制

Vim /etc/login.defs

PASS_MAX_DAYS 30设置密码有效期30天默认99999

PASS_MIN_DAYS #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是0

PASS_MIN_LEN 5#密码最小长度,对于root天效

注解:指定密码的最小长度↓默认不小于5位,但是现在用户登录时验证已经被PAM模块取代,所以这个选项并不生效,PASS_WARN_AGE 7“指定在密码到期前多少天,系统就开始提蘑用户密码即将到期,默认为7天。

通过pam模块来防止暴力解密

Vim /etc/pam.d/sshd

在下面添加一行:

Auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200

说明:尝试登陆失败超过3次,普通用户600秒解锁,root用户1200秒解锁

手动解除锁定

查看某一用户错误登陆次数:

pam_tally2 –-user

例如,查看work用户的错误登陆次数:

pam_tally2 –-user root

清空所用户错误登陆次数:

pam_tally2 –-user –-reset

例如,清空 work 用户的错误登陆次数,

pam_tally2 –-user root –-reset 

使用chage命令

用于设置密码时限

chage -M 30 lisi表示该密码的最大有效天数

cat /etc/shadow | grep lisi

Chage -d 0 zhangsan

强制要求张三下次登录时重置密码

验证

重启后登录张三用户发现让你重新输入密码

值得一提的是在linux系统环境中,使用su命令登录用户的情况下,是可以使用exit退出的,在环境中是一层套一层的:

限制su命令用户

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

vim /etc/pam.d/su

2 # auth sufficient pam_rootok.so

6 #auth required pam_wheel.so use_uid

两行都注释也是运行所有用户都能使用su命令,但root'下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)

如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令

如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令。

进行试验:

打开第一行也就是上述的2命令

      

       如上所述在root用户下使用su命令切换到普通用户是不需要输入密码的

       注释第一行打开第二行:

Zhangsan用户即不属于普通用户也不属于root用户所以其他用户使用su命令的时候是无效的。

Sudo机制提升权限

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

在生产环境中一般是不给用到root权限的,但是又又操作需要使用到root用户权限,解决方法:

例1:sudo cp /etc/sysconfig/network-scripts/ifcfg-ens33 ./

在正常使用命令前加sudo这样就可以即不用知道root用户密码也可以使用root用户权限了。但是这一切都得让管理员配置同意某个用户使用什么权限。

lisi 用户可以使用useradd usermod

需求:lisi     root用户下的权限 useradd usermod

lisi ALL=(root) NOPASSWD:/usr/sbin/useradd,PASSWD:/usr/sbin/usermod  #前面不需要输入密码 ,后面需要输入密码

再次创建用户即不用输入密码。

而后面需要密码

Netstat命令

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

-r          显示路由表信息                                              

-a         显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)

-l          显示处于监听(Listening)状态的网络连接及端口信息。         

-t          查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。

-u          显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。

-p          显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限

netstat -natp    查看正在运行的使用TCP协议的网络状态信息

netstat -naup    查看正在运行的使用UDP协议的网络状态信息

netstat -natlup最常使用的命令

Nmap命令

-sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 tcp确定三次握手

-sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果 成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

-sF,TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间接检测防火墙的健壮性。

-sU,UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP扫描的速度会比较慢。

-sP,ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。

-P0,跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。

Nmap -sT 127.0.0.1 扫描本地连接状况

Nmap -sT 14.215.177.38 此ip地址为百度的ip地址,使用nmap命令去扫描于百度的连接状况:

可以看到的是百度的服务器中只打开了两个服务一个为http一个为https且扫描此ip地址使用了57.23秒其中有998个端口关闭,这个命令可以用来排除所有端口中哪个是打开哪个是关闭。


版权声明:本文为a_b_e_l_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。