• Linux安全加固


    0x00 简介

      安全加固是企业安全中及其重要的一环,其主要内容包括账号安全、认证授权、协议安全、审计安全四项,今天首先学习Linux下的系统加固(CentOS)。

    0x01 账号安全

      这一部分主要是对Linux账号进行加固。

    与账号相关的文件

    /etc/passwd    -- 记录了系统中各用户的一些基本属性,root可写,所有用户可读
    
    /etc/shadow    -- 记录了所有用户的密码
    
    /etc/group     -- 记录了用户组属性

    修改密码策略

      vim /etc/login.defs

    PASS_MAX_DAYS      90               密码最长有效期
    PASS_MIN_DAYS      10               密码修改之间最小的天数
    PASS_MIN_LEN       8                密码长度
    PASS_WARN_AGE      7                口令失效前多少天开始通知用户修改密码

    设置密码强度

      vim  /etc/pam.d/system-auth,将

    password requisite  pam_cracklib.so

      修改为至少包含一个数字、一个小写字母、一个大写字母、一个特殊字符、且密码长度>=8:

    password requisite  pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8  

      Ubuntu中vi /etc/pam.d/common-password。

    限制用户登陆

      vim  /etc/hosts.deny,若禁止192.168.0.1对服务器进行ssh的登陆,添加如下内容

    sshd : 192.168.0.1  

    限制登陆次数

      应对暴力破解,我们可以限制登陆次数为5,超过5次登陆失败就锁定vim /etc/pam.d/sshd,在 #%PAM-1.0 的下面,加入下面的内容,表示当密码输入错误达到3次,就锁定用户150秒,如果root用户输入密码错误达到3次,锁定300秒。

    auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300

      锁定用户的管理:

    pam_tally2                             查看被锁定的用户
    
    pam_tally2  --reset  -u  username      将被锁定的用户解锁            

    0x02 认证授权

      认证授权主要是验证你是谁,你能够做什么。

    文件目录权限

      在用户登陆中非常重要的三个文件

      /etc/passwd 必须所有用户都可读,root用户可写 –rw-r—r— 权限值为644

      /etc/shadow 只有root可读 –r--------  权限值为400

      /etc/group 必须所有用户都可读,root用户可写 –rw-r—r— 权限值为644

    chmod 644 /etc/passwd
    chmod 400 /etc/shadow
    chmod 644 /etc/group

    检查是否存在除root之外UID为0的用户:

    awk -F ':' '($3==0){print $1)' /etc/passwd

      检索出来的非root用户用userdel命令全部删除。

    检查是否使用PAM认证模块禁止wheel组之外的用户suroot

    [root@centos ~]# #vim /etc/pam.d/su       # 新添加以下两行
    
    auth            sufficient      pam_rootok.so
    
    auth            required        pam_wheel.so use_uid

      注意:auth与sufficient之间由两个tab建隔开,sufficient与动态库路径之间使用一个tab建隔开

      然后,:usermod -G wheel username    #username为需要添加至wheel组的用户名称,将用户添加到wheel组。注意,第一步加固表明只有wheel组中的用户才能使用su命令切换到root用户,因此必须将需要切换到root的用户添加到wheel组,以使它可以使用su命令成为root用户,如果系统不存在wheel组,则新增,新增方法:groupadd wheel。

      PAM(Pluggable Authentication Module)是一个可插入式认证模块,在Linux系统中,各种不同的应用程序都需要完成认证功能,为了实现统一调配,把所有需要认证的功能做成一个模块(认证机制特别复杂的除外,如:https),当特定的程序需要完成认证功能的时候,就去调用PMA的认证模块。

    文件与目录缺省权限控制

    [root@centos ~]#cp /etc/profile /etc/profile.bak
    
    [root@centos ~]# vim   /etc/profile
    
    umask 027
    
    [root@centos ~]#source  /etc/profile

    0x03 协议安全

      协议加固主要阻止入侵者远程获取服务器的权限。

    SSH安全
      SSH是一个协议,利用它可以登录到一个远程系统或远程执行系统命令,默认允许root登录,并且sshv1存在缺陷,我们应该在sshd_config禁止root访问和使用sshv2来让ssh更加安全。vim /etc/ssh/sshd_config 修改为:

    PermitRootLogin    no

    telnet安全

      早期的Linux默认开启telnet服务,telnet,ftp,rlogin都是明文传输的协议,如果必须使用telnet,则需要进行安全配置:

    /etc/xinetd.d/telnet
    disable=yes

    禁止匿名ftp

      [root@wenzhiyi ~]# vim  /etc/vsftpd/vsftpd.conf

      anonymous_enable=NO    #如果存在anonymous_enable则修改,如果不存在则手动增加

    预防Flood攻击

    [root@centos ~]# vim  /etc/sysctl.conf
    
    [root@centos ~]# net.ipv4.tcp_syncookies = 1
    
    [root@centos ~]# sysctl  -p  #让命令生效

    禁止ping

    # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 开启
    # echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all  关闭

    0x04 审计安全

      日志就是计算机系统、设备、软件等在某种情况下记录的信息。具体的内容取决于日志的来源

    检查是否记录安全事件日志

    [root@wenzhiyi ~]# vim  /etc/syslog.conf 或者 /etc/rsyslog.conf,在文件中加入如下内容: 
    
    *.err;kern.debug;daemon.notice     /var/log/messages
    
    [root@wenzhiyi ~]# chmod 640 /var/log/messages
    
    [root@wenzhiyi ~]#  service rsyslog restart 

    建立日志服务器

      日志服务器的好处在于,每个工作服务器将自己的日志信息发送给日志服务器进行集中管理,即使有人入侵了服务器并将自己的登录信息悄悄删除,但由于日志信息实时与日志服务器同步,保证了日志的完整性。以备工作人员根据日志服务器信息对服务器安全进行评测。

      在客户端修改配置文件/etc/rsyslog.conf

      想把哪种类型的日志文件发送给服务端,你就把他原来的对应的目录改成: @日志服务器ip

      然后重启rsyslog服务:

     systemctl  restart  rsyslog

      在服务器端打开 /etc/rsyslog.conf 配置文件,将后两行注释给去掉

     

      然后重启rsyslog服务,开启防火墙,这样就完成了日志服务器的搭建。

    systemctl  restart  rsyslog
    firewall-cmd  --add-port=514/tcp
  • 相关阅读:
    界面演示
    监控其它进程
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法...
    CI框架与Thinkphp框架的一些区别
    php 设置error_reporting(0)和ini_set('display_errors', 0)之后,还是显示错误
    PHPStorm2017去掉函数参数提示
    Cad 首尾相连的线段连接成多段线
    利用C#进行AutoCAD的二次开发 颜色和样式
    修改SDE最大连接数
    利用C#进行AutoCAD的二次开发(三)(转自明经通道)
  • 原文地址:https://www.cnblogs.com/richardlee97/p/10671322.html
Copyright © 2020-2023  润新知