2012年4月 的存档

mac os x 修改hostname

2012年4月6日 没有评论

默认情况下,在终端中显示的hostname看起来不爽,这个可以修改的,修改方法为:

系统偏好设置 –> 共享 –> 电脑名称,在后面的输入框输入想要的名称即可。

分类: 其它 标签:

阿里云服务器上使用iptables设置安全策略

2012年4月4日 1 条评论

公司的产品一直运行在云服务器上,从而有幸接触过aws的ec2,盛大的云服务器,最近准备有使用阿里云的弹性计算(云服务器)。前两种云服务器在安全策略这块做的比较好,提供简单明了的配置界面,而且给了默认的安全策略,反观阿里云服务器,安全策略需要自己去配置,甚至centos机器上都没有预装iptables(起码我们申请两台上都没有),算好可以使用yum来安装,安装命令如下:

yum install -y iptables

iptables安装好后就可以来配置规则了。由于作为web服务器来使用,所以对外要开放 80 端口,另外肯定要通过ssh进行服务器管理,22 端口也要对外开放,当然最好是把ssh服务的默认端口改掉,在公网上会有很多人试图破解密码的,如果修改端口,记得要把该端口对外开发,否则连不上就悲剧了。下面提供配置规则的详细说明:

第一步:清空所有规则

当Chain INPUT (policy DROP)时执行/sbin/iptables -F后,你将和服务器断开连接
所有在清空所有规则前把policy DROP该为INPUT,防止悲剧发生,小心小心再小心
/sbin/iptables -P INPUT ACCEPT
清空所有规则
/sbin/iptables -F
/sbin/iptables -X
计数器置0
/sbin/iptables -Z

第二步:设置规则

允许来自于lo接口的数据包,如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1
/sbin/iptables -A INPUT -i lo -j ACCEPT 

开放TCP协议22端口,以便能ssh,如果你是在有固定ip的场所,可以使用 -s 来限定客户端的ip
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

开放TCP协议80端口供web服务
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT

10.241.121.15是另外一台服务器的内网ip,由于之间有通信,接受所有来自10.241.121.15的TCP请求
/sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT

接受ping
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

这条规则参看:http://www.netingcn.com/iptables-localhost-not-access-internet.html
/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

屏蔽上述规则以为的所有请求,不可缺少,否则防火墙没有任何过滤的功能
/sbin/iptables -P INPUT DROP

可以使用 iptables -L -n 查看规则是否生效

至此防火墙就算配置好,但是这是临时的,当重启iptables或重启机器,上述配置就会被清空,要想永久生效,还需要如下操作:

/etc/init.d/iptables save   
或
service iptables save

执行上述命令可以在文件 /etc/sysconfig/iptables 中看到配置

以下提供一个干净的配置脚本:

/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z

/sbin/iptables -A INPUT -i lo -j ACCEPT 
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -P INPUT DROP

最后执行 service iptables save ,先确保ssh连接没有问题,防止规则错误,导致无法连上服务器,因为没有save,重启服务器规则都失效,否则就只有去机房才能修改规则了。也可以参考:ubuntu iptables 配置脚本来写一个脚本。

最后再次提醒,在清空规则之前一定要小心,确保Chain INPUT (policy ACCEPT)。

使用iptables配置防火墙后本机无法访问外部网络

2012年4月3日 没有评论

在一台centos和ubuntu的主机上使用配置了防火墙,就是添加几条简单规则。规则确实是生效了,因为很好的屏蔽掉外部的非法请求,但是本机却无法和外部通信,包括同一个局域网的其他机器和外部互联网上的机器,连最基本的ping都无法成功。在防火墙规则里面只是对INPUT做了限制,OUTPUT和FORWORD没有任何限制,这有点想不通,只好google一把,发现有人也是遇到这样的问题,解决的办法是添加如下规则:

/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

果然添加后就能正常和外部通信了。

为何在没有添加上述规则就不能通信?因为建立一个通信连接需要服务器端和客户端交互才能完成。举例来说,从本机使用ssh客户端去登陆外部的ssh服务器,假设使用端口为12345,那么本就使用tcp端口号12345向服务器22端口发送一个请求,这个属于OUTPUT,由于OUTPUT规则没有任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的tcp 12345端口,此时回应属于INPUT,如果INPUT中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。外部的网络那么多,总不能逐条去配置INPUT规则,所以为了能访问外部网络,必须要配置上述规则。

关于state的更多解释可以参考:iptables中state模块的连接状态

centos中设置hostname

2012年4月3日 没有评论

centos中可以通过命令:

hostname
或
uname -n

来查看当前的主机名,如果没有设置的话会默认设置成localhost,具体原因可以看启动脚本:/etc/rc.d/rc.sysinit。

如果要修改主机名,可以把文件:/etc/sysconfig/network 中的HOSTNAME修改成自己希望的名字即可。

分类: Linux 标签:

阿里云服务器硬盘挂载

2012年4月3日 没有评论

阿里云提供云服务器的硬盘由两块组成,一块是系统盘,一块是数据盘,默认数据盘是没有挂载的,如果要用到数据盘就需要自己手动挂载。通过命令fdisk -l,可以看到设备名为/dev/xvdb。另外在挂载前要对硬盘(/dev/xvdb)分区和格式化。分区使用命令fdisk,格式化命令为mkfs.ext3。

fdisk /dev/xvdb

(输入n)
Command (m for help): n 

Command action
   e   extended
   p   primary partition (1-4)
(输入p)
p

(输入1)
Partition number (1-4): 1

(输入p)
Command (m for help): p

(输入w)
Command (m for help): w

此时在使用fdisk -l查看应该可以看到类似下面的结果
Disk /dev/xvdb: 246.9 GB, 246960619520 bytes
255 heads, 63 sectors/track, 30024 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb1               1       30024   241167748+  83  Linux

上述执行完分区了,最好在执行格式化前重启一下机器。

格式化分区
mkfs.ext3 /dev/xvdb1 

格式化根据硬盘的大小不同时间也不同,就等待吧。

假设把此硬盘挂在在 /data目录下,先创建data
mkdir -pv /data

挂载硬盘
mount /dev/xvdb1 /data 

写入分区表
echo "/dev/xvdb1		/data		ext3	defaults	1 1" > /etc/fstab

也可以直接写入分区表后使用 mount -a 来使之生效。

阿里云上安装gcc

2012年4月1日 没有评论

以前使用的aws和盛大的云主机,直接用yum来安装gcc,一条命令就搞定,命令为:

yum -y install gcc  gcc-c++

今天准备开始用阿里云,申请了一台centos 64位机器,使用上述命令安装gcc时出错,听说是阿里云处于安全考虑,生产环境不提供编译工具。想要安装不是不可能的,很简单,只有修改一下/etc/yum.conf文件即可,把文件中的

exclude=kernel*

行注释即可,注释符号为#。也可以使用如下命令来安装:

sed -i 's/^exclude/#exclude/'  /etc/yum.conf && yum -y install gcc gcc-c++ && sed -i 's/^#exclude/exclude/'  /etc/yum.conf
分类: Linux 标签:

无觅相关文章插件,快速提升流量