vps中的iptables规则设置范例

1,039 views 二月 26, 10 by Timothy

忙乎了一两天,俺的VPS算是上线了,基于Ubuntu Linux的,512MB内存,20G硬盘,1TB月流量,赠送2个IP,还不错。不过,现在还没有把博客迁移过去的打算,此VPS仅作为练手而用,只是建了一些ssh账号,供自己和同事跨栏用,还简单的搭建了基于Nginx+MySql+PHP+FastCGI的WordPress环境,并成功拉过来俺的一位同事在上面安了个blog,嘿嘿。
提到VPS,最重要的还是安全,毕竟你的系统是直接面向公网,如果不加强防范,很容易成为别人手里的肉鸡。Linux中的iptables,用过的同学都知道,是一个基于Linux内核的防火墙,功能比较强大,下面是iptable的一些常用的规则设置:

1
2
3
4
5
6
7
8
9
10
11
12
        /sbin/iptables -P INPUT DROP              #禁止掉服务器所有入口请求,后面的规则只允许部分常用的服务端口
        /sbin/iptables -P OUTPUT ACCEPT          #允许服务器访问出口请求
        /sbin/iptables -A INPUT -i lo -j ACCEPT    #允许本地接口访问
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP #禁止ping,因为ping是基于icmp协议的
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT    #允许部分常用端口入口请求访问
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT  #允许所有已经连接端口请求
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP              #DROP掉所有失效或者新的请求

可以把上述脚本保存起来,执行,然后用命令/sbin/iptables -L -n查看规则是否生效

把上述脚本再完善一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
export PATH
 
case "$1" in
start)
        echo -n "Staring to write your Iptbales:..."
        /sbin/iptables -P INPUT DROP
        /sbin/iptables -P OUTPUT ACCEPT
        /sbin/iptables -A INPUT -i lo -j ACCEPT
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
        echo "Ok"
 
;;
stop)
        echo -n "Cleaning your Iptables:..."
        /sbin/iptables -F
        /sbin/iptables -X
        /sbin/iptables -Z
	/sbin/iptables -P INPUT ACCEPT
	/sbin/iptables -P OUTPUT ACCEPT
        echo "Ok"
;;
restart)
        echo -n "Cleaning your Iptables:..."
        /sbin/iptables -F
        /sbin/iptables -X
        /sbin/iptables -Z
        echo "Ok"
        echo -n "Staring to write your Iptbales:..."
        /sbin/iptables -P INPUT DROP
        /sbin/iptables -P OUTPUT ACCEPT
        /sbin/iptables -A INPUT -i lo -j ACCEPT
        /sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
        /sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT       
        /sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
        /sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
        echo "Ok"
;;
*)
        echo "Usage: $0          {start|stop|restart}"
esac
 
exit 0

这样,我们就可以用start/stop/restart的参数来启用、禁止iptables防护了,很方便。另外,可以把此脚本放入/etc/init.d,让它像系统服务一样,在VPS启动的时候自动运行。

PS:
1.此脚本参考自网上,并作了部分修改
2.搜狗云输入法,也有郁闷的时候,在写文章的时候,候选词半天不出来,很卡,囧rz 是我打字速度太快,还是网速很慢?……

台式机换上了Ubuntu

797 views 二月 21, 10 by Timothy

这段时间对Linux相当痴迷,玩了下CentOS,现在又看上了Ubuntu。对Ubuntu偶早有所闻了,以前也在虚拟机上装过,那漂亮的UI是各个Linux版本中相当出众的,安装、维护的简单和方便,也是至今都Ubuntu拥有众多追随者的原因。正好,俺家中有一台老牛机(以前大学时候用的台式机),这机器历史算长久了,从大二一直跟随俺到现在,有7、8年历史了。毕业后把这台机器略升级了一下,到现在都一直闲置在书房中,完全成了摆设。自从用上了笔记本,老婆也用上了上网本,这台台式机更是没人用了。昨天突然心血来潮,决定在老牛机上装个Ubuntu玩玩,没事了还可以开着下下高清BT,充分利用下闲置资源。

老牛机配置如下: 
CPU:  Athlon 1700+ 
内存:  KingSton 1.5GB(1G*1+256*2)
硬盘:  希捷80G IDE接口
显卡:  Geforce 6200
主板:  nForce2

开始行动

说干就干,首先在Ubuntu的老家拖了个最新的Ubuntu 9.10 32bit Desktop Edition的ISO。老牛机的光驱,经久失修,已经是个残废了。本来想扔掉的,但机箱面板那个挡板也被我搞掉了,扔掉光驱就有个缺口,不美观,只有留下了。主板支持4个USB接口,两个坏掉了,剩下两个还可用,刚好偶又有个2G的U盘(捡来的),所以打算通过U盘来安装系统。用U盘装系统好处多多,不用刻盘,并且速度比光驱快,嘿嘿。

用Ultra ISO利器,把安装镜像写入到U盘:

ubuntu
写完后的U盘驱动器图标:
ubuntu2 

安装系统

