Wednesday, February 24, 2016

Mount path sshfs (ssh)

ต้องการ Map drive file จากเครื่อง Server มาที่เครื่องตนเองผ่านทาง ssh เพื่อความปลอดภัย

วิธีการ

1. บนเครื่อง Server ต้องติดตั้ง package ต่อไปนี้
   1.1 CentOS
yum -y install fuse-sshfs

   1.2 Debian
apt-get install openssh-server

2. สำหรับเครื่อง Client ที่จะ sshfs เข้าไป ต้องติดตั้ง Package ต่อไปนี้

   2.1 CentOS
yum -y install fuse-sshfs

   2.2 Ubuntu
apt-get install sshfs

3. ที่เครื่อง Client สร้าง Folder ขึ้นมาเพื่อ Map drive

#mkdir /home/user/Downloads

4. สำหรับ Ubuntu เจอปัญหาว่า Map network แล้ว user ไม่สามารถเข้าไปใช้งาน Drive ได้เนื่องจากติดสิทธิ์ Root วิธีแก้ปัญหาคือ
   4.1 แก้ไขไฟล์ /etc/fuse.conf
user_allow_other --> เปิดใช้งาน
   4.2 แก้ไข /etc/modules
fuse --> เพ่ิมเข้าไปบรรทัดล่างสุด
   4.3 ต้อง Restart เครื่องก่อนถึงจะใช้งาน แต่สามารถรันคำส่ง modprobe fuse เพื่อใช้ทดสอบใช้งานได้
#modprobe fuse

Ref.
lylebackenroth

5. การรันคำสั่ง Mount sshfs
   5.1 กรณีต้องการใส่ Password

sshfs user@192.168.0.101:/home/admin/Downloads /home/user/Downloads -p 55xxx -o uid=1000 -o gid=1000 -o allow_other

คำอธิบาย

user= user ที่อยู่เครื่อง Server
@192.168.0.101 คือไอพีเครื่อง Server
:/home/admin/Downloads คือ Path บนเครื่อง Server
/home/user/Downloads คือ Path บนเครื่อง Client (อ้างอิงข้อ 3.)
-p = port ssh เดิมเป็น 22 แต่ server มีการปรับไปใช้ port อื่น เช่น 55xxx
-o uid= user id ของ user local (/etc/passwd)
-o gid= group id ของ user local (/etc/group)
-o allow_other --> เป็นการยอมให้ user local มีสิทธิ์ RW share file ได้ อ้างอิงข้อ 4.1

   5.2 กรณีไม่ต้องการใส่ Password

echo passwords | sshfs user@192.168.0.101:/home/admin/Downloads /home/user/Downloads -p 55xxx -o uid=1000 -o gid=1000 -o allow_other -o password_stdin

คำอธิบายเพิ่มเติม

echo passwords | --> เป็นการใส่ password ที่ใช้ Login ssh
-o password_stdin --> เป็นการอ่านค่า password จาก stdin

Ref.
darklaunch





Friday, February 19, 2016

history on linux

การดู log ว่า user ที่ login เข้าไป ทำอะไรไว้บ้าง ปกติเราจะใช้คำสั่ง history ซึ่งมันก็จะแสดงรายการยาวพรีดออกมาเลย

#history

#history 100  --> แสดงออกมา 100 บรรทัน

ปรับแต่งให้รู้ว่าคำสั่งนั้น ๆ ใช้เมื่อไร ดังนี้

#vim .bashrc

HISTTIMEFORMAT="%Y%m%d %T  "  --> เพิ่มเข้าไปในบรรทัดสุดท้าย

#
เสร็จแล้ว restart 1 ครั้ง แล้วลองเรียกใช้คำสั่งอีกครั้ง

#
ทดสอบบน CentOS

Create alias on linux (command short cut)

การรีโมทย์ ssh แบบสั้นและแทนการที่ต้องพิมพ์ให้ยืดยาว ดังนี้

hades@mail:~/ssh$ alias test_samba='ssh -p port number user@172.16.xx.xx'

เวลาเรียกใช้งาน ให้พิมพ์

hades@mail:~/ssh$ test_samba

Ref.
www.techsuii.com

show alias
#alias

Cancel alias
#unalias term

Ref.
linuxhowtos.org

add alias to Permanent

