首页 > 系统相关 >Shell脚本开发项目

Shell脚本开发项目

时间:2023-05-29 21:03:48浏览次数:43  
标签:脚本 文件 Shell -- echo 开发 file 日志 check

一、日志文件的备份和还原shell脚本:

客户机:
1、 通过修改配置文件,来实现发送日志到远程服务器

 vim /etc/rsyslog.conf

*.* @@remote…

前面的*服务名称(日志文件)

后面的*代表等级

@@TCP协议发送

写入登录日志的服务

 authpriv.* @@192.168.134.130:514 (远程服务器的ip和端口)

Shell脚本开发项目_日志文件备份

2.临时关闭防火墙,确保顺利发送

setenforce 0

getenforce 查看是否关闭

3、退出保存后,重启生效

service rsyslog restart 重启服务

二、服务器 (接受日志,存放日志,更改协议)
1.更改配置文件

 vim /etc/rsyslog.conf

注意:

使用TCP协议接受

Shell脚本开发项目_安全测评_02

2.接受、存放日志: 

按ip地址来接受日志(客户机ip 192.168.134.110)存放到/var/log/client/192.168.134.110.log

添加内容:

:fromhost-ip, isequal, “192.168.134.110” /var/log/client/192.168.134.110.log

Shell脚本开发项目_拒绝恶意IP_03

3.退出保存后,重启生效

service rsyslog restart

4.查看端口是否开放:

ss -antpl | grep 514

t代表tcp协议,l代表监听

Shell脚本开发项目_系统监控_04

5.使用win10远程登录验证:

正确登陆后,用户端查看 cat /var/log/secure 看是否有登录成功的信息

服务器查看  cat /var/log/client/192.168.134.110.log

客户机:

Shell脚本开发项目_系统监控_05

服务器:

Shell脚本开发项目_日志文件备份_06

如果日志被删除,echo > /var/log/secure

服务器中仍有日志

能够还原日志文件

通过命令 echo > var/log/secure 来删除日志文件

Shell脚本开发项目_安全测评_07

客户机日志文件被删除,为空

Shell脚本开发项目_日志文件备份_08

服务器中仍有日志文件

Shell脚本开发项目_日志文件备份_09


二、监控系统运行情况shell脚本:

创建check.sh 脚本

#!/bin/bash

#计算cpu使用率, -n number:指定在结束前应该产生的最大迭代次数或帧数,一般迭代次数越大,获取到的cpu使用率越准确; 本脚本中是迭代了5次,"-n5"

cpu=`top -b -n5 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{split($1, vs, ","); v=vs[length(vs)]; sub(/\s+/, "", v);sub(/\s+/, "", v); printf "cpu使用率:%d", 100-v;}'`

echo $cpu'%'

#统计内存使用率

mem_used_persent=`free -m | awk -F '[ :]+' 'NR==2{printf "内存使用率:%d", ($3)/$2*100}'`

# -e参数是使 "\n"换行符生效进行输出换行的

echo -e $mem_used_persent'%\n'

#统计磁盘使用情况,df -P参数可以防止打印输出的内容换行

df -THP | awk -F '[ ]+' 'NR!=1{print $1","$6}'

执行check.sh脚本: sh check.sh

Shell脚本开发项目_系统监控_10

三、自动拒绝恶意IP登录shell脚本:

使用ubuntu远程登录centos7服务器,在centos7上将ubuntu的ip写入黑名单/etc/hosts.deny,并自动禁止该恶意IP登录

1、创建脚本,将恶意IP地址写入黑名单

vim /root/secure_ssh.sh

 

每次执行该脚本时,它会自动去扫描/var/log/secure日志文件,并把登录失败次数大于5次的IP自动写入到/etc/hosts.deny文件中去。

 

脚本内容:

#! /bin/bash

for i in $(grep "Failed password" /var/log/secure|awk '{print $(NF-3)}'|sort|uniq -c|sort -nr|awk '{if($1>=5) print $2}')

do

       echo "sshd:$i:deny" >> /etc/hosts.deny

done

 

2 将脚本加入Crontab实现自动禁止恶意IP

设置定时任务,每天22:00自动执行secure_ssh.sh脚本

 

crontab -e

0 22 * * * sh /root/secure_ssh.sh

 

实验步骤:

在ubuntu使用ssh远程登录centos7服务器

