前言


讲到linux系统账户的管理以及安全,就必须涉及 /etc/passwd   /etc/shadow  这2个文件
这里以截图中文字说明的方式,来分析这2个文件的内容,并且给出一些实用的安全加固方案

注意,本文会持续更新,后续加入的内容都以直接上传截图的形式呈现,希望这样能更贴近实际运维环境工作者的需求。



《删除或锁定系统内建的用户账户,组账户》

系统内建的一些账户可能会让***变得更容易,因为这些账户扩大了系统的受***面。可以通过删除,锁定,或者注释的方法来加固账户安全。

操作涉及的文件有:

/etc/passwd

/etc/shadow

/etc/group

在修改之前,建议对上面3个文件作备份,而且尽量将文件副本存储在移动存储设备如U盘,移动硬盘,或者网络云盘上面。一旦系统出现和账户相关的故障,将副本替换原有的文件,这样就能恢复:

[root@centos6-5vm 桌面]# mkdir /backup
[root@centos6-5vm 桌面]# cp -p /etc/passwd /backup/passwd_backup
[root@centos6-5vm 桌面]# cp -p /etc/shadow /backup/shadow_backup
[root@centos6-5vm 桌面]# cp -p /etc/group /backup/group_backup

将本地文件系统的 /backup/ 目录下的这三个副本存储到上面提及的各种存储介质中,记住,不要把鸡蛋放在同一个篮子里。

后续的修改都是对原有文件进行的,需要从副本还原时,执行下面操作:

[root@centos6-5vm 桌面]# mv /backup/passwd_backup /etc/passwd
[root@centos6-5vm 桌面]# mv /backup/shadow_backup /etc/shadow
[root@centos6-5vm 桌面]# mv /backup/group_backup /etc/group

这会替换掉存在错误配置的原有文件。举个例子来验证:

有了上面的测试保证,我们就可以继续进行和用户账户相关的安全设置:

批量删除 passwd 文件前4~10行的用户,这些通常很少用到:

[root@centos6-5vm 桌面]# for i in adm lp sync shutdown halt mail  uucp operator games gopher ftp ;do userdel $i ;done

其末尾有个 ftp 账户,如果日后有搭建FTP服务器的需求,如vsftpd等,可以将该账户保留下来,不要删除。

要批量删除 group 文件中的多余用户组,使用和上面类似的单行shell脚本:

[root@centos6-5vm 桌面]# for i in adm lp mail news uucp games dip pppusers pop users slipusers ;do groupdel $i ;done

注意,取决于你的系统环境,有些用户和组或许初始就没有创建,这里仅是给出所有可能存在并且需要删除的用户和组。

如果你不想删除这些用户以及组,然后在必要时用备份文件来还原,那么至少,要在原来的文件中,注释掉,或者锁定这些账户和组。对于注释,大家都会,下面主要说一下如何锁定:

锁定: passwd -l [用户名]

解锁: passwd -u [用户名]

也可以把这个命令替换掉前面单行shell脚本中的 userdel命令,实现批量锁定和解锁。

最后提醒一下,处于锁定状态的账户,在 shadow 文件的第二列,会显示 !!  ,表明其处于锁定状态,解锁后才能登录系统。

并且,只有根用户(root)才有权限执行锁定和解锁操作。


                       

                              《关闭SELinux》

为什么要关闭 SELinux,也许你有过下述经验:

用某个普通用户,甚至是 root 用户,创建一个文件后,将该文件的所有者,所属主都设置为该用户,或者 root 用户,并且所有者和所属主都具备读,写,执行的权限(即 770 ),然后尝试向该文件写入数据,系统会提示

failed: permission denied

在检查所有与该文件相关的目录,其属主属组权限都正确后,还是不能读写,那么唯一的可能就是因为开启了 SELinux 而禁止读写

SELinux 的初衷是,即便不安全的 Linux 主机在被***后,***者取得 root 权限,也不能随意读写删除数据,但是这里却阻碍了我们的工作,

(例如阻止我们用工具创建并写入某些服务进程的配置文件)

在刚安装完成系统的初次配置时刻,如果把SELinux设置成“开启”或着“强制”,可以通过如下办法来禁用:

[root@centos6-5vm 桌面]# ls -ail /etc/selinux/config
262465 -rw-r--r--. 1 root root 458 6月  25 16:58 /etc/selinux/config
[root@centos6-5vm 桌面]# vim /etc/selinux/config

将 SELINUX=  一行后面的值设为 disable,保存退出vim,重启系统后设置永久生效。

在不修改  /etc/selinux/config 的前提下,要立即生效不重启(重启失效),执行下面命令:

该命令把SELlinux设置为 Permissive 模式,等于暂时关闭

[root@centos6-5vm 桌面]# setenforce 0

要暂时开启SELlinux(等于设置为 Enforcing 模式),执行下面命令:

[root@centos6-5vm 桌面]# setenforce 1

要查看当前的 SELinux 状态,执行下面命令:

[root@centos6-5vm 桌面]# getenforce

另外一种关闭的办法是:在GRUB(引导加载程序)的启动参数后添加  selinux=0

《修改内核参数加固系统》

默认情况下,对于其它机器发送的带icmp回显请求的ping数据,centos返回带icmp回显应答的数据包,但是这种做法会导致安全隐患,因为网络上的恶意***者可以根据ping返回的信息判断目标机器是否在线上,进而采取后续的端口扫描等***。

因此,我们需要修改linux内核的TCP/IP协议堆栈的参数,禁止向其它机器返回icmp回显应答数据包,从而缓解基于主机发现的盲目ping踩点,至于为什么仅是“缓解”,后文我们会提到。

修改相关配置文件:

[root@centos6-5 桌面]# vim /etc/sysctl.conf

在文件中加入下面内容:

net.ipv4.icmp_echo_ignore_all = 1

根据该文件首行的注释说明,可以了解到,二进制值为1,表示激活某项特性;二进制值为0,表示禁用某项特性。上面就是激活“忽略所有远程的icmp回显请求”特性。

这种修改配置文件的方式,需要在重启系统后才能生效,但是对于在线上生产环境的服务器而言,是不能随意重启的,会导致业务中断,甚至丢失用户正在发送过来的数据。

因此,使用下面的命令来让对配置文件的修改立即生效:

[root@centos6-5 桌面]# sysctl -p

验证一下参数是否生效,下面执行测试的虽然是虚拟机,但是结果与真实环境的机器并无二致。

centos机器的IP地址是192.168.1.20

发送ping数据包的windows xp机器IP地址是192.168.1.30

可以看到,windows xp发送的4个ping数据包均返回了请求超时的结果,丢包率100%。

再以***测试业界著名的 BackTrack 5 平台进行检测:

当然,任何稍微有经验的***测试师或者***,都不会使用BT5的ping工具,因为它

不能正确反映出一个目标机器的安全性,相反,被广泛使用的Nmap,可以揭露出目标机器的安全级别仍旧有待加强:

上面的例子仅仅是抛砖引玉,希望各位大牛能举一反三。

另外提一下,对于 /etc/sysctl.conf  中的内核参数,如果是开启和关闭性质的,最好不要通过“注释”的方式来禁用或激活,因为这样要重启系统,比较麻烦,应该使用该文件官方推荐的办法:将其值设为0或1,保存退出vim,

然后以命令 sysctl -p 让配置立即生效即可。还是以上面为例子:


继续前面的话题:在没有打开防火墙的情况下,仅仅是在 /etc/sysctl.conf 中添加了禁止本机回应远程ping数据包的参数,那么***者可以直接以 Nmap 运行端口扫描来枚举服务版本。

因此,必须开启centos6.5的iptables防火墙。

下面我们将看到,只要开启iptables,采用其默认规则:允许所有入站方向对本地开启的服务监听端口的套接字发起的连接,那么即便没有关闭相应服务,Nmap 的扫描也不会得到可利用的信息:


首先,根据Nmap的扫描结果,我们知道本机上开放了 TCP 111,443,902等端口和相应服务(请参考上面截图),可以用 lsof 配合 netstat 命令确认:

[root@centos6-5 桌面]# lsof -i:111
[root@centos6-5 桌面]# netstat -antupeo | grep 111
[root@centos6-5 桌面]# lsof -i:902
[root@centos6-5 桌面]# netstat -antupeo | grep 902
[root@centos6-5 桌面]# lsof -i:443

注意,我们不使用 service [service] stop 和

ps -ef | grep [PID] && kill -9 [PID]

等类似命令来关闭服务和端口,而是直接启动 iptables 防火墙:

没有特别修改 iptables 防火墙的规则,使用默认策略的情况下,阻止了nmap的各种基于设置了TCP分段标志位的探测数据包:

对于那些直接曝露在因特网上对用户提供特定服务(HTTP/S,FTP等)的linux主机来讲:正确的,健壮的,可操作性强的 iptables 防火墙安全策略规则设置,显得非常关键;

但是现在多数组织企业使用自带防火墙的路由器

(例如各种类型的 cisco IOS防火墙,ASA,PIX防火墙,其它厂商的硬件防火墙,硬件负载均衡等设备),放置在用于公网访问的服务器前端,并且还划分出DMZ(所谓的非军事防御区),来与内网机器隔离,设置区域之间的安全级别。。。种种加固手段让在linux主机上开启 iptables的做法显得多余(除非内网已被***,开启iptables 可以防止***者的“横向”提权***),而且会影响服务器性能,因此,建议执行如下命令将其关闭:

[root@centos6-5 桌面]# service iptables stop && chkconfig --level 2345  iptables off

重启系统后,无论进入带x-window 的多用户模式,还是shell终端的多用户模式,

iptables都不会启动。

可以将下面这些内核参数添加到 /etc/sysctl.conf 文件中,需要强调的是,其中部分参数,我没有做过测试,建议慎用,部分对该参数的解释援引互联网上被广泛转载的文章,这里不对其滥用造成的,包括但不限于业务损失,数据丢失等,负任何法律上的责任。

和特定参数解释相关的背景知识,参考这篇博文:

http://shayi1983.blog.51cto.com/4681835/1434989


最好先在虚拟机环境中对这些参数进行性能,基准测试,仔细评估后,再把它添加到实际的生产服务器上:

net.ipv4.tcp_fin_timeout = 30

#当本地发送(发送端)带FIN标识位的TCP分段,要求关闭连接时,如果接收端还有数据要传给发送端,那么发送端应该保持开启用于接收对方数据的TCP通信管道(套接字)的时间(TCP有限状态机保持在FIN-WAIT-2,即处于半关闭状态的时间),

这里将其设置为 30秒,超时后,发送端将关闭连接,此时从对方传输过来的数据会丢失。

对于邮件服务器,这个值设为30秒是合适的,因为此时要求关闭的是服务器,而通常客户端不会有还未传完的数据要传,而且服务器要并发支持多个客户端,因此,在内核层面,只给每个客户端30秒的时间来处理尚未发送的数据包。

内核参数中与网络安全,系统优化相关的还有很多,后面会陆续介绍,作为运维人员,应该充分理解这些系统底层的参数是如何影响你的应用层业务,用户体验,服务器高可用,稳定,以及安全的,这对提升自身核心竞争力无疑有极大帮助。

转载于:https://blog.51cto.com/shayi1983/1437099

