Pro eFTePe

| Thursday, May 24, 2007

Lagi ada tugas buat FTP Server n anonymus FTP Serper..
kalo pake pureftp, setelah baca² ternyata ndak bisa support validuser, jadi kudu dipisah². Padahal ini butuhnya kan validuser bisa - anonymous pun jadi..
Setelah baca manual si proftp ternyata bisa, lha tapi koq ngga sukses² :(.
Setelah semedi, dan mandi air sumur tujuh rupa -enggadink- cuman wajah lecek doank..
Akhirnya oh akhirna.. ini nich setep²nya :

1. Download tarball di
2. Ekstrak tarball n masuk directory proftpd
3. ./configure => --h (sesuaikan dengan mood dan itikad dari hati yg paling dalam)
4. make && make install
5. Edit proftpd.conf

# Server Configuration

ServerName "AdminWannabe FTPServer"
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 100
User nobody
Group nobody
DefaultRoot ~

AllowOverwrite on

<-Anonymous /usr/local/webhosts/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 10
DisplayLogin welcome.msg
DisplayFirstChdir .message
RequireValidShell off

# ini lho biang keroknya.. dr tadi searching² akhirna ketemu jg AnonRequirePassword off


# Limit WRITE everywhere in the anonymous chroot



PyurFTP :P

| Friday, May 11, 2007

Note : diasumsikan bhw mysql telah terinstall
# cd /lib/mysql/
# cp * /usr/lib
Download source pure ftpd - di ekstrak dan masuk ke directorynya
# fetch
# ./configure \
-–prefix=/usr/local/pureftpd \
-–with-mysql=/w3/mysql \
-–with-paranoidmsg \
-–with-shadow \
-–with-welcomemsg \
-–with-uploadscript \
-–with-quotas \
-–with-cookie \
-–with-pam \
-–with-virtualhosts \
-–with-virtualchroot \
-–with-diraliases \
-–with-sysquotas \
-–with-ratios \
-–with-ftpwho \
-–with-throttling \
# make && make install

Then we create an ftp group (”ftpgroup”) and user (”ftpuser”) that all our virtual users will be mapped to. Replace the group- and userid 2001 with a number that is free on your system:
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “pureftpd user” -g ftpgroup ftpuser

Now we create a database called pureftpd and a MySQL user named pureftpd which the PureFTPd daemon will use later on to connect to the pureftpd database:
mysql -u root -p
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@'localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@'localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;

Replace the string ftpdpass with whatever password you want to use for the MySQL user pureftpd. Still on the MySQL shell, we create the database table we need (yes, there is only one table!):
USE pureftpd;
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '10',
Gid varchar(11) NOT NULL default '1010',
Dir varchar(128) NOT NULL default '/usr/local/webhosts',
ULBandwidth smallint(5) NOT NULL default '100',
DLBandwidth smallint(5) NOT NULL default '100',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
UNIQUE KEY User (User)

BTW, (I’m suggesting that the hostname of your ftp server system is you can access phpMyAdmin over (you can also use the IP address instead of in a browser and log in as pureftpd. Then you can have a look at the database. Later on you can use phpMyAdmin to administrate your PureFTPd server.
Configure PureFTPd
#ee /etc/pureftpd-mysql.conf
MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpadmin1
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

# In the following directives, parts of the strings are replaced at
# run-time before performing queries :
# \L is replaced by the login of the user trying to authenticate.
# \I is replaced by the IP address the user connected to.
# \P is replaced by the port number the user connected to.
# \R is replaced by the IP address the user connected from.
# \D is replaced by the remote IP address, as a long decimal number.
# Very complex queries can be performed using these substitution strings,
# especially for virtual hosting.

Make sure that you replace the string ftpdpass with the real password for the MySQL user pureftpd in the line MYSQLPassword! Please note that we use md5 as MYSQLCrypt method, which means we will store the users’ passwords as an MD5 string in the database which is far more secure than using plain text passwords!

ChrootEveryone Yes
CreateHomeDir Yes
MySQLConfigFile /etc/pureftpd-mysql.conf

Now we create the user exampleuser with the status 1 (which means his ftp account is active), the password secret (which will be stored encrypted using MySQL’s MD5 function), the UID and GID 2001 (use the userid and groupid of the user/group you created at the end of step two!), the home directory /home/, an upload and download bandwidth of 100 KB/sec. (kilobytes per second), and a quota of 50 MB:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (’exampleuser’, ‘1′, MD5(’secret’), ‘2001′, ‘2001′, ‘/home/’, ‘100′, ‘100′, ”, ‘*’, ‘50′, ‘0′);

Jalankan pureftp : /usr/local/pureftpd/sbin/ /usr/local/pureftpd/etc/pure-ftpd.conf

trickle moga2 okeee...


Iseng2 nyoba bwlimit & port priority, namanya trickle bisa running di linux, *BSD.
Bismillah.. let's give it a try.. cihuyyyy....

1. Download tarballnya trickle dulu dunk & ekstrak
# fetch
2. Sebelum di install, libevent perlu diinstall dolo kalee...
# fetch

Nah setelah semua terinstall, 2 program akan terinstall yaitu trickle dan trickled.

Trickle bisa digunakan secara instan tanpa konfigurasi script, misalna sbb :
# trickle -d 50 wget
artinya kita melimit 50Kbps u. download via ftp dr situs tsb.

Trickled bisa digunakan dengan konfigurasi dalam file /etc/trickled.conf
# trickled -c /etc/trickled.conf
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 1
Priority = 8
Time-Smoothing = 5
Length-Smoothing = 20
Priority = 2
Time-Smoothing = 0.1
Length-Smoothing = 2

Priorty terendah adalah prioritas utama.

Time smoothing is defined in seconds and is meant to define the time intervals trickled uses to let the application transceive data. The smaller the value, the smoother the session will feel. For example, suppose you limit the FTP transfer to 50Kbps, and have time smoothing set to 1 second. You should get a transfer rate of exactly 50Kbps. If you increase the traffic smoothing number to a higher value (15 seconds, for example), the transfer rate may change between 40 and 60Kbps. With different limitations you'll get different numbers.

Length smoothing defines the smoothing fallback time. That is, if trickled cannot meet the requested smoothing time, it will instead fall back to sending the number of KB of data specified here. If no value is specified, the default is 10Kbps.

You can also use trickled to set global traffic limits, so that you don't need to specify each time the maximum upload and download volumes. For instance, if you want to globally set the download limit to 80Kbps and the upload limit to 10Kbps, you can use a command like:

~# trickled -d 80 -u 10 -s

Note that even when trickled is running, you still need to use trickle binary to run SSH, FTP, HTML, and other commands in order to make traffic shaping work. But when trickled is running, you don't need to specify any parameters to the trickle command.
read the trickle technical paper

Info Hardware

| Wednesday, May 09, 2007

# cat /var/run/dmesg.boot (generic info on devices and drivers attached)
# pciconf -lv (for pci devices)
# usbdevs -v (for usb devices)
# atacontrol list
There are some more specific utilities. For example,> ports/sysutils/dmidecode is somewhat useful.

# uname -m

Determining machine processor architecture:
# uname -p

Determining FreeBSD release level:
# uname -r

Generally, following command is use to get all info at a time:
# uname -mrs
FreeBSD 5.0-RELEASE i386

Determining CPU information such as speed, make etc
# dmesg grep CPU

CPU: Pentium 4 (1716.41-MHz 686-class CPU)
acpi_cpu0: on acpi0
acpi_cpu: CPU throttling enabled, 8 steps from 100% to 12.5%

Determining real and available memory to FreeBSD:
# dmesg grep memory
real memory = 201326592 (192 MB)
avail memory = 188555264 (179 MB)

# sysctl -a grep hw.*mem
# sysctl -a grep mem

hw.physmem: 194985984
hw.usermem: 167641088
hw.cbb.start_memory: 2281701376

Note systcl has more info, just type to see rest of all info
# sysctl -a less

Determining how long a system has been up
# uptime

Determining when a system was last rebooted or shutdown
# last -1 reboot
# last -1 shutdown

Determining swap file system usage
# swapinfo -k

Determining who is logged in and what they are doing
Following all commands can be use. users command displays the list of all logged in users only.

# w
# who
# users

10) Find out when user was last logged in
You can use last command as follows:

# last user-name
(a) To find out user vivek was last logged at what time use last as follows
# last vivek

Update 20/May/2005 See FreeBSD getsysinfo.bash script. It is use to find general FreeBSD system information such as, hostname, OS version, Kernel version, Processor/CPU, Total RAM, System load, network interface, total logged in users, Hard disks, Runlevel etc.