利用fail2ban来阻断一些恶意扫描和暴力破解---保护你的VPS

UPdate:使用效果很明显,就这么几天扫描快9W次,ban了八百多IP

shotpic_2018-07-01_21-13-12.png

简单介绍一下:

如果把vps的iptables比作是一把枪,那么fail2ban就是除了你之外的另一个忠心的手下,他可以拿着枪来枪毙或管理那些非法的探视,将他们拒之门外,将一些危险扼杀在萌芽阶段。但是,他也仅仅是个手下,不是超人,可况超人也不是万能的!所以也不要以为有了它就可以高枕无忧了,这就好比一个人在厉害,也不可能打过一群人。fail2ban可以防御一定范围的CC、暴力破解登录或者是恶意扫描等等。

安装:

推荐使用这个一键脚本(lnmp.org作者写的):

wget https://raw.githubusercontent.com/licess/lnmp/master/tools/fail2ban.sh && ./fail2ban.sh

第二种方法就是自己手动去fail2ban的GitHub下载解压安装,地址:

https://github.com/fail2ban/fail2ban

最后一种就是直接通过包安装,但是可能不是最新的:

Debian/Ubuntu:apt install fail2ban

centos:yum install fail2ban

安装完来配置使其监控我们的nginx、apache或其他服务的日志,从日志中提取我们需要屏蔽的一些恶意请求,比如大量的404---通过扫描器扫描产生,ssh暴力破解,v2ray的暴力尝试爆破ID等等。

如果是通过第一种,使用一键脚本安装的话,我们只需要修改 /etc/fail2ban/jail.local 这个文件然后在 /etc/fail2ban/filter.d/中添加自己的规则文件即可。

比如我的在/etc/fail2ban/jail.local 中追加如下内容,下面使用cat命令直接追加:

cat >>/etc/fail2ban/jail.local<<EOF

[sshd]
enabled = true
port = ssh
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
#mail-whois[name=SSH, [email protected]]
logpath = /var/log/auth.log
maxretry = 5
bantime = 604800

