Rootop 服务器运维与web架构

2011-06-23
发表者 Venus
暂无评论

文件夹共享设置方法及排错集合

两台新安装的SER03系统,没有安装任何杀毒软件防火墙来做测试。

错误1:

在服务器A中共享一文件夹,没有设置任何权限。在服务器B中访问报错如下:

登录失败:用户账户限制。可能的原因包括不允许空密码,登陆时间限制,或强制的策略限制。

出现这个错误的原因是服务器端的组策略设置问题,禁用空密码登陆。

解决办法: 对当前用户添加密码或修改组策略。

双击“账户:使用空白密码的本地账户只允许进行控制台登陆”设置为”禁用”

在运行中键入”gpupdate /force” 强制刷新组策略生效。

错误2:

当访问共享文件夹,在其中新建文件、文件夹或者复制资料到共享文件夹时,报错,拒绝访问。

另一种出现的错误提示:

出现这个问题,我们要考虑两个问题,第一,本地文件夹权限,第二,共享权限。在这里,我用是管理员账号登陆的,本地权限没问题,问题出现在共享权限上,共享权限为”everyone” 读取,删掉此账号,添加administrator,权限为读取、更改。故障解决。

服务器端会出现的错误:

没有启动服务器服务此时尚未创建共享资源

出现这个问题的原因是没有启动Server服务,这个服务关系到共享的设置。

如果在共享文件夹的时候,找不到共享的选择,那么也是要考虑server服务有没有启动。

开始 运行 输入services.msc 找到server服务,设置为自动并启动即可。

2011-06-23
发表者 Venus
暂无评论

远程SSH linux时终端乱码及文件乱码的解决办法

服务器托管于远程机房,需要调试的时候我们会选择ssh这个服务,服务器端不多说了,主要说下客户端,客户端的软件大都有SSH Secure Shell Client、putty、securityCRT等等,我比较喜欢的是putty,绿色小巧,不到500K,界面单间易用。

如果系统安装选择为中文时,ssh远程进入以后,重启某个服务便显示为乱码。

         终端默认是使用windows的编码方式(GBK),我们需要手动改为UTF-8

再次重启的时候就不会是乱码了:

[root@mail ~]# service httpd restart
停止 httpd:                                               [确定]
启动 httpd:                                               [确定]
[root@mail ~]#

这是终端的乱码问题,再说一下打开中文文件乱码问题。

在很多的配置文件中,含有中文,用vi打开时也是会乱码。首先我们系统中要有中文语言显示包(fonts-chinese),否则改为UTF-8也是会乱码。
[root@mail ~]# cat /etc/sysconfig/i18n
LANG=”zh_CN.UTF-8″
[root@mail ~]#
上面的设置,系统语言为中文,如果想改为英文的话,替换为:

LANG=”en_US.UTF-8″  保存即可。

临时性改变语言:export LANG=en_US.UTF-8

echo $LANG   //查看语言

[root@mail ~]# export LANG=en_US.UTF-8
[root@mail ~]#
[root@mail ~]# echo $LANG
en_US.UTF-8

PS:
yum -y groupinstall chinese-support    安装所有与中文支持相关的包

2011-06-21
发表者 Venus
暂无评论

vsftpd 配置及参数说明

      目标实现:搭建ftp服务器,取消匿名登录,允许本地用户登录,新建用户nq密码nq,锁定家目录为/var/ftpdir,禁止删除文件  

[root@rhel6 ~]# setenforce 0
[root@rhel6 ~]# service iptables stop

[root@rhel6 ~]# yum install -y vsftpd 

[root@rhel6 ~]# useradd nq
[root@rhel6 ~]# passwd nq

anonymous_enable=NO
local_enable=YES
write_enable=YES             //禁止匿名用户,设置本地用户登录

local_root=/var/ftpdir
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=yes

//红色部分为设定根目录,禁止用户切换家目录

write_enable=YES
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT
file_open_mode=0444

//蓝色部分禁止用户删除文件or文件夹

以上为关闭iptable时的配置,现在开启iptables。

vsftpd.conf中追加代码:

