ProFTPd
From DD-WRT Wiki
Revision as of 08:20, 3 May 2007 (edit) Mcpat (Talk | contribs) ← Previous diff |
Revision as of 08:29, 3 May 2007 (edit) (undo) Mcpat (Talk | contribs) Next diff → |
||
Line 15: | Line 15: | ||
Then install proftpd | Then install proftpd | ||
+ | |||
+ | =Installing optware= | ||
+ | |||
+ | Make folder 'opt' in mmc: | ||
+ | |||
+ | <pre>mkdir /mmc/opt</pre> | ||
+ | |||
+ | Mounten von '/mmc/opt' with '/opt': | ||
+ | |||
+ | <pre>mount -o bind /mmc/opt /opt</pre> | ||
+ | |||
+ | Save script 'optware-pre-install.sh' to /opt, change rights to 755 | ||
+ | |||
+ | Starting Script: | ||
+ | |||
+ | <pre>/opt/optware-pre-install.sh</pre> | ||
+ | |||
+ | optware-pre-install.sh: | ||
+ | <pre>#!/bin/sh | ||
+ | # Optware pre-installation script, Leon Kos 2006 | ||
+ | |||
+ | REPOSITORY=http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable | ||
+ | TMP=/tmp | ||
+ | |||
+ | PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin | ||
+ | unset LD_PRELOAD | ||
+ | unset LD_LIBRARY_PATH | ||
+ | |||
+ | _check_config() | ||
+ | { | ||
+ | echo "Checking system config ..." | ||
+ | GATEWAY=$(netstat -rn | | ||
+ | sed -n 's/^0.0.0.0[ \t]\{1,\}\([0-9.]\{8,\}\).*/\1/p' ) | ||
+ | if [ -n "${GATEWAY}" ]; then | ||
+ | echo "Using ${GATEWAY} as default gateway." | ||
+ | else | ||
+ | echo "Error: No default gateway set!" | ||
+ | exit 2 | ||
+ | fi | ||
+ | if [ -s /etc/resolv.conf ]; then | ||
+ | echo "Using the following nameserver(s):" | ||
+ | if grep nameserver /etc/resolv.conf ; then | ||
+ | GATEWAY_SUBNET=$(echo "${GATEWAY}" | | ||
+ | sed 's/\.[0-9]\{1,3\}\.[0-9]\{1,3\}$//') | ||
+ | if [ "${GATEWAY_SUBNET}" = "192.168" ]; then | ||
+ | if grep -q ${GATEWAY} /etc/resolv.conf ; then | ||
+ | echo "Gateway ${GATEWAY} is also nameserver." | ||
+ | else | ||
+ | echo "Warning: local nameserver is different than gateway!" | ||
+ | echo "Check config or enter:" | ||
+ | if test -L /etc/resolv.conf ; then | ||
+ | echo " sed -i s/192.168.*/${GATEWAY}/ /tmp/resolv.conf" | ||
+ | else | ||
+ | echo " sed -i s/192.168.*/${GATEWAY}/ /etc/resolv.conf" | ||
+ | fi | ||
+ | echo "to correct this." | ||
+ | fi | ||
+ | fi | ||
+ | else | ||
+ | echo "Error: No nameserver specified in /etc/resolv.conf" | ||
+ | exit 5 | ||
+ | fi | ||
+ | else | ||
+ | echo "Error: Empty or nonexistent /etc/resolv.conf" | ||
+ | exit 3 | ||
+ | fi | ||
+ | |||
+ | if mount | grep -q /opt ; then | ||
+ | [ -d /opt/etc ] && echo "Warning: /opt partition not empty!" | ||
+ | else | ||
+ | echo "Error: /opt partition not mounted." | ||
+ | echo "Enter" | ||
+ | echo " mkdir /mmc/opt" | ||
+ | echo " mount -o bind /mmc/opt /opt" | ||
+ | echo "to correct this." | ||
+ | exit 4 | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | |||
+ | _install_package() | ||
+ | { | ||
+ | PACKAGE=$1 | ||
+ | echo "Installing package ${PACKAGE} ..." | ||
+ | wget -O ${TMP}/${PACKAGE} ${REPOSITORY}/${PACKAGE} | ||
+ | cd ${TMP} | ||
+ | tar xzf ${TMP}/${PACKAGE} | ||
+ | tar xzf ${TMP}/control.tar.gz | ||
+ | cd / | ||
+ | if [ -f ${TMP}/preinst ] ; then | ||
+ | sh ${TMP}/preinst | ||
+ | rm -f ${TMP}/preints | ||
+ | fi | ||
+ | tar xzf ${TMP}/data.tar.gz | ||
+ | if [ -f ${TMP}/postinst ] ; then | ||
+ | sh ${TMP}/postinst | ||
+ | rm -f ${TMP}/postinst | ||
+ | fi | ||
+ | rm -f ${TMP}/data.tar.gz | ||
+ | rm -f ${TMP}/control.tar.gz | ||
+ | rm -f ${TMP}/control | ||
+ | rm -f ${TMP}/${PACKAGE} | ||
+ | } | ||
+ | |||
+ | _check_config | ||
+ | _install_package uclibc-opt_0.9.28-12_mipsel.ipk | ||
+ | _install_package ipkg-opt_0.99.163-9_mipsel.ipk | ||
+ | /opt/sbin/ldconfig | ||
+ | /opt/bin/ipkg update | ||
+ | /opt/bin/ipkg install -force-reinstall uclibc-opt | ||
+ | /opt/bin/ipkg install -force-reinstall ipkg-opt | ||
+ | </pre> | ||
=Installing xinetd= | =Installing xinetd= |
Revision as of 08:29, 3 May 2007
by mcpat
Contents |
Requirements
First be sure that you have enough memory free. Because of this I describe the installation on SD-cards (/mmc). Additionally this procedure will show how to install even the needed ipkg packages on the SD-card.
It is also possible to replace every occurances of (/mmc) with (/jffs) if you have it enabled.
Preparation
Install first optware!
Then install xinetd
Then install proftpd
Installing optware
Make folder 'opt' in mmc:
mkdir /mmc/opt
Mounten von '/mmc/opt' with '/opt':
mount -o bind /mmc/opt /opt
Save script 'optware-pre-install.sh' to /opt, change rights to 755
Starting Script:
/opt/optware-pre-install.sh
optware-pre-install.sh:
#!/bin/sh # Optware pre-installation script, Leon Kos 2006 REPOSITORY=http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable TMP=/tmp PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/bin:/opt/sbin unset LD_PRELOAD unset LD_LIBRARY_PATH _check_config() { echo "Checking system config ..." GATEWAY=$(netstat -rn | sed -n 's/^0.0.0.0[ \t]\{1,\}\([0-9.]\{8,\}\).*/\1/p' ) if [ -n "${GATEWAY}" ]; then echo "Using ${GATEWAY} as default gateway." else echo "Error: No default gateway set!" exit 2 fi if [ -s /etc/resolv.conf ]; then echo "Using the following nameserver(s):" if grep nameserver /etc/resolv.conf ; then GATEWAY_SUBNET=$(echo "${GATEWAY}" | sed 's/\.[0-9]\{1,3\}\.[0-9]\{1,3\}$//') if [ "${GATEWAY_SUBNET}" = "192.168" ]; then if grep -q ${GATEWAY} /etc/resolv.conf ; then echo "Gateway ${GATEWAY} is also nameserver." else echo "Warning: local nameserver is different than gateway!" echo "Check config or enter:" if test -L /etc/resolv.conf ; then echo " sed -i s/192.168.*/${GATEWAY}/ /tmp/resolv.conf" else echo " sed -i s/192.168.*/${GATEWAY}/ /etc/resolv.conf" fi echo "to correct this." fi fi else echo "Error: No nameserver specified in /etc/resolv.conf" exit 5 fi else echo "Error: Empty or nonexistent /etc/resolv.conf" exit 3 fi if mount | grep -q /opt ; then [ -d /opt/etc ] && echo "Warning: /opt partition not empty!" else echo "Error: /opt partition not mounted." echo "Enter" echo " mkdir /mmc/opt" echo " mount -o bind /mmc/opt /opt" echo "to correct this." exit 4 fi } _install_package() { PACKAGE=$1 echo "Installing package ${PACKAGE} ..." wget -O ${TMP}/${PACKAGE} ${REPOSITORY}/${PACKAGE} cd ${TMP} tar xzf ${TMP}/${PACKAGE} tar xzf ${TMP}/control.tar.gz cd / if [ -f ${TMP}/preinst ] ; then sh ${TMP}/preinst rm -f ${TMP}/preints fi tar xzf ${TMP}/data.tar.gz if [ -f ${TMP}/postinst ] ; then sh ${TMP}/postinst rm -f ${TMP}/postinst fi rm -f ${TMP}/data.tar.gz rm -f ${TMP}/control.tar.gz rm -f ${TMP}/control rm -f ${TMP}/${PACKAGE} } _check_config _install_package uclibc-opt_0.9.28-12_mipsel.ipk _install_package ipkg-opt_0.99.163-9_mipsel.ipk /opt/sbin/ldconfig /opt/bin/ipkg update /opt/bin/ipkg install -force-reinstall uclibc-opt /opt/bin/ipkg install -force-reinstall ipkg-opt
Installing xinetd
Installation of xinetd:
/opt/bin/ipkg install xinetd
Installing proftpd
Installation of proftpd-Server:
/opt/bin/ipkg install proftpd
Config File
Use vi /opt/etc/proftpd.conf to open file
If you would like to use root only use the following:
# This is a basic ProFTPD configuration file (rename it to # 'proftpd.conf' for actual use. It establishes a single server # and a single anonymous login. It assumes that you have a user/group # "nobody" and "ftp" for normal operation and anon. ServerName "ProFTPD Default Installation" # ServerType standalone ServerType inetd DefaultServer on WtmpLog off # Port 21 is the standard FTP port. Port 21 # Umask 022 is a good standard umask to prevent new dirs and files # from being group and world writable. Umask 022 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd). MaxInstances 10 <Global> RootLogin On RequireValidShell off AuthUserFile /etc/passwd AllowOverwrite on AllowRetrieveRestart on AllowStoreRestart on # TransferRate RETR 25 # TransferRate APPE,STOR 100:2048 </Global> # Set the user and group under which the server will run. # User nobody User root Group root # Group nobody # To cause every FTP user to be "jailed" (chrooted) into their home # directory, uncomment this line. #DefaultRoot ~ DefaultRoot /mmc/opt # Normally, we want files to be overwriteable. AllowOverwrite on # Bar use of SITE CHMOD by default <Limit SITE_CHMOD> DenyAll </Limit>
For anon login add the following in your vsftpd.conf file. Before you use this realize you will be giving anon login FULL ACCESS
# A basic anonymous configuration, no upload directories. If you do not # want anonymous users, simply delete this entire <Anonymous> section. <Anonymous ~ftp> User ftp Group ftp # We want clients to be able to login with "anonymous" as well as "ftp" UserAlias anonymous ftp # Limit the maximum number of anonymous logins MaxClients 5 # We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir .message # Limit WRITE everywhere in the anonymous chroot <Limit WRITE> DenyAll </Limit> </Anonymous>
Start script for proftpd (standalone server)
Please set following in the proftpd.conf
ServerType standalone
The following script starts proftpd:
COMING SOON
Don't forget to give the execute privilege (chmod x start).
Start script for proftpd (via xinetd)
The following script starts proftpd:
COMING SOON
Don't forget to give 0644 privilege (chmod 644 proftpd).
Firewall settings
To get the FTP-Server enabled from WAN side add the following line to the firewall section:
/usr/sbin/iptables -I INPUT 1 -p tcp --dport 21 -j logaccept