作者:rhp3465483 | 来源:互联网 | 2014-05-28 09:06
centos安装vsftpd:yum-yinstallvsftpd这个过程很快。。。。具体不表。/etc/init.d目录下会生成一个服务程序。[root@webmasterinit.d]#ls*ftp*vsftpd[root@webmasterinit.d]#pwd/etc/init.d[root@webmaster
centos安装vsftpd:
yum -y install vsftpd
这个过程很快。。。。具体不表。
/etc/init.d 目录下会生成一个服务程序。
[root@webmaster init.d]# ls *ftp*
vsftpd
[root@webmaster init.d]# pwd
/etc/init.d
[root@webmaster init.d]# ls *ftp*
vsftpd
一般情况下我只改配置文件的三个地方:1 不允许匿名登录;2 禁止用户列出其他目录;3 设定第2条中指定的用户文件。
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
vi /etc/vsftpd/chroot_list
加入用户,这个用户是linux下的useradd建立的用户。
重启vsftpd。
在本机进行测试:
C:\Users\king>ftp 124.121.222.111
连接到 124.121.222.111。
220 (vsFTPd 2.0.5)
用户(124.121.222.111:(none)): kingdom
331 Please specify the password.
密码:
500 OOPS: chroot
500 OOPS: child died
远程主机关闭连接。
喔!哦!出错了,怀疑是selinux的问题:
# getenforce
Enforcing
哈哈,果不其然。于是执行:
/usr/sbin/setsebool -P ftp_home_dir 1
再试:
C:\Users\>ftp 124.121.222.111
连接到 124.121.222.111。
220 (vsFTPd 2.0.5)
用户(124.121.222.111:(none)): kingdom
331 Please specify the password.
密码:
230 Login successful.
以上情况是在linux服务器没有开防火墙情况下的ftp设置,很简单。但是一般情况下为了安全起见,防火墙是必须有的。那么再来看以下情况(我假设你的网络知识是初级,高级
的可飘过):
添加一条策略并且启动防火墙(21是默认ftp端口):
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp
--dport 21 -j ACCEPT
service iptables start
# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source
destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0
0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source
destination
RH-Firewall-1-INPUT all -- 0.0.0.0/0
0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source
destination
Chain RH-Firewall-1-INPUT (2 references)
target prot opt source
destination
ACCEPT all -- 0.0.0.0/0
0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0
0.0.0.0/0
icmp type 255
ACCEPT esp -- 0.0.0.0/0
0.0.0.0/0
ACCEPT ah -- 0.0.0.0/0
0.0.0.0/0
ACCEPT udp -- 0.0.0.0/0
224.0.0.251
udp dpt:5353
ACCEPT udp -- 0.0.0.0/0
0.0.0.0/0
udp dpt:631
ACCEPT tcp -- 0.0.0.0/0
0.0.0.0/0
tcp dpt:631
ACCEPT all -- 0.0.0.0/0
0.0.0.0/0
state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0
0.0.0.0/0
state NEW tcp dpt:21
可见我们的21端口开了。
再来试试:
ftp> get nginx.conf
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
出错了,能登陆,但是下载不了文件。
看下服务器连接:
tcp 0 0
124.121.222.111:21
118.26.245.134:57903 ESTABLISHED
9624/vsftpd
tcp 0 1
124.121.222.111:20
118.26.245.134:39180 SYN_SENT
9628/vsftpd
被动模式下本机会开放一个随机端口,告诉服务器你过来连我39180端口传输数据吧,但是服务器的20端口是不在防火墙策略里的,所以是SYN_SENT
的状态。
解决办法:添加个端口20的允许策略:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp
--dport 20 -j ACCEPT
service iptables restart
再试试:
ftp> get nginx.conf
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for nginx.conf (1975
bytes).
226 File send OK.
ftp: 收到 1975 字节,用时 0.00秒 1975000.00千字节/秒。