Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了。我们要如何为这类服务器做好安全加固工作呢? 

一.  账户安全

1.1 锁定系统中多余的自建帐号

检查方法:

执行命令

#cat /etc/passwd

#cat /etc/shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。

备份方法:

#cp -p /etc/passwd /etc/passwd_bak

#cp -p /etc/shadow /etc/shadow_bak

加固方法:

使用命令passwd -l <用户名>锁定不必要的账号。

使用命令passwd -u <用户名>解锁需要恢复的账号。

风险:   需要与管理员确认此项操作不会影响到业务系统的登录

1.2设置系统口令策略

检查方法:

使用命令

#cat /etc/login.defs|grep PASS查看密码策略设置

备份方法:

cp -p /etc/login.defs /etc/login.defs_bak

加固方法:

#vi /etc/login.defs修改配置文件

PASS_MAX_DAYS   90        #新建用户的密码最长使用天数

PASS_MIN_DAYS   0         #新建用户的密码最短使用天数

PASS_WARN_AGE   7         #新建用户的密码到期提前提醒天数

PASS_MIN_LEN    9         #最小密码长度9

风险:无可见风险

1.3禁用root之外的超级用户

检查方法:

#cat /etc/passwd 查看口令文件,口令文件格式如下:

login_name:password:user_ID:group_ID:comment:home_dir:command

login_name:用户名

password:加密后的用户密码

user_ID:用户ID,(1 ~ 6000)   若用户ID=0,则该用户拥有超级用户的权限。查看此处是否有多个ID=0。

group_ID:用户组ID

comment:用户全名或其它注释信息

home_dir:用户根目录

command:用户登录后的执行命令

备份方法:

#cp -p /etc/passwd /etc/passwd_bak

加固方法:

使用命令passwd -l <用户名>锁定不必要的超级账户。

使用命令passwd -u <用户名>解锁需要恢复的超级账户。

风险:需要与管理员确认此超级用户的用途。

1.4 限制能够su为root的用户

检查方法:

#cat /etc/pam.d/su,查看是否有auth required /lib/security/pam_wheel.so这样的配置条目

备份方法:

#cp -p /etc/pam.d /etc/pam.d_bak

加固方法:

#vi /etc/pam.d/su

在头部添加:

auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root

#usermod -G10 test 将test用户加入到wheel组

风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆;和管理员确认哪些用户需要su。

当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效

性。如果是因为PAM验证故障,而引起root也无法登录,只能使用single user或者rescue模式进行排错。

1.5  检查shadow中空口令帐号

检查方法:

#awk -F: '($2 == "") { print $1 }' /etc/shadow

备份方法:cp -p /etc/shadow /etc/shadow_bak

加固方法:对空口令账号进行锁定,或要求增加密码

风险:要确认空口令账户是否和应用关联,增加密码是否会引起应用无法连接。

二、最小化服务

2.1 停止或禁用与承载业务无关的服务

检查方法:

#who –r或runlevel    查看当前init级别

#chkconfig --list     查看所有服务的状态

备份方法:记录需要关闭服务的名称

加固方法:

#chkconfig --level <服务名> on|off|reset    设置服务在个init级别下开机是否启动 

风险:某些应用需要特定服务,需要与管理员确认。

三、数据访问控制

3.1 设置合理的初始文件权限

检查方法:

#cat /etc/profile    查看umask的值

备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile

umask=027

风险:会修改新建文件的默认权限,如果该服务器是WEB应用,则此项谨慎修改。

四、网络访问控制

4.1 使用SSH进行管理

检查方法:

#ps –aef | grep sshd    查看有无此服务

备份方法:

加固方法:

使用命令开启ssh服务

#service sshd start

风险:改变管理员的使用习惯

4.2  设置访问控制策略限制能够管理本机的IP地址

检查方法:

#cat /etc/ssh/sshd_config  查看有无AllowUsers的语句

备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

加固方法:

#vi /etc/ssh/sshd_config,添加以下语句

AllowUsers  *@10.138.*.*     此句意为:仅允许10.138.0.0/16网段所有用户通过ssh访

保存后重启ssh服务

#service sshd restart

风险:需要和管理员确认能够管理的IP段

4.3 禁止root用户远程登陆

检查方法:

#cat /etc/ssh/sshd_config  查看PermitRootLogin是否为no

备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

加固方法:

#vi /etc/ssh/sshd_config

PermitRootLogin no

保存后重启ssh服务

service sshd restart

风险:root用户无法直接远程登录,需要用普通账号登陆后su

4.4 限定信任主机

检查方法:

#cat /etc/hosts.equiv 查看其中的主机

#cat /$HOME/.rhosts   查看其中的主机

备份方法:

#cp -p /etc/hosts.equiv /etc/hosts.equiv_bak

#cp -p /$HOME/.rhosts /$HOME/.rhosts_bak

加固方法:

#vi /etc/hosts.equiv 删除其中不必要的主机

#vi /$HOME/.rhosts   删除其中不必要的主机

风险:在多机互备的环境中,需要保留其他主机的IP可信任。

4.5  屏蔽登录banner信息

检查方法:

#cat /etc/ssh/sshd_config    查看文件中是否存在Banner字段,或banner字段为NONE

#cat /etc/motd               查看文件内容,该处内容将作为banner信息显示给登录用户。

备份方法:

#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

#cp -p /etc/motd /etc/motd_bak

加固方法:

#vi /etc/ssh/sshd_config 

banner NONE

#vi /etc/motd

删除全部内容或更新成自己想要添加的内容

风险:无可见风险

4.6 防止误使用Ctrl+Alt+Del重启系统

检查方法:

#cat /etc/inittab|grep ctrlaltdel     查看输入行是否被注释

备份方法:

#cp -p /etc/inittab /etc/inittab_bak

加固方法:

#vi /etc/inittab

在行开头添加注释符号“#”

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

风险:无可见风险

五、用户鉴别

5.1  设置帐户锁定登录失败锁定次数、锁定时间

检查方法:

#cat /etc/pam.d/system-auth   查看有无auth required pam_tally.so条目的设置

备份方法:

#cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak

加固方法:

#vi /etc/pam.d/system-auth

auth required pam_tally.so onerr=fail deny=6 unlock_time=300  设置为密码连续错误6次锁定,锁定时间300秒解锁用户 faillog  -u  <用户名>  -r

风险:需要PAM包的支持;对pam文件的修改应仔细检查,一旦出现错误会导致无法登陆;

当系统验证出现问题时,首先应当检查/var/log/messages或者/var/log/secure中的输出信息,根据这些信息判断用户账号的有效性。

5.2 修改帐户TMOUT值,设置自动注销时间

检查方法:

#cat /etc/profile    查看有无TMOUT的设置

备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile

增加

TMOUT=600    无操作600秒后自动退出

风险:无可见风险

5.3 Grub/Lilo密码

检查方法:

#cat /etc/grub.conf|grep password    查看grub是否设置密码

#cat /etc/lilo.conf|grep password    查看lilo是否设置密码

备份方法:

#cp -p /etc/grub.conf /etc/grub.conf_bak

#cp -p /etc/lilo.conf /etc/lilo.conf_bak

加固方法:为grub或lilo设置密码

风险:etc/grub.conf通常会链接到/boot/grub/grub.conf

5.4 限制FTP登录

检查方法:

#cat /etc/ftpusers    确认是否包含用户名,这些用户名不允许登录FTP服务

备份方法:

#cp -p /etc/ftpusers /etc/ftpusers_bak

加固方法:

#vi /etc/ftpusers    添加行,每行包含一个用户名,添加的用户将被禁止登录FTP服务

风险:无可见风险

5.5 设置Bash保留历史命令的条数

检查方法:

#cat /etc/profile|grep HISTSIZE=

#cat /etc/profile|grep HISTFILESIZE=    查看保留历史命令的条数

备份方法:

#cp -p /etc/profile /etc/profile_bak

加固方法:

#vi /etc/profile

修改HISTSIZE=5和HISTFILESIZE=5即保留最新执行的5条命令

风险:无可见风险

六、审计策略

6.1 配置系统日志策略配置文件

检查方法:

#ps –aef | grep syslog   确认syslog是否启用

#cat /etc/syslog.conf     查看syslogd的配置,并确认日志文件是否存在

系统日志(默认)/var/log/messages

cron日志(默认)/var/log/cron

安全日志(默认)/var/log/secure

备份方法:

#cp -p /etc/syslog.conf

6.2 为审计产生的数据分配合理的存储空间和存储时间

检查方法

#cat /etc/logrotate.conf    查看系统轮询配置,有无

# rotate log files weekly

weekly

# keep 4 weeks worth of backlogs

rotate 4  的配置

备份方法:

#cp -p /etc/logrotate.conf /etc/logrotate.conf_bak

加固方法:

#vi /etc/logrotate.d/syslog

增加

rotate 4     日志文件保存个数为4,当第5个产生后,删除最早的日志

size 100k    每个日志的大小

加固后应类似如下内容:

/var/log/syslog/*_log {

missingok

notifempty

size 100k # log files will be rotated when they grow bigger that 100k.

rotate 5  # will keep the logs for 5 weeks.

compress  # log files will be compressed.

sharedscripts

postrotate

/etc/init.d/syslog condrestart >/dev/null 2>1 || true

endscript

}

风险:无可见风险

本文章转载于:http://blog.51cto.com/bronte/1440865

六招轻松搞定你的CentOS系统安全加固的更多相关文章

  1. python爬虫19 | 遇到需要的登录的网站怎么办?用这3招轻松搞定!

    你好 由于你是游客 无法查看本文 请你登录再进 谢谢合作 当你在爬某些网站的时候 需要你登录才可以获取数据 咋整? 莫慌 小帅b把这几招传授给你 让你以后从容应对 那么 接下来就是 学习 python ...

  2. 苹果电脑不支持ntfs磁盘怎么办?用这一招轻松搞定!

    ntfs是一种Windows NT内核的系列操作系统所支持的磁盘格式.相较于fat文件格式,ntfs彻底解决存储容量限制,可支持16Exabytes(1018),同时,ntfs也拥有更强的稳定性及安全 ...

  3. centos下yum安装lamp和lnmp轻松搞定

    centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...

  4. 春节过后就是金三银四求职季,分享几个Java面试妙招,轻松搞定HR!

    春节过后就是金三银四,分享几个Java面试妙招,轻松搞定HR! 2020年了,先祝大家新年快乐! 今年IT职位依然相当热门,特别是Java开发岗位.软件开发人才在今年将有大量的就业机会.春节过后,金三 ...

  5. 轻松搞定RabbitMQ(六)——主题

    转自 http://blog.csdn.net/xiaoxian8023/article/details/48806871 翻译地址:http://www.rabbitmq.com/tutorials ...

  6. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/   基本上一开始很难搞定python的装 ...

  7. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...

  8. 【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

    权限控制,是一个系统当中必须的重要功能.张三只能访问输入张三的特定功能,李四不能访问属于赵六的特定菜单.这就要求对整个体系做一个完善的权限控制体系.该体系应该具备针区分用户.权限.角色等各种必须的功能 ...

  9. 【转】轻松搞定FTP之FlashFxp全攻略

    转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...

随机推荐

  1. RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->新增记录SQL执行过程

    有时我们需要记录整个系统运行的SQL以作分析,特别是在上线前这对我们做内部测试也非常有帮助,当然记录SQL的方法有很多,也可以使用三方的组件.3.2版本我们在框架底层新增了记录框架运行的所有SQl过程 ...

  2. Java中的定时任务

    现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清空你上 ...

  3. 自定义封装ajax,复制即可用

    支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  4. 第16章 使用ASP.NET Core Identity - Identity Server 4 中文文档(v1.0.0)

    注意 对于任何先决条件(例如模板),首先要查看概述. IdentityServer旨在提供灵活性,其中一部分允许您为用户及其数据(包括账户密码)使用所需的任何数据库.如果您从新的用户数据库开始,那么A ...

  5. 《CLR via C#》读书笔记(一)——CLR的执行模式

    前言 万事开头难,很早之前就想写博客记录些东西,迟迟未行动,甚是遗憾.原因诸多,大体上无非都是懒.没意志力等等.这次从自己的读书笔记开始,兴许能够有所改变. 一.CLR概念 CLR(Common La ...

  6. 杭电ACM2006--求奇数的乘积

    求奇数的乘积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  7. linux查看和修改PATH环境变量的方法

    查看PATH:echo $PATH以添加mongodb server为列修改方法一:export PATH=/usr/local/mongodb/bin:$PATH//配置完后可以通过echo $PA ...

  8. Linux学习笔记之Python3的安装以及创建虚拟环境(CentOS)

    安装python3 一.安装需要编译的关联库 yum instal -y zlib zlib-devel (根据自己系统的情况,安装需要的关联库,同样用yum安装即可) yum install ope ...

  9. Java开发笔记(六十二)如何定义函数式接口

    前面介绍了Lambda表达式的用法,从实践中发现它确实极大地方便了开发者,然而不管是匿名内部类还是Lambda表达式,所举的例子都离不开各类数组的排序方法,倘使Lambda表达式仅能用于sort方法, ...

  10. (5)Maven快速入门_5maven聚合与继承_scope依赖范围

    多个maven项目实现统一管理, maven 插件jar继承自父的maven项目.对maven中jar的版本进行管理. 1.创建一个项目来管理多个maven项目 new ----maven Proje ...