天天看點

安裝及使用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,如需轉載請自行聯系原作者

繼續閱讀