Submitted by 有空来玩玩 on 2010, August 16, 3:34 PM
本文介绍了linux下使用denyhost防止ssh暴力破解,保护linux安全。
工作中的linux服务器每天都会有无数的SSH失败尝试记录,有些人一直不停的扫描,使用软件在那里穷举扫描,所以大家第一要记的设置一个好的够复杂的密码。
怎么样防,如果要一条一条将这些IP阻止显然治标不治本,还好有DenyHosts软件来代替我们手搞定他。
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件,当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
DenyHosts官方网站为:http://denyhosts.sourceforge.net
以下是安装记录(以CentOS 4.8, DenyHosts 2.6 为例)
1.安装
# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install
默认是安装到/usr/share/denyhosts目录的。
2.配置
# 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 = 5
#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT = 5
#允许root登陆失败的次数
HOSTNAME_LOOKUP=NO
#是否做域名反解
ADMIN_EMAIL = admin@yahunet.com
#管理员邮件地址,它会给管理员发邮件
DAEMON_LOG = /var/log/denyhosts
#自己的日志文件
3.设置启动脚本
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
完了之后执行daemon-contron start就可以了。
# ./daemon-control start
如果要使DenyHosts每次重起后自动启动还需做如下设置:
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig --add denyhosts
# chkconfig denyhosts on
然后就可以启动了:
# service denyhosts start
可以看看/etc/hosts.deny内是否有禁止的IP,有的话说明已经成功了。
Tags: denyhost, linux, 安全
操作系统 | 评论:0
| Trackbacks:0
| 阅读:39
Submitted by 有空来玩玩 on 2010, August 3, 3:29 PM
今天找了N久,终于找到它的真正位置了,马上记录下来。免得下次再找。
/usr/include/asm-generic
C/C++ | 评论:0
| Trackbacks:0
| 阅读:92
Submitted by 有空来玩玩 on 2010, August 2, 3:59 PM
服务器结构探讨 -- 最简单的结构
所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。
好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。
对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:
client ----- server
嗯,太简单了点,这样也敢叫服务器结构?好吧,现在我们来往里面稍稍加点东西,让它看起来更像是服务器结构一些。
一般来说,我们在接入游戏服务器的时候都会要提供一个帐号和密码,验证通过后才能进入。关于为什么要提供用户名和密码才能进入的问题我们这里不打算做过多讨论,云风曾对此也提出过类似的疑问,并给出了只用一个标识串就能进入的设想,有兴趣的可以去看看他们的讨论。但不管是采用何种方式进入,照目前看来我们的服务器起码得提供一个帐号验证的功能。
我们把观察点先集中在一个大区内。在大多数情况下,一个大区内都会有多组游戏服,也就是多个游戏世界可供选择。简单点来实现,我们完全可以抛弃这个大区的概念,认为一个大区也就是放在同一个机房的多台服务器组,各服务器组间没有什么关系。这样,我们可为每组服务器单独配备一台登录服。最后的结构图应该像这样:
loginServer gameServer
| /
| /
client
该结构下的玩家操作流程为,先选择大区,再选择大区下的某台服务器,即某个游戏世界,点击进入后开始帐号验证过程,验证成功则进入了该游戏世界。但是,如果玩家想要切换游戏世界,他只能先退出当前游戏世界,然后进入新的游戏世界重新进行帐号验证。
早期的游戏大都采用的是这种结构,有些游戏在实现时采用了一些技术手段使得在切换游戏服时不需要再次验证帐号,但整体结构还是未做改变。
该结构存在一个服务器资源配置的问题。因为登录服处理的逻辑相对来说比较简单,就是将玩家提交的帐号和密码送到数据库进行验证,和生成会话密钥发送给游戏服和客户端,操作完成后连接就会立即断开,而且玩家在以后的游戏过程中不会再与登录服打任何交道。这样处理短连接的过程使得系统在大多数情况下都是比较空闲的,但是在某些时候,由于请求比较密集,比如开新服的时候,登录服的负载又会比较大,甚至会处理不过来。
另外在实际的游戏运营中,有些游戏世界很火爆,而有些游戏世界却非常冷清,甚至没有多少人玩的情况也是很常见的。所以,我们能否更合理地配置登录服资源,使得整个大区内的登录服可以共享就成了下一步改进的目标。
» 阅读全文
Tags: 游戏服务器
服务器相关 | 评论:0
| Trackbacks:0
| 阅读:108
Submitted by 有空来玩玩 on 2010, July 6, 4:22 PM
编译和连接程序
MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项.
1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项.
$ mysql_config --libs
输出:
-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto
» 阅读全文
Linux编程 | 评论:0
| Trackbacks:0
| 阅读:121
Submitted by 有空来玩玩 on 2010, July 6, 1:10 AM
DESCRIPTION 描述
accept 函数用于基于连接的套接字 (SOCK_STREAM, SOCK_SEQPACKET 和 SOCK_RDM). 它从未完成连接队列中取出第一个连接请求,创建一个和参数 s 属性相同的连接套接字,并为这个套接字分配一个文件描述符, 然后以这个描述符返回.新创建的描述符不再处于倾听状态.原套接字 s 不受此调用的影响.注意任意一个文件描述符标志 (任何可以被 fcntl以参数 F_SETFL 设置的值,比如非阻塞式或者异步状态)不会被 accept. 所继承.
» 阅读全文
C/C++ | 评论:0
| Trackbacks:0
| 阅读:142
Submitted by 有空来玩玩 on 2010, June 29, 11:34 AM
vmware提供了一个free的vmplayer软件,通过http://www.vmware.com/vmplayer下载linux版,安装。使用http://www.easyvmx.com生成一个合适的虚拟配置。加载虚拟机以后,安装windows2k as。好处非常明显,使用本机iso文件虚拟光盘读操作,速度飞快,安装中的格式化硬盘等操作都可以放心测试...
几个不常被用到的有用配置记录如下:
一、硬盘还原卡功能:
打完补丁等之后,将vmx文件中的ide0:0.mode改为"independent-nonpersistent"一台装有硬盘还原卡的系统就做好了。以后不论把虚拟机中的系统怎么折腾。重启虚拟系统,又一切还原!
二、1000M网卡功能:
将网卡配置由原来的ethernet0.virtualDev = "vlance"改为"vmxnet"再通过从vmware server中分离出来的iso加载驱动即可获得1000M网卡特性
三、虚拟机中启动真实硬盘的系统:
在很多网络资源上提供的方法是使用vmware workstation版本通过一些选项的选择来实现。通过试验,通过修改vmx文件的DeviceType为raw-disk和vmdk文件中的硬盘参数与真实硬盘一致就可以装载真实硬盘上的系统。当机算机安装双系统的时候,可在不刻碟的情况下修订或安装新版系统。甚至于可以使用linux的虚拟机修复和引导同一机器上的windows系统。
Tags: vm, 虚拟机
操作系统 | 评论:0
| Trackbacks:0
| 阅读:149
Submitted by 有空来玩玩 on 2010, June 25, 4:10 PM
首先把机器上原来带的迅盘驱动删除掉
然后下载INTEL 迅盘的最新驱动
http://downloadmirror.intel.com/18011/a08/INVM110CD.exe
然后在点开始---运行----CDM 命令提示符里面运行文件的up参数。
例如D:\INVM110CD.exe -up('.exe'和'-up'间有空格)
安装的时候就会安装成完全版本,即 会一起安装 turbe momery dashboard 这个软件,这个软件只有在4G讯盘上才会自动安装,而它则可以让用户设置哪些需要讯盘加速,那些不需要。如果没有安装这个软件,电脑就会随机加速某个运用软件。
在安装玩这个软件后,打开turbo momery控制台的时候,会发现 ready boost 这个选项是灰色不可选的。
在这种情况下,2G讯盘用户就最大化利用了讯盘这一功能,并将讯盘导致关机缓慢的情况杜绝了。
Tags: 迅盘
计算机硬件 | 评论:0
| Trackbacks:0
| 阅读:114
Submitted by 有空来玩玩 on 2010, June 17, 10:16 AM
从man手册中,得到ET和LT的具体描述如下
EPOLL事件有两种模型:
Edge Triggered (ET)
Level Triggered (LT)
假如有这样一个例子:
1. 我们已经把一个用来从管道中读取数据的文件句柄(RFD)添加到epoll描述符
2. 这个时候从管道的另一端被写入了2KB的数据
3. 调用epoll_wait(2),并且它会返回RFD,说明它已经准备好读取操作
4. 然后我们读取了1KB的数据
5. 调用epoll_wait(2)......
这里说明了ET模式下 read 与 write 的封装问题
» 阅读全文
Tags: epoll
Linux编程 | 评论:0
| Trackbacks:0
| 阅读:106