拔下U盘,插上老牛机器,一步一步安装,Ubuntu从此跑在了老牛机上,发现比以前的XP快不少。并且Ubuntu支持大部分硬件,无须驱动,显卡驱动可以用Ubuntu默认的,也可以自己单独安装。安装界面也相当的友好,即使是第一次使用的用户,也能根据向导来完成安装。

一点使用体验

1.5G的内存,运行Linux当然会快很多,从开机和系统加载的速度就可以感受到,比以前的XP快不少。装上显卡驱动后,能打开一些可视化特效,比较炫。
由于Ubuntu自带Firefox浏览器,于是立马装上了AutoProxy插件,再用Linux自带的ssh命令,加上一个国外的SSH帐号,立马实现了跨栏的效果……为了以后方便,做了个简单的shell脚本:

1
2
echo "ssh -N -D 127.0.0.1:7070 ssh-account@server-address" > connect.sh
chmod +x connect.sh

-N: 不需要shell登陆

-D: 建立本地端口映射,这里使用的7070端口,把这端口配置到AutoProxy里面去,就OK了

后面是ssh-username@server-ip

控制台运行此脚本后,会提示输入ssh密码,输入后,连接完毕,可以打开Firefox畅游了

关于BT下载工具,偶用Transmission,貌似Ubuntu已经自带了,没有的也可以单独安装。

关于中文输入法,偶一般是在浏览网页时输入中文,Firefox可以装一个搜狗的云输入插件,方便、绿色、环保,强烈推荐下。

小结一下

老牛机器装上Linux感觉挺赞,如同重新焕发了活力一般。家有闲置老牛机的同学不妨试一试。

WordPress本地测试环境搭建

1,170 views 二月 17, 10 by Timothy

为了Blog日后的改进和完善,偶越来越需要一个本地的测试环境。毕竟,直接在本地改程序,再上传到线上看修改后的效果,这是比较有风险的做法,并且也很不规范。由于WordPress是基于PHP的,而偶的操作系统又是Win7,首选的做法,就是用IIS+PHP+MySQL来搭建测试环境。并且,Windows下面配置起来没什么难度。不过我更倾向于Linux,所以选择了CentOS 5.4 + MySQL + PHP + Nginx,装在VirtualBox的虚拟机中。一来为了熟悉下Linux,二来是为了以后搞VPS先热点身,嘿嘿。

装好CentOS,没选择X Windows,直接用了Licess同学的一键安装包,非常方便。Licess同学为我们写好的Shell脚本里面,能自动完成下载、编译、安装的过程,省去很多繁琐的过程。安好后,需要根据自己的喜好更改一下设置即可。其中也遇到很多莫名其妙的问题,偶又是Linux新手,所以只有询问google老师,不过还好都找到了答案。待基础的几个软件都搞好之后,就可以安装WordPress了,然后将线上的博客内容通过PHPMyAdmin导出,再在虚拟机中导入即可,一个测试环境就OK了。另外,为了传文件的方便,还在CentOS上装了个vsftp,用以和Windows交换文件。经过这次折腾,发现原来Linux下面也这样好玩,打算以后多学习和折腾一下Linux,把家里那台N久没开过机的老台式机,也装个Ubuntu玩玩。

linux1

linux2

Happy New Year!2010

401 views 二月 13, 10 by Timothy

冬去春来,飞雪无痕,满目江山满目春;雪散雨淋,放歌高吟,满腔情愫咏新春;鞭炮炸鸣,灯红夜银,普天同乐闹新春!祝各位新老博友同学新春快乐! 送上自己拍的照片一张,献丑了~~

happynewyear

WM6.5 短信聊天模式切换

4,935 views 二月 12, 10 by Timothy

自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。

Blog评论功能再次改进

499 views 二月 04, 10 by Timothy

自从实现了Ajax的评论后,俺还是对评论部分有点不太满意,于是又开始拿评论开刀了。

1.首先想到的,是评论没有分页显示的功能,如果评论数量太多,会把页面拖得很长,在google搜索了一下,原来WordPress原生已经支持评论分页的功能了,所以一不做二不休,继续改动。
其实改动很简单,打开模板的comments.php,在类似wp_list_comments();列出评论的代码后面,加入下面的代码即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
	// 如果用户在后台选择要显示评论分页
	if (get_option('page_comments'))
	{
		// 获取评论分页的 HTML
		$comment_pages = paginate_comments_links('echo=0');
		// 如果评论分页的 HTML 不为空, 显示导航式分页
		if ($comment_pages)
		{
?>
 
<div id="commentnavi">
		<?php echo $comment_pages; ?></div>
 
 
<?php
		}
	}
?>

2. 实现Enter+Ctrl快捷回复,这个比较简单,用jQuery实现,正好这两天也在学jQuery,就当练练手吧。为了增加代码可读性,方便以后维护,将这部分自定义的jQuery代码放在单独的js文件中:timothy.js

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
 
    //Ctrl+Enter for fast submit
    $("#comment").keydown(
    	function(event){
        	if(event.ctrlKey && event.keyCode == 13)
        	{
            		$("#submit").click();
        	}
    	});
});

代码比较简单,检测评论框的keydown时间,并判断是否同时按下了Ctrl键和Enter键,如果条件成立,则直接出发提交按钮的点击事件。将此部分js代码上传,并在header.php引入此脚本文件,效果立马就有了。这下同学们可以通过Ctrl+Enter快捷提交评论了。不过后来发现一个问题,这种用Ctrl+Enter快捷提交的评论,不会触发Ajax评论的效果,后来仔细找了找原因,发现Ajax评论的jQuery脚本中,并没有绑定提交按钮的点击事件,而是绑定的整个Form的submit事件,所以把刚才的脚本小小修改一下即可:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
 
    //Ctrl+Enter for fast submit
    $("#comment").keydown(
    	function(event){
        	if(event.ctrlKey && event.keyCode == 13)
        	{
            		$("#commentform").submit();
        	}
    	});
});

这下就搞定了,支持Ctrl+Enter提交的Ajax评论,呵呵。

3.这个修改源自Zww同学的提议,在每条评论中增加”回复”按钮,原以为我的皮肤不支持嵌套评论的,尝试着在WordPress的设置项中,把嵌套评论给Enable了,这样的话,每条评论就自动有了个回复按钮。接下来,想实现点击回复的时候,自动把评论的同学的名字填入到评论框中,也就是类似 @XXX: 的形式。大体思路是通过jQuery来实现,绑定这些回复按钮的click事件,获取评论的同学的名称,设置到评论框中。其实Zww同学早就实现了这样的功能(前去围观),所以jQuery也可以偷师过来了:

?View Code JAVASCRIPT
1
2
3
4
5
    $(".reply").click(
	function(){
		var name = $(this).prevAll().find("cite:first").text();
		$("#comment").text("@"+name+":").focus();
	});

同样,放在$(document).ready里面即可。这次改动,俺意外的发现,原来我的皮肤支持嵌套评论……或许是加入了Ajax评论组件的原因,嘿嘿。

此文很菜,没啥技术含量, 算是学习jQuery的一点心得吧,前路茫茫,吾将继续折腾下去……

Blog再次改动–启用Ajax评论

413 views 二月 01, 10 by Timothy

我用的这个皮肤有点旧,很多东西都不支持,但是又舍不得换掉,于是留下了折腾的余地,生命在于折腾嘛。看着Zww同学和久酷同学的Blog,都支持Ajax无页面刷新评论,心里也痒痒的。好像WordPress最新的版本,已经支持Ajax评论了,但是又不知道怎么搞。在Google网上一阵乱搜,找到个不错的解决办法,一个老外同学的一篇文章,照着一步一步改下来,还真实现了,除心里一阵狂喜之外,心里还小有成就感……其实网页也是我的弱项,接下来需要一边学jQuery,一边在现有的皮肤上动刀,再美化美化,呵呵。
最后,推荐下老外同学的添加Ajax评论的文章:
http://zeo.unic.net.my/wordpress-ajax-commenting-revisited/

=========================威武的分割线=====================

updated: 2010.02.03

上面的文章较老,后来发现添加Ajax后,有bug,于是按照Zww同学推荐的方法,找到另一篇指导文章,捣鼓了半天, 总算搞定了。脚本中由于需要访问一些元素,但是由于我的皮肤本身不支持嵌套评论,所以也把.js脚本小改了一下,屏蔽掉部分东西。这篇文章非常不错,强烈推荐下:

http://willin.heliohost.org/?p=1271

Blog小规模改动

889 views 一月 31, 10 by Timothy

今天闲来没事,把Blog的边栏又改了一下,去掉了那个很长的Archives,从04年到现在的文章归档列表,太占空间了,灭掉!另外一个变化较大的地方,是以前的唠叨,一直用的腾讯的滔滔,没办法,国内很多微博都被停掉了。不过最近消息,腾讯也要把taotao和谐掉,当初用这个只是为了方便,腾讯滔滔其实算不上是个名副其实的微博,功能上限制太多,竟然还不能用手机浏览器的方式发表,只能算个怪胎。昨晚在Zww同学的博客看到文章,用php脚本的方式,把twitter的内容给“抓”过来。突然感觉茅塞顿开,以前一直想用js实现抓twitter的内容到自己blog,无奈js是客户端浏览器运行的,国内的用户访问不了twitter,又怎样能把twitter上发的推抓过来呢?如果用php,脚本是在服务端运行,那就不一样了,何况我的空间也本来就在墙外,呵呵,于是去wordpress的老家找了找,果然有twitter的插件,php的,Twitter Tools,这下可好了,毫不犹豫的把腾讯滔滔淘干掉,直接用上twitter才是正道!
Twitter Tools考虑的还挺周到,装上启用后,插件的后台管理页面,会给你提供一个发推的页面,其实我经常用的Firefox的TwitterBar插件,也挺不错,在此向各位同学推荐下。

Page: 19 of 49 1 ... 15 16 17 18 19 20 21 22 23 ... 49