天天看点

安装及使用vsftpd+ssl

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

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

<code>我的博客已迁移到xdoujiang.com请去那边和我交流</code>

<code>一、基础环境</code>

<code>1、版本</code>

<code>cat</code> <code>/etc/debian_version</code> 

<code>7.8</code>

<code>2、内核</code>

<code>uname</code> <code>-r</code>

<code>3.2.0-4-amd64</code>

<code>3、vsftpd版本</code>

<code>vsftpd: version 2.3.5</code>

<code>4、ip(eth0)</code>

<code>192.168.1.124</code>

<code>5、proftpd官网</code>

<code>vsftpd.beasts.org</code>

<code>6、需求</code>

<code>只允许fileftp用户连接并登录</code><code>ftp</code><code>并锁定在自定义的家目录中 其他系统(匿名)用户不能登录</code><code>ftp</code><code>,监听在本机的eth0地址</code>

<code>二、安装配置vsftpd服务端</code>

<code>1、apt方式安装</code>

<code>apt-get -y </code><code>install</code> <code>vsftpd</code>

<code>2、创建</code><code>ftp</code><code>目录</code>

<code>mkdir</code> <code>/opt/ftp</code> <code>-p</code>

<code>3、创建</code><code>ftp</code><code>账户并修改密码</code>

<code>1)添加fileftp用户</code>

<code>useradd</code> <code>-s </code><code>/bin/false</code> <code>-d </code><code>/opt/ftp</code> <code>fileftp</code>

<code>2)设置密码</code>

<code>echo</code> <code>fileftp:redhat|chpasswd</code>

<code>4、修改配置</code>

<code>1)备份下配置</code>

<code>cp</code> <code>/etc/vsftpd</code><code>.conf </code><code>/etc/vsftpd</code><code>.conf.bak</code>

<code>cp</code> <code>/etc/ftpusers</code> <code>/etc/ftpusers</code><code>.bak</code>

<code>cp</code> <code>/etc/shells</code> <code>/etc/shells</code><code>.bak</code>

<code>2)</code><code>cat</code> <code>/etc/vsftpd</code><code>.conf</code>

<code>listen_port=21</code>

<code>listen_address=192.168.1.124</code>

<code>listen=YES</code>

<code>local_enable=YES</code>

<code>write_enable=YES</code>

<code>local_umask=022</code>

<code>xferlog_enable=YES</code>

<code>dual_log_enable=YES</code>

<code>xferlog_file=</code><code>/var/log/xferlog</code><code>.log</code>

<code>vsftpd_log_file=</code><code>/var/log/vsftpd</code><code>.log</code>

<code>xferlog_std_format=YES</code>

<code>chroot_local_user=YES</code>

<code>pam_service_name=vsftpd</code>

<code>anonymous_enable=NO</code>

<code>local_root=</code><code>/opt/ftp</code>

<code>userlist_enable=YES</code>

<code>userlist_file=</code><code>/etc/vsftpd</code><code>.user_list</code>

<code>userlist_deny=NO</code>

<code>3)配置只能fileftp可以登录</code><code>ftp</code><code>服务</code>

<code>cat</code> <code>/etc/passwd</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>"fileftp"</code><code>|</code><code>awk</code> <code>-F: </code><code>'{print $1}'</code> <code>&gt; </code><code>/etc/ftpusers</code>

<code>4)查看下</code>

<code>cat</code> <code>/etc/ftpusers</code>

<code>root</code>

<code>daemon</code>

<code>bin</code>

<code>sys</code>

<code>sync</code>

<code>games</code>

<code>man</code>

<code>lp</code>

<code>mail</code>

<code>news</code>

<code>uucp</code>

<code>proxy</code>

<code>www-data</code>

<code>backup</code>

<code>list</code>

<code>irc</code>

<code>gnats</code>

<code>nobody</code>

<code>libuuid</code>

<code>sshd</code>

<code>jimmy</code>

<code>messagebus</code>

<code>ftp</code>

<code>5)</code><code>ftp</code><code>会检查</code><code>/etc/shells</code><code>文件,因为上面添加用户时使用的shell是</code><code>/bin/false</code>

<code>echo</code> <code>"/bin/false"</code> <code>&gt;&gt; </code><code>/etc/shells</code>

<code>6)查看下</code>

<code>cat</code> <code>/etc/shells</code>

<code># /etc/shells: valid login shells</code>

