Server

Server

Setup FTP Server under Ubuntu/Debian

โดย Little Bear on 22 ธ.ค. 57 21:35

เก็บไว้ก่อน เดี๋ยวค่อยมาแปลและเขียนใหม่นะครับ

This article contains a brief introduction to set up an FTP-Server under Debian Linux. Activation of an FTP server should be done similarly with other distributions of Linux. Debian 5.0 (x86) was used as the test system.

Contents

  1. Installation of the required proftpd Package
  2. Adjusting the Configuration
  3. Anonymous FTP
  4. Re-loading the Configuration and Re-starting the FTP Server
  5. Links

Installation of the required proftpd Package

ProFTPd FTP-Server was used for this introduction because of its simply installation and configuration.

apt-get install proftpd

If the package cannot be found, update the local list of packages using:

apt-get update

If the package still cannot be installed after that, check the /etc/apt/sources.list on the appropriate Debian mirror server. You will find more information about this in the article Debian Mirror.

Indicate in the subsequent inquiry whether the FTP server should act as a standalone server (standalone) or as a service of inetd. In this example, the standalone option has been selected. Adjusting the Configuration

Our configuration assumes that we will login using system users found in the ftpuser group.

In order to adjust the configuration to your needs, edit the /etc/proftpd/proftpd.conf file.

If you are not using IPv6, this feature should be deactivated first:

UseIPv6 off

After that, we will add the following instruction at the end of the file:

<Global>
&nbsp; &nbsp; RequireValidShell off
</Global>

DefaultRoot ~ ftpuser

<Limit LOGIN>
&nbsp; &nbsp; DenyGroup !ftpuser
</Limit>

What do the instructions mean?

As a first step, we told ProFTPd that users wanting to login do not need a shell. Afterwards, we instructed ProFTPd to lock users in their home directory using DefaultRoot. Finally, we specified that only those users who are members of the ftpuser group could login.

We will now restart our FTP server so that our configuration takes effect:

/etc/init.d/proftpd restart

Then, we will create the ftpuser group and a first user that will be able to login.

addgroup ftpuser

Now, we create the user:

adduser ftpbenutzer -shell /bin/false -home /var/www

Finally, we assign the user to the ftpuser group:

adduser ftpbenutzer ftpuser

That’s everything. You should now be able to login with the user via FTP.

You have to run sudo deluser username groupname to delete a user from it's corresponding group. And run this sudo deluser --group groupname command to delete a group.

Anonymous FTP

By adding the following section to the etc/proftpd/proftpd.conf file, you will also give anonymous users (read) access to the FTP area:

.
.
.
<Anonymous ~ftp>
&nbsp; User&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ftp
&nbsp; Group&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  nogroup
&nbsp; # We want clients to be able to login with "anonymous" as well as "ftp"
&nbsp; UserAlias&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  anonymous ftp
&nbsp; # Cosmetic changes, all files belong to ftp user
&nbsp; DirFakeUser&nbsp;  on ftp
&nbsp; DirFakeGroup on ftp

&nbsp; RequireValidShell&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  off

&nbsp; # Limit the maximum number of anonymous logins
&nbsp; MaxClients&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 10

&nbsp; # We want 'welcome.msg' displayed at login, and '.message' displayed
&nbsp; # in each newly chdired directory.
&nbsp; DisplayLogin&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; welcome.msg
&nbsp; DisplayFirstChdir&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  .message

&nbsp; # Limit WRITE everywhere in the anonymous chroot
&nbsp; <Directory *>
&nbsp; &nbsp; <Limit WRITE>
&nbsp; &nbsp; &nbsp; DenyAll
&nbsp; &nbsp; </Limit>
&nbsp; </Directory>

#&nbsp;  # Uncomment this if you're brave.
#&nbsp;  # <Directory incoming>
#&nbsp;  #&nbsp;  # Umask 022 is a good standard umask to prevent new files and dirs
#&nbsp;  #&nbsp;  # (second parm) from being group and world writable.
#&nbsp;  #&nbsp;  Umask&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  022&nbsp; 022
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Limit READ WRITE>
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DenyAll
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </Limit>
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <Limit STOR>
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AllowAll
#&nbsp;  #&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </Limit>
#&nbsp;  # </Directory>

</Anonymous>
.
.
.

