Thứ Ba, 8 tháng 11, 2022

CÀI ĐẶT VÀ CẤU HÌNH IPTABLES

Mục lục
  • 1. Cài đặt IPTABLES
  • 2. Cách quản lý của IPTABLES
  • 3. Mở hoặc chặn các port trên IPTABLES
  • 4. Lưu cấu hình IPTABLES
  • 5. Lưu ý quan trọng

Hôm nay tôi sẽ chia sẻ “Cài đặt và cấu hình IPTABLES”.Iptables là một tiện ích tường lửa cực kỳ linh hoạt được xây dựng cho các hệ điều hành Linux. Iptables giám sát lưu lượng ra vào server bằng các rule được cấu hình. Khi một kết nối cố gắng tự thiết lập trên hệ thống của bạn, iptables sẽ tìm một quy tắc trong danh sách của nó để khớp với nó. Nếu không tìm thấy bất kì quy tắc nào có sẵn, thì sẽ áp dụng các rule mặc định với các gói tin.

Iptables thường được cài sẵn trên các server như Debian, Ubuntu,.. Và mặc định không chặn bất kì port nào. Bài viết dưới đây sẽ cho bạn biết thêm một số thông tin hữu ích về tường lửa trên server Linux.

 

1. Cài đặt IPTABLES

 

Để cài đặt IPTABLES ta sử dụng các lệnh sau:

  • Trên Debian, Ubuntu:
sudo apt-get install iptables

Khởi động dịch vụ iptables

sudo systemctl start iptables
  • Trên CentOS, mặc định sử dụng tường lửa là firewalld. Để cài đặt IPTABLES thì trước tiên phải tắt service firewalld:
sudo systemctl stop firewalld

Không cho phép firewalld tự bật khi reboot server:

sudo systemctl disable firewalld

Đảm bảo không cho các dịch vụ khác start firewalld:

sudo systemctl mask --now firewalld

Cài đặt packages iptables-services từ CentOS repositories:

sudo yum install iptables-services

 

  • Khởi động dịch vụ iptables
sudo systemctl start iptables

Bật tự động iptables khi boot server, để đảm bảo server luôn luôn có sự bảo vệ từ iptables.

sudo systemctl enable iptables

Kiểm tra trạng thái iptables đảm bảo nó đang hoạt động:

sudo systemctl status iptables

Sử dụng lệnh sau để hiển thị các rule đang có:

sudo iptables -nvL

root@debian:~# iptables -nL

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy AC
EPT)

target     prot opt source               destination

 

2. Cách quản lý của IPTABLES

 

IPTABLES có 3 cấu hình đó là: INPUT, FORWARD và OUTPUT

  • INPUT: quản lý, cấp phép cho các kết nối từ bên ngoài vào server Linux. Ví dụ như kết nối đến SSH port 22, kết nối Web port 80, 443.
  • FORWARD: Tất cả các gói cần định tuyến và không gửi đến nội bộ đều phải thông qua rule này.
  • OUTPUT: quản lý cho phép các gói tin ra đi ra từ server đến các server khác.

Cách iptables phản hồi các gói tin. Dưới đây là 3 action thông dụng.

  • ACCEPT: cho phép kết nối
  • DROP: kết nối sẽ bị chặn và không có bất kì phản hồi nào cho server gửi đến. Thường được áp dụng cho các IP có hành động tấn công server. Cho các server đó biết là IP này không phản hồi như các IP không tồn tại.
  • REJECT: Không cho phép kết nối, nhưng phản hồi lại lỗi. Điều này là tốt nhất nếu bạn không muốn một nguồn cụ thể kết nối với hệ thống của mình, nhưng bạn muốn họ biết rằng tường lửa của bạn đã chặn họ.

Một ví dụ đơn giản về lệnh Ping:

Cho phép kết nối (ACCEPT):

IPTABLES

Chặn kết nối (DROP):

IPTABLES

Từ chối các kết nối (REJECT):

 IPTABLES

 

 

3. Mở hoặc chặn các port trên IPTABLES

 

Mở port trên Iptables. Chỉ nên mở những port cần thiết và nắm rõ việc hoạt động của các port đó. Những dịch vụ thưởng được mở port INPUT là:

  • SSH : port 22
  • Web: http – 80, https – 443

Nếu là web server thì chỉ nên mở port SSH và Web. Ngoài ra nếu là server chạy hosting hay các dịch vụ mail thì mở các port theo từng service như: SMTPS – 465/587, POP3 – 110, POP3s – 995, MAP – 143 và IMAPs – 993…

Sau khi liệt kê các port cần mở cho server ta dùng lệnh sau để cấu hình:

iptables -A INPUT -p tcp -m tcp --dport xxx -j ACCEPT

Lệnh sau có nghĩa là: A tức Append – chèn vào chuỗi INPUT (chèn xuống cuối), port xxx giao thức TCP

Hoặc sử dụng lệnh sau để không ảnh hưởng đến các rule có sẳn:

iptables -I INPUT -p tcp -m tcp --dport xxx -j ACCEPT

I tức Insert- chèn vào chuỗi INPUT.

Lệnh chặn như sau:

Chặn kết nối từ server có IP là 10.11.12.13

iptables -A INPUT -s 10.11.12.13-j DROP

Chặn kêt nối đến port SSH từ IP 10.11.12.13

iptables -A INPUT -p tcp --dport ssh -s 10.11.12.13 -j DROP

Chặn kết nối đến port SSH

iptables -A INPUT -p tcp --dport ssh -j DROP

Xem lại các rule đã cấu hình bằng lệnh sau:

iptables –L

Nếu muốn xóa tất cả các cấu hình để làm lại thì ta gõ lệnh sau:

iptables -F

 

4. Lưu cấu hình IPTABLES

 

Sau khi đã cấu hình xong các port mở chặn ta tiến hành lưu các rule đã cấu hình vào file.

sudo service iptables save

Các rule sẽ được lưu vào file: /etc/sysconfig/iptables

Hoặc sử dụng lệnh sau để lưu ra một file backup

iptables-save > /usr/src/iptables-rule

Trong trường hợp xấu không mong muốn có thể bạn xóa một rule nào đó dẫn đến mất kết nối dịch vụ. Để khôi phục lại những rule đã tạo từ file backup ta dùng lệnh sau:

iptables-restore < /etc/sysconfig/iptables

iptables-restore < /usr/src/iptables-rule

 

File /etc/sysconfig/iptables-config có chứa một số cấu hình cho dịch vụ iptables. Các bạn cũng nên tìm hiểu một số lệnh trong file này để ứng dụng.

IPTABLES_SAVE_ON_STOP = “no”  Giá trị này nên chuyển thành “yes” khi đó mỗi lần stop iptables (hay là khi tắt máy) thì các rules trong bộ nhớ sẽ được save vào file /etc/sysconfig/iptables để tải lại các lần sau

IPTABLES_SAVE_ON_RESTART =”no”  Giá trị này nếu sửa thành “yes” thì mỗi khi restart dịch vụ iptables, các rules cũng được ghi lại vào file

 

5. Lưu ý quan trọng

 

RULE đầu tiên:

Trước khi tạo bất cứ một rules nào bạn cần phải tạo một rule cho phép chính mình và đặt ở đầu file iptables. Bởi vì mọi firewall đều làm việc theo nguyên tắc duyệt các rule từ trên xuống dưới, nếu thỏa mãn thì áp dụng ngay bất kể các rule bên dưới có match hay không. Vậy nên các trong khi thao tác với iptables, bạn cần biết IP của máy mình đang dùng là gì. Nếu có ip tĩnh thì quá tốt, nếu không thì cũng phải biết dải ip mà ADSL của mình thường xuyên được cấp. Sau đó tạo một rules đầu tiên trong file iptables như sau:

-A INPUT -s 113.123.133.143/32 -j ACCEPT

Trong đó 113.123.133.143 giả định là ip mà máy của bạn đang dùng. Nếu như bạn có một dài IP hay dùng thì thay bằng dòng

-A INPUT -s 113.123.133.0/24 -j ACCEPT

Như vậy bất kể sau đó bạn có khai báo một lệnh DROP hay REJECT nào thì ip của bạn vẫn access được đến server mà không sợ thiết lập rules “tự tử” cấm chính mình.

RULE thứ 2

Cho dù bạn cẩn thận đến đâu, kể cả khi bạn đã áp dụng nguyên tắc thứ nhất thì vẫn có thể bạn không access được vào server, chẳng hạn như bạn đã mở ip của bạn, nhưng mạng của nhà cung cấp dịch vụ lại cấm ip của bạn thì sao? hoặc giả bạn cho phép dải ip ở công ty của bạn access, nhưng bạn đang ở quán cafe wifi và muốn access vào VPS thì sao? Để tránh tình huống này bạn cần tạo ra một rule thứ 2 cho phép một máy dự phòng và máy này thì bạn có thể remote từ xa vào để thao tác. Hãy add thêm dòng lệnh sau vào ngay bên dưới dòng lệnh nêu trên trong file iptables

-A INPUT -s 14.115.112.45/32 -j ACCEPT

trong đó 14.115.112.45 là máy dự phòng để bạn có thể access vào máy chủ khi mà IP thứ nhất bị cấm.

IPTABLES

Chúc bạn thành cô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: 0902912888
⚡️ Skype: tranbinh48ca
👨 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: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Đị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

=============================
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,khóa học pl/sql, 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 dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master