[deny-badcrawl]
enabled = true
port = http,https
filter = deny-badcrawl
action = iptables[name=Http, port=80, protocol=tcp]
action = iptables[name=Https, port=443, protocol=tcp]
logpath = /home/wwwlogs/*.log
maxretry = 4
findtime = 3600
bantime = 3600

[nginx-limit-req]
enabled = true
port = http,https
logpath = /usr/local/nginx/conf/nginx.conf
action = iptables[name=Http, port=80, protocol=tcp]
action = iptables[name=Https, port=443, protocol=tcp]
maxretry = 4
findtime = 600
bantime = 600

EOF

请注意SSH的port,如果你自己修改过端口号,那么请把port替换成你自己修改的端口号。nginx-limit-req需要你在你的nginx配置文件中配置了才能生效的。

因为nginx-limit-req新版本的fail2ban已经有了,具体的可以在 /etc/fail2ban/filter.d 目录下面查看。

好了,然后我们在 /etc/fail2ban/filter.d 目录下新建一个deny-badcrawl.conf:

touch deny-badcrawl.conf

然后将如下内容写进去(我依旧是使用的cat命令,你可以根据自己喜好,比如nano,vi等):

cat >>/etc/fail2ban/filter.d/deny-badcrawl.conf<<EOF

[Definition]
failregex = <HOST> -.*- .*HTTP/*.* 404 .*$
ignoreregex =

EOF

然后重启fail2ban即可:service fail2ban restart

然后查看状态:fail2ban-client status

查看某个规则的具体状态:fail2ban-client status deny-badcrawl

像我这里使用了几个小时后就封了好几个IP:

shotpic_2018-06-23_13-27-42.png

注意:一般修改配置文件后,我们只需要重新载入即可,不需要重启fail2ban:

fail2ban-client reload nginx-limit-req 如果不生效,就强制重新加载service fail2ban force-reload nginx-limit-req

OK

具体的fail2ban用法和详细参数设置这些,早有前辈写过很多,不过最好是去官网看英文原版。


Mrxn 发布于 2018-6-23 05:33

利用 iptables 折腾安全的服务器环境

0x00 概述

iptables 是 Linux 内核集成一套包过滤系统,并且可以实现状态防火墙,建立精细的包过滤列表,功能十分强大,所以选择折腾 iptables 来实现防火墙。

iptables 一共有 4 个表:filter,nat,mangle,raw,5 个链:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING

功能

  • filter:实现防火墙一般的数据包过滤功能。(默认表)
    • Chain: INPUT,OUTPUT,FORWARD
  • nat:网络地址转换。
    • Chain: PREROUTING,POSTROUTING
  • mangle:修改数据包。
    • Chain: INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING
  • raw:不让 iptables 做数据包链接跟踪,提高性能。
    • Chain: PREROUTING,OUTPUT

0x01 简单应用

iptables 有基础的命令还有可选的模块,在 Terminal 中直接可以使用man iptables查看 iptables 的 man page (Online)。

清除现有 iptables 规则:iptables -F or iptables --flush(清除 Chain 中的所有规则,可以加上 -t or --table 指定某个表,不指定则清除所有)。iptables -X or iptables --delete-chain(删除所有用户自定义的 Chain ,即通过 -n or --new-chain 增加的 Chain )。iptables -Z or iptables --zero(清空封包计数器)。

设定默认策略:不符合任何一条规则的时候,按照设定好的默认策略处理,最安全的就是全部 DROP ,再单独添加例外,添加 DROP 的默认策略必须在 Console 下,不然 Terminal 会掉。

iptables -p INPUT DROP iptables -p OUTPUT DROP iptables -p FORWARD DROP 

-p or --policy是为 Chain 添加默认策略。iptables 默认都是 ACCPET 的,如果需要删除此限制,改回 ACCPET 即可。

设置了 DROP 的默认策略之后,必须添加允许回环!

iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT 

-i or --in-interface 是定义入网 NIC 的,表示数据包从何进入,可以使用加号+作为通配符,比如 eth+ 表示所有的 eth,也可以用感叹号 ! 进行排除匹配。

部分版本的 Linux 需要重启 iptables 服务才能生效(server iptables restart or/etc/init.d/iptables restart),我使用的是 Debian,现在 Debian 已经是实时生效 iptables 的了,不需要重启服务。也可以使用iptables-save > /home/iptables.rule导出 iptables 规则,到时候再使用 iptables-restore 恢复。

开启允许通过的端口:如果刚刚上面设置了默认 DROP 策略,现在就要来设置例外规则了,不然任何流量出入都会被丢弃了。现在来开个 SSH(22)端口。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --sport 22 -j ACCEPT 

-A or --append 新增一条规则,默认是最后一条规则,如果需要插入优先级别更高的可以使用 -I or --insert-p or --protocol 是指定协议,常见协议有:tcp,udp,icmp,igmp等,可以使用 all 匹配所有协议,在协议名称前加感叹号 !表示排除此协议,如 !tcp 表示除了 tcp 协议以外的协议。--dport or --destination-port 是目的端口,限制要访问的目的端口,可以用 : 号表示范围,比如 1:100 表示 1 - 100 端口。--sport or --source-port 是来源端口,使用方法和目的端口一致。-j or--jump 代表了处理动作,常见处理动作有:ACCEPT,REJECT,DROP,REDIRECT,MASQUERADE,LOG,DNAT,SNAT,MIRROR,QUEUE,RETURN,MARK等,ACCPET 代表放行,REJECT 代表拒绝,DROP 代表丢弃,其他更多的说明请参考 man page。

如果要限制允许访问的 IP 来源地址,可以用 -s or --src or --source 来限制。

iptables -A INPUT -s 8.8.8.8 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m iprange --src-range 8.8.8.1-8.8.8.10 -p tcp --dport 22 -j ACCEPT 

来源地址可以是单个 IP 地址,也可以是地址段 8.8.8.0/24 这种格式,如果要限定范围就需要用 -m iprange --src-range 加范围限制,地址也可以使用感叹号 ! 进行排除匹配。

要开放常用端口,也可以使用 -m multiport --dport 参数。

iptables -A INPUT -m multiport --dport 21,22,80,3306,8000:8999 -p tcp -j ACCPET 

禁止 ping:ping 是基于 ICMP 协议的,所以禁掉 ICMP 包就 OK 了。

iptables -A INPUT -p icmp -j DROP iptables -A OUTPUT -p icmp -j DROP 

但是,用这种方式禁用掉 ICMP 协议,服务器就不可以发起 ping 请求,我们可以利用状态防火墙的特性,根据状态来过滤。先删除旧的策略。

iptables -D INPUT -p icmp -j DROP iptables -D OUTPUT -p icmp -j DROP 

-D or --delete 是用于删除规则,输入完整的策略即可删除。

iptables -A INPUT -p icmp --icmp-type Echo-Request -j DROP iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT 

--icmp-type是用于定位 ICMP 数据包的类型,可以使用 iptables -p icmp --help 查看详细定义或者在 man page 中查看。这里选择 DROP 掉请求,但是允许返回报文通过。

丢弃状态为 INVALID 的 HTTP 数据包:状态为 INVALID 的都是无效的包,直接 DROP。

iptables -A INPUT -m state --state INVALID -j DROP iptables -A OUTPUT -m state --state INVALID -j DROP iptables -A FORWARD -m state --state INVALID -j DROP 

-m state --state 是用来识别连接状态的,常见的有 4 种状态,NEW,INVALID,ESTABLISHED,RELATED

丢弃外网的私网源地址请求:服务器是公网的,没有内网互联机器,源地址是私网地址的基本都是 IP 欺骗,直接 DROP。

iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP 

0x02 高级应用

防止 DDOS 和 CC 攻击:可以通过 iptables 记录访问过频,然后禁止掉过频密的请求。

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'CC_ATTACK:' --log-ip-options iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --rcheck --seconds 60 --hitcount 10 -j DROP iptables -A INPUT -p tcp --dport 80 --syn -m recent --name web_viewer --set -j ACCEPT 

每 60 秒只允许建立 10 个新连接,超出则丢弃。

防止 SSH 爆破:公网服务器总会被人爬到然后爆破 SSH 密码,直接用 iptables 中的 recent 模块将爆破的禁掉。

iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --rcheck --seconds 300 --hitcount 3 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCEPT 

这里的流程就是,第一次发出 SSH 连接的时候,会先检查 SSH_Brute 列表中有无记录,并且是否满足 3 次,如果满足则丢弃,生存期是 5 分钟(300 秒),如果是第一次连接,自然不会符合第一条规则,所以就跳到第二条,将当前用户的 IP 添加到 SSH_Brute 表中,并允许此次通过。这样就可以限制了,5 分钟内,只能尝试 3 次,超出这个次数就会被 DROP。

但这样还是存在一个问题,就是每隔5分钟之后还是可以爆破,但我们又不能将时间设置得太长,不然我们自己管理都被 DROP 了请求,所以这里可以用 update 标签来代替 rcheck 标签。两者作用其实大致相同,只是处理流程不一样, rcheck 是从接受到数据包就开始计算时间,但是 update是从最近的 DROP 数据包开始计算时间的,等于在一定时间内允许你发起 X 次连接,但一旦超出了,就开始 DROP 你的请求一定的时间。这样的过滤更加严格。

iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --update --seconds 3600 --hitcount 3 -j DROP iptables -A INPUT -p tcp --dport 22 -m recent --name SSH_Brute --set -j ACCPET 

与上面其实就是换成了 update ,作用是一旦发起了超过 3 次连接就禁止一个小时。

未完待续

原文地址:https://bobylive.com/static/1937069


Mrxn 发布于 2016-4-2 02:04

linux执行shell脚本的方式及一些区别

假设shell脚本文件为hello.sh
放在/root目录下。下面介绍几种在终端执行shell脚本的方法:

[[email protected] home]# cd /root/

[[email protected] ~]#vim hello.sh

#!  /bin/bash

cd /tmp

echo "hello guys!"

echo "welcome to my Blog:linuxboy.org!"

 

1.切换到shell脚本所在的目录,执行:

[[email protected] ~]# ./hello.sh

-bash: ./ hello.sh权限不够

 

2.以绝对路径的方式执行:

[[email protected] ~]# /root/Desktop/hello.sh

-bash: /root/Desktop/ hello.sh: 权限不够

 

3.直接用bashsh执行:

[[email protected] ~]# bash hello.sh

hello guys!

welcome to my Blog:linuxboy.org!

[[email protected] ~]# pwd

/root

 

[[email protected] ~]# sh hello.sh

hello guys!

welcome to my Blog:linuxboy.org!

[[email protected] ~]# pwd

/root

注意:用以上三种方法执行shell脚本,现行的shell会开启一个子shell环境,去执行shell脚本,前两种必须要有执行权限才能够执行

 

也可以让shell脚本在现行的shell中执行:

4.现行的shell中执行

[[email protected] ~]# . hello.sh

hello guys!

welcome to my Blog:linuxboy.org!

[[email protected] tmp]# pwd

/tmp

 

 

[[email protected] ~]# source hello.sh

hello guys!

welcome to my Blog:linuxboy.org!

[[email protected] tmp]# pwd

/tmp

 

对于第4种不会创建子进程,而是在父进程中直接执行

上面的差异是因为子进程不能改变父进程的执行环境,所以CD(内建命令,只有内建命令才可以改变shell 的执行环境)没有成功,但是第4种没有子进程,所以CD成功

本文出处:http://4554480.blog.51cto.com/4544480/837006


Mrxn 发布于 2016-3-28 00:27

CentOS设置程序开机自启动的方法

在CentOS系统下,主要有两种方法设置自己安装的程序开机启动。

1、把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd。

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/apache/bin/apachectl start

2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。

例如:我们把httpd的脚本写好后放进/etc/rc.d/init.d/目录,使用

chkconfig --add httpd
chkconfig httpd on

命令即设置好了开机启动。



Mrxn 发布于 2016-3-25 11:16

Centos 查看系统启动时间和运行时间小计

1.uptime命令

uptime

输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00

如下图所示:

01.jpg

2.查看/proc/uptime文件计算系统启动时间

cat /proc/uptime

输出: 5113396.94 575949.85 第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间

02.jpg

代码:

date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"

输出: 2008-11-09 11:50:31


3.查看/proc/uptime文件计算系统运行时间

代码:

cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'

输出:系统已运行:59天4时13分9秒

03.jpg

由于需要测试刚学的shell编程咋样需要用到,就copy过来备份了,原文地址:http://www.centoscn.com/CentOS/help/2013/0731/834.html


Mrxn 发布于 2015-12-13 07:19

Apache下设置自动将http跳转到https方法

今天有朋友问我怎么配置虚拟机,使其支持访问者打开首页时自动跳转到https,而非http,因为是虚拟机,重复-虚拟机,所以呢,配置服务器的那些方法不好使,搜索得到如下方法,利用修改 伪静态规则 文件- .htaccess ,使虚拟机也可以支持直接打开网站跳转到https,具体方法如下,在htaccess文件末尾添加如下代码即可实现:


RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]


000106-2015-12-02.jpg

一行一条命令,其实就是利用伪静态将访问者跳转到443端口,从而实现了http到https的跳转。

注:此为虚拟机的方法,推荐使用服务器自己配置https,虚拟机的这样配置后,有可能导致蜘蛛不能抓取你的网站,对SEO不好,慎重选择!

操作前记得备份相关文件,以及数据!

服务器配置https方面可以参考如下文章:


emlog 使用ssl证书开启HTTPS安全访问三步曲

nginx配置ssl加密(单双向认证、部分https)

NginxRewrite规则判断普通用户与搜索引擎爬虫(UA)实现https跳

SSL证书与Https应用部署小结



Mrxn 发布于 2015-12-2 10:53

Mrxn's Blog遭遇DDoS攻击-目前已恢复-感谢DDoS&CC的朋友

今晚吃完饭不久,邮箱就收到服务器发来的邮件,报告大量可疑请求,当时没有回家,没有电脑,等我赶回家的时候,服务器就已经自动关闭了。。。

      20151108230635.png

回家后,第一件事就是关闭服务器所有非必要端口和服务,下载日志到本地分析,找可疑的攻击源,从日志中分析得到大概如下内容:

conntrack table (truncated)的记录中记录大量的443端口请求和80端口请求,导致443端口和80端口被占用,一般没有使用https加密的网站不会使用443端口(估计是因为使用https访问,一般的扫描软件不能扫描到啥有用的信息),使正常访问者不能访问,其实我就是想说就是大量DDoS+CC攻击,一看就是小学生之手!真是无聊。不过的感谢这些小学生啊,让我又重新配置了服务器,提升服务器的安全性。现在CC和少量ddos基本上没作用了的哈!欢迎压力测试!当然,大流量攻击连用了上百台高档服务器做了负载均衡的新浪都扛不住,何况我这个个小小的普通服务器呢!高手就请放过小站,感激不尽!

最后呢,希望做独立站的站长朋友们,一定要做好安全措施,修改常用端口,屏蔽不用的端口,文件夹权限设置严密,别给小学生骚扰的机会,烦死了!至于分析日志这些东西,自己百度吧,多得是,也不是一两句话就可以说清楚的。欢迎各位站长一起交流服务器攻防,运维!


Mrxn 发布于 2015-11-8 14:05

Linux VPS/服务器上用Crontab定时执行脚本/命令来实现VPS自动化

VPS或者服务器上经常会需要VPS或者服务器上经常会需要定时备份数据、定时执行重启某个服务或定时执行某个程序等等,一般在Linux使用Crontab,Windows下面是用计划任务(Win的都是图形界面设置比较简单),下面主要介绍Linux VPS/服务器上Crontab的安装及使用。

Crontab是一个Unix/Linux系统下的常用的定时执行工具,可以在无需人工干预的情况下运行指定作业。

一、Crontab的安装

1、CentOS下面安装Crontab

yum install vixie-cron crontabs      //安装Crontab
chkconfig crond on                //设为开机自启动
service crond start                 //启动

说明:vixie-cron软件包是cron的主程序;crontabs软件包是用来安装、卸装、 或列举用来驱动 cron 守护进程的表格的程序。

2、Debian下面安装Crontab

apt-get install cron             //大部分情况下Debian都已安装。
/etc/init.d/cron restart    //重启Crontab
二、Crontab使用方法

1、查看crontab定时执行任务列表
crontab -l

2、添加crontab定时执行任务

crontab -e

crontab-e-nano.jpg

输入crontab任务命令时可能会因为crontab默认编辑器的不同。

如上图所示为nano编辑器,使用比较简单,直接在文件末尾按crontab命令格式输入即可,Ctrl+x退出,再输y 回车保存。

另外一种是vi编辑器,首先按i键,在文件末尾按crontab命令格式输入,再按ESC键,再输入:wq 回车即可。

3、crontab 任务命令书写格式

格式: minute hour dayofmonth month dayofweek command
解释: 分钟 小时 日期 月付 命令
范围: 0-59 0~23 1~31 1~12 0~7,0和7都代表周日

在crontab中我们会经常用到* ,   -  /n 这4个符号,好吧还是再画个表格,更清楚些:

000093-2015-11-08.jpg


下面举一些例子来加深理解:

每天凌晨3:00执行备份程序:0 3 * * * /root/backup.sh

每周日8点30分执行日志清理程序:30 8 * * 7 /root/clear.sh

每周1周5 0点整执行test程序:0 0 * * 1,5 test

每年的5月12日14点执行wenchuan程序:0 14 12 5 * /root/wenchuan

每晚18点到23点每15分钟重启一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm

其他一些命令:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
service crond status //查看crontab服务状态
service crond start //手动启动crontab服务

4,设置定时任务:【语  法:crontab [-u <用户名称>][配置文件] 或crontab [-u <用户名称>][-elr]】

5,参  数:

-e  编辑该用户的计时器设置。

-l  列出该用户的计时器设置。

-r  删除该用户的计时器设置。

-u<用户名称>  指定要设定计时器的用户名称。

6,格式:分 时 日 月 周  命令

7,列举,比如我要每天的23点50重启nginx服务,那么,我就输入如下命令:

crontab -e

然后打开一个编辑窗口,按下 insert 按键或者是i,输入:

50 23 * * * /etc/init.d/nginx restart


1,crontab命令

功能说明:设置计时器。

语  法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]

补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:

Minute Hour Day Month DayOFWeek Command

参  数:

-e  编辑该用户的计时器设置。

-l  列出该用户的计时器设置。

-r  删除该用户的计时器设置。

-u<用户名称>  指定要设定计时器的用户名称。

2,crontab 格式

基本格式 :

* *  *  *  *  command

分 时 日 月 周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列 表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

# Use the hash sign to prefix a comment

# +—————- minute (0 – 59)

# | +————- hour (0 – 23)

# | | +———- day of month (1 – 31)

# | | | +——- month (1 – 12)

# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)

# | | | | |

# * * * * * command to be executed

crontab文件的一些例子:

30 21 * * * /etc/init.d/nginx restart

每晚的21:30重启 nginx。

45 4 1,10,22 * * /etc/init.d/nginx restart

每月1、 10、22日的4 : 45重启nginx。

10 1 * * 6,0 /etc/init.d/nginx restart

每周六、周日的1 : 10重启nginx。

0,30 18-23 * * * /etc/init.d/nginx restart

每天18 : 00至23 : 00之间每隔30分钟重启nginx。

0 23 * * 6 /etc/init.d/nginx restart

每星期六的11 : 00 pm重启nginx。

* */1 * * * /etc/init.d/nginx restart

每一小时重启nginx

* 23-7/1 * * * /etc/init.d/nginx restart

晚上11点到早上7点之间,每 隔一小时重启nginx

0 11 4 * mon-wed /etc/init.d/nginx restart

每月的4号与每周一到周三 的11点重启nginx

0 4 1 jan * /etc/init.d/nginx restart

一月一号的4点重启nginx

*/30 * * * * /usr/sbin/ntpdate 210.72.145.20

每半小时同步一下时间

如果需要根据centos vps内存大小来判断然后重启,看以参考这篇文章:

Linux脚本:根据CPU负载及内存使用率自动重启服务进程



Mrxn 发布于 2015-11-8 02:40

CentOS下安装netspeeder加速

1、作者项目主页,https://code.google.com/p/net-speeder/ 

已经迁移到github了:https://github.com/snooda/net-speeder (作者主页也有教程)

安装步骤如下:

安装脚本

获得安装包: wget http://linux.linzhihao.cn/shell/netspeeder.sh

运行安装包:sh netspeeder.sh

然后再看看进程,如果能找到net_speeder ,说明它正在运行,安装就成功了


使用方法(需要root权限启动):

参数:./net_speeder 网卡名 加速规则(bpf规则)

最简单用法: # ./net_speeder venet0 "ip" 加速所有ip协议数据

