天天看点

proftpd+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

<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、proftpd版本</code>

<code>ProFTPD Version 1.3.4a</code>

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

<code>10.1.10.117服务端</code>

<code>10.1.10.160客户端</code>

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

<code>http:</code><code>//www</code><code>.proftpd.org/</code>

<code>6、需求</code>

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

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

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

<code>apt-get -y </code><code>install</code> <code>proftpd-basic</code>

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

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

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

<code>1)</code><code>useradd</code> <code>-s </code><code>/bin/false</code> <code>fileftp -d </code><code>/opt/ftpdata</code>

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

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

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

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

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

<code>Include                 </code><code>/etc/proftpd/modules</code><code>.conf</code>

<code>RootLogin               off</code>

<code>IdentLookups            off</code>

<code>UseReverseDNS           off</code>

<code>ServerIdent             off</code>

<code>AllowStoreRestart       on</code>

<code>AllowRetrieveRestart    on</code>

<code>ServerName        </code><code>"Debian"</code>

<code>ServerType        standalone</code>

<code>MultilineRFC2228    on</code>

<code>DefaultServer        off</code>

<code>ListOptions                </code><code>"-l"</code>

<code>DenyFilter        \*.*/</code>

<code>DefaultRoot        </code><code>/opt/ftpdata</code>

<code>RequireValidShell    off</code>

<code>DefaultAddress          10.1.10.117</code>

<code>SocketBindTight         on</code>

<code>Port            21</code>

<code>MaxInstances        30</code>

<code>User            proftpd</code>

<code>Group            nogroup</code>

<code>Umask            022  022</code>

<code>AllowOverwrite        on</code>

<code>TransferLog             </code><code>/var/log/proftpd/xferlog</code>

<code>SystemLog               </code><code>/var/log/proftpd/proftpd</code><code>.log</code>

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

<code>Include </code><code>/etc/proftpd/modules</code><code>.conf</code>

<code>RootLogin off                                                </code><code>#禁止root登录</code>

<code>IdentLookups            off                                  </code><code>#禁止DNS反查</code>

<code>UseReverseDNS off                                            </code><code>#禁止DNS反查</code>

<code>ServerIdent off                                              </code><code>#隐藏版本号</code>

<code>AllowStoreRestart on                                         </code><code>#支持上传续传</code>

<code>AllowRetrieveRestart on                                      </code><code>#支持下载续传</code>

<code>ServerName            </code><code>"Debian"</code>                                 <code>#服务器名称</code>

<code>ServerType            standalone                               </code><code>#使用standalone方式启动服务</code>

<code>MultilineRFC2228        on                                   </code><code>#FTP安全扩展</code>

<code>DefaultServer            off                                  </code><code>#关闭默认主机</code>

<code>ListOptions                    </code><code>"-l"</code>                             <code>#</code>

<code>DenyFilter            \*.*/                                    </code><code>#</code>

<code>DefaultRoot            </code><code>/opt/ftpdata</code>                             <code>#锁定在/opt/ftpdata目录中,可以进下一级目录</code>

<code>RequireValidShell        off                                  </code><code>#不指定ftp用户的shell</code>

<code>DefaultAddress        10.1.10.117                            </code><code>#监听地址</code>

<code>SocketBindTight            on</code>

<code>Port                21                                       </code><code>#监听端口</code>

<code>MaxInstances            30                                   </code><code>#最大线程数</code>

<code>User                proftpd                                  </code><code>#以proftpd用户运行</code>

<code>Group                nogroup                                  </code><code>#以nogroup组运行</code>

<code>Umask                022  022                                 </code><code>#用户文件属性</code>

<code>AllowOverwrite            on                                   </code><code>#能重写、覆盖</code>

<code>TransferLog </code><code>/var/log/proftpd/xferlog</code>                         <code>#日志</code>

<code>SystemLog   </code><code>/var/log/proftpd/proftpd</code><code>.log                     </code><code>#日志</code>

<code>6、修改</code><code>/etc/shell</code><code>配置文件增加</code><code>/bin/false</code>

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

<code>7、</code><code>/etc/proftpd/modules</code><code>.conf还需要注释掉1个modules</code>

<code>sed</code> <code>-i </code><code>"s/LoadModule mod_tls_memcache.c/#LoadModule mod_tls_memcache.c/g"</code> <code>/etc/proftpd/modules</code><code>.conf</code>

<code>8、配置</code><code>/etc/ftpusers</code><code>使只能fileftp用户登录</code><code>ftp</code>

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

<code>2)</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>9、重启proftpd服务</code>

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

<code>[ ok ] Stopping </code><code>ftp</code> <code>server: proftpd.</code>

<code>[ ok ] Starting </code><code>ftp</code> <code>server: proftpd.</code>

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

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

<code>tcp        0      0 10.1.10.117:21          0.0.0.0:*               LISTEN      7441</code><code>/proftpd</code><code>: (acce</code>

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

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

<code>proftpd    7441      1  0 15:03 ?        00:00:00 proftpd: (accepting connections)  </code>

<code>三、客户端测试10.1.10.160</code>

<code>1、先安装lftp</code>

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

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

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

<code>3、linux下使用lftp命令测试</code>

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

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

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

<code>lftp 10.1.10.117</code>

<code>4、查看日志可以看到只有fileftp用户可以登录</code>

<code>Aug 05 15:54:14 debian proftpd[7660] 10.1.10.117: ProFTPD killed (signal 15)</code>

<code>Aug 05 15:54:14 debian proftpd[7660] 10.1.10.117: ProFTPD 1.3.4a standalone mode SHUTDOWN</code>

<code>Aug 05 15:54:16 debian proftpd[7733] 10.1.10.117: ProFTPD 1.3.4a (maint) (built Thu Sep 4 2014 14:41:08 UTC) standalone mode STARTUP</code>

<code>Aug 05 15:54:20 debian proftpd[7751] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session opened.</code>

<code>Aug 05 15:54:20 debian proftpd[7751] 10.1.10.117 (10.1.10.160[10.1.10.160]): USER anonymous: no such user found from 10.1.10.160 [10.1.10.160] to 10.1.10.117:21</code>

<code>Aug 05 15:54:23 debian proftpd[7751] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session closed.</code>

<code>Aug 05 15:54:30 debian proftpd[7752] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session opened.</code>

<code>Aug 05 15:54:30 debian proftpd[7752] 10.1.10.117 (10.1.10.160[10.1.10.160]): SECURITY VIOLATION: root login attempted.</code>

<code>Aug 05 15:54:33 debian proftpd[7752] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session closed.</code>

<code>Aug 05 15:54:38 debian proftpd[7753] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session opened.</code>

<code>Aug 05 15:54:40 debian proftpd[7753] 10.1.10.117 (10.1.10.160[10.1.10.160]): USER jimmy (Login failed): User </code><code>in</code> <code>/etc/ftpusers</code>

<code>Aug 05 15:54:40 debian proftpd[7753] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session closed.</code>

<code>Aug 05 15:54:47 debian proftpd[7754] 10.1.10.117 (10.1.10.160[10.1.10.160]): FTP session opened.</code>

<code>Aug 05 07:54:47 debian proftpd[7754] 10.1.10.117 (10.1.10.160[10.1.10.160]): Preparing to chroot to directory </code><code>'/opt/ftpdata'</code>

<code>Aug 05 07:54:47 debian proftpd[7754] 10.1.10.117 (10.1.10.160[10.1.10.160]): USER fileftp: Login successful.</code>

<code>5、工具测试(FlashFXP)</code>

<a href="http://s3.51cto.com/wyfs02/M02/71/01/wKioL1XDWkXRD36zAAJnZSzXKH0425.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/proftpd</code><code>.pem -keyout </code><code>/etc/ssl/certs/proftpd</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/proftpd.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) []:shangahi</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/proftpd</code><code>.pem</code>

<code>4、修改</code><code>/etc/proftpd/proftpd</code><code>.conf支持tls 添加在最后</code>

<code>TLSEngine on</code>

<code>TLSRequired on</code>

<code>TLSProtocol TLSv1 SSLv23</code>

<code>TLSLog </code><code>/var/log/proftpd/tls</code><code>.log</code>

<code>TLSRSACertificateFile </code><code>/etc/ssl/certs/proftpd</code><code>.pem</code>

<code>TLSRSACertificateKeyFile </code><code>/etc/ssl/certs/proftpd</code><code>.pem</code>

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

<code>6、工具测试(FlashFXP)</code>

<a href="http://s3.51cto.com/wyfs02/M02/71/05/wKiom1XDWKTSuTOqAAGGixSVGpw844.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/71/01/wKioL1XDWrCzp2d_AAGFae0ht1Y761.jpg" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/71/05/wKiom1XDWMDyVmi0AAKglAkHstU753.jpg" target="_blank"></a>

<code>7、查看日志</code>

<code>Aug 05 16:11:30 mod_tls</code><code>/2</code><code>.4.3[8577]: using default OpenSSL verification locations (see $SSL_CERT_DIR environment variable)</code>

<code>Aug 05 16:11:30 mod_tls</code><code>/2</code><code>.4.3[8577]: TLS</code><code>/TLS-C</code> <code>requested, starting TLS handshake</code>

<code>Aug 05 16:11:30 mod_tls</code><code>/2</code><code>.4.3[8577]: TLSv1</code><code>/SSLv3</code> <code>connection accepted, using cipher DHE-RSA-AES128-SHA (128 bits)</code>

<code>Aug 05 08:11:31 mod_tls</code><code>/2</code><code>.4.3[8577]: Protection </code><code>set</code> <code>to Private</code>

<code>Aug 05 08:11:31 mod_tls</code><code>/2</code><code>.4.3[8577]: starting TLS negotiation on data connection</code>

<code>Aug 05 08:11:31 mod_tls</code><code>/2</code><code>.4.3[8577]: TLSv1</code><code>/SSLv3</code> <code>renegotiation accepted, using cipher DHE-RSA-AES128-SHA (128 bits)</code>

<code>Aug 05 08:11:31 mod_tls</code><code>/2</code><code>.4.3[8577]: client reused SSL session </code><code>for</code> <code>data connection</code>

<code>Aug 05 08:11:31 mod_tls</code><code>/2</code><code>.4.3[8577]: TLSv1</code><code>/SSLv3</code> <code>data connection accepted, using cipher DHE-RSA-AES128-SHA (128 bits)</code>

<code>Aug 05 16:33:45 mod_tls</code><code>/2</code><code>.4.3[8609]: using default OpenSSL verification locations (see $SSL_CERT_DIR environment variable)</code>

<code>Aug 05 16:33:45 mod_tls</code><code>/2</code><code>.4.3[8609]: SSL</code><code>/TLS</code> <code>required but absent </code><code>for</code> <code>authentication, denying USER </code><code>command</code>

<code>Aug 05 16:33:45 mod_tls</code><code>/2</code><code>.4.3[8610]: using default OpenSSL verification locations (see $SSL_CERT_DIR environment variable)</code>

<code>Aug 05 16:34:48 mod_tls</code><code>/2</code><code>.4.3[8611]: using default OpenSSL verification locations (see $SSL_CERT_DIR environment variable)</code>

<code>Aug 05 16:34:48 mod_tls</code><code>/2</code><code>.4.3[8611]: TLS</code><code>/TLS-C</code> <code>requested, starting TLS handshake</code>

<code>Aug 05 16:34:48 mod_tls</code><code>/2</code><code>.4.3[8611]: client supports secure renegotiations</code>

<code>Aug 05 16:34:48 mod_tls</code><code>/2</code><code>.4.3[8611]: TLSv1</code><code>/SSLv3</code> <code>connection accepted, using cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)</code>

<code>Aug 05 08:35:11 mod_tls</code><code>/2</code><code>.4.3[8611]: Protection </code><code>set</code> <code>to Private</code>

<code>Aug 05 08:35:11 mod_tls</code><code>/2</code><code>.4.3[8611]: starting TLS negotiation on data connection</code>

<code>Aug 05 08:35:11 mod_tls</code><code>/2</code><code>.4.3[8611]: TLSv1</code><code>/SSLv3</code> <code>renegotiation accepted, using cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)</code>

<code>Aug 05 08:35:11 mod_tls</code><code>/2</code><code>.4.3[8611]: client reused SSL session </code><code>for</code> <code>data connection</code>

<code>Aug 05 08:35:11 mod_tls</code><code>/2</code><code>.4.3[8611]: TLSv1</code><code>/SSLv3</code> <code>data connection accepted, using cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)</code>

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

继续阅读