linux centos防止暴力破解,封掉多次失败的IP地址

2017-5-13 寒川 计算机

一次偶然机会看到服务器的日志secure文件(路径:/var/log/secure)非常大,有上百MB了,打开发现有大量的用户尝试使用ssh登录服务器,看来是有人想暴力破解了,幸好服务器密码还足够强健,不然估计被沦陷了。如何事防止服务器暴力破解呢?网站找到了现成的方法,记录下来,或许以后还会用到。

思路是查找/var/log/secure中验证失败且出现的次数较多的ip,对其进行封IP处理。具体方法如下:

vi /usr/local/bin/secure.sh
#输入以下脚本
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
for i in `cat  /usr/local/bin/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ ${#NUM} -gt 1 ]; then
    grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done
然后将secure_ssh.sh加入到cron计划任务中即可。


vi /var/spool/cron/root
#增加以下命令,一分钟执行一次
*/1 * * * *  sh /usr/local/bin/secure.sh


标签: 脚本 计算机 linux CentOS ssh 暴力破解

评论(3) 浏览(5068)

调整PHP和MySQL的时区,实现同步显示中国时间

2010-10-27 寒川 网页编程

现在很多朋友购买国外主机,可是国外主机显示的是当地时间,如何设置成国内时间呢?

所谓的时间问题归根结底也就是“时区”问题,我们首先要知道的是:

1、美国时间和中国时间相差应该是8小时。
2、PHP的时间和MySQL的时间不是相同的。

所以,我们所要做的事情就是:

1、把美国时间改成中国时间。
2、并且要把PHP的时间和MySQL的时间统一。


一、修改PHP时间

听上去有点小复杂,其实很简单。首先我们来改PHP的时间,将这句代码插入到PHP程序中,公共调用页的顶部(也就是要include_once,require_once到的脚本里,当然你不用_once我也没有意见),确保需要用到时间的页面都必须调用到:复制内容到剪贴板代码:

date_default_timezone_set('PRC') or die('时区设置失败,请联系管理员!');现在测试下:复制内容到剪贴板代码:

echo date('Y-m-d H:i:s');怎么样?哇哈哈,正确显示中国时间了,当然你要说北京时间我也没意见。至于那个参数PRC是什么意思,我记得是某个神奇的土地之缩写,不用管它,照搬就行了,错不了的。成功了?NO,不要得意得太早,在MySQL里输入语句SELECT NOW();你会惊愕的发现,MySQL的时间还是美国时间。不急,我们继续下一步。



二、修改MySQL时间

如果你在写程序的时候,习惯了用类或者函数,那么恭喜你,这一步你同样只需要一次复制粘贴操作就能将它解决。如果你在写程序的从来不用类或者函数,那么我会祈祷耶稣和释迦牟尼一同保佑你,不会在改程序的时候累得很惨,同时希望你改掉这个不好的编程习惯。那么,就请在PHP程序有数据库连接的下一语句(只有1次,就加1句;若有无数次,就加无数次……这个编程习惯,还是重要啊)加入如下代码:复制内容到剪贴板代码:

mysql_query("SET time_zone = '+8:00'") or die('时区设置失败,请联系管理员!');再去SELECT NOW();下,你会惊喜地发现,MySQL也是中国时间了。为什么是+8:00呢?前面我说过了,中国时间和美国时间差8小时,往那个那个貌似向东还是向西的方向来着?(不好意思我是路盲,我在怪地球是圆的)。OK,现在MySQL的时间也搞定了,我相信现在就会有比较严谨朋友问了:那你如何证明PHP的时间和MySQL的时间是同步呢?啊……这个人与人之间的信任,还是重要的,就像汇款,哈哈,那我们来做个测试吧:复制内容到剪贴板代码:

//这里是页面的开头,用于改PHP时间的代码。
date_default_timezone_set('PRC') or die('时区设置失败,请联系管理员!');

//-------------------------------------------------------------
//
// 这里写数据库连接的代码,别懒,自己写。
//
//-------------------------------------------------------------

//数据库一旦连接,紧跟着就是改MySQL时间的代码。
mysql_query("SET time_zone = '+8:00'") or die('时区设置失败,请联系管理员!');

//显示PHP的时间
echo date('Y-m-d H:i:s');

echo


//显示MySQL的时间
$mysql_time = mysql_query("SELECT NOW()");
$mysql_rows = mysql_fetch_row($mysql_time);

echo $mysql_rows[0];

来自百度

标签: php 脚本 编程 mysql

评论(14) 浏览(16441)

php过滤html标签

2010-7-23 寒川 网页编程

要过过滤html标签,php是很容易办到的,strip_tags()函数就能解决,但是有时候还是不够,网上百度来了一个更爽的,贴出来。。。。
<?php

function kill_html($str){   //清除HTML标签
$st=-1; //开始
$et=-1; //结束
$stmp=array();
$stmp[]="&nbsp;";
$len=strlen($str);
for($i=0;$i<$len;$i++){
   $ss=substr($str,$i,1);
   if(ord($ss)==60){ //ord("<")==60
    $st=$i;
   }
   if(ord($ss)==62){ //ord(">")==62
    $et=$i;
    if($st!=-1){
     $stmp[]=substr($str,$st,$et-$st+1);
    }
   }
}
$str=str_replace($stmp,"",$str);
return $str;
}

?>

标签: 脚本 编程 php过滤 html标签

评论(0) 浏览(13433)

PHP禁止某个IP或IP段访问

2010-5-7 寒川 网页编程

在PHP编程的时候,很有可能会遇到禁止某个IP或IP段访问的情况,下面的百度上下来的,适当修改过,适用于PHP版本5.0及以上,之前老版本的PHP未予测试,感觉挺好用的,要是单独写入某个文件,include到相应文件中就可以实现禁止指定IP地址访问,废话不多说,客官请看:
<?   
//禁止某个IP
$banned_ip = array (
"127.0.0.1",
//"119.6.20.66",
"192.168.1.4"
);
if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) )
{
die ("您的IP禁止访问!");
}
//禁止某个IP段
$ban_range_low=ip2long("119.6.20.65");
$ban_range_up=ip2long("119.6.20.67");
$ip=ip2long($_SERVER["REMOTE_ADDR"]);
if ($ip>$ban_range_low && $ip<$ban_range_up)
{
echo "您的IP在被禁止的IP段之中,禁止访问!";
exit();
}
?>
当然,这只是简单的、最基本的,要实现更复杂的功能。

标签: php 脚本 编程

评论(1) 浏览(9550)

xhtml页面中用什么来替换marquee标签

2010-3-29 寒川 网页编程

众所周知,w3c从来就没承认marquee标签,当然,w3c不承认并不是说marquee标签不能使用。虽然marquee是微软的产物,但是众多浏览器都支持它,而且很多html新手也对marquee喜欢有佳。将marquee放到页面中也无可厚非,但是当页面提交给w3c验证的时候很明显是不受欢迎的,看着心里总有个疙瘩。如何能在xhtml标准页面中出现移动字体呢?
方法如下:
1、建一个js文件,命名为marquee.js,代码如下:
function getElementsByClass(searchClass,tagName) {
 var classElements = new Array();
 if ( tagName == null )
  tagName = '*';
 var els = document.getElementsByTagName(tagName);
 var elsLen = els.length;
 var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)");
 for (i = 0, j = 0; i < elsLen; i++) {
  if ( pattern.test(els[i].className) ) {
   classElements[j] = els[i];
   j++;
  }
 }
 return classElements;
}
 
function ccMarquee(className){
 var a=getElementsByClass(className);
 for (i = 0; i < a.length; i++) {
  a[i].innerHTML="<marquee direction='up' width='264' height='120' scrollamount='2' onmouseover='javascript:this.stop();' onmouseout='javascript:this.start();'>"+ a[i].innerHTML+"</marquee>";
 }
}window.onload = function () {
 ccMarquee("ccMarquee");
}
2、在欲使用marquee的页面head中调用js,如下:
<script type="text/javascript" src="marquee.js"></script>
3、在要marquee的页面的div中加入class="ccMarquee",如下:
<div class="ccMarquee">
这儿向上移动的文字。
 </div>
现在页面再给w3c验证,看看是不是通过了呢?呵呵。。

标签: html 脚本 编程 w3c

评论(3) 浏览(10389)

php检查数组中是否含有指定字符

2010-3-28 寒川 网页编程

in_array()函数用法是从w3school上学来的,感觉还不错,php真的很强大。
我的例子如下,用于过滤IP:
<?php
$ips = array("127.0.0.1", "192.168.1.1");//此数组也可从数据库或其他地方获得。
if (in_array($_SERVER["REMOTE_ADDR"], $ips, true))
{
     echo '来自IP为"'.$_SERVER["REMOTE_ADDR"].'"的朋友,您是被禁言者。';
}
else {
echo '来自IP为"'.$_SERVER["REMOTE_ADDR"].'"的朋友,您是自由发言者。';
}
?>

标签: php 脚本 编程

评论(0) 浏览(7849)

php SQL BETWEEN AND 查询日期范围。

2010-3-13 寒川 网页编程

SQL BETWEEN AND 查询日期范围的讨论。

查询“今天”的所有记录:
$today=strtotime(date('y-m-d',$time()));
$tomorrow=mktime(0,0,date("s",$today)-1,date("m",$today),date("d",$today)+1,date("Y",$today));//注意此句date("s",$today)-1,这样查询出来的结果才能更加准确。
SQL语句如下:
SELECT * FROM 表名 where 字段 BETWEEN $today AND $tomorrow"

标签: php 脚本 编程 asp sql

评论(0) 浏览(9995)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap