Blog

[Hướng dẫn] Cài đặt và Cấu hình IPTABLES

Nếu bạn đã từng tìm hiểu về hệ điều hành Linux và cách bảo mật cho điện toán đám mây xây dựng trên Centos hay Ubuntu, chắc hẳn bạn sẽ từng ít nhất một lần nghe tới IPTABLES. IPTABLES được nhắc tới như một chương trình tiện ích Firewall (hay còn gọi là “Tường lửa”) miễn phí cho hệ điều hành Linux.

Với công dụng giám sát lưu lượng ra vào Server bằng các quy tắc được cấu hình sẵn, IPTABLES sẽ giúp bạn tăng tính bảo mật cho các dịch vụ VPS, Hosting hay Server của bạn. Bài viết hôm nay của Gdata sẽ hướng dẫn các bạn cách Cài đặt và Cấu hình IPTABLES theo một cách đơn giản nhất. Cùng bắt đầu nhé!

Gdata - [Hướng dẫn] Cài đặt và Cấu hình IPTABLES

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

     + Câu lệnh để khởi động dịch vụ:

# sudo systemctl start iptables

– Trên CentOS, mặc định sử dụng tường lửa là Firewall. Để cài đặt dịch vụ, trước tiên phải tắt service Firewall:

# sudo systemctl stop firewall

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

# sudo systemctl disable firewall

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

# 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ệ.

# 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 ACEPT)

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):

Gdata - [Hướng dẫn] Cài đặt và Cấu hình IPTABLES (4)

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

Gdata - [Hướng dẫn] Cài đặt và Cấu hình IPTABLES (3)

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

Gdata - [Hướng dẫn] Cài đặt và Cấu hình IPTABLES (2)

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. Những nguyên tắc cần lưu ý khi sử dụng

Nguyên tắc thứ 1: Trước khi tạo bất cứ một quy tắc nào bạn cần phải tạo một quy tắc 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 quy tắc đã đặt ra từ trên xuống dưới, nếu thỏa mãn thì áp dụng ngay bất kể các quy tắc phía dưới có phù hợp 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 quy tắc đầu tiên 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 ra một quy tắc “tự tử” bằng cách cấm chính mình truy cập vào.

Nguyên tắc thứ 2: Hãy thiết lập sẵn một máy dự phòng và cho phép máy này thao tác từ xa.

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ả như bạn cho phép dải IP ở công ty của bạn access, nhưng bạn đang ở quán cafe và muốn truy cập vào VPS thì sao?

Để tránh tình huống này bạn cần tạo ra một nguyên tắc cho phép một máy dự phòng và bạn sẽ sử dụng máy này để thao tác từ xa. 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.

Chúc các bạn cài đặt và sử dụng thành công!

Nếu bạn còn thắc mắc gì về tường lửa của hệ điều hành Linux, đừng ngần ngại mà liên hệ với Gdata tại:

Hotline (miễn phí): 1800 4814Tư vấn bán hàng: 0966 583 085

Email: lienhe@gdata.com.vn

Website: www.gdata.com.vn

Fanpage: www.facebook.com/gdata.com.vn

  • 07/06/2023
  • 3193 Lượt xem
avatar_author

Tác giả: admin

  1. Đăng ký dùng thử
  2. Zalo chat
  3. Gọi miễn phí