关闭net_speeder方法:killall net_speeder

2、net-speeder是一个由snooda.com博主写的Linux脚本程序,主要目的是为了解决丢包问题,实现TCP双倍发送,即同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。

3、net-speeder对于不加速就可以跑满带宽的类型来讲(多线程下载),开启后反而由于多出来的无效流量,导致速度减半,性能开销稍大和自由度有损失。所以,如果你的VPS连接国内速度一切正常,请不要启用net-speeder。

4、安装net-speeder的方法也很简单,这里提供由lazyzhu.com博主写的net-speeder一键安装包。执行以下命令:

 wget --no-check-certificate https://gist.github.com/LazyZhu/dc3f2f84c336a08fd6a5/raw/d8aa4bcf955409e28a262ccf52921a65fe49da99/net_speeder_lazyinstall.sh
sh net_speeder_lazyinstall.sh

       00.gif


5、日后如果一键安装脚本下载链接失效了,这里给出脚本的具体内容,大家可以将将它保存为.sh文件,然后就可以执行了。

#!/bin/sh

# Set Linux PATH Environment Variables
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Check If You Are Root
if [ $(id -u) != "0" ]; then
    clear
    echo -e "\033[31m Error: You must be root to run this script! \033[0m"
    exit 1
fi

if [ $(arch) == x86_64 ]; then
    OSB=x86_64
