zoukankan      html  css  js  c++  java
  • Linux加固

    加固方法大多数要用到root权限,比赛时是不会给root用户的,需要我们自己提权,给出两篇提权的文章
    https://blog.csdn.net/devil8123665/article/details/108146676
    https://blog.csdn.net/devil8123665/article/details/107485260


    操作系统加固

    1.开启防火墙

    service iptables start
    

    2.锁定系统中多余用户

    执行命令–>cat /etc/passwd
    来查看一下有哪些用户
    在这里插入图片描述

    执行命令–>passwd -l <用户名>
    来锁定不需要的用户
    在这里插入图片描述

    passwd -u <用户名> 可以解锁被锁定的用户
    在这里插入图片描述

    3.锁定系统中的空口令用户

    执行命令–>cat /etc/shadow
    来查看一下所有用户的密码

    执行命令–>awk -F “:” ‘($2=="!!"){print $1}’ /etc/shadow
    可以筛选出空口令用户
    在这里插入图片描述

    执行命令–>passwd -l <用户名>
    锁定空口令用户
    账户密码配置好后,执行命令

    chattr +i /etc/passwd
    chattr +i /etc/shadow
    

    来让用户账户和密码目录赋予不可更改属性
    在这里插入图片描述
    恢复方法

    chattr -i /etc/passwd
    chattr -i /etc/shadow
    

    在这里插入图片描述

    4.设置口令策略

    执行命令 vi /et/login.defs 来修改口令策略

    PASS_MAX_DAYS 90 #新建用户的密码最长使用天数
    PASS_MIN_DAYS 0 #新建用户的密码最短使用天数
    PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数
    PASS_MIN_LEN 9 #最小密码长度9
    在这里插入图片描述

    5.禁用root之外的超级用户

    cat /etc/passwd 查看口令文件,口令文件格式如下
    login_name:password:user_ID:group_ID:comment:home_dir:command
    login_name:用户名
    password:加密后的用户密码
    user_ID:用户ID,(1 ~ 6000) 若用户ID=0,则该用户拥有超级用户的权限。查看此处是否有多个uid=0。
    group_ID:用户组ID
    comment:用户全名或其它注释信息
    home_dir:用户根目录
    command:用户登录后的执行命令
    在这里插入图片描述

    加固方法:
    使用命令–>awk -F “:” ‘($3=="0"){print $1}’ /etc/passwd 来筛选出uid为0的用户
    在这里插入图片描述
    使用命令–>passwd -l <用户名> 锁定除root之外的超级用户

    6.禁止非root用户执行/etc/rc.d/init.d下的系统命令

    执行命令–>chmod -R 700 /etc/rc.d/init.d/*
    恢复方法–>chmod -R 777 /etc/rc.d/init.d/* #恢复默认设置

    7.限制能够su成root的用户

    执行命令–>vi /etc/pam.d/su
    添加下图标记行,只有wheel组的用户可以通过su提权

    在这里插入图片描述

    做完这步操作后记得将自己使用的用户分到wheel组
    在这里插入图片描述

    8.限制超级管理员远程登录

    执行命令–>vi /etc/ssh/sshd_config 来查看远程登录配置文件
    PermitRootLogin yes表示允许root远程登录,注释掉这句语句或者改成no
    在这里插入图片描述
    执行命令–>service sshd restart 重启ssh服务
    在这里插入图片描述
    9.屏蔽ssh登录banner信息

    使用命令–>vi /etc/ssh/sshd_config
    找到配置信息banner,将前面的#删掉
    在这里插入图片描述

    执行命令–>vi /etc/motd
    删除里面的内容或者将它改为自己的提示信息

    10.系统用户的执行shell权限

    执行命令–>

    cat /etc/passwd |grep "/bin/bash"
    

    在这里插入图片描述
    发现ftp和nobody作为系统用户不应该具有执行shell的权限
    加固方法:
    vi /etc/passwd 将ftp和nobody后面的/bin/bash改为/sbin/nologin
    在这里插入图片描述

    11.未经授权的suid文件漏洞

    编写以下脚本
    在这里插入图片描述
    使用命令–>bash 2.sh 执行脚本

    在这里插入图片描述
    看到useradd不符合规则
    加固方法
    chmod 755 /usr/bin/useradd

    12.设置账户锁定登录失败锁定次数、锁定时间
    编辑/etc/pam.d/system-auth文件

    vi /etc/pam.d/system-auth
    

    填加以下代码行

    auth required pam_tally.so onerr=fail deny=6 unlock_time=600 even_root_unlock_time=100
    

    表示用户登录失败6次,账户锁定600秒,root账户锁定100秒
    在这里插入图片描述
    13.修改TMOUNT的自动注销时间

    vi /etc/profile
    

    在文件中添加如图语句
    在这里插入图片描述
    TMOUNT=60表示用户不操作60秒后自动注销账户

    14.修改bash保留命令条数

    vi /etc/profile
    修改HISTSIZE=5,表示保留5条命令
    在这里插入图片描述

    15.停止或禁用与承载无关的服务

    chkconfig --list 查看所有服务的状态
    在这里插入图片描述
    加固方法:
    记录需要关闭服务的名称
    chkconfig - -del <服务名称> 删除服务
    chkconfig - -level <级别名> <服务名> on|off 服务在特定级别下打开|关闭

    16.为审计产生的数据分配合理的存储空间和存储时间

    #/etc/init.d/rsyslog start 启动日志
    系统日志(默认)/var/log/messages
    cron日志(默认)/var/log/cron
    安全日志(默认)/var/log/secure
     
    #cat /etc/logrotate.conf 查看系统轮询配置,有无
    #rotate log files weekly
    weekly
    #keep 4 weeks worth of backlogs
    rotate 4 的配置
    在这里插入图片描述
    加固方法:

    #vi /etc/logrotate.d/syslog编辑配置文件

    增加rotate 4 日志文件保存个数为4,当第5个产生后,删除最早的日志size 100k 每个日志的大小
    加固后应类似如下内容:

      /var/log/syslog/*_log {
      missingok
      notifempty
      size 100k # log files will be rotated when they grow bigger that 100k.
      rotate 5 # will keep the logs for 5 weeks.
      compress # log files will be compressed.
      sharedscripts
      postrotate
      /etc/init.d/syslog condrestart >/dev/null 2>1 || true
      endscript
    }
    

    在这里插入图片描述

    Apache加固

    1.以特定用户运行http服务

    以特定用户运行服务,不要使系统默认账号启动APACHE,以免受到越权使用造成非法攻击
    加固方法:

    vi /etc/httpd/conf/httpd.conf
    

    修改为

    在这里插入图片描述
    因为用户nobody 没有sh执行权限,所以这种配置比较安全.一般情况下配置单独用户,该用户没有sh 执行权限.取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令

    2.隐藏banner信息

    httpd –v 查看httpd版本信息
    在这里插入图片描述

    当我们访问服务出错的时候的报错,看到banner泄露了apache的版本信息
    在这里插入图片描述

    加固方法:

    vi /etc/httpd/conf/httpd.conf
    

    将ServerTokens Os 改为:ServerTokens Pord
    //在出现错误页的时候不显示服务器操作系统的名称
    在这里插入图片描述

    将ServerSignature On 改为:ServerSignature off
    //不回显apache版本信息

    在这里插入图片描述
    在这里插入图片描述
    3.禁止目录浏览
    vi /etc/httpd/conf/httpd.conf 编辑配置文件,
    在这里插入图片描述
    将Options Indexs FollowSymLinks改为Options FollowSymLinks
    在这里插入图片描述
    在这里插入图片描述
    4.为特定目录使用密码保护

    假设/icons目录需要密码保护
    执行命令 /usr/bin/htpasswd -c /usr/local/etc/passwd.httpd testuser 创建包含用户名和密码的文本文件
    在这里插入图片描述
    在需要使用密码认证的目录下进行设置
    在这里插入图片描述
    说明:.htaccess文件中常用的配置选项有以下几个:
    AuthName:定义提示信息,用户访问时提示信息会出现在认证的对话框中
    AuthType:定义认证类型,在HTTP1.0中,只有一种认证类型:basic。在HTTP1.1中有几
    种认证类型,如:MD5
    AuthUserFile:定义包含用户名和密码的文本文件,每行一对
    require命令:定义哪些用户或组才能被授权访问
    在这里插入图片描述
    5.限制目录脚本文件执行

    这个主要是针对文件上传漏洞

    Apache文件名解析特性
    Apache对于文件名的解析是从后往前解析的,直到遇见一个它认识的文件类型为止。因此,如果web目录下存在以类似webshell.php.test这样格式命名的文件,Apache在解析时因为不认识.test这个文件类型,所以会一直往前解析,当解析到.php时,它认识了,因此会将它解析为PHP文件。
    Apache的这种解析特性经常被用来绕过Web应用的文件上传检测。当Web应用的文件上传功能在检测上传文件的合法性时,如果仅通过检测上传文件的扩展名来判断文件是否合法,就可以利用Apache的这种文件名解析特征绕过Web应用的检测。
    下面来看一个实例:目标网站后台存在一个上传图片的功能,只允许上传JPG和GIF图片格式的文件。但程序在验证上传文件合法性处存在漏洞,只是简单地通过上传文件扩展名来确定文件是否合法,这时我们就可以利用Apache的文件名解析特征来绕过这种检测。
    将文件名修改为类似phpshell.php.jpg这样的格式上传,发现绕过了检测,文件被成功上传到目标网站,如图
    在这里插入图片描述
    加固方法:
    可以在httpd.conf配置文件中添加以下内容来阻止Apache解析这种文件。

    <Files ~ ".(php.)">
    Order Allow,Deny
    Deny from all
    </Files>
    

    在这里插入图片描述
    修改后需要重启Apache服务生效。Service httpd restart

    这样即使攻击者上传了类似phpshell.php.jpg这样格式的文件,Apache也不会将它解析为PHP文件了,如图
    在这里插入图片描述

    同样的我们可以通过这个方法来限制.txt文件的读取
    在已有的目录data下先创建1.txt,然后修改文件属性. 然后通过浏览器访问
    在这里插入图片描述

    由于.txt 等类型文件经常存放一些重要的信息,所以一般情况下需要禁止掉.配置如下图
    在这里插入图片描述

    sercice httpd restart 重启apache 服务,然后访问 1.txt,发现被禁止
    在这里插入图片描述

    6.限制IP访问(比赛时这样做好像是犯规的,限制几个应该没事的吧)

    假设/icon目录只允许192.168.1.0网段的用户访问
    在这里插入图片描述

    假设/icon目录不允许192.168.1.0网段的用户访问
    在这里插入图片描述
    7.禁用 CGI

    不完善的CGI应用程序可能成为别人非法进人服务器系统的通道,有可能导致重要的资料被删除或外泄,如果服务器上不需要运行 CGI 程序,建议禁用 CGI
    vi /etc/httpd/conf/httpd.conf –>/cgi 将包含cgi的服务全部注释掉
    在这里插入图片描述

  • 相关阅读:
    编写isNull isArray isFunction的方法
    JS中Null与Undefined的区别
    css中关于transform、transition、animate的区别
    js数组去重的方法
    深入理解 Javascript 面向对象编程(转)
    js 创建类和继承的几种方法
    一道面试题,想明白之后好像锤自己几下~~
    关于offsetTop offsetHeight clientHeight scrollHeight scrollTop的区别研究
    alt和title的用法区别
    C++的黑科技(深入探索C++对象模型)
  • 原文地址:https://www.cnblogs.com/xlrp/p/14273711.html
Copyright © 2011-2022 走看看