Sử dụng tường lửa (Firewall) hầu như là việc bắt buộc phải làm khi chúng ta vận hành máy chủ, để chống lại các truy cập bất hợp pháp bằng cách tự thiết lập ra các quy tắc chặn truy cập của riêng chúng ta. Trong các bản phân phối của Linux như CentOS, Ubuntu, Fedora, … có tích hợp sẵn hay cài đặt 1 công cụ để quản lý, cấu hình các quy tắc firewall gọi là IPtables được sử dụng rộng rãi nhất hiện nay nhưng thật khó cấu hình cho các bạn vừa làm quen hệ thống Linux.
1. Làm quen với IPtables
Đầu tiên, chúng ta hãy bắt đầu với việc hiểu ý nghĩa danh sách các rule – quy tắc – tường lửa cần thiết trong mỗi server. Mặc định thì iptables sẽ không có bất cứ rule nào cả.
Theo như hình, chúng ta có các cột như TARGET, PROT, OPT, IN, OUT, SOURCE, DESTINATION, ý nghĩa của mỗi cột là như sau:
- TARGET: Hành động sẽ thực thi cho mỗi chuỗi quy tắc.
- PROT: viết tắt của chữ Protocol – giao thức. Tức là các giao thức sẽ được áp dụng để thực thi quy tắc này.
- Chúng ta có 3 lựa chọn bao gồm: all, tcp hoặc udp. Các ứng dụng như SSH, FTP, sFTP, … đều sử dụng giao thức kiểu tcp.
- IN: Thiết bị mạng nhận kết nối vào được áp dụng cho quy tắc, chẳng hạn như lo, eth0, eth1.
- OUT: Thiết bị mạng phục vụ nhu cầu gửi kết nối ra ngoài được áp dụng quy tắc.
- DESTINATION: Địa chỉ của lượt truy cập được phép áp dụng quy tắc.
Chúng ta cùng nhau giải thích ý ngĩa các hàng ngang trong danh sách như sau:
Ví dụ : Hàng đầu tiên
Ý nghĩa : Chấp nhận toàn bộ kết nối thông qua thiết bị lo – “Loopback Interface“ – là một thiết bị mạng ảo nội bộ, chẳng hạn như IP 127.0.0.1 là kết nối qua thiết bị này.
Ví dụ : Hàng thứ 2
Ý nghĩa : Cho phép giữ lại các kết nối hiện tại : là khi bạn đang ở trong SSH và sửa đổi lại Firewall, hệ thống sẽ không ngắt kết nối của bạn ra khỏi SSH nếu bạn không thỏa mãn quy tắc.
Ví dụ : Hàng thứ 3
Ý nghĩa : Cho phép kết nối vào SSH Server ở bất cứ thiết bị nào, bất cứ ai và bất cứ đâu. Mặc định hệ thống sẽ hiển thị dpt:ssh để diễn đạt port 22 của SSH, nếu bạn có thay đổi port SSH thì hệ thống sẽ hiển thị thông tin port tương ứng.
Ví dụ : Hàng thứ 4
Ý nghĩa : Cho phép kết nối vào cổng 80, mặc định sẽ diễn đạt bằng chữ http.
Ví dụ : Hàng thứ 5
Ý nghĩa : Cho phép kết nối vào cổng 443, mặc định sẽ diễn đạt bằng chữ https.
Ví dụ : Hàng thứ 6
2. Tạo Rule IPtables
Nếu IPtables chưa được thiết lập thì chúng ta thực thi command kiểm tra Filter rule:
1 | iptables -L -v |
Tại đoạn trên, bạn sẽ thấy hệ thống gồm có 3 quy tắc nhỏ (chain) để giúp bạn thiết lập các nguyên tắc lọc gói:
- Forward chain : lọc gói khi đi đến các server khác.
- Input chain : lọc gói khi đi vào trong server.
- Output chain : lọc gói khi ra khỏi server.
3. Lọc các kết nối:
Giả dụ tôi thiết lập một rule đơn giản vào IPtables bằng command:
1 | iptables -A INPUT -i lo -j ACCEPT |
Với ý nghĩa :
- -A INPUT: khai báo kiểu kết nối sẽ được áp dụng (-A nghĩa là Append).
- -i lo: Khai báo thiết bị mạng được áp dụng (-i < interface-name > nghĩa là Interface).
- -j ACCEPT: khai báo hành động sẽ được áp dụng cho quy tắc này (-j < target > nghĩa là Jump).
Kiểm tra Filter rule lần nữa, chắc chắn bạn sẽ thấy rule chúng ta vừa thiết lập đã xuất hiện:
Hoặc ta cùng xem một ví dụ sau :
1 | iptables -A INPUT -s 0/0 -i eth0 -d 192.168.1.1 -p TCP -j ACCEPT |
Với ý nghĩa : IPtables được cấu hình cho phép “firewall” chấp nhận các gói dữ liệu TCP, đến từ card mạng eth0, có bất kỳ địa chỉ IP nguồn đi đến địa chỉ 192.168.1.1 – là địa chỉ IP của firewall. 0/0 nghĩa là bất kỳ địa chỉ IP nào.
4. Lưu lại các kết nối hiện tại:
Tiếp tục bây giờ chúng ta thêm một rule để cho phép lưu lại các kết nối hiện tại để tránh hiện tượng tự block bạn ra khỏi máy chủ.
1 | iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT |
Đoạn trên cấu trúc cũng như rule chúng ta vừa thiết lập ở ví dụ trên nhưng lần này sẽ có thêm hai tham số mới là:
- -m conntrack: Áp dụng cho các kết nối thuộc module “Connection Tracking“ với 4 kiểu kết nối là NEW, ESTABLISHED, RELATED và INVALID. Cụ thể ở rule này chúng ta sẽ sử dụng kiểu RELATED và ESTABLISHED để lọc các kết nối đang truy cập.
- –ctstate RELATED,ESTABLISHED: Khai báo loại kết nối được áp dụng của module “Connection Tracking“.
5. Cho phép truy cập port cụ thể
Chúng ta sử dụng command :
1 2 3 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -j DROP |
Với ý nghĩa :
- -p tcp: Giao thức được áp dụng.
- –dport 22 và –dport 80: Cổng cho phép áp dụng.
- -j DROP : Nhưng sẽ khóa toàn bộ các kết nối còn lại.
6. Bổ sung Rule IPtables
Xuyên suốt phần 2, nếu bạn tinh ý sẽ nhận thấy chúng ta luôn sử dụng tham số -A (nghĩa là Append) để nối một rule mới vào danh sách các rule của IPtables, với mỗi 1 rule mới hệ thống sẽ chèn vào dòng cuối cùng.
Nhưng nếu bạn muốn thêm một quy tắc và sắp xếp vị trí như mong muốn thì phải điều chỉnh tham số thành -I thay cho -A, chẳng hạn như:
1 | iptables -I INPUT 2 -p tcp --dport 443 -j ACCEPT |
Trong đó, -I INPUT 2 là việc chúng tôi đặt rule này vào dòng thứ 2 trong danh sách các rule thuộc loại kết nối INPUT. Cũng xin nêu rõ thêm là port 443 chính là cổng HTTPS/SSL.
7. Xóa Rule IPtables
Trong phần 2C chúng ta đã thiết lập rule cho phép kết nối vào cổng 22 của SSH. Nhưng nếu bạn đã đổi cổng SSH rồi thì dĩ nhiên chúng ta sẽ không cần rule này nữa, vì thé chúng ta cần xóa đi để thêm một rule mới.
Trước khi xóa, quan trọng nhất là bạn cần phải xác định được quy tắc này nằm ở hàng thứ mấy trong loại kết nối (INPUT, OUTPUT,..) bằng việc thực thi command : iptables -L
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere tcp dpt:https ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:http DROP all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination |
Vậy ở đây là chúng ta cần xóa quy tắc số 4 của INPUT:
1 | iptables -D INPUT 4 |
Ngoài ra, nếu bạn muốn xóa toàn bộ các quy tắc chứa hành động DROP thì có thể sử dụng lệnh sau:
1 | iptables -D INPUT -j DROP |
8. Lưu cấu hình IPtables
Sau khi cấu hình xong, bạn phải luôn nhớ gõ lệnh lưu quy tắc và khởi động lại IPtables để hệ thống áp dụng thay đổi.
1 2 | service iptables save service iptables restart |
Mặc dù IPtables còn có thêm nhiều khái niệm khác nữa các bạn có thể tham khảo thêm tại HowTos/Network/Iptables của CentOS để hiểu hơn.
Các bạn cần biết rằng IPtables khá quan trọng nên nếu có thể bạn hãy nắm vững cách sử dụng.
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty