ค้นหาเว็บไซต์

วิธีบล็อกการเข้าถึง SSH และ FTP ไปยัง IP และช่วงเครือข่ายเฉพาะใน Linux


โดยปกติแล้วเราทุกคนใช้บริการ SSH และ FTP บ่อยครั้งเพื่อเข้าถึงเซิร์ฟเวอร์ระยะไกลและเซิร์ฟเวอร์ส่วนตัวเสมือน ในฐานะผู้ดูแลระบบ Linux คุณต้องทราบเกี่ยวกับวิธีการบล็อกการเข้าถึง SSH และ FTP ไปยัง IP เฉพาะหรือช่วงเครือข่ายใน Linux เพื่อเพิ่มระดับความปลอดภัยให้มากขึ้น

  1. 25 เคล็ดลับความปลอดภัยที่แข็งแกร่งสำหรับเซิร์ฟเวอร์ Linux
  2. 5 เคล็ดลับที่เป็นประโยชน์ในการรักษาความปลอดภัยและปกป้องเซิร์ฟเวอร์ SSH

บทช่วยสอนนี้จะแสดงวิธีบล็อกการเข้าถึง SSH และ FTP ไปยังที่อยู่ IP เฉพาะและ/หรือช่วงเครือข่ายในเซิร์ฟเวอร์ CentOS 6 และ 7 คู่มือนี้ได้รับการทดสอบบนเวอร์ชัน CentOS 6.x และ 7.x แต่อาจจะใช้งานได้บน Linux รุ่นอื่นๆ เช่น Debian, Ubuntu และ SUSE/openSUSE เป็นต้น

เราจะทำมันในสองวิธี วิธีแรกใช้ IPTables/firewallD และวิธีที่สองใช้ TCP wrappers ด้วยความช่วยเหลือของ hosts.allow และไฟล์ hosts.deny

ดูคำแนะนำต่อไปนี้เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับ IPTables และ Firewalld

  1. คำแนะนำพื้นฐานเกี่ยวกับเคล็ดลับ/คำสั่ง IPTables (Linux Firewall)
  2. วิธีการตั้งค่าไฟร์วอลล์ Iptables เพื่อเปิดใช้งานการเข้าถึงบริการระยะไกลใน Linux
  3. วิธีกำหนดค่า 'FirewallD' ใน RHEL/CentOS 7 และ Fedora 21
  4. กฎ 'FirewallD' ที่เป็นประโยชน์ในการกำหนดค่าและจัดการไฟร์วอลล์ใน Linux

ตอนนี้คุณรู้แล้วว่า IPTables และ FirewallD คืออะไร และเป็นข้อมูลพื้นฐานแล้ว

วิธีที่ 1: บล็อกการเข้าถึง SSH และ FTP โดยใช้ IPTables/FirewallD

ตอนนี้เรามาดูวิธีบล็อกการเข้าถึง SSH และ FTP ไปยัง IP เฉพาะ (เช่น 192.168.1.100) และ/หรือช่วงเครือข่าย (เช่น 192.168.1.0/24) ใช้ IPtables บน RHEL/CentOS/Scientific Linux เวอร์ชัน 6.x และ FirewallD บน CentOS 7.x

บล็อกหรือปิดใช้งานการเข้าถึง SSH

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT

เพื่อให้กฎใหม่มีผลบังคับใช้ คุณต้องใช้คำสั่งต่อไปนี้

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

ตอนนี้ ให้ลอง SSH เซิร์ฟเวอร์จากโฮสต์ที่ถูกบล็อก โปรดทราบว่าที่นี่ 192.168.1.150 คือโฮสต์ที่ถูกบล็อก

ssh 192.168.1.150

คุณควรเห็นข้อความต่อไปนี้

ssh: connect to host 192.168.1.150 port 22: Connection refused

เลิกบล็อกหรือเปิดใช้งานการเข้าถึง SSH

หากต้องการปลดบล็อกหรือเปิดใช้งานการเข้าถึง SSH ให้ไปที่เซิร์ฟเวอร์ระยะไกลแล้วรันคำสั่งต่อไปนี้:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT

บันทึกการเปลี่ยนแปลงโดยใช้สิ่งต่อไปนี้เพื่อเข้าถึงเซิร์ฟเวอร์ของคุณผ่าน SSH

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

บล็อกหรือปิดใช้งานการเข้าถึง FTP

โดยทั่วไป พอร์ตเริ่มต้นสำหรับ FTP คือ 20 และ 21 ดังนั้นหากต้องการบล็อกการรับส่งข้อมูล FTP ทั้งหมดโดยใช้ IPTables ให้รันคำสั่งต่อไปนี้:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT

เพื่อให้กฎใหม่มีผลบังคับใช้ คุณต้องใช้คำสั่งต่อไปนี้

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

ตอนนี้ ให้ลองเข้าถึงเซิร์ฟเวอร์จากโฮสต์ที่ถูกบล็อก (192.168.1.100) ด้วยคำสั่ง:

ftp 192.168.1.150

คุณจะได้รับข้อความแสดงข้อผิดพลาดด้านล่าง

ftp: connect: Connection refused

เลิกบล็อกหรือเปิดใช้งานการเข้าถึง FTP

หากต้องการปลดบล็อกและเปิดใช้งานการเข้าถึง FTP กลับ ให้รัน:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT

บันทึกการเปลี่ยนแปลงด้วยคำสั่ง:

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

ตอนนี้ลองเข้าถึงเซิร์ฟเวอร์ผ่าน FTP:

ftp 192.168.1.150

ป้อนชื่อผู้ใช้และรหัสผ่าน ftp ของคุณ

Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

วิธีที่ 2: บล็อกการเข้าถึง SSH และ FTP โดยใช้ TCP Wrappers

หากคุณไม่ต้องการยุ่งกับ IPTables หรือ FirewallD ตัวห่อ TCP เป็นวิธีที่ดีกว่าในการบล็อกการเข้าถึง SSH และ FTP ไปยังไฟล์เฉพาะ IP และ/หรือช่วงของเครือข่าย

OpenSSH และ FTP ได้รับการคอมไพล์ด้วยการรองรับ TCP wrappers ซึ่งหมายความว่าคุณสามารถระบุโฮสต์ที่ได้รับอนุญาตให้เชื่อมต่อโดยไม่ต้องแตะไฟร์วอลล์ของคุณในไฟล์สำคัญสองไฟล์ต่อไปนี้ และได้แก่:

  1. /etc/hosts.allow
  2. /etc/hosts.deny

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

ตัวอย่างเช่น ให้เราบล็อกการเข้าถึง SSH และ FTP ไปยังโฮสต์ที่มีที่อยู่ IP 192.168.1.100 และช่วงเครือข่าย 192.168.1.0 วิธีการนี้เหมือนกันสำหรับ CentOS 6.x และ 7.x series และแน่นอนว่ามันจะใช้ได้กับดิสทริบิวชั่นอื่น ๆ เช่น Debian, Ubuntu, SUSE, openSUSE เป็นต้น

เปิดไฟล์ /etc/hosts.deny และเพิ่มที่อยู่ IP หรือช่วงเครือข่ายต่อไปนี้ที่คุณต้องการบล็อกดังที่แสดงด้านล่าง

##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0

##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0

บันทึกและออกจากไฟล์.

ตอนนี้รีสตาร์ทบริการ sshd และ vsftpd เพื่อให้การเปลี่ยนแปลงใหม่มีผล

--------------- For SSH Service ---------------
service sshd restart        [On SysVinit]
systemctl restart sshd      [On SystemD]
--------------- For FTP Service ---------------
service vsftpd restart        [On SysVinit]
systemctl restart vsftpd      [On SystemD]

ตอนนี้ให้ลอง SSH เซิร์ฟเวอร์หรือจากโฮสต์ที่ถูกบล็อก

ssh 192.168.1.150

คุณจะเห็นผลลัพธ์ต่อไปนี้:

ssh_exchange_identification: read: Connection reset by peer

ตอนนี้ให้ลอง FTP เซิร์ฟเวอร์หรือจากโฮสต์ที่ถูกบล็อก


ftp 192.168.1.150

คุณจะเห็นผลลัพธ์ต่อไปนี้:

Connected to 192.168.1.150.
421 Service not available.

หากต้องการเลิกบล็อกหรือเปิดใช้งานบริการ SSH และ FTP อีกครั้ง ให้แก้ไขไฟล์ hosts.deny และใส่เครื่องหมายความคิดเห็นทุกบรรทัด และสุดท้ายรีสตาร์ทบริการ vsftpd และ sshd

บทสรุป

นั่นคือทั้งหมดที่สำหรับตอนนี้. โดยสรุป วันนี้เราได้เรียนรู้วิธีบล็อกที่อยู่ IP และช่วงเครือข่ายโดยใช้ IPTables, FirewallD และ Wrapper TCP วิธีการเหล่านี้ค่อนข้างง่ายและตรงไปตรงมา

แม้แต่ผู้ดูแลระบบ Linux มือใหม่ก็สามารถทำได้ภายในไม่กี่นาที หากคุณทราบวิธีอื่นในการบล็อกการเข้าถึง SSH และ FTP โปรดแบ่งปันในส่วนความคิดเห็น และอย่าลืมแบ่งปันบทความของเราในเครือข่ายโซเชียลทั้งหมดของคุณ