ProFTPD架站纪录
架过很多次了,但每次总有几张铁板一直踢到...所以决定把纪录留下来,避免到时候又忘了...
- 练习用的FTP站规划:
- 架设一个有登入网域限制的FTP站(允许192.168.1.0/24)。
相关档案:/etc/proftpd/proftpd.conf, /etc/xinetd.d/proftpd
- 开放两个帐号(ftpuser1, ftpuser2),但不允许实体用户(Real User)及匿名用户(Anonymous)登入。
相关档案:/etc/proftpd/proftpd.conf, /etc/proftpd.passwd, /etc/proftpd.group
- 埠号(port)设定为1226。
相关档案:/etc/proftpd/proftpd.conf, /etc/services
- 架设一个有登入网域限制的FTP站(允许192.168.1.0/24)。
- 发行版:
- Linux Ubuntu 2.6.32-33
- 重要档案说明:
- /etc/proftpd/proftpd.conf
这就是ProFTPD主要设定档,里面包山包海管很大。
- /etc/services
里面纪录著各种service常用的埠号,如果你的service要用其他埠号,就要来这里确认不会占用到其他service的埠号,并把原service的设定注解掉,最后在# Local service下方新增你要用的service名称及埠号。不要去改service名称,否则ftp就算可以登入,进入passive mode后也无法顺利连线!
- /etc/xinetd.d/proftpd
(自行创建)xinetd(super daemon)将会按照此设定档的内容来启动ProFTPD。务必使本档内的service名称与/etc/services中所列的名称一致,否则会出现「找不到可用的service port」的错误讯息(见/var/log/syslog)。
- /etc/proftpd.passwd
(自行用ftpasswd(shell script)创建,Optional)如果你要使用Virtual User来使用FTP,要用这个档案来放User资讯,暂时代替passwd。
- /etc/proftpd.group
(自行创建ftpasswd,Optional)如果你要使用Virtual User来使用FTP,要用这个档案来放Group资讯,暂时代替group。
- /etc/ftpusers
禁用FTP的用户名单,倘若以所列之帐号登入会被拒绝连线。本教学不更动此档案,而在proftpd.conf中加入对应的AuthUserFile, AuthGroupFile与AuthOrder参数亦可达到相同效果!
- /etc/proftpd/proftpd.conf
- 步骤:
- 安装xinetd及ProFTPD:
为求方便&不在意反应速度,我想要用xinetd来管理proftpd(也就是用super daemon管daemon),因此安装proftpd时,请选择inetd,而非standalone,我用Synaptic依序安装好xinetd及proftpd之后,
- 先设定好Virtual user及Virtual Group:
# 查询ftp这个user的uid及其group的gid
$ cat /etc/passwd | grep ftp
ftp:x:118:65534::/home/ftp:/bin/false
$ cat /etc/group | grep 65534
nogroup:x:65534:
# 建立ftpuser1及ftpuser2的在FTP的家目录
$ sudo mkdir -p /home/ftp/ftpuser1 /home/ftp/ftpuser2
$ sudo chown ftp:nogroup /home/ftp/ftpuser1 /home/ftp/ftpuser2
# 语法:建立新ftp使用者,并储存到proftpd.passwd
# sudo ftpasswd --passwd --name=$virtual_user --gid=$real_user_gid --uid=$real_user_uid --home=$virtual_user_home --shell=/bin/false --file=/output_file/proftpd.passwd
$ sudo ftpasswd --passwd --name=ftpuser1 --uid=118 --gid=65534 --shell=/bin/false --home=/home/ftp/ftpuser1 --file=/etc/proftpd.passwd
$ sudo ftpasswd --passwd --name=ftpuser1 --uid=118 --gid=65534 --shell=/bin/false --home=/home/ftp/ftpuser2 --file=/etc/proftpd.passwd
# 语法:建立新ftp群组,并储存到proftpd.group
# sudo ftpasswd --group --name=$virtual_group --gid=$real_user_gid --member=virtual_user --file=/output_file/proftpd.group
# 如果你跟我一样想使用系统原group就好,则忽略以下这一行!
$ sudo ftpasswd --group --name=nogroup --gid=65534 --member=ftpuser1 --member=ftpuser2 -file=/etc/proftpd.group
- 接著就来设定/etc/proftpd/proftpd.conf,确认以下的设定:
# 由xinetd管理
ServerType inetd
DefaultServer on
# 使用自制的passwd档
AuthUserFile /etc/proftpd.passwd
# 使用自制的group档
# AuthGroupFile /etc/proftpd.group
# 只使用自制的passwd及group档
AuthOrder mod_auth_file.c
# 不需要有效的shell也能登入FTP,方便Virtual user登入
RequireValidShell off
Port 1226
- 到/etc/xinetd.d建立proftpd起始设定:
$ sudo vim /etc/xinetd.d/proftpd
# 键入以下设定
service ftp
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/proftpd
server_args = -c /etc/proftpd/proftpd.conf
log_on_success += DURATION USERID
log_on_failure += USERID
}
- 再进入/etc/services,注解掉原service port设定,在最后一行输入设定新port:
$ sudo vim /etc/services
...........
#ftp 21/tcp
...........
...........
# Local services
ftp 1226/tcp # ProFTPD (ftp daemon),不要用其他service name!
- 重新启动xinetd吧~这样proftpd就会被跟著启动了:
$ sudo /etc/initd.d/xinetd restart
$ sudo netstat -tlnp | grep 1226
tcp 0 0 0.0.0.0:1226 0.0.0.0:* LISTEN 1171/xinetd
- 一定要设定好防火墙,你可以用Firstarter图形介面设定其实蛮容易的,如果没有Firestarter再用iptable的指令:
$ iptable -A INPUT -s 192.168.1.0/24 -p tcp --dport 1226 -j ACCEP
- 安装xinetd及ProFTPD:
- 参考资料:
- 鸟哥的Linux私房菜
xinetd(super deamon):http://linux.vbird.org/linux_basic/0560daemons.php
ProFTPD:http://linux.vbird.org/linux_server/0410proftpd.php
iptables:http://linux.vbird.org/linux_server/0250simple_firewall.php#netfilter - ProFTPD 虚拟帐号@ 创造心理的感动:http://gisanfu.pixnet.net/blog/post/6501095-proftpd-%E8%99%9B%E6%93%AC%E5%B8%B3%E8%99%9F
- proftpd 如何建立独立帐号:/moto.debian.tw/viewtopic.php?p=35579
- 鸟哥的Linux私房菜
- 延伸资料:
- 鸟哥的Linux私房菜
Virtual Host:http://linux.vbird.org/linux_server/0360apache.php#www_adv_virtual
- 鸟哥的Linux私房菜