Hôm nay TEL4VN 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):
Chặn kết nối (DROP):
Từ chối các kết nối (REJECT):
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.
Chúc bạn thành công!!!
Thông tin khóa học Linux: tại đây