zoukankan      html  css  js  c++  java
  • 服务器安全考虑

    服务器操作系统安全考虑

    1.口令安全策略

    建议系统化设置密码最短和最长使用期限,密码长度,修改文件前先做好文件备份:
    cp /etc/login.defs /etc/login.defs.bak
    修改/etc/login.defs中如下参数:
    PASS_MAX_DAYS  180
    PASS_MIN_DAYS  0
    PASS_MIN_LEN  8

    说明
    配置login.defs,这个文件主要是配置密码有效期
    PASS_MAX_DAYS 99999 #密码的最大有效期, 99999:永久有期
    PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
    PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效
    PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码

    root用户不受pam认证规则限制,可以随便设置密码的
    login.defs文件也对root用户无效,root用户修改密码的生命周期可以通过chage命令来修改

    2.限制超级管理员远程登录
    linux系统中root用户无所不能,为了系统安全ssh禁止root用户远程登录,必要的话使用sudo机制也是不错的选择

    应禁止root账号远程登录策略,以root账号编辑/etc/ssh/sshd_config, 去掉以下注释“#”,参考配置如下:
    PermitRootLogin no
    如果业务操作必须要求采用root账号,建议先以普通账号登录系统,然后再通过“su”命令切换至“root”账号权限。

    如何禁止ROOT用户通过SSH方式远程登录

    首先创建一个ghf普通用户加入到相应的组
    这里必须要新建一个用户,否则将会造成无法通过远程ssh登录服务器
    # groupadd ghf
    # useradd -g ghf ghf
    更改用户 ghf 的密码
    # passwd ghf
    然后修改
    /etc/ssh/sshd_config,
    去掉以下行注释“#”,并将yes 改为no ,参考配置如下:
    PermitRootLogin no
    最后重启ssh服务
    # service sshd restart
    或/etc/init.d/sshd restart
    这样即使root用户密码泄漏,别人也无法通过root用户直接连接服务器。

    ---------------------------------
    普通用户如何拥有root用户权限

    赋予root权限
    方法一: 修改 /etc/sudoers 文件,找到下面行
    #visudo

    ##Allows people in group wheel to run all commands
    #%wheel    ALL=(ALL)    ALL     //取消“#”注释
    然后修改用户,使其属于root组(wheel),命令如下:
    #usermod  -g  root test
    修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。

    方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

    ##Allow root to run any commands anywhere

    root   ALL=(ALL)     ALL
    test   ALL=(ALL)     ALL     //添加行
    修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。

    方法三:普通用户登录,登录后用# su – 提升root权限。

    方法四: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:

    test:x:500:500:test:/home/test:/bin/bash
    修改后如下
    test:x:0:500:tommy:/home/test:/bin/bash
    保存,用test账户登录后,直接获取的就是root帐号的权限。

    小结:
    在实际操作当中,发现方法一二与三也没有什么区别,建议常用方法三;
    方法四看上去简单方便,考虑安全性,一般不推荐使用。

    ---------------------------------

    linux如何查看所有的用户和组信息的方法:

    1、cat /etc/passwd
    2、cat /etc/group


    cat /etc/passwd查看所有的用户信息

    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

    username:password:User ID:Group ID:comment:home directory:shelll
    用户名,密码,用户id,用户所在组id,备注,用户家目录,shell 命令所在目录


    cat /etc/passwd|grep 用户名
    cat /etc/passwd|grep 用户名,用于查找某个用户,


    cat /etc/group
    cat /etc/group查看所有组信息

    mail:x:12:postfix
    用户组(Group)、用户组口令、GID及该用户组所包含的用户(User)

    cat /etc/group|grep 组名
    cat /etc/group|grep 组名,用于查找某个用户组

    groups 查看当前登录用户的组内成员
    groups test 查看test用户所在的组,以及组内成员
    whoami 查看当前登录用户名
    ---------------------------------
    linux中的conf文件中每行的#是干什么用的
    每行开头的#是注释用的,表示那一行的内容是注释,脚本执行时不读取。

    当然特殊地方的#就要看具体情况了。
    #后面的内容是注释,用来说每个配置参数的含义,让你可以很快知道如何使用对应的参数。
    同样#号后的内容去掉不影响配置。
    ---------------------------------



    3.配置空口令账号登录策略

    安全策略里应包括禁用允许空口令账号登录策略。以root账号编辑/etc/ssh/sshd_config文件,去掉以下注释“#”:
    PermitEmptyPasswords no

    4.用户试图登录时警示信息
    应该加强对系统Banner信息的管理,剔除版本信息,换成警告信息,
    如"System login has been monitored, illegal log in as soon as possible to exit from legal sanctions"等字样的信息。
    #cat /etc/ssh/sshd_config 查看文件中是否存在Banner字段,或banner字段为NONE
      #cat /etc/motd 查看文件内容,该处内容将作为banner信息显示给登录用户。
      #vi /etc/ssh/sshd_config
      banner NONE
      #vi /etc/motd
      删除全部内容或更新成自己想要添加的内容

    5.超时登录自动注销

    编辑/etc/profile
    TMOUT=600(秒)

    6.剩余信息报告
    限制Shell命令记录大小
    实施方法如下,进入Linux系统,执行如下命令:
    Vi  /etc/profile
    设置HISTSIZE=50

    数据库安全考虑

    1.升级Oracle数据库补丁程序

    2.配置安全性高的口令安全策略
    【实施方案】
    启用登录密码失败限制功能和自动锁定功能,启用密码最大生存时间,启用密码复杂性验证,操作如下:
    sqlplus "/ as sysdba";
    SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS 15  #失败登录限制设置15次
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LOCK_TIME 1;  #超过失败登录限制账户自动锁定
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION DEFAULT;   #启用密码复杂性验证                    
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LIFE_TIME 360;  #启用密码最大生存时间360天

    注意:以上定义的值为建议参考值,管理员可根据业务情况自行更改,但不要使用系统默认密码策略,如果对应用有影响,建议采用回退措施恢复默认值。

    【回退措施】
    sqlplus "/ as sysdba"
    SQL>ALTER PROFILE "DEFAULT" LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;              #恢复默认无限制
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LOCK_TIME UNLIMITED;                 #恢复默认无限制
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;                  # 恢复默认无限制                
    SQL>ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LIFE_TIME UNLIMITED;                    #恢复默认无限制

    3.设置监听器身份验证超时

    【加固方法】
    设置身份验证超时值30秒。编辑listener.ora文件,添加以下参数:
    INBOUND_CONNECT_TIMEOUT_LISTENER = 30
    【回退方法】
    在listener.ora文件内去掉以下参数:
    INBOUND_CONNECT_TIMEOUT_LISTENER = 30

    4.设置会话连接超时自动处理功能

    【实施方案】
    在sqlnet.ora文件中检查有无下列语句。
    sqlnet.expire_time = X
    SQL> shutdown immediate
    SQL> startup
    【回退方法】
    sqlnet.ora文件中删除下面的语句
    sqlnet.expire_time = X
    SQL> shutdown
    SQL> startup


    5.修改默认监听端口
    【实施方案】
    在listener.ora中更改端口号为其它。
    【回退方法】
    还原listener.ora文件配置.

    备注:随笔中内容来源于网上资料整理,仅供参考。

  • 相关阅读:
    hdu4472-Count
    Codeforces Beta Round #55 (Div. 2)
    优化素数表
    Codeforces Beta Round #49 (Div. 2)-D. Physical Education
    Codeforces Beta Round #49 (Div. 2)-C. Little Frog
    一些不知道的函数
    kmp算法详解
    STL之accumulate用法小结
    STL——list学习笔记
    maven打war包包含源文件-eclipse
  • 原文地址:https://www.cnblogs.com/Alanf/p/8032799.html
Copyright © 2011-2022 走看看