【安全运维】 linux 系统账户,网络,简易安全加固方案(第一部分),经测试可行...相关推荐

  1. 安全运维 | Linux系统基线检查

    声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全.企业安全.国家安全. 1 查询系统信息 1 ...

  2. linux下进程监控6,系统运维|Linux系统监控神器-Collectl

    系统资源监控 为使系统良好运转,Linux系统管理员经常需要监测cpu,内存,磁盘,网络等系统信息.Linux上已有iotop,top,free,htop,sar等丰富的常规工具来实现监测功能.今天让 ...

  3. 运维Linux系统中的用户管理

    一.用户及用组存在的意义 1)用户存在的意义 系统资源是有限的,如何合理的分配系统资源? 在这个问题解决时必须要有连个资源配合 1.身份        account 2.授权        auth ...

  4. 云计算Linux运维——Linux系统——软件管理

    点关注不迷路 目录 点关注不迷路 1RPM软件管理 1.软件安装包类型 2.RPM软件安装包的组成 二.RPM软件管理操作 rpm命令 1.安装软件 2.查看软件 3.卸载软件 2yum工具介绍 一. ...

  5. Linux运维-服务器系统篇

    Linux运维-服务器系统篇 开篇导读: 本篇博文是此系列教程的第二课,在这一课中将大概的介绍一下服务器上的操作系统,了解一下它的基本概念和发展历程. 服务器系统的概念和作用 如何理解服务器操作系统? ...

  6. 基于Linux+Nagios+Centreon+Nagvis等构建海量运维监控系统

    参考书目:<海量运维监控系统规划与部署 基于Linux+Nagios+Centreon+Nagvis等> 付哲著 系统环境规划: 基于阿里云centos6.8镜像升级到centos6.9, ...

  7. 江南科友 hac linux shell,运维安全审计系统(HAC 1000E、HAC 1000P)

    "运维安全审计系统(HAC 1000E.HAC 1000P)"详细介绍 堡垒机.HAC.运维安全审计系统.江南科友堡垒机.内控堡垒机.运维堡垒机.HAC 1000-E.HAC 10 ...

  8. 明辰智航云安网络与虚拟化性能管理系统—运维监控系统

    什么是运维监控系统数字转型? 多年来,IT经历了过渡的各个阶段.早期,我们从大型主机和终端到数据中心的较小服务器占用空间,而这些数据中心的用户端点本质上是图形的,并了解了监视解决方案的价值.今天,我们 ...

  9. 开源堡垒机或者运维安全审计系统

    堡垒机有以下两个至关重要的功能: 权限管理 当你公司的服务器变的越来越多后,需要操作这些服务器的人就肯定不只是一个运维人员,同时也可能包括多个开发人员,那么这么多的人操作业务系统,如果权限分配不当就会 ...

最新文章

  1. 设置ECLIPSE 中光标移至代码上自动提示功能
  2. 深入.NET 4.0之,LazyT点滴
  3. android7.1默认背光亮度及编译调试
  4. CCNA Cisco 端口配置(上)
  5. Mybatis3.4.x技术内幕(二十二):Mybatis一级、二级缓存原理分析
  6. python截取后三位元素_python – 如何从BeautifulSoup的表中获取第一个和第三个td?...
  7. matlab做计算器纯代码,**matlab GUI-纯编程实现简单计算器**
  8. Android activity启动模式
  9. ESP8266--接线与基础指令(讲解与运用)
  10. 17. Contoller(2)
  11. python快速编程入门课本中的名片管理器_Python-名片管理器
  12. 热点争议:Web设计师需要编程知识吗?
  13. Lecture 2 Asymptotic Notation
  14. 一生不要瞎忙,只要做对三件事
  15. 如何连接mac与无线打印机?
  16. 基于python的OCR中文识别教程
  17. 食用卵磷脂市场现状及未来发展趋势
  18. 静音计算机方案,如何解决计算机突然静音的问题
  19. UE4插件与编辑器Slate
  20. Java实现-数字组合1

热门文章

  1. Facebook性能大提升的秘密:HipHop
  2. Linux下的ATT语法(即GNU as 汇编语法)入门
  3. XML与DataSet的相互转换类
  4. IOCP , kqueue , epoll ... 有多重要?
  5. DataTable中数据记录的统计
  6. 考察新人的两道c语言题目
  7. log库spdlog简介及使用
  8. 【linux命令】readelf工具中英文说明
  9. 2 拖拽模型_3Dmax插件 | 螺丝钉、挖洞、网格模型等可以分分钟搞定
  10. ajax请求必须打断点才能成功,Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)...