用户
搜索
  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 262 天

    连续签到: 50 天

    [LV.8]以坛为家I

    i春秋-核心白帽

    Rank: 4

    10

    主题

    62

    帖子

    1316

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2019-11-4

    核心白帽春秋游侠白帽高手积极活跃奖

    发表于 2021-6-4 18:00:40 07098
    本帖最后由 和風 于 2021-6-4 18:16 编辑

    本文原创作者和風,本文属i春秋原创奖励计划,未经许可禁止转载
    安全加固

    (1)禁用或者删除无用的账号,检查特殊账户(可远程登录、用户权限高的账号),必要时禁止远程登录用户登录,只能本地登录,设置多次登录失败锁定账户。
    (2)检查重要的目录和文件的权限,chmod增加权限,防止篡改等。
    (3)关闭不必要的服务,跟企业无关的服务可以暂时关闭。
    (4)关闭不必要的协议,如ftp、ssh、telnet等,可能存在协议漏洞。
    (5)关闭不必要的端口,有一些端口可能存在端口漏洞。
    (6)时不时检查安全日志,观察日志信息。
    (7)可以使用安全厂商的设备来实时检查,或者使用系统杀毒软件查杀。

    以下为RedHatlinux系统的安全加固,配置系统的安全基线,从各方面优化加固系统
    (1)查看Linux系统版本信息
    操作步骤:打开终端输入uname -a查看Linux操作系统的版本信息

    (2)查看安装软件信息
    操作步骤:打开终端输入rpm -qa查看Linux的已安装软件信息
    –a选项是查询所有已经安装的软件包。-q是查询一个包是否安装
    (显示区别:已经安装的rpm包不会显示后缀.rpm ,而未安装的包则显示后缀.rpm)

    (3)查看进程信息
    操作步骤:打开终端输入ps aux查看主机名信息
    Ps aux:运行用户、pid、cpu占用、内存占用、虚拟内存、物理内存、tty、stat(进程的状态)、什么时候启动的、运行了多久了、命令
    Stat状态:
    D不能中断。
    R(run)正在跑的进程(在一个时间段内使用cpu)。
    S(sleep)进程运算完可能会暂停一下,过会会激活
    <高优先级的进程(cpu优先处理)
    L内存中被锁了内存分页的
    s主进程
    L多线程进程

    (4)查看主机名
    操作步骤:打开终端输入Hostname查看主机名

    (5)查看网络配置信息
    操作步骤:打开终端输入查看主机的网络配置
    Ifconfig(网卡为Eth1)

    vi /etc/sysconfig/network-scripts/ifcfg-eth0查看网卡信息,dhcp分配网络

    vi /etc/sysconfig/network-scripts/ifcfg-eth1网卡无信息

    Dns配置文件vi /etc/resolv.conf

    路由表route

    (6)查看路由表
    操作步骤:打开终端输入netstat -rn查看路由表的具体条目信息

    (7)查看开放端口
    操作步骤:打开终端输入netstat -an查看开放端口的状态信息
    Netstat -an|more 查看开放端口信息(22可以进行ssh暴力破解等)

    账号口令
    (1)禁用无用帐号
    操作目的:禁用系统无用帐号,降低风险
    检查方法:
    打开终端,输入命令“cat /etc/passwd”查看口令文件,与系统管理员确认不必要的账号;
    FTP等服务的账号,如果不需要登录系统,shell应该/sbinlogin。
    加固方法:
    打开终端输入输入命令“passwd -l <用户名>”锁定不必要的账号。
    如需解锁可使用命令“passwd -u <用户名>” 。
    Uid为5,6,7为可登录的系统账号,如果不必要可以锁定passwd -l sync、passwd -l shutdown、passwd -l halt;uid为500、501为普通用户。

    (2)账号锁定策略
    操作目的:防止口令暴力破解,降低风险
    检查方法:
    打开 终端,输入命令“cat /etc/pam.d/system-auth |grep auth”查看帐号认证策略
    加固方法:
    设置连续输错5次密码,帐号锁定5分钟,
    输入命令“vi /etc/pam.d/system-auth”修改配置文件,添加
    auth required pam_tally2.so onerr=fail deny=5 lock_time=300
    cat /etc/pam.d/system-auth |grep auth

    Vim /etc/pam.d/system-auth

    cat /etc/pam.d/system-auth |grep auth

    (3)检查特殊账号
    操作目的:查看空口令和root权限的账号
    检查方法:
    输入命令“awk -F: '($2=="")' /etcadow”查看空口令账号
    输入命令“awk -F: '($3==0)' /etc/passwd”查看UID为零的账号
    加固方法:
    输入命令“passwd  <用户名>”为空口令账号设定密码,这里因为默认没有空口令账号,所以可以自行创建一个演示账号。
    UID为零的账号应该只有root,设置UID方法:
    usermod -u UID <用户名>
    awk -F: '($2=="")' /etcadow检测无空口令账号

    awk -F: '($3==0)' /etc/passwd 检测uid为0账号为root用户

    Useradd su创建新用户su

    Passwd su修改密码

    Cat /etcadow查看su用户产生新密码

    (4)添加口令周期策略
    操作目的:设置口令的有效的输入时间等,降低被猜解的可能性
    检查方法:
    输入命令“cat /etc/login.defs|grep PASS”和“cat /etc/pam.d/system-auth”查看密码策略设置
    加固方法:
    输入命令“vi /etc/login.defs”修改配置文件里的以下语句:
    PASS_MAX_DAYS   100        新建用户的密码最长输入天数
    PASS_MIN_DAYS   0          新建用户的密码最短输入天数
    PASS_MIN_LEN   8           新建用户的密码最短长度
    PASS_WARN_AGE   7         新建用户的密码到期提前提醒天数
    输入chage命令修改用户设置,例如:
    chage -m 0 -M 30 -E 2000-01-01 -W 7 <用户名>
    表示:将此用户的密码最长输入天数设为30,最短输入天数设为0,帐号2000年1月1日过期,过期前7天里警告用户
    cat /etc/login.defs|grep PASS

    vi /etc/login.defs修改密码策略配置

    cat /etc/login.defs|grep PASS

    chage -m 0 -M 30 -E 2000-01-01 -W 7  su

    (5)添加口令复杂度策略
    操作目的:加强口令的复杂度等,降低被猜解的可能性
    检查方法:
    输入命令“cat /etc/pam.d/system-auth |grep pam_cracklib.so”查看密码复杂度策略设置
    加固方法:
    建议在vi /etc/pam.d/system-auth 文件中配置:
    password  requisite pam_cracklib.so difok=3 minlen=8 ucredit=-1 lcredit=-1 dcredit=1
    表示密码至少8位,包含一位大写字母,一位小写字母和一位数字
    vi /etc/pam.d/system-auth

    cat /etc/pam.d/system-auth |grep pam_cracklib.so

    (6)限制root远程登录
    操作目的:限制root远程telnet登录,如果禁止telnet服务可忽略此项
    检查方法:
    telnet:输入命令“cat /etccuretty”查看根用户登录的设备名
    Ssh:输入命令“cat /etc/ssh/sshd_config”查看PermitRootLogin  语句后跟的是yes还是no
    加固方法:
    telnet:删除pts/0、pts/1
    Ssh:把
    PermitRootLogin yes
    改为
    PermitRootLogin no
    并将注释去掉
    cat /etccuretty

    cat /etc/ssh/sshd_config |grep PermitRootLogin

    Vi cat /etc/ssh/sshd_config


    (7)检查Grub/Lilo密码
    操作目的:查看系统引导管理器是否设置密码
    检查方法:
    输入命令“cat /etc/grub.conf|grep password”查看grub是否设置密码
    加固方法:
    vi编辑/etc/grub.conf
    splashimage这个参数下一行添加: password 密码
    如果需要md5加密,可以添加一行:password --md5 密码
    cat /etc/grub.conf|grep password

    Vi /etc/grub.conf

    (8)限制用户su
    操作目的:限制能su到root的用户
    检查方法:
    输入命令“cat /etc/pam.d/su|grep pam_wheel.so”查看配置文件,确认是否有相关限制
    加固方法:
    输入命令“vi /etc/pam.d/su”修改配置文件,将第6行
    auth            required        pam_wheel.so use_uid  的注释去掉。
    然后将需要su权限的用户加入wheel组
    usermod -g  wheel username
    为了对比可以新建一个测试用户,加入测试组
    useradd -g test test
    cat /etc/pam.d/su|grep pam_wheel.so

    vi /etc/pam.d/su


    Usermod -g wheel su

    (9)SNMP团体字
    操作目的:如果打开了SNMP协议,snmp团体字设置不能输入默认的团体字
    检查方法:
    cat /etc/snmp/snmpd.conf
    加固方法:
    以root身份执行:
    vi /etc/snmp/snmpd.conf
    应禁止输入public、private默认团体字,输入用户自定义的团体字,例如将以下设置中的public替换为用户自定义的团体字:

    如无必要,管理员应禁止输入snmp服务
    查看是否有默认团体字
    service snmpd stop关闭服务

    (10)检查弱口令
    操作目的:检查弱口令
    检查方法:
    将被检查主机的/etcadow文件拷贝出来,在笔记本电脑上安装并运行johnny工具检测弱口令
    加固方法:
    输入“passwd 用户名”命令为用户设置复杂密码




    输入“passwd 用户名”命令为用户设置复杂密码

    服务
    (1)关闭不必要的服务
    操作目的:关闭不需要的服务,减小风险
    检查方法:
    这里举snmp服务的例子。
    输入命令“who -r”查看当前init
    输入命令“chkconfig --list snmpd”查看所有服务的状态
    加固方法:
    输入命令“chkconfig --level <init级别> snmpd off”设置服务在此init级别下开机禁止启动。(off参数可以改成on,即开机自启动)

    若snmpd在init5为on,即chkconfig --level 5 snmpd off

    (2)检查SSH服务
    操作目的:对SSH服务进行安全检查
    检查方法:
    输入命令“cat /etc/ssh/sshd_config”查看配置文件
    1)检查是否允许root直接登录
    检查“PermitRootLogin ”的值是否为no
    2)检查SSH输入的协议版本
    检查“Protocol”的值
    3)检查允许密码错误次数(默认6次),超过后断开连接
    检查“MaxAuthTries”的值
    加固方法:
    输入命令“vi /etc/ssh/sshd_config”编辑配置文件
    1)不允许root直接登录
    设置“PermitRootLogin ”的值为no
    2)修改SSH输入的协议版本
    设置“Protocol”的版本为2
    3)修改允许密码错误次数(默认6次)
    设置“MaxAuthTries”的值为3



    (3)配置TCP Wrapper
    操作目的:输入TCP Wrapper对libwrap库支持的程序做访问控制
    检查方法:
    输入命令“cat /etc/hosts.allow”和“cat /etc/hosts.deny”查看配置
    加固方法:
    输入命令“vi /etc/hosts.allow”和“vi /etc/hosts.deny”修改配置
    vi /etc/hosts.allow
    按“i”进入编辑模式
    加入:sshd:IP地址

    (4)查看NFS共享
    操作目的:查看NFS共享
    检查方法:
    输入命令“exportfs”查看NFS输出的共享目录
    加固方法:
    输入命令“vi /etc/exports”编辑配置文件,删除不必要的共享
    无共享内容

    (5)FTP服务器根目录权限
    操作目的:取消根目录的写权限或者禁止FTP匿名服务
    检查方法:
    输入命令“lftp localhost”检测
    加固方法:
    1 取消根目录的写权限:
    chown root ~ftp && chmod 0555 ~ftp
    *2如果不需要提供匿名FTP服务,禁止匿名FTP服务。
    .vi /etcsftpdsftpd.conf
    把 anonymous_enable=YES 修改为anonymous_enable=NO

    1. 重新启动VSFTPD
      [root@localhost vsftpd]# service vsftpd restart
      由于该靶机没有开启vsftpd服务,故不作演示
      禁止FTP匿名服务

    文件系统
    (1)重要目录和文件的权限设置
    操作目的:合理配置重要目录和文件的权限,增强安全性
    检查方法:
    执行以下命令检查目录和文件的权限设置情况:

    chmod 700 /bin/rpm
    chmod 600 /etc/exports  NFS共享目录配置文件
    chmod 600 /etc/hosts.  主机访问控制文件
    chmod 644 ar/log/messages
    系统日志配置文件
    chmod 640 /etc/syslog.conf
    chmod 660 ar/log/wtmp
    chmod 640 ar/log/lastlog
    chmod 600 /etc/ftpusers
    用户口令文件
    chmod 644 /etc/passwd
    chmod 600 /etcadow
    校验模块配置文件目录
    chmod 750 /etc/pam.d
    chmod 600 /etclo.conf
    终端配置文件
    chmod 600 /etccuretty
    chmod 400 /etcutdown.allow
    系统访问安全配置文件
    chmod 700 /etccurity
    网络系统配置文件
    chmod 751 /etc/sysconfig
    超级守护进程配置文件
    chmod 600 /etcetd.conf
    chmod 600 /etc/inetd.conf
    chmod 750 /etc/rc.d/init.d/
    chmod 750 /etc/rc.d/init.d/

    自动运行程序控制文件
    chmod 600 /etc/crontab
    chmod 400 /etc/cron.*
    SSH配置文件
    chmod 750 /etc/ssh
    内核控制配置文件
    chmod 400 /etc/sysctl.confg

    加固方法:
    对于重要目录,建议执行如下类似操作:# chmod -R 750 /etc/rc.d/init.d/
    这样只有root可以读、写和执行这个目录下的脚本。
    chmod -R 750 /etc/rc.d/init.d/


    Ls -l /etc/rc.d/init.d/*查看属性

    (2)设置umask值
    操作目的:设置默认的umask值,增强安全性
    检查方法:
    输入命令“umask”查看默认的umask值是否为027
    加固方法:
    输入命令“vi /etc/profile”修改配置文件,添加行“umask 027”, 即新创建的文件属主读写执行权限,同组用户读和执行权限,其他用户无权限,输入命令“umask 027”应用设置
    umask

    vi /etc/profile

    (3)Bash历史命令
    操作目的:设置Bash保留历史命令的条数
    检查方法:
    输入命令“cat /etc/profile|grep HISTSIZE=”和“cat /etc/profile|grep HISTFILESIZE=”查看保留历史命令的条数
    加固方法:
    输入命令“vi /etc/profile”修改配置文件,修改HISTSIZE=5和HISTFILESIZE=5即保留最新执行的5条命令(输入history 可查看历史命令)
    cat /etc/profile|grep HISTSIZE=

    vi /etc/profile

    (4)设置登录超时
    操作目的:设置系统登录后,连接超时时间,增强安全性
    检查方法:
    输入命令“cat /etc/profile |grep TMOUT”查看TMOUT是否被设置
    加固方法:
    输入命令“vi /etc/profile”修改配置文件,添加“TMOUT=”行开头的注释,设置为“TMOUT=180”,即超时时间为3分钟
    vi /etc/profile

    cat /etc/profile |grep TMOUT

    日志审核
    (1)rsyslogd认证相关记录
    操作目的:查看所有日志记录
    检查方法:
    cat /etc/rsyslog.conf |grep authpriv
    查看是否有authpriv.*    ar/logcure
    加固方法:
    添加相关日志的记录:
    将authpirv设备的任何级别的信息记录到ar/logcure 文件中
    vim /etc/rsyslog.conf添加authpriv行
    cat /etc/rsyslog.conf |grep authpriv

    vim /etc/rsyslog.conf

    (2)rsyslogd日志设置
    操作目的:查看所有日志记录
    检查方法:
    输入命令“cat /etc/rsyslog.conf”查看rsyslogd的配置
    系统日志(默认)cat ar/log/messages
    cron日志(默认)cat ar/log/cron
    安全日志(默认)cat ar/logcure
    加固方法:
    vi /etc/rsyslog.conf添加相关日志的记录。如:在boot.Log下添加一行记录用户日志的user.Log
    命令:user.*                                    ar/log/user.log
    vi /etc/rsyslog.conf

    总结
    安全加固在平时是预防黑客入侵时提前做好的防护措施,在真实环境下可能还需要其他安全设备的共同配合防护,例如堡垒机、数据库审计、行为管理审计等,提前做好安全加固是管理人员需要做的工作之一,通常希望进程拥有足够完成其工作的特权,而不希望赋予更多的特权给它,执行“最小权限”原则可以起到很大的作用。

    剑未佩妥出门已是江湖
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册