zoukankan      html  css  js  c++  java
  • 简单的LNMP安全加固

    安全加固

    Nginx安全加固:

    Nginx配置文件 (nginx.conf):/usr/local/nginx/nginx.conf

    禁用autoindex:

    autoindex:是Nginx的目录浏览功能,如果不禁用该功能,就可以通过URL访问查看目录中的文件

    为了防止文件目录的泄露我们必须要禁用autoindexoff或者不配置

    关闭服务器标记:

    Nginx默认每个返回的页面携带版本信息,我们需要设置server_tokens off;关闭服务器标记(隐藏版本信息)

    自定义缓存:

    限制缓冲区溢出攻击,配置http_server{}如下:文章推荐

    client_body_buffer_size 20k; //设置用于请求主体的缓冲区大小 
    client_header_buffer_size 1k; // 请求头分配一个缓冲区大小
    client_max_body_size 1m; //设置NGINX能处理的最大请求主体大小
    large_client_header_buffers 4 8k; //读取大型客户端请求头的缓冲区的最大数量和大小
    # client_body_temp_path [temp]指定存储请求正文的临时文件的位置
    # client_body_in_single_buffer [off/on]指令设置NGINX将完整的请求主体存储在单个缓冲区中
    # client_body_in_file_only [off/clean/on] 禁用NGINX缓冲区并将请求体存储在临时文件中
    

    设置(超时)timeout:

    http{}设置:配置介绍

    client_body_timeout 10;//指定客户端与服务端建立连接后发送 body 的超时时间
    client_header_timeout 30;//指定客户端与服务端建立连接后发送 header 的超时时间
    keepalive_timeout 60;//无状态协议,发送tcp请求,服务器响应[time]后断开连接
    send_timeout 30; //服务端向客户端传输数据的超时时间。
    

    配置日志:

    系统有默认的格式日志,但是被注释了,取消注释就可以了

    限制请求访问:

    限制只允许GET|HEAD|POST等HTTP请求方法~~~

    黑名单IP:

    server{}配置选项中:

    location /{
    	allow 192.168.2.0/24;  //允许的IP
    	deny 192.168.1.0/24;  //拒绝的IP
    	deny all; //拒绝其它IP
    }
    

    在Nginx配置文件中进行许多安全加固:

    • 屏蔽了目录和服务器标记

    • 定义了超时和缓存定义

    • 对访问机制进行了限制

    CentOS安全加固:

    检查预留账号:

    $ cat /etc/passwd
    $ cat /etc/shadow
    $ cat /etc/group
    

    系统中保留一些账号,(bin,sys,adm……)

    为了安全起见,生产环境下的系统都会将这些没有用的 账户锁定

    锁定账号:

    $ passwd -l <username>	//锁定账号
    $ passwd -u <username>	//解锁账号
    

    检查空口令:

    $ awk -F ":" '($2=="!"){print $1}' /etc/shadow
    

    如果发现空口令账号可以添加密码:

    $ passwd <username>
    

    密码策略:

    $ cat /etc/login.defs  // 查看密码策略设置
    

    PASS_MAX_DAYS		用户密码的使用天数
    PASS_MIN_DAYS		最小时间间隔修改密码
    PASS_MIN_LEN		密码最小长度
    PASS_WARN_AGE		密码过期前N天提示
    

    检查其它超级用户:

    正所谓军队只能有一个最高领导人~Linux系统管理也是如此,只得有一个超级用户root,

    $ awk -F ":" '($3=="0"){print $1}' /etc/passwd    # 检查用户ID为0的用户
    

    限制能够su为root的用户:

    $ cat /etc/pam.d/su
    

    加固:

    添加:auth required /lib/security/pam_wheel.so group=wheel

    限制只有 wheel 组的用户可以su到root

    文件操作属性:

    将重要的文件添加不可改属性chattr +i <File_name>

    SSH安全:

    禁止root用户进行ssh登录~

    $ vi /etc/ssh/sshd_config
    

    设置PermitRootLoginno

    账户爆破锁定系统:

    $ vi etc/pam.d/system-auth
    

    设置密码错误N次,锁定time秒

    auth required pam_tally.so oneer=filad deny-<N> unlock_time=<time>
    

    无操作退出登录:

    $ vi /etc/profile TMOUT=<time>
    

    time秒无效操作后自动退出登录

    命令记录安全:

    $ vi /etc/profiel
    

    修改HISTSIZE=<N>属性值,限制历史记录N条命令记录

    系统日志策略配置:

    $ ps -aef | grep syslog //查看syslog服务是否开启
    $ cat /etc/rsyslog.conf //查看syslogd配置
    
    /var/log/cron   //crom日志
    /var/log/messages  // 系统日志
    /var/log/secure   // 安全日志
    
  • 相关阅读:
    Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 一个解决办法(转载)
    mysql limit用法
    preparedStatement一个小技巧
    两个简单的压力测试代码。
    cookie实现session机制
    java.util.properties用法
    数据库是否使用外键,及视图,索引,存储过程的一些说明(zz)
    某项目要调用现有的100多个DLL 二 最最简单原型的思考
    面试题:红绿灯
    一个简单的封装 .net的日志功能
  • 原文地址:https://www.cnblogs.com/wangyuyang1016/p/11629608.html
Copyright © 2011-2022 走看看