ssh ‘登录目标机器的用户名’@’目标机器的ip地址’

ssh ‘gaotian’@‘192.168.134.110’

故意输错密码。默认输错三次退出,我们重复登录几次,输错五次以上。

Shell脚本开发项目_日志文件备份_11

在centos7查看登录日志

a.首先查看安全日志文件

cat /var/log/secure

b.过滤其它ip,只看登录失败的ip地址

grep "Failed password" /var/log/secure

Shell脚本开发项目_系统监控_12

在centos7运行secure_ssh.sh脚本文件

sh /root/secure_ssh.sh运行

cat /etc/hosts.deny查看黑名单,验证恶意ip是否被写入

此时再在ubuntu中试图登录centos7,被禁止登录

Shell脚本开发项目_系统监控_13

Shell脚本开发项目_日志文件备份_14

如果想使ubuntu重新可以登录centos7,在白名单中写入ubuntu的ip或者删除黑名单中ubuntu的ip

四、服务器的安全性测评shell脚本:

创建脚本文件safety_check.sh

1、检查用户账号是否安全、保证只有一个root用户;

#! /bin/bash

newuser_check=`grep "0:0" /etc/passwd | awk -F ':' '{print $1}'`

for i in ${newuser_check};do

    if [[ ${i} != root ]];then                            #存在非root用户  

        echo "警告: 系统存在UID和GID为0的非root特权用户${i}"

    else

        echo "安全: 系统中不存在root以外的UID和GID为0的其它特权用户"

    fi

done

2、检查用户密码复杂度

#密码的最小长度 pass_min_len=`cat /etc/login.defs | grep PASS_MIN_LEN | grep -v ^# | awk '{print $2}'`

#密码过期提醒时间
pass_warn_age=`cat /etc/login.defs | grep PASS_WARN_AGE | grep -v ^# | awk '{print $2}'`
if [[ ${pass_min_len} -ge 9 ]];then           #设置密码长度大于等于9为安全密码     echo "安全: 密码最小长度为${pass_min_len},密码较为安全"
else
    echo "警告: 密码最小长度为${pass_min_len},密码不安全,建议大于9"
fi
if [[ ${pass_warn_age} -ge 15 ]];then    #设置密码过期时间大于等于15天为安全
    echo "安全: 密码过期提醒时间为${pass_warn_age}天,符合密码策略"
else
    echo "警告: 密码过期提醒时间为${pass_warn_age}天,不符合密码策略,建议大于15天"
fi

3、服务器的敏感文件检查

passwd_file_check=`ls -l /etc/passwd | awk '{print $1}'`    #检查passwd文件
shadow_file_check=`ls -l /etc/shadow | awk '{print $1}'`    #检查shadow文件 group_file_check=`ls -l /etc/group | awk '{print $1}'`      #检查group文件

#检查passwd文件权限是否为-rw-r--r-- if [[ ${passwd_file_check} != '-rw-r--r--' ]];then   

    echo "警告: 文件passwd的权限当前为${passwd_file_chececk},建议设置为\"-rw-r--r--\""
else
    echo "安全: 文件passwd的权限当前为${passwd_file_chec},符合安全要求"
fi

#检查shadow文件权限是否为-r--------(只读) if [[ ${shadow_file_check} != '-r--------' ]];then
    echo "警告: 文件shadow的权限当前为${shadow_file_check},建议设置为\"-r--------\""
else
    echo "安全: 文件shadow的权限当前为${shadow_file_check},符合安全要求"
fi

 

#检查group文件是否为-rw-r--r--if [[ ${group_file_check} != '-rw-r--r--' ]];then
    echo "警告: 文件group的权限当前为${group_file_check},建议设置为\"-rw-r--r--\""
else
    echo "安全: 文件group的权限当前为${group_file_check},符合安全要求"
fi

4.磁盘使用检查

#查看磁盘占用率并发出警告

disk_space=`df -h | grep -v 'tmpfs' | grep '/dev/' | awk '+$5 > 80 {print $5}'`

if [[ ${disk_space} != '' ]];then

    for i in ${disk_space};do

        echo "警告: 当前某磁盘的使用率为${i}(大于80%),请扩充其容量或删除不必要的文件"

    done

else

    echo "安全: 当前各磁盘的使用率均小于80%,符合安全要求"

fi

执行结果:

Shell脚本开发项目_系统监控_15

标签:脚本,文件,Shell,--,echo,开发,file,日志,check
From: https://blog.51cto.com/u_16140966/6373711

相关文章

  • AUTOCAD二次开发系列教程02-创建实体过程的理解
    目录01案例02步骤讲解03关键类理解04总结05源码地址01案例创建一个圆usingAutodesk.AutoCAD.ApplicationServices.Core;usingAutodesk.AutoCAD.DatabaseServices;usingAutodesk.AutoCAD.Geometry;usingAutodesk.AutoCAD.Runtime;namespaceHello.Cad.App01{......
  • Arduino开发环境搭建
    软件下载地址:安装板级驱动:C:\Users\88429\Documents\Arduino\hardware\espressif\arduino-esp32-masteresp32wroom32板级驱动为github的链接:安装库文件:旧版(18)库位置:安装位置//aduino//librariesor//hardware或者:c盘的x86programfiles/arduinno/libraries新版的library......
  • jwt原理开发,drf-jwt快速使用和自定义使用,jwt签发认证源码分析
    一眼弄懂cookieSeesiontoken区别彻底弄懂cookie,session和token区别1jwt原理1.1使用jwt认证和使用session认证的区别1.2三段式eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEf......
  • linux运维之bash脚本编程
    算法+数据结构=程序编程语言分类:低级语言:机器语言:二进制码,0、1汇编语言:用一些容易理解和记忆的缩写单词来代替一些特定的指令高级语言:解释型语言:源代码-->编译-->得到二进制可执行文件-->执行eg:PHP、Python、Shell编译型语言:源代码-->执行eg:Java、C、C++、Golang动态编译语言不......
  • 【一步步开发AI运动小程序】九、姿态辅助调试桌面工具折使用
    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的“乐动力”、“天天跳绳”AI运动APP,让云上运动会、线上运动会、健身打卡、AI体育指导等概念空前火热。那么,能否将这些在APP成功应用的场景搬上小程序,分享这些概念的红利呢?本系列文章就带您一步一步从零开始开发一个AI运动小程序......
  • Shell脚本实战(一)
    1、前言Shell脚本的语法规则不复杂,在Linux系统很重要,一些操作可以整合成一个shell脚本,节省时间,本文不去讲述shell的语法规则,相关的资料网上很多,只需要多使用即可,此处记录在实际工作中用到shell脚本,积累一些常用的用法,后续也可以参考。2、功能点因为项目原因,c++代码体系非常庞大......
  • 前端开发中解决客户电脑没有想要的字体解决办法
    前言前端开发中,字体是很重要的一部分。特别是针对一些演示大屏页面做开发时,字体更为重要。然而,当客户电脑没有安装你想要的字体时,页面可能会达不到预期效果。那么该怎么办呢?解决方案:以下是一些常用的解决办法使用WebFontsWebFonts可以使你的网站在任何浏览器上都能展示你......
  • EBS: FORM窗体开发使用VIEW模式开发,plsql DEVELOPER 自动生成PLSQL脚本
    FORM窗体开发使用VIEW模式开发,plsqlDEVELOPER自动生成PLSQL脚本,CREATEORREPLACEPACKAGEAPPS.HAND_PLSQL_AUTOCREATEAUTHIDCURRENT_USERAS/*$Header:HDPLSATC.pls115.12004/09/0215:33:09pkmship$*/PROCEDUREregist_table(p_table_nameINVARCHAR2,......
  • 如何将数据从MySQL/MongoDB中迁移至云开发数据库
    本篇文章从MySQL、MongoDB迁移到云开发数据库,其他数据库迁移也都大同小异~迁移大致分为以下几步?:从MySQL、MongoDB将数据库导出为JSON或CSV格式创建一个云开发环境到云开发数据库新建一个集合在集合内导入JSON或CSV格式文件Mysql迁移到云开发数据库为了方便,我们使用Na......
  • 要开发代驾App需要以下解决方案
    要开发代驾App,您需要以下解决方案: 1.功能: 确定您的App需要提供哪些功能,例如:需求分析、预约管理、司机找客、实时位置跟踪、支付和评价等。 2.平台: 确定您的App要适配哪些移动平台,例如iOS、Android、或者是WebApp等。 3.设计: 制定您的App设计方案,主要包括用户界......