ให้พิมพ์คำสั่ง alias เข้าไปที่ไฟล์ ~/.bashrc ด้านล่างสุด ดังนี้

alias command1='ssh -p port number root@172.16.xx.xx'
alias command2='ssh  root@172.16.xx.xx'
alias ls='/usr/local/bin/exa-linux-x86_64'

เสร็จแล้วพิมพ์คำสั่ง . ~/.bashrc
แล้วลองเรียกคำสั่ง alias เช็คดูอีกครั้ง
Ref.
askubuntu.com




Thursday, February 18, 2016

ตัด session ssh ที่ login ไว้แล้วเกิดไม่ Response ค้างไม่สามารถใช้งานได้

วิธีแก้ไขปัญหาคือให้กดปุ่ม Enter แล้วพิมพ์ ~.

Reference: ได้มาจากเว็บไซต์
www.techsuii.com

Wednesday, February 10, 2016

วิธีตรวจสอบว่าไฟล์ใดถูกเปิดโดย Process

www.techsuii.com

how to install whatportis on ubuntu

Whatportis คือ เวลาที่เราอยากรู้ว่าพอร์ตนี้คืออะไร เราก็ต้องอาศัย Google ในการค้นหา แต่ถ้าเครื่องเราออกเน็นไม่ได้ล่ะ? โปรแกรม Whatportis จึงรวบรวมพอร์ตต่าง ๆ ไว้ แต่เราต้องติดตั้งโปรแกรมนี้ซะก่อน

การติดตั้ง Whatportis ในอูบันตู มีวิธีดังนี้
1.ติดตั้ง python-pip ดังนี้
sudo apt-get install python-pip

2.ติดตั้ง Whatportis
sudo pip install whatportis

3.ทดสอบเรียกใช้งานโปรแกรม
sudo whatportis redis

ตัวอย่าง

hades@mail:~/Downloads/whatportis$ sudo whatportis redis
+-------+------+----------+---------------------------------------+
| Name  | Port | Protocol | Description                           |
+-------+------+----------+---------------------------------------+
| redis | 6379 |   tcp    | An advanced key-value cache and store |
+-------+------+----------+---------------------------------------+

ตัวอย่าง

hades@mail:~/Downloads/whatportis$ sudo whatportis mysql --like
+----------------+-------+----------+-----------------------------------+
| Name           |  Port | Protocol | Description                       |
+----------------+-------+----------+-----------------------------------+
| mysql-cluster  |  1186 |   tcp    | MySQL Cluster Manager             |
| mysql-cluster  |  1186 |   udp    | MySQL Cluster Manager             |
| mysql-cm-agent |  1862 |   tcp    | MySQL Cluster Manager Agent       |
| mysql-cm-agent |  1862 |   udp    | MySQL Cluster Manager Agent       |
| mysql-im       |  2273 |   tcp    | MySQL Instance Manager            |
| mysql-im       |  2273 |   udp    | MySQL Instance Manager            |
| mysql          |  3306 |   tcp    | MySQL                             |
| mysql          |  3306 |   udp    | MySQL                             |
| mysql-proxy    |  6446 |   tcp    | MySQL Proxy                       |
| mysql-proxy    |  6446 |   udp    | MySQL Proxy                       |
| mysqlx         | 33060 |   tcp    | MySQL Database Extended Interface |
+----------------+-------+----------+-----------------------------------+


Reference:
hackers959

Monday, February 1, 2016

Install CentOS version 6.5

29/01/2016

  1. Install Centos v 6.5 and update base software
    Download CentOs version 6.5 จาก FTP:172.16.0.192 path to downloads:/wwwdata/repodata/iso/centos/6.5/i386 เลือก CentOS-6.5-i386-minimal.iso (ดูภาพด้านล่าง)


ติดต้้ง OS Centos version 6.5 ไว้บนเครื่องโน๊ตบุ๊กตัวเอง VirtualBox ใช้ไอพี 172.16.106.100 และทำการอัพเดตโปรแกรมพื้นฐานและ Service ต่าง ๆ ให้เป็นปัจจุบัน upgrade version 6.5 to 6.7
    #yum update
   

  1. Filter ssh
    คอนฟิก service ssh ซึ่งใช้สำหรับ Remote จากภายนอกเข้ามาควบคุมและจัดการคอนฟิกต่าง ๆ ให้มีความปลอดภัย ดังนี้
    2.1 add user sysadmin เพื่อใช้สำหรับ login ssh ปรับไม่ให้ใช้ root login


    2.2 แก้ไขค่าคอนฟิก ssh ดังนี้
#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak     ---> Backup file config

แก้ไขไฟล์ sshd_config * ลบไฟล์เก่าทิ้งแล้วก็อปปี้ข้อมูลด้านล่างใส่เข้าไปได้เลย
#vi /etc/ssh/sshd_config

-------------------------------------------------------------------------
Port 55001
ListenAddress 0.0.0.0

Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 1024

# Logging
SyslogFacility AUTH
LogLevel INFO

LoginGraceTime 600
PermitRootLogin no
MaxAuthTries 3
MaxSessions 5

RhostsRSAAuthentication no
IgnoreRhosts yes

PermitEmptyPasswords no
PasswordAuthentication yes
AllowUsers sysadmin

ChallengeResponseAuthentication no

GSSAPIAuthentication yes
GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server
--------------------------------------------------------------------------------

[root@dmtest ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[root@dmtest ~]#]# netstat -pnat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:55001               0.0.0.0:*                   LISTEN      1234/sshd         
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1077/master       
tcp        0      0 172.16.106.100:55001        172.16.106.219:51690        ESTABLISHED 1171/sshd         
tcp        0      0 ::1:25                      :::*                        LISTEN      1077/master


  1. Filter iptables
    ปรับ Firewall ภายในเพื่อให้เปิดเฉพาะ service ที่จำเป็นต้องให้บริการ เช่น service ssh สำหรับการรีโมทย์จากภายนอกเข้ามา ส่วน service อื่น ๆ ที่จะติดตั้งในอนาคต ค่อยมา Filter อีกทีนึง
    พิมพ์คำสั่งดังนี้

#cp /etc/sysconfig/iptables /root/iptables   -- Backup file itapbles ก่อนทำการแก้ไข

แล้วพิมพ์คำสั่งต่าง ๆ ดังนี้
#
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 55001 --syn -j ACCEPT
iptables -A INPUT -p tcp --dport 55001 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 55001 -m state --state NEW -m recent --update --seconds 600 --hitcount 3 -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#
**
# เพิ่มเติม ป้องกันการปิง DDos #
#echo 1 > /proc/sys/net/ipv4/tcp_syncookies
#
[root@mailtest ~]# iptables -N syn-flood
[root@mailtest ~]# iptables -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
[root@mailtest ~]# iptables -A syn-flood -j LOG --log-prefix "SYN flood:"
[root@mailtest ~]# iptables -A syn-flood -j DROP
[root@mailtest ~]# iptables -L -v
#
Ref: techsuii
**
เสร็จแล้ว บันทึกค่าคอนฟิก
#
/sbin/service iptables save
#
รีสตาร์ท service iptable เพื่อปรับใช้งาน
#
service  iptables restart
#
เรียกดูผลการปรับค่าคอนฟิก
#
iptables -L -v
#
Chain INPUT (policy DROP 33 packets, 6154 bytes)
pkts bytes target     prot opt in     out     source               destination       
    8   560 ACCEPT     all  --  lo     any     anywhere             anywhere          
1036 96416 ACCEPT     all  --  any    any     anywhere             anywhere            state RELATED,ESTABLISHED
    1    60 ACCEPT     tcp  --  any    any     anywhere             anywhere            tcp dpt:55001 flags:FIN,SYN,RST,ACK/SYN
    0     0            tcp  --  any    any     anywhere             anywhere            tcp dpt:55001 state NEW recent: SET name: DEFAULT side: source
    0     0 DROP       tcp  --  any    any     anywhere             anywhere            tcp dpt:55001 state NEW recent: UPDATE seconds: 600 hit_count: 3 name: DEFAULT side: source
    0     0 ACCEPT     icmp --  any    any     anywhere             anywhere            icmp echo-request

Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination       

Chain OUTPUT (policy ACCEPT 803 packets, 139K bytes)
pkts bytes target     prot opt in     out     source               destination       

Chain RH-Firewall-1-INPUT (0 references)
pkts bytes target     prot opt in     out     source               destination