elif [ $(arch) == i686 ]; then
    OSB=i386
else
    echo "\033[31m Error: Unable to Determine OS Bit. \033[0m"
    exit 1
fi
if egrep -q "5.*" /etc/issue; then
    OST=5
    wget http://dl.fedoraproject.org/pub/epel/5/${OSB}/epel-release-5-4.noarch.rpm
elif egrep -q "6.*" /etc/issue; then
    OST=6
    wget http://dl.fedoraproject.org/pub/epel/6/${OSB}/epel-release-6-8.noarch.rpm
else
    echo "\033[31m Error: Unable to Determine OS Version. \033[0m"
    exit 1
fi

rpm -Uvh epel-release*rpm
yum install -y libnet libnet-devel libpcap libpcap-devel gcc

wget http://net-speeder.googlecode.com/files/net_speeder-v0.1.tar.gz -O -|tar xz
cd net_speeder
if [ -f /proc/user_beancounters ] || [ -d /proc/bc ]; then
    sh build.sh -DCOOKED
    INTERFACE=venet0
else
    sh build.sh
    INTERFACE=eth0
fi

NS_PATH=/usr/local/net_speeder
mkdir -p $NS_PATH
cp -Rf net_speeder $NS_PATH

echo -e "\033[36m net_speeder installed. \033[0m"
echo -e "\033[36m Usage: nohup ${NS_PATH}/net_speeder $INTERFACE \"ip\" >/dev/null 2>&1 & \033[0m"



5、安装完成后,会给出脚本用法,最简单的就是开启所有IP协议加速。执行以下命令:

nohup /usr/local/net_speeder/net_speeder venet0 "ip" >/dev/null 2>&1 &

6、net-speeder对于VPS速度有没有优化?就我自己的测试来看,速度和ping值都有所提升,但是流量也是双倍呀!所以对于流量吃紧的童鞋们来说,就别尝试了。。。当然,流量多的就无视。


Mrxn 发布于 2015-10-18 14:47

个人资料

    blogger

    Mrxn

    一个关注网络安全,热爱黑客技术的好青年!

搜索

最新评论