pasv_enable=YES
pasv_min_port=3000
pasv_max_port=3005

iptables脚本代码:

#!/bin/bash
iptables -F
iptables -Z
iptables -t nat -F
iptables -t nat -Z
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 3000:3005 -j ACCEPT
iptables -A INPUT -p tcp –dport 20:21 -j ACCEPT

service iptables save
service iptables restart

###############################################################

大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但FTP协议却是例外,它使用双向的多个连接 ,而且使用的端口很难预计。

FTP连接包括:
一个控制连接 (control connection)
这个连接用于传递客户端的命令和服务器端对命令的响应。它使用周知的TCP 21端口,生存期是整个FTP会话时间。

N个数据连接 (data connection)
这些连接用于传输文件和其它数据,例如:目录列表等。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,每次使用的端口也不一定相同。而且,这种数据 连接既可能是客户端发起的,也可能是服务器端发起的。 FTP协议使用一个标准的端口20作为ftp-data端口,但是这个端口只用于连接的源地址是服务器端的情况,在这个端口上根本就没有监听进程。

主动与被动模式

FTP的数据连接和控制连接的方向一般是相反的,即服务器向客户端发起一个用于数据传输的连接。连接的端口是由服务器端和客户端协商确定的,这就是vsftpd的主动模式(port  mod)。FTP协议 的这个特征对iptables防火墙和NAT的配置增加了很多困难。在FTP被动模式 (passive mod)下,数据连接是由客户程序发起的,和主动模式相反。
选择模式的原则

1、client 没有防火墙时,用主动模式连接即可
2、server 没有防火墙时,用被动模式即可
3、双方都有防火墙时,vsftpd 设置被动模式高端口范围,server 打开那段范围,client 用被动模式连接即可

是否采取被动模式取决于客户程序,在ftp命令行中使用passive命令就可以关闭/打开被动模式。

在xp命令行模式下使用ftp命令连接ftp服务器,用的是主动模式。浏览器方式下连接ftp服务器,可以修改访问使用的模式。

iptables中配置vsftp
问题:配置iptables后,能够登录到vsftpd服务器,但ls列目录失败(超时)。

分析:

主动模式 下,客户连接 TCP/21,服务器通过 TCP/20 连接客户的随机端口

――――这种情况下,通过状态防火墙可以解决 iptables -A INPUT -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT或者如下:

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp  -m multiport –dport 20,21  -m state –state NEW -j ACCEPT

NEW: 该包想要开始一个新的连接(重新连接或连接重定向)
RELATED:该包是属于某个已经建立的连接所建立的新连接。如FTP的数据传输连接和控制连接之间就是RELATED关系。
ESTABLISHED:该包属于某个已经建立的连接。
INVALID:该包不匹配于任何连接,通常这些包被DROP。

被动模式 下,客户连接 TCP/21,客户再通过其他端口连接服务器的随机端口,卡住的原因,是因为服务器在被动模式下没有打开临时端口让 client 连过来。
限制被动模式连接端口的方法:

在/etc/vsftpd/vsftpd.conf中添加

pasv_enable=YES

pasv_min_port=2222
pasv_max_port=2225

iptables中开放这段端口

-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT
-A INPUT -p tcp –dport 2222:2225 -j ACCEPT

###############################################################
       vsftpd配置文件采用“#”作为注释符,以“#”开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的“=”两边不要留有空格。对于每个配置命令,在配置文件中还列出了相关的配置说明,利用vi编辑器可实现对配置文件的编辑修改。方法如下:
#vi /etc/vsftpd/vsftpd.conf

192.168.168.0/255.255.255.0 :allow
all:all:denywww.sunflower.org 7000
connect_from_port_20=yes
// 默认值为yes,指定ftp数据传输连接使用20端口。若设置为no,则进行数据连接时,所使用的端口由ftp_data_port指定。

