zoukankan      html  css  js  c++  java
  • 日常记录

    secure.sh是一个通过访问日志分析恶意IP并用iptables -A INPUT -s IP -j DROP封IP的脚本
    问题:在命令行执行sh secure.sh脚本执行没有问题,但是将脚本添加进计划任务后,脚本能执行,但是不能封掉IP。
    原因:环境变量问题
    解决办法:在脚本开头添加语句 source /etc/profile即可

    全局删除匹配到的行
    :g/pattern/d


    注销其他登录用户
    pkill -kill -t pts/2

    在指明wtmp情况下通过who命令可以查询到所有以前的记录。运行结果显示自从wtmp文件创建、删改以来的每一次登录。
    [root@ntbak ~]# who /var/log/wtmp


    linux可疑日志分析
    1.查看系统用户是否正常 cat /etc/passwd |grep /bin/bash
    2.查看登录服务器用户信息 who /var/log/wtmp
    3.查询历史命令 history
    4.系统安全日志 /var/log/secure
    5.系统消息日志 /var/log/messages

    系统管理人员应该提高警惕,随时注意各种可疑状况,并且按时和随机地检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志以及用户登录日志等。在检查这些日志时,要注意是否有不合常理的时间记载。例如:

    ■ 用户在非常规的时间登录;

    ■ 不正常的日志记录,比如日志的残缺不全或者是诸如wtmp这样的日志文件无故地缺少了中间的记录文件;

    ■ 用户登录系统的IP地址和以往的不一样;

    ■ 用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录;

    ■ 非法使用或不正当使用超级用户权限su的指令;

    ■ 无故或者非法重新启动各项网络服务的记录。

    另外, 尤其提醒管理人员注意的是: 日志并不是完全可靠的。高明的黑客在入侵系统后,经常会打扫现场。所以需要综合运用以上的系统命令,全面、综合地进行审查和检测,切忌断章取义,否则很难发现入侵或者做出错误的判断。

    强制覆盖复制
    cp -r xxx xxx

    流量实时监控iftop
    iftop -n -B

    -n: 使host信息显示IP
    -B: 以bytes为单位显示流量(默认是bits)

    进入iftop后按
    按B切换计算2秒或10秒或40秒内的平均流量
    按S切换是否显示本机的端口信息

    当数据库不完整,数据库数据恢复时需要先在数据库中用drop删除需要恢复的库,然后在导入备份数据库,不能直接在目录下删除库目录,不然导入的时候会报“表已经存在”的错误。

    mysql>drop database t1;
    mysqldump -uroot -p -S /var/lib/mysql/mysql.sock < /tmp/t1.sql


    shell中判断浮点数的大小(shell里面是没有变量类型的,只能比较整数大小。)
    $mya=5.5
    if [ $(echo "$mya <= 4"|bc) = 1 ]; then echo "ok";else echo "fail";fi
    这里借助了bc这个命令(bc是一个计算器,Bash内置了对整数四则运算的支持,但是并不支持浮点运算,而bc命令可以很方便的进行浮点运算,当然整数运算也不再话下。)

    echo "3.4*2.5"|bc
    8.5
    #bc在shell中作浮点运算


    前提:mysql主从复制。要求:丛库中binlog日志记录从主库复制过来的sql语句。
    分析:默认情况下slave从master那边同步过来的sql是不会写入bilog的,因为一般不需要。如果需要的话,需要做配置。

    丛库添加设置
    log_bin=mysql-bin
    log_slave_updates=1

    解释:
    log_bin=mysql-bin 打开从数据库的日志开关,如果对从库有非SELECT的操作,将会记录日志。
    log_slave_updates=1 从主库复制过来的SQL语句,将会记录日志。这个的作用一般都A-B-C级联复制的时候使用。

    history命令

    1.不记录history命令
    修改/etc/profile将HISTSIZE=1000改成0或1

    2.永久清除历史命令记录
    清除用户home路径下 .bash_history

    3.立即清空里的history当前历史命令的记录(当前shell)

      history -c

    4.bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。

      不过,可以调用'history -w'命令要求bash立即更新history文件。

      history -w


    泛洪攻击
    如何判断

    一般情况下,可以一些简单步骤进行检查,来判断系统是否正在遭受TCP SYN Flood攻击。

    1、 服务端无法提供正常的TCP服务。连接请求被拒绝或超时。

    2、透过 netstat -an 命令检查系统,发现有大量的SYN_RECV连接状态。

    检查服务器链接,SYN_RECV状态最高时有200多个,访问服务器网页特别慢,甚至超时,所以基本判定是SYN_RECV攻击。

    解决方法(大概):


    这个攻击的解决方法如下:

    1,增加未完成连接队列(q0)的最大长度。

    echo 1280&gt;/proc/sys/net/ipv4/tcp_max_syn_backlog

    2, 启动SYN_cookie。

    echo 1&gt;/proc/sys/net/ipv4/tcp_syncookies

    这些是被动的方法,治标不治本。而且加大了服务器的负担,但是可以避免被拒绝攻击(只是减缓)

    治本的方法是在防火墙上做手脚。但是现在能在一定程度上防住syn flood攻击的防火墙都不便宜。并且把这个命令加入"/etc/rc.d/rc.local"文件中

    如果对 /proc/sys/net/ipv4 下的配置文件进行解释,可以参阅 LinuxAid技术站的文章。查看本文全文也可以参阅。

    关于 syn cookies, 请参阅 &lt;&gt; http://cr.yp.to/syncookies.html

    也许 使用mod_limitipconn.c来限制apache的并发数 也会有一定的帮助。

    2. iptables的设置

    防止同步包洪水(Sync Flood)

    # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

    也有人写作

    #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

    --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改

    防止各种端口扫描

    # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

    Ping洪水攻击(Ping of Death)

    # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


    vim的编辑历史记录
    vim ~/.viminfo


    Centos7 rpm包安装php
    yum -y install php php-devel php-fpm php-xml php-pdo php-ldap php-mysql
    systemctl start php-fpm


    atime、ctime和mtime的区别
    1、 当仅读取或访问文件时(less、more),accesstime改变 、而change time、modify time不会改变。
    2、 当修改文件内容时(vim), change time、modify time会改变,而accesstime也改变(不一定)。
    3、 当修改文件权限属性时(chmod),change time改变,而access time 和modify time不会改变。

    安装iostat和mpstat工具包
    yum -y install sysstat

    格式化进程环境变量
    cat /proc/PID/environ |tr '' ' '


    查看系统内存使用率
    cat /proc/meminfo | awk 'NR==1{t=$2}NR==2{f=$2;print(t-f)/t*100}' |awk -F. '{print $1}'


    tomcat优化

    一.内存优化(启动参数优化)
    JAVA_OPTS='-server -Xms2048m -Xmx2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseBiasedLocking -XX:+AggressiveOpts -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection'

    二.并发优化(能承受超过300W的访问量,其中优化项包括:调整连接器connector的并发处理能力,Tomcat缓存优化等)
     <Connector port="80"
      protocol="HTTP/1.1"
      maxHttpHeaderSize="8192"
      maxThreads="1000"
      minSpareThreads="100"
      maxSpareThreads="1000"
      minProcessors="100"
      maxProcessors="1000"
      enableLookups="false"
      compression="on"
      compressionMinSize="2048"
      compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
      connectionTimeout="20000"
      URIEncoding="utf-8"
      acceptCount="1000"
      redirectPort="443"
      disableUploadTimeout="true"/>

    参数说明
      compression 打开压缩功能
      compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
      compressableMimeType 压缩类型
      connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
      maxThreads 客户请求最大线程数
      minSpareThreads Tomcat初始化时创建的 socket 线程数
      maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
      enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名,一般不开启,占内存
      redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
      acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
      connectionTimeout 连接超时
      minProcessors 服务器创建时的最小处理线程数
      maxProcessors 服务器同时最大处理线程数
      URIEncoding URL统一编码


    ftp用mget批量下载时,关闭交互式
    ftp>prompt //关闭交互式,避免每次都需手动输入Y确认
    ftp>mget mysql-bin.* //mget批量下载


    查看系统i节点使用率
    df -i /


    创建用户并指定用户家
    解决方法如下:
    useradd -s /sbin/nologin -d /data/user/danny danny

    awk -v 解析

    shell中的变量在awk程序中无法使用,因为在执行AWK时,是一个新的进程去处理的,因此就需要-v 来向awk程序中传参数了,你比如在shell程序中有一个变量a=15,你在awk程序中直接使用变量a是不行的,而你用awk -v b=a, 这样在AWK程序中就可以使用变量b了!也就相当于使用a了!


    查看服务的配置文件位置
    [root@A audit]# rpm -qc php
    /etc/httpd/conf.d/php.conf


    查看分区表的详细信息(如UUID)
    dumpe2fs -h /dev/sdb1

    查看所有分区表的UUID
    blkid

    简单查看磁盘信息
    lsblk

    CentOS7.2默认安装mariadb-server,解决Failed to start mysqld.service: Unit not found
    当输入命令

    ~]# systemctl start mysql.service

    要启动MySQL数据库是却是这样的提示

    Failed to start mysqld.service: Unit not found

    原因:
    CentOS 7的yum源中貌似没有正常安装mysql时的mysql-sever文件,需要去官网上下载

    解决方法如下:

    方法一:

      首先需要安装mariadb-server

      ~]# yum install -y mariadb-server

      启动服务

      ~]# systemctl start mariadb.service

      添加到开机启动

      ~]# systemctl enable mariadb.service

    进行一些安全设置,以及修改数据库管理员密码

      ~]# mysql_sceure_installation

    至此完成!

    可以测试一下

      ~]# mysql -u root -p


    方法二:(常用+实用)
    wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm

    service mysqld start


    查看cup信息

    lscpu、uptime、top、htop vmstat mpstat

    centos7查看开机启动项
    systemctl list-unit-files

    设置开机启动
    systemctl enable iptables.service

    (注意:centos7中开机启动项有两个,一个是通过systemctl设置,一个是通过chkconfig设置,对于一个需要设置开机启动的服务项,可以先通过systemctl设置,通过提示再考虑是否需要设置chkconfig)

    varnish通过curl -I http://xxx 查看网页是否被缓存
    sub vcl_deliver {
    if (obj.hits >0 ){
    set resp.http.X-Cache= "HIT from " + client.ip; #如果命中,则显示HIT from +客户端ip地址
    } else {
    set resp.http.X-Cache= "MISS"; #否则显示"MISS"
    }
    }

  • 相关阅读:
    SVG Stroke属性
    C# 线程同步之排它锁/Monitor监视器类
    在Mac OS X Yosemite 10.10.3 中搭建第一个 ASP.NET 5 Web 项目
    jquery 之 Deferred 使用与实现
    jQuery 之 Callback 实现
    在解决方案中所使用 NuGet 管理软件包依赖
    下载和使用 Open XML PowerTools
    下载和编译 Open XML SDK
    Open XML SDK 在线编程黑客松
    VS2013 解决方案文件结构分析
  • 原文地址:https://www.cnblogs.com/dannylinux/p/8603778.html
Copyright © 2011-2022 走看看