日常记录

Posted 叮伱格斐呃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常记录相关的知识,希望对你有一定的参考价值。

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文件创建、删改以来的每一次登录。
[[email protected] ~]# 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 ‘\0‘ ‘\n‘

 


查看系统内存使用率
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了!

 


查看服务的配置文件位置
[[email protected] 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"
}
}

 

以上是关于日常记录的主要内容,如果未能解决你的问题,请参考以下文章

日常训练记录

日常记录Verilog

日常bug及解决方法记录

日常技巧记录-2018.08

vue日常报错记录

python小白日常问题解决记录