1.登录和对匿名用户的设置
write_enable=yes //是否对登录用户开启写权限。属全局性设置。默认no
local_enable=yes //是否允许本地用户登录ftp服务器。默认为no
anonymous_enable=yes //设置是否允许匿名用户登录ftp服务器。默认为yes
ftp_username=ftp //定义匿名用户的账户名称,默认值为ftp。
no_anon_password=yes //匿名用户登录时是否询问口令。设置为yes,则不询问。默
认no
anon_world_readable_only=yes //匿名用户是否允许下载可阅读的文档,默认为yes。
anon_upload_enable=yes //是否允许匿名用户上传文件。只有在write_enable设置为
yes时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为no。
anon_mkdir_write_enable=yes //是否允许匿名用户创建目录。只有在write_enable设置为 yes时有效。且匿名用户对上层目录有写入的权限。默认为no。
anon_other_write_enable=no //若设置为yes,则匿名用户会被允许拥有多于
上传和建立目录的权限,还会拥有删除和更名权限。默认值为no。

2.设置欢迎信息
用户登录ftp服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
ftpd_banner=welcome to my ftp server.
//该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。
banner_file=/etc/vsftpd/banner
//设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。
dirmessage_enable=yes
//设置是否显示目录消息。若设置为yes,则当用户进入特定目录(比如/var/ftp/linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。
message_file=.message //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

3.设置用户登录后所在的目录
local_root=/var/ftp
// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录ftp服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。
anon_root=/var/ftp
//设置匿名用户登录后所在的目录。若未指定,则默认为/var/ftp目录。

4.控制用户是否允许切换到上级目录
在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入linux系统的根目录,从而可以对整个linux的文件系统进行操作。

若设置了write_enable=yes,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到linux的根目录,相关的配置项如下:
chroot_list_enable=yes
// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为yes                                                 则除了列在/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认no
chroot_list_file=/etc/vsftpd/chroot_list
// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到ftp站点根目录的上级目录。
chroot_local_user=yes
// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认no
注意:要对本地用户查看效果,需先设置local_root=/var/ftp

具体情况有以下几种:
1)当chroot_list_enable=yes,chroot_local_user=yes时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当chroot_list_enable=yes,chroot_local_user=no时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当chroot_list_enable=no,chroot_local_user=yes时,所有用户均不能切换到上级目录。
4)当chroot_list_enable=no,chroot_local_user=no时,所有用户均可以切换到上级目录。
5)当用户不允许切换到上级目录时,登录后ftp站点的根目录“/”是该ftp账户的主目录,即文件的系统的/var/ftp目录。

5.设置访问控制
(1)设置允许或不允许访问的主机(见tbp14)
tcp_wrappers=yes用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为yes,vsftpd服务器会检查/etc/hosts.allow和/etc/hosts.deny中的设置,以决定请求连接的主机是否允许访问该ftp服务器。这两个文件可以起到简易的防火墙功能。
比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:
vsftpd:

(2)设置允许或不允许访问的用户
对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:
userlist_enable=yes
// 决定/etc/vsftpd/user_list文件是否启用生效。yes则生效,no不生效。
userlist_deny=yes
// 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为yes,则/etc/vsftpd/user_list文件中的用户将不允许访问ftp服务器;若设置为no,则只有vsftpd.user_list文件中的用户,才能访问ftp服务器。

6.设置访问速度
anon_max_rate=0
//设置匿名用户所能使用的最大传输速度,单位为b/s。若设置为0,则不受速度限制,此为默认值。
local_max_rate=0
// 设置本地用户所能使用的最大传输速度。默认为0,不受限制。

7.定义用户配置文件
在vsftpd服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。
user_config_dir=/etc/vsftpd/userconf //用于设置用户配置文件所在的目录。
设置了该配置项后,当用户登录ftp服务器时,系统就会到/etc/vsftpd/userconf目录下读取与当前用户名相同的文件,并根据文件中的配置命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义local_max_rate配置,以决定该用户允许的访问速度。

8.与连接相关的设置
listen=yes
//设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为yes,此为默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为no,则vsftpd不是以独立的服务运行,要受xinetd服务的管理控制,功能上会受限制。

max_clients=0
//设置vsftpd允许的最大连接数,默认为0,表示不受限制。若设置为150时,则同时允许有150个连接,超出的将拒绝建立连接。只有在以standalone模式运行时才有效。