To make sure, that user "ftp" is able to login anonymously to ftp-space, you have to add the user to the group "ftpuser":

adduser ftp ftpuser

Re-loading the Configuration and Re-starting the FTP Server

The configuration will have to be re-loaded after the adjustments to the /etc/proftpd/proftpd.conf file:

/etc/init.d/proftpd reload

Because the FTP server will be stopped when re-loading the configuration, it will also have to be re-started afterwards:

/etc/init.d/proftpd start


Links

ย้ายบ้านให้ MySql

โดย Little Bear on 3 ม.ค. 57 14:42

วันนี้เกิดเหตุ wintesla2003.com หยุดทำงาน โชคดีที่สั่ง reboot ผ่าน DA แล้วสามารถเข้าใช้ ssh ได้ (หลังจากที่เข้า ssh ไม่ได้มาเป็นปี ก็ยังงงอยู่ว่ามันเข้าได้ยังไง โชคดีก็คือไม่ต้องวิ่งไปที่ IDC)

หลังจาก reboot ก็ยังใช้งานไม่ได้ ขณะกำลังหาสาเหตุ ก็นึกได้ว่า server นี้เคยมีปัญหากับ MySql มาครั้งนึงแล้ว คือ partition ที่เก็บข้อมูลเต็ม พอลอง df ดูก็ปรากฎว่าเต็มอีกแล้วจริง ๆ ด้วย

หลังจากลองย้ายบาง folder ออกไป ก็สามารถใช้งานได้ แต่มีบางตารางเสียหาย เลยสั่ง repair ปรากฎว่าเดี้ยงอีก เต็มอีกเหมือนเดิม

เลยตัดสินใจ "ย้ายบ้าน MySql ไปไว้อีก partition"

คำสั่ง

cd /home
mkdir mysql
chown mysql:mysql mysql
cd mysql

perl -pi -e 's/mysqld=ON/mysqld=OFF/' /usr/local/directadmin/data/admin/services.status
/sbin/service mysqld stop

