zoukankan      html  css  js  c++  java
  • Linux 服务器安全加固(等保 2.0 标准)

    Linux 服务器安全加固(等保 2.0 标准)

    Linux 服务器安全加固(等保 2.0 标准)


    身份鉴别

    配置账户密码策略

    参考配置操作:

    1、

    1
    2
    3
    4
    5
    6
    7
    # vim /etc/login.defs

    修改下列参数为建议值
    PASS_MAX_DAYS 30 #密码有效期为30天
    PASS_MIN_DAYS 1 #密码最短修改时间为1天
    PASS_MIN_LEN 8 #密码最小长度为8位
    PASS_WARN_AGE 7 #密码过期提前7天提示修改

    2、

    1
    2
    3
    4
    # vim /etc/pam.d/system-auth

    password requisite pam_cracklib.so行替换成如下:
    password requisite pam_cracklib.so retry=6 difok=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
    参数说明
    retry 尝试次数
    difok 最少不同字符
    minlen 最小密码长度
    ucredit 最少大写字母
    lcredit 最少小写字母
    dcredit 最少数字
    ocredit 最少特殊符号

    3、口令至少5次内不能重复

    1
    2
    3
    # vim /etc/pam.d/system-auth

    password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

    配置登录失败处理策略

    参考配置操作:

    1、限制本地登录次数

    1
    2
    3
    4
    # vim /etc/pam.d/login

    在第二行增加如下内容:
    auth required pam_tally2.so deny=3 unlock_time=1800 even_deny_root root_unlock_time=1800

    2、限制ssh本地登录次数

    1
    2
    3
    4
    # vim /etc/pam.d/sshd

    在第二行增加如下内容:
    auth required pam_tally2.so deny=3 unlock_time=1800 even_deny_root root_unlock_time=1800

    3、查看用户登录失败的次数(以root为例)

    1
    # pam_tally2 --user root

    4、解锁指定用户(以root为例)

    1
    # pam_tally2 -r -u root

    5、上述参数解释

    参数说明
    even_deny_root 也限制root用户
    deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
    unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒
    root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒

    注1:必须在 #%PAM-1.0 的下面,即第二行,添加内容,一定要写在前面。如果写在后面,虽然用户被锁定,但是只要用户输入正确的密码,还是可以登录的。

    注2:此处使用的是 pam_tally2 模块,如果不支持 pam_tally2 可以使用 pam_tally 模块。另外,不同的pam版本,设置可能有所不同,具体使用方法,可以参照相关模块的使用规则。

    双因子身份认证

    未整改状态:

    当前管理员仅使用用户名+密码方式对服务器进行管理,未使用两种及两种以上组合鉴别方式对管理员身份进行鉴别。

    参考配置操作:

    建议在系统中配置堡垒机、USB Key、动态口令等,使用两种鉴别技术对系统管理员进行身份鉴别。

    访问控制

    修改UMASK值

    参考配置操作:

    1、编辑/etc/profile文件,设置umask值:

    1
    2
    3
    # vim /etc/profile

    在末尾增加 umask 027。

    2、补充操作说明

    如果用户需要使用一个不同于默认全局系统设置的 umask,可以在需要的时候通过命令行设置,或者在用户的 shell 启动文件中配置。

    3、补充说明

    umask 的默认设置一般为 022,这给新创建的文件默认权限755( 777-022=755),这会给文件所有者读、写权限,但只给组成员和其他用户读权限。

    umask 的计算:
    umask 是使用八进制数据代码设置的,对于目录,该值等于八进制数据代码 777 减去需要的默认权限对应的八进制数据代码值;对于文件,该值等于八进制数据代码 666 减去需要的默认权限对应的八进制数据代码值。

    设置关键目录的权限

    参考配置操作:

    1、对系统中重要文件配置权限:

    1
    # chmod 600 /etc/security

    为不同的管理员分配不同的账号

    参考配置操作:

    为用户创建账号:

    1
    2
    # useradd username #创建账号
    # passwd username #设置密码

    修改文件权限:

    1
    2
    # chmod 755 directory
    //其中 755 为设置的权限,可根据实际情况设置相应的权限, directory 是要更改权限的目录)使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。

    更改文件或目录的所有者和组群所有者:

    1
    2
    # chown [选项] [用户:组群] [文件|目录] 
    //例如,#chown username:groupname directory,其中username为文件所有者,groupname为组群所有者,directory为文件或目录。

    锁定系统无用账户

    参考配置操作:

    通过cat /etc/shadow查看当前帐户列表,以下用户lp|sync|halt|news|uucp|operator|games|gopher|smmsp|nfsnobody|nobody密码字段列不是以*或者!!开头的,需要禁用或删除

    命令:passwd -l username

    注解:禁用无关帐户

    开启 SELinux

    参考配置操作:

    1、开启配置文件

    1
    2
    3
    4
    #vi etc/selinux/config

    修改下列参数为建议值:
    SELINUX=enforcing

    2、重启操作系统,或使用命令 setenforce 1 在不重启的情况下临时开启。

    3、执行命令 /usr/sbin/sestatus -v 或 getenforce 查看 selinux 运行状态。

    注:配置后可能导致系统异常,建议在测试环境中进行验证后再对生产环境进行加固,并在加固前进行完善的系统备份工作。

    安全审计

    配置日志审计功能

    未整改状态:

    系统未配置audit功能,没有使用aureport生成审计报告可以生成分析报表。

    参考配置操作:

    1、安装audit软件包

    1
    yum install audit

    2、开始audit 服务

    1
    service auditd start

    3、根据实际情况,在 /etc/audit/auditd.conf 文件中配置对audit审计工具进行配置。

    4、根据实际情况,在 /etc/audit/audit.rules 文件中配置审核规则。

    记录设备相关安全事件

    参考配置操作

    1、修改配置文件

    1
    2
    3
    4
    5
    # vim /etc/syslog.conf,

    配置如下类似语句:
    *.err;kern.debug;daemon.notice; /var/adm/messages
    定义为需要保存的设备相关安全事件。

    2、更改日所有志文件属性,使文件只可追加不可修改:

    1
    2
    3
    4
    # chattr +a /var/log/messages       #如果不存在则忽略
    # chattr +a /var/log/secure
    # chattr +a -/var/log/maillog
    # chattr +a /var/log/cron

    3、参数含义:

    参数说明
    kern 由kernel产生的信息;
    user 由用户进程产生的信息。对那些由程序或不在此列出的工具产生的信息,其缺省类型都是“user”;
    mail 邮件系统产生的信息;
    daemon 系统守护进程的信息,如in.ftpd、telnetd;
    auth 由login, su, getty等进行身份认证时产生的信息;
    syslog 由syslogd自己内部产生的信息;
    lpr 行打印spooling系统的信息;
    news USENET 网络新闻系统的信息;
    uucp UUCP系统信息;
    cron cron和at工具信息;
    local0-7 保留为local使用;
    mark syslogd内部产生的时间戳信息;
    * 除mark之外的所有其它类型(此符号不可用以代表所有级别)。

    保留字段中的“级别”代表信息的重要性,可以是:

    参数说明
    emerg 紧急,处于Panic状态。通常应广播到所有用户;
    alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
    crit 关键状态的警告。例如,硬件故障;
    err 其它错误;
    warning 警告;
    notice 注意;非错误状态的报告,但应特别处理;
    info 通报信息;
    debug 调试程序时的信息;
    none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。

    配置日志审计系统

    建议在网络上部署日志审计系统,采集用户网络中各种不同厂商的安全设备、网络设备、主机、操作系统、以及各种应用系统产生的海量日志信息,并将这些信息汇集到审计中心,进行集中化存储、备份、查询、审计、告警、响应,并出具丰富的审计报表。

    1、

    1
    2
    3
    4
    # vim /etc/rsyslog.conf

    *.info;mail.none;authpriv.none;cron.none /var/log/messages
    将上一行中的/var/log/messages修改为: @<日志服务器IP>

    2、重新读取配置文件:service rsyslog reload

    部署网络/数据库安全审计系统

    在网络中部署网络/数据库安全审计系统,通过对人员访问系统的行为进行解析、分析、记录、汇报,以帮助用户事前规划预防、事中实时监视、违规行为响应、事后合规报告、事故追踪溯源,加强内外部网络行为监管、促进核心资产(数据库、服务器、网络设备等)的正常运营。

    入侵防范

    配置防火墙

    参考配置操作:

    1、启动 iptables:

    1
    # service iptables start

    2、开放端口(根据实际业务需求进行配置):

    1
    2
    3
    4
    # vim /etc/sysconfig/iptables 

    在其中写入配置,例如增加如下一行:
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

    3、重启防火墙:

    1
    # service iptables restart

    4、检查防火墙策略:

    1
    #iptables -nvL

    部署入侵检测系统(IDS)

    准确分析、报告网络中正在发生的各种异常事件和攻击行为,实现对网络的“全面检测”,并通过实时的报警信息和多种格式报表,为用户提供翔实、可操作的安全建议,帮助用户完善安全保障措施。

    部署漏洞扫描系统

    实现对网络设备、操作系统、应用系统进行全面安全漏洞检测,清晰定性安全风险,给出修复建议和预防措施,及时的发现和修补漏洞隐患。

    关闭无用服务

    未整改状态:

    系统中服务开启均为系统安装时默认状态。

    参考配置操作:

    取消所有不需要的服务,编辑 /etc/inetd.conf 文件,通过注释取消所有你不需要的服务。

    1、更改 /etc/inetd.conf 权限为 600,只允许 root 来读写该文件。

    1
    # chmod 600 /etc/inetd.conf

    2、确定 /etc/inetd.conf 文件所有者为 root。

    1
    # chown root /etc/inetd.conf

    3、编辑 /etc/inetd.conf 文件,取消不需要的服务,如:ftp, telnet, shell, login, exec, talk, ntalk,imap, pop-2, pop-3, finger, auth 等等。把不需要的服务关闭可以使系统的危险性降低很多。

    4、给 inetd 进程发送一个 HUP 信号:

    1
    # killall -HUP inetd

    5、把 /etc/inetd.conf 文件设为不可修改。

    1
    # chattr +i /etc/inetd.conf

    注:
    /etc/inetd.conf 文件中只开放需要的服务。
    对于启用的网络服务,使用 TCP Wrapper 增强访问控制和日志审计功能。
    建议使用 xinetd 代替 inetd,前者在访问控制和日志审计方面有较大的增强。这样可以防止对inetd.conf的任何修改(以外或其他原因)。唯一可以取消这个属性的只有root。
    如果要修改inetd.conf文件,首先要取消不可修改属性:# chattr -i /etc/inetd.conf
    portmap(如果启动使用 nfs 等需要 rpc 的服务,建议关闭portmap 服务)
    cups 服务( Common Unix Printing Service,用于打印,建议关闭)
    named 服务(除非主机是 dns 服务器,否则关闭 named 服务)
    apache( http)服务
    xfs( X Font Service)服务
    vsftpd
    lpd
    linuxconf
    identd
    smb

    系统补丁更新

    建议定期对系统进行补丁更新,建立内网补丁服务器或由管理员手工将补丁安装到操作系统中。

    注:补丁安装应当先在测试机上完成。补丁安装可能导致系统或某些服务无法工作正常。在下载补丁包时,一定要对签名进行核实,防止系统感染病毒。

    恶意代码防范

    安装杀毒软件

    未整改状态:

    当前系统未安装杀毒软件,无法防止病毒对内部网络进行感染。

    参考配置操作:

    在服务器和终端设备上安装网络版杀毒软件,配置防病毒服务器,实现下发病毒扫描策略、更新病毒库、统计报警信息等,便于管理人员对整个网络中的病毒防护状况进行管理。

    资源控制

    设置访问控制列表

    未整改状态:

    系统未设置访问控制列表。

    参考配置操作:

    1、编辑 hosts.deny 文件,加入 (ALL:ALL)

    1
    2
    3
    #vi /etc/hosts.deny

    sshd: ALL #拒绝一切SSH远程访问,配合文件hosts.allow使用

    2、编辑 hosts.allow 文件,加入允许访问的主机列表,比如:

    1
    2
    3
    #vi /etc/hosts.allow

    sshd:192.168.59.1:allow #允许192.168.59.1访问SSH服务进程

    设置登录超时时间

    未整改状态:

    系统未设置超时时间。系统中 root 账户是具有最高特权的,如果系统管理员在离开系统之前忘记注销 root 账户,那将会带来很大的安全隐患,应该让系统自动注销。

    参考配置操作:

    通过修改账户中 TMOUT 参数,可以实现此功能。编辑 /etc/profile 文件,在 HISTFILESIZE= 后面加入TMOUT值:

    1
    2
    3
    4
    5
    6
    # vim /etc/profile

    TMOUT=180 #表示 180 秒
    export TMOUT #设置为全局变量

    # source /etc/profile #使配置生效

    这样,如果系统中登录的用户在 3 分钟内都没有动作,那么系统会自动注销这个账户。

    限制用户对资源的访问

    参考配置操作:

    1、编辑 /etc/security/limits.conf 文件,根据实际使用情况配置参数,限制用户对系统资源的使用限度。

    参数说明
    core 限制内核文件的大小
    date 最大数据大小
    fsize 最大文件大小
    memlock 最大锁定内存地址空间
    nofile 打开文件的最大数目
    rss 最大持久设置大小
    stack 最大栈大小
    cpu 以分钟为单位的最多 CPU 时间
    noproc 进程的最大数目
    as 地址空间限制
    maxlogins 此用户允许登录的最大数目

    2、编辑 /etc/pam.d/login 文件,在其末端添加如下语句

    1
    session required /lib/security/pam_limits.so

    3、编辑 /etc/security/limits.conf 文件,在其中添加如下语句

    1
    2
    3
    4
    5
    * hard rss sizeofmem
    * hard nproc maxNumberOfProcesses
    * hard as sizeofvirtualmem

    #其中sizeofmem和sizeofvirtualmem为数值,其单位为KB;maxNumberOfProcesses也为数值,其单位为个

    4、重启服务

    1
    /etc/init.d/sshd restart

    监控服务器资源状态

    配置资源监控系统,对服务器的 cpu、内存等资源进行实时监控,且应具有报警功能。管理员可以及时了解网络上各种设备的运行状况,可以及时发现并处理设备资源使用率过高、服务器宕机等异常状况。

     博文最后更新时间: 2020年11月11日下午2点50分

  • 相关阅读:
    第三届蓝桥杯CC++B组3
    第三届蓝桥杯CC++B组2
    第三届蓝桥杯CC++B组1
    第四届蓝桥杯c/c++B组3
    第四届蓝桥杯c/c++B组4
    第四届蓝桥杯c/c++B组5
    Nodejs RESTFul架构实践之api篇
    Request —— 让 Node.js http请求变得超简单
    [转]在SqlServer 中解析JSON数据
    JavaScript异步编程的Promise模式
  • 原文地址:https://www.cnblogs.com/AnKangwenqiang/p/14646572.html
Copyright © 2011-2022 走看看