max_per_ip=0
// 设置每个ip地址允许与ftp服务器同时建立连接的数目。默认为0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。

listen_address=ip地址
//设置在指定的ip地址上侦听用户的ftp请求。若不设置,则对服务器所绑定的所有ip地址进行侦听。只有在以standalone模式运行时才有效。对于只绑定了一个ip地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个ip地址,则应通过该配置项,指定在哪个ip地址上提供ftp服务,即指定ftp服务器所使用的ip地址。
注意:设置此值前后,可以通过netstat -tnl对比端口的监听情况

accept_timeout=60
//设置建立被动(pasv)数据连接的超时时间,单位为秒,默认值为60。
connect_timeout=60
// port方式下建立数据连接的超时时间,单位为秒。
data_connection_timeout=300
//设置建立ftp数据连接的超时时间,默认为300秒。

idle_session_timeout=600
//设置多长时间不对ftp服务器进行任何操作,则断开该ftp连接,单位为秒,默认为600秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。
pam_service_name=vsftpd
//设置在pam所使用的名称,默认值为vsftpd。

setproctitle_enable=no|yes
//设置每个与ftp服务器的连接,是否以不同的进程表现出来,默认值为no,此时只有一个名为vsftpd的进程。若设置为yes,则每个连接都会有一个vsftpd进程,使用“ps -ef|grep ftp”命令可查看到详细的ftp连接信息。安全起见,建议关闭。

9.ftp工作方式与端口设置
(1)ftp工作方式简介
ftp的工作方式有两种,一种是port ftp,另一种是pasv ftp。下面介绍其工作方式。
二者的区别在于port ftp的数据传输端口是由ftp服务器指定的,而pasv ftp则是由ftp客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在cuteftp等ftp客户端软件中,其连接类型设置项中有port和pasv两种选择。

当ftp服务器设置为pasv工作模式时,客户端也必须设置为pasv连接类型。若客户端连接类型设置为port,则能建立ftp连接,但在执行ls或get等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

(2)与端口相关的配置
listen_port=21
// 设置ftp服务器建立连接所侦听的端口,默认值为21。
连接非标准端口示例:ftp

ftp_data_port=20
//设置port方式下ftp数据连接所使用的端口,默认值为20。
pasv_enable=yes|no
//若设置为yes,则使用pasv工作模式;若设置为no,使用port模式。默认为yes,即使用pasv模式。
pasv_max_port=0
//设置在pasv工作方式下,数据连接可以使用的端口范围的上界。默认值为0,表示任意端口。
pasv_mim_port=0
//设置在pasv工作方式下,数据连接可以使用的端口范围的下界。默认值为0,表示任意端口。

10.设置传输模式
ftp在传输数据时,可使用二进制(binary)方式,也可使用ascii模式来上传或下载数据。
ascii_download_enable=yes //设置是否启用ascii模式下载数据。默认为no。
ascii_upload_enable=yes //设置是否启用ascii模式上传数据。默认为no。

11.设置上传文档的所属关系和权限
(1)设置匿名上传文档的属主
chown_uploads=yes
//用于设置是否改变匿名用户上传的文档的属主。默认为no。若设置为yes,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的用户名。
chown_username=whoever
//设置匿名用户上传的文档的属主名。只有chown_uploads=yes时才有效。建议不要设置为root用户。 但系统默root

(2)新增文档的权限设定
local_umask=022
//设置本地用户新增文档的umask,默认为022,对应的权限为755。umask为022,对应的二进制数为000 010 010,将其取反为111 101 101,转换成十进制数,即为权限值755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022适合于大多数情况,一般不需要更改。若设置为077,则对应的权限为700。
anon_umask=022 //设置匿名用户新增文档的umask。默认077
file_open_mode=0755 //设置上传文档的权限。权限采用数字格式。 默认0666

12.日志文件
xferlog_enable=yes //是否启用上传/下载日志记录。默认为no
xferlog_file=var/log/vsftpd.log //设置日志文件名及路径。需启用xferlog_enable选项
xferlog_std_format=yes //日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式相同) 。默认为no