cp -Rp /var/lib/mysql/* .
cd /var/lib
mv mysql mysql_old
ln -s /home/mysql ./mysql

/sbin/service mysqld start
perl -pi -e 's/mysqld=OFF/mysqld=ON/' /usr/local/directadmin/data/admin/services.status

<a class="hashtag" href="/tags/once">#once</a> satisfied that mysqld is running and functioning correctly, remove the old data:

rm -rf mysql_old

ประมาณนี้ (แต่ผมไม่ได้ทำตามนี้เป๊ะ ๆ) คือ ย้ายข้อมูลไปไว้ใน /home แล้วทำ link จาก /var/lib/mysql ให้ชี้ไปที่ /home/mysql

ที่มา directadmin.com

Debian : ปิดการตรวจสอบฮาร์ดดิสอัตโนมัติขณะเปิดเครื่อง

โดย Little Bear on 24 พ.ย. 56 16:50

12.30 น. ผมสั่ง remote reboot server พร้อมความกังวลทุกครั้งที่สั่ง reboot ว่าเครื่องจะเปิดขึ้นหรือเปล่า

12.40 น. นิ่ง ping ไม่เห็น เริ่มเหงื่อตก

12.50 น. เริ่มโทรหา NOC โทรเข้าสำนักงาน ไม่ติด โทรหา จนท.ที่ติดต่อกันอยู่ ได้เบอร์ใหม่ของมือถือ จนท. ดูแลห้อง IDC

13.10 น. จนป่านนี้ จนท. ยังไม่ยอมรับสาย โทรหา จนท. ที่ติดต่อกันอยู่อีกที คาดว่า จนท. ไปกินข้าวกระมัง?

14.00 น. ไม่มีวี่แววว่าใครจะรับสาย

14.30 น. ตัดสินใจบึ่งรถไป IDC (เจอ จนท. บอกว่าไปกินข้าว เพิ่งกลับมา)

14.50 น. เสียบจอ ถอดปลั๊ก (หากุญแจหน้าเครื่องไม่เจอ ไม่รู้ไปเก็บไว้ที่ไหน ลืมแว่นตา เพ่งแล้วเพ่งอีกว่าเครื่องเราเครื่องไหนวะ กลัวถอดสายผิดเครื่อง)

14.55 น. boot แล้ว กำลังตรวจสอบ harddisk /dev/sdb1 0.1% ผ่านไปเกือบนาที 0.2% ตายแน่เลย 10 ชั่วโมงก็ไม่รู้จะเสร็จไหม

14.57 น. CTRL+C , CTRL+D ข้ามไปเลย boot..... complete

15.00 น. web site running

15.05 น. กลับบ้าน

แก้คอนฟิกให้ไม่ต้องเข็ค harddisk ขณะเปิดเครื่องดีกว่า ไม่งั้นแย่แน่ ๆ

แก้ค่าในไฟล์ /etc/fstab

/dev/sdb1 /mntpoint ext3 defaults 1 2

แก้ค่าตัวเลขข้างหลังให้เป็น 0 0

/dev/sdb1 /mntpoint ext3 defaults 0 0

ยังไม่กล้า reboot ไว้ค่อยแวะเข้าไปที่ IDC แล้วค่อยลอง reboot นะ

Update : 2014-07-16

15.30 น. Server down อีกแล้ว

15.50 น. โทรเช็คกับ CAT ทราบว่าเขาเปลี่ยน UPS ทำให้เครื่องดับทั้งหมด OK ให้ช่วยกดเปิดสวิทช์ของ wintesla (เครื่องนี้พอไฟดับ จะไม่ start เอง ต้องมากดปุ่ม power)

15.52 น. Server softganz ยังไม่มา noc บอกว่าไฟ harddisk ติดค้างเลย คาดว่าจะเกิดอาการเดิมคือ เครื่องกำลัง check disk อยู่แน่เลย ให้ noc ช่วยเสียบจอ แต่ server เคสสั้น เสียบจอยาก เลยต้องวิ่งเข้าไปเอง

16.10 น. เอาจอเสียบเข้าไป ปรากฏว่าเป็นอย่างนั้นจริง กำลังเช็คได้ 13% อีกนานกว่าจะเสร็จ

16.20 น. ลองสั่งใหม่ ไม่ให้ check disk ตอนเปิดเครื่อง ด้วยคำสั่ง “tune2fs” ซึ่งเป็นคำสั่งสำหรับเปิดจำนวนการ mout (command to turn off mount count based)

sudo tune2fs -c 0 -i 0 /dev/sdDN

โดย “D” คือ represents the disk และ “N” represents the partition number of the file system

16.22 น. ลอง reboot คราวนี้ไม่เช็คแล้ว ลองปิดเครื่อง แล้วกดสวิทช์เปิดใหม่ ก็ไม่เช็คแล้ว หวังว่าคงหายนะ เพราะอีกไม่นานจะโดนปิดเครื่องเพื่อย้าย server ไปไว้อีกห้อง

16.40 น. กลับบ้านแล้ว

Dabian bandwidth monitoring

โดย Little Bear on 20 พ.ย. 56 12:32

iftop

iftop

vnstat

vnstat -u -i eth0
vnstat
vnstat -hours
vnstat --days

iptstate

iptstate

อีกครั้ง - Make Ubuntu 16.04 to be a web server (LAMP)

โดย Little Bear on 9 ส.ค. 56 23:27

ผ่านไปอีก 3 ปี (August,23 2016 14.12 PM) กับอีก 2 ปี (August,09 2013 23.27 PM) กลับมาเขียนใหม่อีกครั้ง หลังจากผ่าน 2 ปี ที่ได้ลง Ubuntu 13.04 ใหม่ในเครืองตนเอง ถือเป็นการล้างเครื่องและแก้ปัญหาที่เกิดจากการอัพเดทแล้วเกิด dependency ของ mysql-server กับ mysql-server-5.5 แล้วก็ลืมไปแล้วว่าหลังจากลงได้มีการปรับค่าอย่างไรบ้าง

Step 1 : Install [L.A.M.P Stack (Apache, Mysql, PHP

Install L.A.M.P Stack (Apache, Mysql, PHP) ทีเดียวซะเลย

root@god:/# apt-get install lamp-server^

ติดตั้งเพิ่มเติม php7-curl

root@god# apt-get install php-curl

แล้วก็ลง phpMyAdmin

root@god:/# apt-get install phpmyadmin

เลือก Apache แล้ว YES สำหรับ dbconfig-common.

Setup phpMyAdmin

root@god:/# nano /etc/phpmyadmin/config.inc.php

เปลี่ยนค่า

$cfg[‘LoginCookieValidity’] = 3600;

Enable mod_rewrite

root@god:/# a2enmod rewrite

เปลี่ยน DocumentRoot ของ apache เป็น folder อื่น และเปิดใช้งาน clean url

root@god:/# nano /etc/apache2/sites-available/000-default.conf
  • เปลี่ยนบรรทัด /var/www/ เป็น /my web folder/ จำนวน 2 ตำแหน่ง
root@god:/# nano /etc/apache2/apache2.conf
  • แก้ค่า AllowOverride ของ /my web folder/ จาก None เป็น AllowOverride All

Config PHP

nano /etc/php/7.0/apache2/php.ini
post_max_size=1024M
upload_max_filesize = 1024M
display_errors = On

Step 2 : Move mysql data folder to new location and config MySql

ย้ายข้อมูล mysql ไปไว้ที่ /folder/mysql

หมายเหตุ config file ของ mysql อยู่ที่ /etc/mysql/mysql.conf.d/mysqld.cnf

root@god:/# service mysql stop
root@god:/# rsync -av /var/lib/mysql /folder
root@god:/# mv /var/lib/mysql /var/lib/mysql.bak
root@god:/# ln -s /folder/mysql /var/lib/mysql
root@god:/# chown -h mysql:mysql /var/lib/mysql
root@god:/# cp -r (/your/old/mysql/folder) /folder/mysql/
root@god:/# chown -R mysql:mysql /folder/mysql/*

Step 3 : Configuring AppArmor Access Control Rules

nano /etc/apparmor.d/tunables/alias

เปลี่ยนค่า

. . .
alias /var/lib/mysql/ -> /folder/mysql/,
. . .

หรือ

echo "alias /var/lib/mysql/ -> /folder/mysql/," >> /etc/apparmor.d/tunables/alias

Reload the apparmor profiles

root@god:/# /etc/init.d/apparmor reload
root@god:/# /etc/init.d/apparmor restart

Restart mysql

root@god:/# systemctl start mysql

Step 4 : เปลี่ยน default engine เป็น MYISAM โดยเพิ่มข้อความด้านล่างไว้ใต้ [mysqld]

nano /etc/mysql/mysql.conf.d/mysqld.cnf
sql_mode = ''
default-storage-engine=MYISAM
collation-server = utf8_unicode_ci
character-set-server = utf8

แล้วคราวนี้ก็ทำการ copy ฐานข้อมูลเก่า ๆ มาได้เลย อย่าลืมเปลี่ยน owner/group เป็น mysql ด้วยนะ

Step 5 : ติดตั้ง ProFtpd

ตามอ่านได้ที่ Setup FTP Server under Ubuntu/Debian

ปล. ลองศึกษาการ config เพิ่มเติมได้จาก opensource.cc.psu.ac.th

Last edited : Aug 23,2016 14:12 PM

อ้างอิงจาก

Directadmin เข้า port 2222 ไม่ได้

โดย Little Bear on 10 ก.ค. 56 02:13

เข้า DirectAdmin ไม่ได้มาหลายวัน กะว่าจะ restart server แต่ว่า รอก่อน จะทำกลางวัน เผื่อมีปัญหาจะได้วิ่งไป CAT ได้

วันนี้ลองอีกทีด้วยว่า เจอว่า PID file อาจจะไม่ sync ในกรณีนี้ให้บังคับ restart directadmin เลยด้วย

killall -9 directadmin
/etc/init.d/directadmin start

ใช้ได้แฮะ ไม่ต้อง reboot server

นี่แหละน๊า "ปัญหาทุุกอย่าง ไม่จำเป็นต้อง restart server ก็ได้" เนาะ

ที่มา help.directadmin.com

How to update Directadmin by SSH

โดย Little Bear on 26 มิ.ย. 56 10:11

Directadmin มีอัพเดทเวอร์ชั่นใหม่ แต่ผมไม่สามารถเข้า https://www.mydomain.com:2222 ได้ เลยต้อง SSH เข้าไป build เอง

ขั้นตอนคือ

  • SSH เข้าไปที่ server
  • เปลี่ยน directory ไปที่ /usr/local/directadmin/custombuild
  • พิมพ์ : "./build update" เพื่อดึงรายการอัพเดทล่าสุด
  • พิมพ์ : "./build versions" เพื่อดูรายการอัพเดทใหม่พร้อมรายละเอียดเวอร์ชั่นของแต่ละ package และเวอร์ชั่นใหม่ที่ยังไม่ปรับปรุง
  • พิมพ์ : "./build update_versions" เพื่อทำการอัพเดท

เท่านี้แหละ

ที่มา hostjunkies.com

FTP chmod

โดย Little Bear on 16 พ.ค. 56 18:20

เหตุเกิดจากว่า server ที่วางอยู่ใน ม.อ. ไม่อนุญาตให้ FTP จากภายนอกมหาวิทยาลัยได้ ต้องเข้าไปนั่งในมหาวิทยาลัยเท่านั้นจึงจะใช้งาน FTP ได้

แต่เว็บที่ดูแลอยู่มีปัญหาแค่ว่า folder สำหรับ upload ไฟล์นั้นได้ถูกกำหนด permission ไว้ที่ 755 ทำให้ไม่สามารถบันทึกภาพไว้ได้

นั่งคิดอยู่หลายตลบว่าจะทำยังไงดี ไม่อยากบึ่งรถไป ม.อ. ก็มาคิดได้ว่า CMS ที่เขียนไว้นั้น สามารถ run PHP ได้ และ PHP ก็มี function ftp และ ftp_chmod

ทางแก้จึงออกมาประมาณนี้

<?php
$ftp_server = "my.ftp.com";
$ftp_user_name = "myftpusername";
$ftp_user_pass = "myfppassword";

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

$folder="folder/to/chmod";

if (ftp_chmod($conn_id, 0777, $folder) !== false) {
 echo "$folder chmoded successfully to 777\n";
} else {
 echo "could not chmod $folder\n";
}

ftp_close($conn_id);
?>

DirectAdmin system backup

โดย Little Bear on 16 พ.ค. 56 09:09

เคยสำรองข้อมูลบน DirectAdmin ด้วยคำสั่ง CMDSYSTEMBACKUP โดยตั้งเวลาไว้ให้ทำงานตอนตี 5 กว่า (กว่าจะสำรองเสร็จปาเข้าไปเกือบ 10 โมงเช้า) DA ทำสำรองข้อมูลของ MySql ด้วยคำสั่ง mysqldump ทำให้ load เยอะมากจนเว็บล่ม ยังหาทางแก้ปัญหาไม่ได้ ตั้งใจว่าจะแก้ปัญหาชั่วคราวโดยการเปลี่ยนเวลาในการ backup ไปเป็นตอนดึก ๆ แทน

แต่ปัญหาคือจำไม่ได้แล้วว่าเข้าไปกำหนดผ่านทางเมนูไหน (นานมาแล้ว)

และเพิ่งหาเจอว่าอยู่ที่

http://YOUR-IP:2222/CMD_SYSTEM_BACKUP

http://YOUR-IP:2222/CMD_ADMIN_BACKUP

เปลี่ยนเวลาเรียบร้อยแล้ว แต่ค่อยหาทางลด load อีกที

Check backdoor on server

โดย Little Bear on 24 ม.ค. 56 21:06

อ่านเจอใน www.thaihosttalk.com ว่ามีการแทรก eval(based64 ไว้ในไฟล์ต่าง ๆ ในเว็บ เลยลองมาเช็คใน server ปรากฏว่าเจอจริง ๆ ด้วย 2 โดเมน คือ border9025.com และ sadao4u.com

โดยการ

  1. ค้นหาไฟล์ที่ถูกแทรกโค๊ด eval(based64 ด้วยคำสั่ง
grep -lr --include=*.php "eval(base64_decode" /home/(user|*)/domains/*/public_html/

คำสั่งนี้จะแสดงรายชื่อทุกไฟล์ในบัญชีนี้ ที่ถูกแทรกโค๊ด eval ออกมาทั้งหมด แล้วก็เข้าไปลบคำสั่งนั้นออกจากแต่ละไฟล์

  1. ใช้ avgscan /home/user เพื่อหาไฟล์ Backdoor ก่อน โปรแกรม avgscan จะหาพบ และจะบอกว่า มีไฟล์ backdoor เก็บไว้ที่โฟลเดอร์ไหน

ขอบคุณ www.hosttook.com