Submitted by admin on 2013, March 27, 9:42 AM
denyhosts.cfg配置文件说明:(从网上找的,参考下)
denyhost的安装方法有好几种,在启动时候出现提示错误,启动失败问题汇总如下,大家可以参考处理。
今天查看了一下系统的失败登陆记录 ,几分钟都没有显示完毕,不是吧,世界上总是有那么多的闲得蛋疼的人呢?你怎么不去死呢?
使用
grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure.1 | sort | uniq -c
统计里一下,哎,居然尝试N次!看来世界需要清静了!使用手工解决已经无法适应别人的暴力扫描了,我们也人工智能一下哈哈,使用denyhosts软件保护你的ssh吧
开始安装 CentOS 5.5, DenyHosts 2.5
cd /usr/local/src
wget ttp://mesh.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.5.tar.gz
tar -zxvf DenyHosts-2.5.tar.gz
cd DenyHosts-2.5
python setup.py install
默认安装到/usr/share/denyhosts/目录
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
vi denyhosts.cfg
根据自己需要进行相应的配置
配置文件说明
SECURE_LOG = /var/log/secure
#ssh 日志文件,它是根据这个文件来判断的。
HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件
PURGE_DENY = 5m
#过多久后清除已经禁止的
BLOCK_SERVICE = sshd
#禁止的服务名
DENY_THRESHOLD_INVALID = 1
#允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10
#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5
#允许root登陆失败的次数
HOSTNAME_LOOKUP=NO
#是否做域名反解
ADMIN_EMAIL = www.yes81.net
件地址,它会给管理员发邮件
DAEMON_LOG = /var/log/denyhosts
#自己的日志文件
cp daemon-control-dist daemon-control
vi daemon-control
参考:
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts" //启动的pid文件
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg" //配置文件
启动
chmod 700 daemon-control
./daemon-control start
设置自动启动
设置自启动:
vi /etc/rc.local
加入
/usr/share/denyhosts/daemon-control start
我使用了
cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig denyhosts --add
那么可以使用chkconfig denyhosts on 来设置启动啦。
SECURE_LOG = /var/log/secure #sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名
稍有不同。
HOSTS_DENY = /etc/hosts.deny #控制用户登陆的文件,被禁止的IP会被写进里面
PURGE_DENY = 5m #过多久后清除已经禁止的
# 'm' = minutes
# 'h' = hours
# 'd' = days
# 'w' = weeks
# 'y' = years
BLOCK_SERVICE = sshd #禁止的服务名,同样也可以是ftp,smtp等等
DENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数
DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5 #允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /usr/share/denyhosts/data
HOSTNAME_LOOKUP=NO #是否做域名反解
LOCK_FILE = /var/lock/subsys/denyhosts
ADMIN_EMAIL = #管理员邮件地址
DAEMON_LOG = /var/log/denyhosts #DenyHosts的日志文件
DAEMON_PURGE = 1m #预设清除
启动时出现了错误,可以使用下面方式解决
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
Can't read: /private/var/log/system.log
[Errno 2] No such file or directory: '/private/var/log/system.log'
Error deleting DenyHosts lock file: /var/lock/subsys/denyhosts
[Errno 2] No such file or directory: '/var/lock/subsys/denyhosts'
使用:
mkdir -p /private/var/log/
mkdir -p /var/lock/subsys/
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
Can't read: /private/var/log/system.log
[Errno 2] No such file or directory: '/private/var/log/system.log'
Error deleting DenyHosts lock file: /var/lock/subsys/denyhosts
[Errno 2] No such file or directory: '/var/lock/subsys/denyhosts'
使用:
touch /private/var/log/system.log
touch /var/lock/subsys/denyhosts
./daemon-control start
出现:
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
DenyHosts could not obtain lock (pid: )
[Errno 17] File exists: '/var/lock/subsys/denyhosts'
使用:
rm -f /var/lock/subsys/denyhosts
./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py –daemon –config=/usr/share/denyhosts/denyhosts.cfg
OK!
启动完成啦。
你可以使用
service denyhosts status来查看运行状态
DenyHosts is running with pid = 25874 表示已经启动起来了。
接下来就可以使用
cat /etc/hosts.deny来查看记录了
#service denyhost start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
python: can't open file '/usr/bin/denyhosts.py': [Errno 2] No such file or directory
经过查找发现denyhosts.py在目录/usr/local/bin/目录下,于是修改daemon-control文件
#vi daemon-control
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/lock/subsys/denyhosts"
DENYHOSTS_CFG = "/usr/share/denyhosts/denyhosts.cfg"
将第一行修改为DENYHOSTS_BIN = "/usr/local/bin/denyhosts.py"
在运行还会提示错误:导入Python版本错误的提示。如:
Traceback (most recent call last):
File "/usr/local/bin/denyhosts.py", line 5, in
import DenyHosts.python_version
ImportError: No module named DenyHosts.python_version
到这里错误很明了了,经过查询发现版本不对会导致这个问题。
分析后发现原因在此:以前本机已经有一个python2.4的版本,使用rpm安装的,默认的路径是/usr/lib/python2.4,因为要升级python到2.5,也没有对卸载这个2.4的版本,使用编译安装的python2.5,安装路径并没有配置,这默认安装到/usr/local/lib/python2.5这个路径,而目前激活的python环境是2.5的,可能因为denyhosts安装时会根据环境查找安装,因此会在/usr/local/lib/python2.5/site-packages路径下安装Denyhosts这个文件夹。当运行denyhosts时,脚本会指定使用的是/usr/lib/python*这个路径的python里(暂时没找到脚本哪个地方指定),因此它无法定位python的版本,会出现这个错误。
最快速的解决方法是把/usr/local/lib/python2.5/site-packages路径下的Denyhosts文件夹整个拷贝到2.4的安装目录下即可。
进入/usr/local/lib/python2.5/site-packages/目录#cd /usr/local/lib/python2.5/site-packages/
#cp –rp Denyhosts /usr/lib/python2.4/ site-packages/
这样之后便可以启动Denyhosts了。
关于错误
Traceback (most recent call last):
File "/usr/local/python-2.4/bin/denyhosts.py", line 5, in ?
import DenyHosts.python_version
ImportError: No module named DenyHosts.python_version
需要修改下面的部分:
1、/usr/share/denyhosts/daemon-control
PYTHON_BIN = "/usr/bin/env python"
改为
PYTHON_BIN = "/usr/local/python-2.4/bin/python"
#!/usr/bin/env python
改为
#!/usr/local/python-2.4/bin/python
DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
改为
DENYHOSTS_BIN = "/usr/local/python-2.4/bin/denyhosts.py"
2.
cp -rp /usr/local/python-2.4/lib/python2.4/site-packages/DenyHosts/ /usr/local/python-2.4/lib/python2.4/
linux | 评论:0
| Trackbacks:0
| 阅读:889
Submitted by admin on 2013, March 21, 11:43 AM
1、使用SSH登陆服务器2、输入命令: ps ax ,会列出所有的进程,找出对应的进程,类似“21045 ? Ss 0:00 /usr/local/bin/memcached -d -m 100 -u root -l 192.168.1.11 -p 12000 -c 256 ?CP /tmp/memcached.pid”。记下开头的id,如前面的21045.3、输入命令关闭进程:kill 210454、重新启动进程
如果要清空memcache的items,常用的办法是什么?杀掉重启?如果有n台memcache需要重启怎么办?挨个做一遍?
很简单,假设memcached运行在本地的11211端口,那么跑一下命令行:
$ echo ”flush_all” | nc localhost 11211
注:flush并不会将items删除,只是将所有的items标记为expired。
第一、连接:telnet 127.0.0.1 11211
第二、按回车键
第三、flush_all 后回车
控制台显示OK,表示操作成功
说明:
1、清空所有键值
flush_all
注:flush并不会将items删除,只是将所有的items标记为expired,因此这时memcache依旧占用所有内存。
2、退出
quit
apache/web | 评论:0
| Trackbacks:0
| 阅读:885
Submitted by admin on 2013, March 21, 8:27 AM
Apache Banner的隐藏方法,
修改httpd.conf文件,设置以下选项:
ServerTokens ProductOnly
ServerSignature Off
关闭trace-method
TraceEnable off
另外apache可以在编译的时候,故意混淆banner信息,达到隐藏的目的
ServerSignature apache生成的一些页面底部,比如404页面,文件列表页面等等。
ServerTokens指向被用来设置Server的http头回响。设置为Prod可以让HTTP头回响显示成这样….
Server: Apache
apache禁止访问目录列表- -
编辑httpd.conf
把下面配置项改成
Options Indexes FollowSymlinks MultiViews
Options FollowSymlinks MultiViews
即拿掉Indexes,重新启动apache
隐藏http头信息中看到php的版本信息
在php.ini中设置 expose_php = Off
apache/web | 评论:0
| Trackbacks:0
| 阅读:992
Submitted by admin on 2013, March 20, 11:35 PM
如果只是用squid做代理,不想缓存所有网站文件的话,可以修改squid配置
将squid.conf里的cache_dir ufs /home/cache 1024 16 256 改成cache_dir ufs /home/cache 1024 16 256 read-only
保存 然后,检查一下,有没有语法错误:
#squid -k parse
#squid -k reconfigure
操作完毕
squid中文操作指南
read-only
read-only选项指示Squid继续从cache_dir读取文件,但不往里面写新目标。它在squid.conf文件里看起来如下:
cache_dir ufs /cache0 7000 16 256 read-only
假如你想把cache文件从一个磁盘迁移到另一个磁盘,那么可使用该选项。如果你简单的增加一个cache_dir,并且删除另一个,squid的命中率会显著下降。在旧目录是read-only时,你仍能从那里获取cache命中。在一段时间后,就可以从配置文件里删除read-only缓存目录。
squid/缓存 | 评论:0
| Trackbacks:0
| 阅读:917
Submitted by admin on 2013, March 20, 5:30 PM
innodb_buffer_pool_size
如 果用Innodb,那么这是一个重要变量。相对于MyISAM来说,Innodb对于buffer size更敏感。MySIAM可能对于大数据量使用默认的key_buffer_size也还好,但Innodb在大数据量时用默认值就感觉在爬了。 Innodb的缓冲池会缓存数据和索引,所以不需要给系统的缓存留空间,如果只用Innodb,可以把这个值设为内存的70%-80%。和 key_buffer相同,如果数据量比较小也不怎么增加,那么不要把这个值设太高也可以提高内存的使用率。
innodb_additional_pool_size
这个的效果不是很明显,至少是当操作系统能合理分配内存时。但你可能仍需要设成20M或更多一点以看Innodb会分配多少内存做其他用途。
innodb_log_file_size
对于写很多尤其是大数据量时非常重要。要注意,大的文件提供更高的性能,但数据库恢复时会用更多的时间。我一般用64M-512M,具体取决于服务器的空间。
innodb_log_buffer_size
默认值对于多数中等写操作和事务短的运用都是可以的。如 果经常做更新或者使用了很多blob数据,应该增大这个值。但太大了也是浪费内存,因为1秒钟总会 flush(这个词的中文怎么说呢?)一次,所以不需要设到超过1秒的需求。8M-16M一般应该够了。小的运用可以设更小一点。
innodb_flush_log_at_trx_commit (这个很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电 池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬 盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统 挂了时才可能丢数据。
mysql/db | 评论:0
| Trackbacks:0
| 阅读:810
Submitted by admin on 2013, March 20, 10:39 AM
今天重新配置了下php ,查看apache log却发现如下警告信息:
PHP Warning: Directive ‘safe_mode’ is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Warning: Directive ‘magic_quotes_gpc’ is deprecated in PHP 5.3 and greater in Unknown on line 0
去官方看了下,用红色的block特别注明了,php5.3已经不推荐使用这个东东了,在 PHP6 中已经将其废弃:
magic_quotes_gpc boolean
Warning
This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.
magic_quotes_gpc=on 的配置下,插入数据时,Magic quotes 会自动将数据转义。 可以从一定程度上,让初学者带离脚本的安全风险。例如在没有任何保护措施的代码下,开启了 Magic quotes 后会少很多的风险,例如注入问题。以前看一些安全方面的文章,入侵者总是喜欢选择magic_quotes_gpc=off的站下手,如果看到其 magic_quotes_gpc=on ,估计就不会弄这个站了。
那么官方为什么要废除这个东东呢?搜索了一下,看到一个写得相当详细和全面的帖子,下面将其中提到的几个原因帖出:
为什么不使用 Magic quotes:
可移植性
无论此功能是否开启,它都会影响脚本的可移植性,因为它影响我们后续过滤数据的操作。
性能问题
在获取所有的外部数据之前都会被转义,这无疑会增加运行时的花销(而且并不是所有的数据都需要转义)。
造成困惑
正如上述所言,并非所有的数据都需要被转义。有可能出现的一种情况,就是当你为了获取未被转义的数据,而“疯狂的”使用 stripslashes 函数。
如何禁用 magic_quotes_gpc 和safe_mode :
1,用 php.ini 配置文件全局禁用
1
2
magic_quotes_gpc = Off
safe_mode = Off
2,使用 .htaccess 文件禁用(对于虚拟主机)
1
2
php_flag magic_quotes_gpc Off
php_flag safe_mode Off
禁用了这两个东东后,安全问题就更加不能忽视了。在数据入库前一定要addslashes ,出库后要记得stripslashes 。
看了下phpwind和 discuz的源码 ,发现phpwind就是直接用的addslashes和stripslashes 。而dz则是自己定义了两个函数:
function daddslashes($string, $force = 0)
{
!defined('MAGIC_QUOTES_GPC') && define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());
if(!MAGIC_QUOTES_GPC || $force)
{
if(is_array($string))
{
foreach($string as $key => $val)
{
$string[$key] = daddslashes($val, $force);
}
} else
{
$string = addslashes($string);
}
}
return $string;
}
function dstripslashes($string)
{
if(is_array($string))
{
foreach($string as $key => $val)
{
$string[$key] = dstripslashes($val);
}
}
else
{
$string = stripslashes($string);
}
return $string;
}
dz的这两个函数的在原函数的基础上扩充了对数组数据的支持,用起来更方便。不过dz的这两个函数不够简洁,这里我给出两个简洁点的:
function addslashes_deep($string)
{
$string = is_array($string)?array_map('addslashes_deep', $string):addslashes($string);
return $string;
}
function stripslashes_deep($string)
{
$string = is_array($string)?array_map('stripslashes_deep', $string):stripslashes($string);
return $string;
}
在数据入库前和出库后都要记得:
//入库前
if(!get_magic_quotes_gpc())
{
$_GET=addslashes_deep($_GET);
$_POST=addslashes_deep($_POST);
$_REQUEST=addslashes_deep($_REQUEST);
//其它要处理的变量.......
}
//出库后
if(get_magic_quotes_gpc())
{
$_GET=stripslashes_deep($_GET);
$_POST=stripslashes_deep($_POST);
$_REQUEST=stripslashes_deep($_REQUEST);
//其它要处理的变量.......
}
php | 评论:0
| Trackbacks:0
| 阅读:809
Submitted by admin on 2013, March 20, 10:34 AM
让你的php程序效率更高—eAccelerator加速
eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍。
eAccelerator 0.9.5.3 for PHP 5.2.17(VC6编译):
Thread Safe 版
Non Thread Safe 版
eAccelerator 0.9.6.1 for PHP 5.2.17(VC6编译):
Thread Safe 版
Non Thread Safe 版
安装eAccelerator
将php_eaccelerator.dll复制到PHP目录下的ext文件夹下,打开php.ini,在
extension=php_zip.dll
后面,添加
extension=php_eaccelerator.dll
(另起一行,不能在同一行),在
; Local Variables:
; tab-width: 4
; End:
[eaccelerator]
eaccelerator.shm_size = "64"
eaccelerator.cache_dir = "D:\php_eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "300"
eaccelerator.shm_prune_period = "600"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
celerator.log_file = "D:\php_eaccelerator_log"
eaccelerator.keys = "shm_and_disk"
eaccelerator.session = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
eaccelerator.allowed_admin_path = "D:\wwwroot\test\eaccelerator"
eaccelerator.shm_size:用来设置分配给eAccelerator用来缓存php的最大共享内存,单位是mb,如果设置为0,就使用默认大小。在linux系统中一个process能分配的最大内存是由/proc/sys/kernel/shmmax限制的,所以如果eA设置的内存超出了这个值,eA在初始化的时候会失败。shmmax的单位是字节(bytes)。
eaccelerator.cache_dir:用来设置硬盘缓存目录。eA用来存放预编译代码,session数据,内容和用户入口。默认值是"/tmp/eaccelerator"。
eaccelerator.enable:用来设置是否启用或禁用eAccelerator,设置1为启用,设置0为禁用。
eaccelerator.optimizer:开启或关闭优化,用户加速代码的执行。1为开启,0为关闭,优化仅仅在脚本被编译时候发生并且是在被缓存之前。
eaccelerator.check_mtime:在每次命中的时候Eaccelerator都会检查脚本的修改时间来判断是不是脚本发生的变化来决定是否需要重新编译。尽管检查比打开文件并编译要快,但仍然会带来一些开销的,因为每次都会有状态调用要完成。这个配置可以关闭这个检查。不过关闭检查带来的不利就是每次更新了文件需要认为手动的清除cache。默认检查是启用的,1是启用,0是禁用。
eaccelerator.debug:开启关闭debug日志。如果设置为1,将打印很多文件命中的信息到日志中。这个在排查eAccelerator的时候很有用。
eaccelerator.filter:用来决定哪个php文件被缓存。可以通过使用通配符(比如"*.php *.phtml")来匹配需要缓存的php脚本。如果以"!"开头,表示不匹配,这个参数默认是空,可以缓存所有编译好的php脚本需要注意的是eaccelerator.filter并不是基于URL工作的,而是基于文件的绝对路径,比如定义了"!/home"的话,那所有/home目录的脚本都不会被缓存。如果要定义多个匹配,使用空格或者制表符分开,而不是逗号。
eaccelerator.shm_max:设置内存缓存可以缓存文件的最大值。
eaccelerator.shm_ttl:当eAcelerator没有空余的共享内存的时候,就会把最少shm_ttl设置的秒数没访问过的脚本从缓存中释放掉,默认值是0,表示eA不会释放任何缓存。
eaccelerator.shm_prune_period:当没有足够的内存用来缓存的时候,eA会在上次清除缓存的时间超过了shm_prune_period设定的秒数时再次尝试清除过期的脚本。默认值为0,eA将不从缓存中清除过期的脚本。
eaccelerator.shm_only:启用或者禁用磁盘缓存。这个选项对session数据和内容的缓存没效果。默认值是0,允许eA使用磁盘和内存进行缓存。
eaccelerator.compress:当使用eaccelerator_content_* 的api时,eA可以在缓存前对内容进行压缩。默认值为1表示启用,禁用为0。
eaccelerator.compress_level:内容缓存的压缩等级。默认值为9,是最大压缩级别。
eaccelerator.log_file:设置eaccelerator日志的存放目录。如果这选项没有配置,则数据都被记录到stderr,如果使用php的是apache,则数据都被记录到apache的error log中。
eaccelerator.keys | session | content:这些设置控制着eA缓存用户内容的存放地点。可用的值有shm_and_disk 使用内存和磁盘进行缓存(默认值)shm 在内存中缓存数据,当内存满了或者数据大小超过了eaccelerator.shm_max设置的值就缓存到磁盘上shm_only 只使用内存缓存数据disk_only 只使用磁盘缓存数据none 不缓存数据。
eaccelerator.allowed_admin_path:控制面板所在目录,比如你的网站目录为D:\wwwroot\test\,可以建立一个文件夹eaccelerator,将control.php复制进里面,这里的值就为D:\wwwroot\test\eaccelerator
保存php.ini后,重启IIS,查看你的phpinfo
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
复制代码
这就是eAccelerator加载成功了。
开启你网站程序的eAccelerator功能
eAccelerator配置好后,会自动对php程序进行加速。但是,有的php程序可以主动调用eaccelerator的一些缓存功能,让程序运行更快,比如:discuz,将config目录下config_global.php里的$_config['memory']['eaccelerator']设置为 1 即可。
$_config['memory']['eaccelerator'] = '1';
至此,已经全部配置完毕。
PS:eAccelerator为啥不用最新的0.9.6.1呢,因为,0.9.6开始,就取消了user cache功能,也就是步骤四中所说,php程序主动调用eAccelerator的缓存功能。0.9.5的最后版本就是0.9.5.3。
php | 评论:0
| Trackbacks:0
| 阅读:767
Submitted by admin on 2013, March 19, 5:26 PM
http://xlogin.blog.51cto.com/3473583/1031311
linux | 评论:0
| Trackbacks:0
| 阅读:750