platinum 回复于:2004-11-07 09:47:58 |
为了避免误杀(因为有很多是动态IP地址),用crond每小时执行一下[color=red:84fbfbd6c7]fuckclean[/color:84fbfbd6c7],来清除一天来被封杀过的IP 当然,如果该IP违规,[color=red:84fbfbd6c7]fuckgo[/color:84fbfbd6c7]会以每1分钟一次的频率扫描,发现之后再次封杀,再次解开就只能等第二个小时到来的时候了 vi /usr/local/sbin/fuckclean(呵呵,这回是我自己写了) [code:1:84fbfbd6c7] #! /bin/bash clean_who() { iptables -nL|grep "DROP"|grep "dpt:21"|awk '{print $4;}' } for _un in $(clean_who) do iptables -D INPUT -s $_un -p tcp --dport 21 -j DROP done [/code:1:84fbfbd6c7] |
hgkrt 回复于:2004-11-07 10:01:27 |
强呀,太需要这个啦... 感觉配合HTTP下载更是需要的.. |
platinum 回复于:2004-11-07 10:05:05 |
HTTP可能不行,HTTP是短连接,除了下载、读取网页,其他时间都是TIME_OUT,而非ESTABLISHED |
hgkrt 回复于:2004-11-07 10:08:04 |
对了,请教老兄一个问题 Linux下FTP下载如何按用户限制线程?? 兄弟用啥服务器端呢??介绍一下经验吧... |
platinum 回复于:2004-11-07 10:13:11 |
我用的是proftpd,用的是“MaxClientsPerHost 3”的方法限制 |
jeffreyli 回复于:2004-11-07 10:53:38 |
利害,,,,先收藏,,, |
hgkrt 回复于:2004-11-07 11:40:12 |
如果使用动态IP建立的站点,该如何监测呢?? 难道要每换一个IP,自己重新修改文件?? |
双眼皮的猪 回复于:2004-11-07 13:09:32 |
为什么要用crond一分钟执行一次? 在脚本里sleep 60可以吗? |
cnriver 回复于:2004-11-07 13:26:30 |
iptables -I INPUT -s $(echo $_un|gawk -F'=' '{print $2;}') -p tcp --dport 21 -j DROP 好像没有掩码? (比如 - s 210.10.10.10/32) 而且连接一多,这种过滤多,影响服务器性能。 adsl等动态ip,会存在一些问题。有些刚上网的用户不能正常ftp连接。 |
tma 回复于:2004-11-07 21:03:47 |
顶 |
platinum 回复于:2004-11-07 22:31:21 |
[quote:2ffe1899cf="cnriver"]iptables -I INPUT -s $(echo $_un|gawk -F'=' '{print $2;}') -p tcp --dport 21 -j DROP 好像没有掩码? (比如 - s 210.10.10.10/32) 而且连接一多,这种过滤多,影响服务器性能。 adsl等动态ip,会存在?.........[/quote:2ffe1899cf] 1、对host进行操作,不用32位的掩码 2、是的,大量的iptables会降低服务器性能,但与原先大量无效连接的不断重试比,简直微乎其微 |
platinum 回复于:2004-11-07 22:31:54 |
[quote:920aafc6be="双眼皮的猪"]为什么要用crond一分钟执行一次? 在脚本里sleep 60可以吗?[/quote:920aafc6be] 我对SHELL不在行 :mrgreen: |
双眼皮的猪 回复于:2004-11-07 23:27:14 |
[quote:839afb2d83="platinum"] 我对SHELL不在行 :mrgreen:[/quote:839afb2d83] 只需要sleep一下嘛,去找夏天,人家是零二年的夏天,你说人家2002的夏天,这不是一回事嘛,呵呵...人家说不定是1902年的夏天哪... |
rootding 回复于:2004-11-07 23:46:19 |
还是给自己添麻烦! |
platinum 回复于:2004-11-08 08:43:43 |
[quote:7b6f743bae="双眼皮的猪"] 只需要sleep一下嘛,去找夏天,人家是零二年的夏天,你说人家2002的夏天,这不是一回事嘛,呵呵...人家说不定是1902年的夏天哪...[/quote:7b6f743bae] 谢谢猪猪,我再改改 :mrgreen: “夏天”已经改了 :em06: |
platinum 回复于:2004-11-08 08:45:10 |
[quote:dc796233fe="rootding"]还是给自己添麻烦![/quote:dc796233fe] 给自己添什么麻烦?都是自动完成的 经过测试,效果非常明显,负载降低了很多,有机会你也可以试一下 |
tianci3982730 回复于:2004-11-08 09:03:44 |
不如用c写个守护进程来完成哦 |
studyboy 回复于:2004-11-08 14:49:51 |
我用的失netman的脚本 用来控制http和socks5 |
rrrr03 回复于:2004-11-09 15:33:45 |
牛呀,高人一堆堆的,,, |
lyxmoo 回复于:2004-11-09 17:53:15 |
不如这么样简单 : iptables -p tcp --dport 21 -m connlimit --connlimit-above 2 -j REJECT |
eagerlinuxer 回复于:2004-11-09 19:44:17 |
给2 个建义: 1、“ if [ $(echo $_un|awk -F'=' '{print $1;}') -gt 9 ] ” 最好把9改成10,因为大多数ftp客户端都会把默认线程数设成8或10。 2、 ”/usr/local/sbin/fuckclean“脚本最好半小时执行一次,这样误挡的机会及恢复时间会少很多。 我管了公司几台vsftp服务器 一般我把每线程的最大下载速率设成: anon_max_rate=50000 (也就是50KByte/s,因为好多客户端的下载工具都是用IE,所以把每线程的下载量设大了,这样一般的ADSL的IE下载用户也不会感到太慢) 我把每IP的最大连接数设成2: max_per_ip=2 (这样每ip的最大下载速度就是100KByte/s,这是为了让更多的用户能连进来) 这样我的vsftpd就会挡掉大多数用户的多线程连接,因为一个IP的最大连接只有2 :)。但我测了一下,1.4G2CPU/2GMEM的机器,在流量是50Mbit/s的情况下,系统资源占用在5%以下,还是可以接受的。 不过我觉得这个想法不错,也许其它的一些地方也可以用上。 |
platinum 回复于:2004-11-09 21:12:33 |
agerlinuxer兄说的有道理:) fuckclean也需要改正,因为我发现iptables -vL的时候,他会解析出域名,比如有的就是adsl-249-213-51-62-xxxxx.com,而不是一个具体的IP地址 所以我打算改成统计非法IP的数量,然后用for和iptables -D INPUT 1去控制 |
eagerlinuxer 回复于:2004-11-09 23:51:05 |
呵呵,用iptalbes -nL不就不会去解析域名了吗? |
platinum 回复于:2004-11-10 09:11:46 |
再次谢谢eagerlinuxer,把这个忘记了! 现在改成这个了,2楼的也去修改一下 [code:1:af8f90447c] #! /bin/bash clean_who() { iptables -nL|grep "DROP"|grep "dpt:21"|awk '{print $4;}' } for _un in $(clean_who) do iptables -D INPUT -s $_un -p tcp --dport 21 -j DROP done [/code:1:af8f90447c] |
haohaoo 回复于:2004-11-11 02:42:44 |
好像没有解封的呀,最好能多久就解封,因为IP很多动态的 |
czyf2001 回复于:2004-11-11 09:00:17 |
请问:如何得到登录用户的ip啊? 系统中存在一个通用的用户和密码,通过终端登录工具(keax , Exceed)登录到服务器端,我怎么样才能得到他们的ip呢? 并且他们的操作都应该有个日志保存文件吧? 先问第一个,如何得到他们的ip啊? 谢谢! |
zjqyb 回复于:2004-11-18 09:51:32 |
通过代理的还是封不掉 |
platinum 回复于:2004-11-20 03:11:44 |
[quote:5f8f06958e="haohaoo"]好像没有解封的呀,最好能多久就解封,因为IP很多动态的[/quote:5f8f06958e] 现在改成了1小时一次接封 |
platinum 回复于:2004-11-20 03:12:20 |
[quote:ad52eed4de="czyf2001"]请问:如何得到登录用户的ip啊? 系统中存在一个通用的用户和密码,通过终端登录工具(keax , Exceed)登录到服务器端,我怎么样才能得到他们的ip呢? 并且他们的操作都应该有个日志保存文件吧? 先问第一个,如?.........[/quote:ad52eed4de] netstat啊 |
platinum 回复于:2004-11-20 03:13:14 |
[quote:d23b624clearcase/" target="_blank" >cc5="zjqyb"]通过代理的还是封不掉[/quote:d23b624cc5] 有多少封多少,不管是不是代理 真IP封真IP 私网IP封私网IP 代理IP封代理IP |
ibmsoft 回复于:2004-11-23 15:33:07 |
定! |
天下有雪 回复于:2004-11-23 20:22:41 |
好东西,收藏了,先。 |