13.其他设置
text_userdb_names=no
//设置在执行ls命令时,是显示uid、gid还是显示出具体的用户名或组名称。默认为no,以uid和gid方式显示,若希望显示用户名和组名称,则设置为yes。
ls_recurse_enable=yes
//若设置为yes,则允许执行“ls –r”这个命令,默认值为no。在配置文件中该配置项被注释掉了,与此类似的还有一些配置,需要启用时,将注释符去掉并进行yes或no的设置即可。

1、
chroot_list_enable=NO
chroot_local_user=YES—>这样写 所有用户均不能切换到上级目录
2、
chroot_list_enable=NO
chroot_local_user=NO –> 这样写所有用户都可以切换到上级目录

2011-06-21
发表者 Venus
暂无评论

eth0: Transmit timed out, status 0003, PHY status 786d, resetting…

一台N年前的台式机,安装的红帽5.5,启动系统后,报错如下,并且ping不通网关。

messages:

Jun 21 22:05:32 NQ kernel: NETDEV WATCHDOG: eth0: transmit timed out
Jun 21 22:05:32 NQ kernel: eth0: Transmit timed out, status 0003, PHY status 786d, resetting…
Jun 21 22:05:32 NQ kernel: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Jun 21 22:05:36 NQ kernel: NETDEV WATCHDOG: eth0: transmit timed out
Jun 21 22:05:36 NQ kernel: eth0: Transmit timed out, status 0002, PHY status 786d, resetting…
Jun 21 22:05:36 NQ kernel: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Jun 21 22:05:40 NQ kernel: NETDEV WATCHDOG: eth0: transmit timed out
Jun 21 22:05:40 NQ kernel: eth0: Transmit timed out, status 0003, PHY status 786d, resetting…
Jun 21 22:05:40 NQ kernel: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Jun 21 22:05:44 NQ kernel: NETDEV WATCHDOG: eth0: transmit timed out
Jun 21 22:05:44 NQ kernel: eth0: Transmit timed out, status 0003, PHY status 786d, resetting…
Jun 21 22:05:44 NQ kernel: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Jun 21 22:06:22 NQ nm-system-settings:    ifcfg-rh: removed /etc/sysconfig/network-scripts/ifcfg-eth0.

解决办法:

修改grup.conf

在kernel部分后面追加一句; acpi=off noapic

重启解决。

2011-06-20
发表者 Venus
暂无评论

会话中有大量 CLOSE_WAIT

       服务器出现ddos攻击,服务器apache进程数严重超过日常平均数,查看会话状态,有大量的CLOSE_WAIT状态会话。

解决方法:

vi /etc/sysctl.conf
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# 探测次数
net.ipv4.tcp_keepalive_probes=2
# 探测监控秒数
net.ipv4.tcp_keepalive_intvl=2
保存退出后执行:sysctl -p

以上为修改系统参数,告诉内核及时的断掉CLOSE_WAIT会话。

其次在前端防火墙中配置规则,加了一条:

从any来到服务器IP去,每IP并发会话数为100

##以下内容来源于网络搜集

CLOSE_WAIT状态的生成原因首先我们知道,如果我们的Client程序处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是Server端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:

Server —> FIN —> Client

Server <— ACK <— Client

这时候Server端处于FIN_WAIT_2状态;而我们的程序处于CLOSE_WAIT状态。

Server <— FIN <— Client这时Client发送FIN给Server,Client就置为LAST_ACK状态。

Server —> ACK —> Client

Server回应了ACK,那么Client的套接字才会真正置为CLOSED状态。
我们的程序处于CLOSE_WAIT状态,而不是LAST_ACK状态,说明还没有发FIN给Server,那么可能是在关闭连接之前还有许多数据要发送或者其他事要做,导致没有发这个FIN packet。
原因知道了,那么为什么不发FIN包呢,难道会在关闭己方连接前有那么多事情要做吗?还有一个问题,为什么有数千个连接都处于这个状态呢?难道那段时间内,服务器端总是主动拆除我们的连接吗?