zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/richardlee97/p/10671322.html
Copyright © 2011-2022 走看看