<code>/bin/sh</code>

<code>/bin/dash</code>

<code>/bin/bash</code>

<code>/bin/rbash</code>

<code>/bin/false</code>

<code>7)如果没有这个文件 就新建1个文件</code>

<code>echo</code> <code>"fileftp"</code> <code>&gt; </code><code>/etc/vsftpd</code><code>.user_list</code>

<code>5、配置说明</code>

<code>listen_port=21                                 </code><code>#监听端口</code>

<code>listen_address=192.168.1.124                   </code><code>#监听地址</code>

<code>listen=YES                                     </code><code>#使用standalone方式启动服务</code>

<code>local_enable=YES                               </code><code>#使用系统用户登录</code>

<code>write_enable=YES                               </code><code>#允许上传</code>

<code>local_umask=022                                </code><code>#本地用户文件属性</code>

<code>xferlog_enable=YES                             </code><code>#开启日志</code>

<code>xferlog_file=</code><code>/var/log/xferlog</code><code>.log              </code><code>#日志存放地方</code>

<code>xferlog_std_format=YES                         </code><code>#以标准xferlog的格式输出日志</code>

<code>vsftpd_log_file=</code><code>/var/log/vsftpd</code><code>.log            </code><code>#日志存放地方</code>

<code>dual_log_enable=YES                            </code><code>#启用双份日志</code>

<code>chroot_local_user=YES                          </code><code>#限制在家目录中</code>

<code>pam_service_name=vsftpd                        </code><code>#使用pam认证,具体配置看/etc/pam.d/vsftpd</code>

<code>anonymous_enable=NO                            </code><code>#不允许匿名用户登录</code>

<code>local_root=</code><code>/opt/ftp</code>                            <code>#登录的ftp账户的家目录在/opt/ftp</code>

<code>userlist_enable=YES                            </code><code>#启用vsftpd.user_list文件</code>

<code>userlist_file=</code><code>/etc/vsftpd</code><code>.user_list            </code><code>#具体配置文件存放路径</code>

<code>userlist_deny=NO                               </code><code>#在vsftpd.user_list中的用户才可以连接ftp</code>

<code>6、重启vsftpd服务</code>

<code>/etc/init</code><code>.d</code><code>/vsftpd</code> <code>restart</code>

<code>Stopping FTP server: vsftpd.</code>

<code>Starting FTP server: vsftpd.</code>

<code>7、查看端口</code>

<code>netstat</code> <code>-tupnl|</code><code>grep</code> <code>21</code>

<code>tcp        0      0 192.168.1.124:21        0.0.0.0:*               LISTEN      5713</code><code>/vsftpd</code> 

<code>8、查看进程</code>

<code>ps</code> <code>-ef |</code><code>grep</code> <code>vsftpd</code>

<code>root       5713      1  0 10:09 ?        00:00:00 </code><code>/usr/sbin/vsftpd</code>

<code>三、测试</code>

<code>1、安装lftp客户端</code>

<code>apt-get -y </code><code>install</code> <code>lftp</code>

<code>2、创建fileftp传输目录</code>

<code>mkdir</code> <code>/opt/ftp/fileftp</code> <code>-p &amp;&amp; </code><code>cd</code> <code>/opt/ftp/</code> <code>&amp;&amp; </code><code>chown</code> <code>fileftp.fileftp fileftp -R</code>

<code>3、测试登陆(linux下)</code>

<code>lftp fileftp:</code><code>'redhat'</code><code>@192.168.1.124</code>

<code>lftp jimmy:</code><code>'redhat'</code><code>@192.168.1.124</code>

<code>lftp root:</code><code>'redhat'</code><code>@192.168.1.124</code>

<code>lftp 192.168.1.124</code>

<code>4、查看日志(从1台ip为192.168.1.120测试的)</code>

<code>Sat Aug  1 12:33:38 2015 [pid 2] CONNECT: Client </code><code>"192.168.1.120"</code>

<code>Sat Aug  1 12:33:38 2015 [pid 1] [fileftp] OK LOGIN: Client </code><code>"192.168.1.120"</code>

<code>PS:查看到只有fileftp登录成功,root和jimmy和匿名用户都登录失败</code>

<code>5、工具测试</code>

<a href="http://s3.51cto.com/wyfs02/M00/70/BA/wKioL1W8Z4Kj-HzNAAMVM-e8oEQ466.jpg" target="_blank"></a>

<code>四、配置ssl</code>

<code>1、安装包</code>

<code>apt-get -y </code><code>install</code> <code>openssl</code>

<code>2、创建一个证书(时间365天)并填写相关一些信息</code>

<code>openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out </code><code>/etc/ssl/certs/vsftpd</code><code>.pem -keyout </code><code>/etc/ssl/certs/vsftpd</code><code>.pem</code>

<code>Generating a 2048 bit RSA private key</code>

<code>..........+++</code>

<code>.............+++</code>

<code>writing new private key to </code><code>'/etc/ssl/certs/vsftpd.pem'</code>

<code>-----</code>

<code>You are about to be asked to enter information that will be incorporated</code>

<code>into your certificate request.</code>

<code>What you are about to enter is what is called a Distinguished Name or a DN.</code>

<code>There are quite a few fields but you can leave some blank</code>

<code>For some fields there will be a default value,</code>

<code>If you enter </code><code>'.'</code><code>, the field will be left blank.</code>

<code>Country Name (2 letter code) [AU]:CN</code>

<code>State or Province Name (full name) [Some-State]:shanghai</code>

<code>Locality Name (eg, city) []:shanghai</code>

<code>Organization Name (eg, company) [Internet Widgits Pty Ltd]:aaa</code>

<code>Organizational Unit Name (eg, section) []:aaa</code>

<code>Common Name (e.g. server FQDN or YOUR name) []:aaa</code>

<code>Email Address []:</code>

<code>3、修改权限</code>

<code>chmod</code> <code>0400 </code><code>/etc/ssl/certs/vsftpd</code><code>.pem</code>

<code>4、ssl具体配置</code><code>/etc/vsftpd</code><code>.conf最后添加</code>

<code>ssl_enable=YES</code>

<code>rsa_cert_file=</code><code>/etc/ssl/certs/vsftpd</code><code>.pem</code>

<code>ssl_sslv2=YES</code>

<code>ssl_sslv3=YES</code>

<code>ssl_tlsv1=YES</code>

<code>ssl_enable=YES                            </code><code>#开启vsftpd对ssl协议的支持</code>

<code>ssl_sslv2=YES                             </code><code>#支持SSL v2 protocol</code>

<code>ssl_sslv3=YES                             </code><code>#支持SSL v3 protocol</code>

<code>ssl_tlsv1=YES                             </code><code>#支持TSL v1</code>

<code>rsa_cert_file=</code><code>/etc/ssl/certs/vsftpd</code><code>.pem   </code><code>#存放证书地方</code>

<code>6、重启服务</code>

<code>7、测试</code>

<code>1)lftp fileftp:</code><code>'redhat'</code><code>@192.168.1.124</code>

<code>ls</code><code>: Fatal error: Certificate verification: Not trusted</code>

<code>解决在</code><code>/etc/lftp</code><code>.conf文件中添加1行到最后</code>

<code>set</code> <code>ssl:verify-certificate no</code>

<code>再登录一次就OK了</code>

<code>2)查看日志</code>

<code>Sat Aug  1 13:52:23 2015 [pid 2] CONNECT: Client </code><code>"192.168.1.124"</code>

<code>Sat Aug  1 13:52:23 2015 [pid 2] DEBUG: Client </code><code>"192.168.1.124"</code><code>, </code><code>"Connection terminated without SSL shutdown - buggy client?"</code>

<code>Sat Aug  1 13:56:25 2015 [pid 2] CONNECT: Client </code><code>"192.168.1.120"</code>

<code>Sat Aug  1 13:56:25 2015 [pid 1] [fileftp] OK LOGIN: Client </code><code>"192.168.1.120"</code>

<code>8、工具测试(flashfxp)</code>

<a href="http://s3.51cto.com/wyfs02/M00/70/BA/wKioL1W8Z6-DvZdKAAF_eazDch0333.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/70/BD/wKiom1W8ZdWTJ6l2AAGsnFufwBA975.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M01/70/BD/wKiom1W8ZebwhCbeAAJUqbTf_Q4457.jpg" target="_blank"></a>

<code>五、参考文章</code>

<code>http:</code><code>//rajaseelan</code><code>.com</code><code>/2011/12/18/lftp-fatal-error-certificate-verification-not-trusted/</code>

本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1680797,如需转载请自行联系原作者

继续阅读