Bạn Tìm Gì Hôm Nay ...?
Tất cả đều có chỉ trong 1 nốt nhạc !
Nếu cần hỗ trợ chi tiết gọi 1900 9477
iptables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng giúp bạn ngăn chặn các truy cập không hợp lệ. Đối với các bản phân phối Linux như Ubuntu, Fedora, CentOS… bạn có thể tìm thấy công cụ tường lửa tích hợp sẵn iptables. Các thành phần tạo nên iptables là gì?
iptables là một ứng dụng tường lửa có sẵn trên Linux, iptables Linux firewall cho phép người dùng thiết lập các quyền truy cập để kiểm soát lưu lượng một cách chọn lọc trên máy chủ.
Về cơ bản, iptables chỉ là giao diện dòng lệnh để tương tác với packet filtering của netfilter framework. Cơ chế packet filtering của iptables hoạt động gồm 3 thành phần là Tables, Chains và Targets.
Table được iptables sử dụng để định nghĩa các rules(quy tắc) dành cho các gói tin. Trong đó, có các Table sau.
Là một trong những tables được iptables sử dụng nhiều nhất, Filter Table sẽ quyết định việc một gói tin có được đi đến đích dự kiến hay từ chối yêu cầu của gói tin.
Để dùng các rules về NAT(Network Address Translation), NAT Table sẽ có trách nhiệm chỉnh sửa source(IP nguồn) hoặc destination(IP đích) của gói tin khi thực hiện cơ chế NAT.
Cho phép chỉnh sửa header của gói tin, giá trị của các trường TTL, MTU, Type of Service.
iptables là một stateful firewall với các gói tin được kiểm tra liên quan đến trạng thái(state). Ví dụ gói có thể là một phần của một kết nối mới hoặc là một phần của kết nối hiện có. Raw Table sẽ giúp bạn làm việc với các gói tin trước khi kernel bắt đầu kiểm tra trạng thái và có thể loại một số gói khỏi việc tracking vì vấn đề hiệu năng của hệ thống.
Một vài kernel có thể hỗ trợ thêm Security Table, được dùng bởi SELinux để thiết lập các chính sách bảo mật.
Chains được tạo ra với một số lượng nhất định ứng với mỗi Table, giúp lọc gói tin tại các điểm khác nhau.
Target có thể được hiểu là hành động dành cho các gói tin khi gói tin thỏa mãn các rules đặt ra.
Gói tin sẽ được đi qua tất cả các rules đặt ra mà không dừng lại ở bất kì rule nào đúng. Trường hợp gói tin không khớp với rules nào mặc định sẽ được chấp nhận
Tất cả các dữ liệu trong các gói tin gửi đi được định dạng qua internet, Linux kernel sẽ giúp lọc các gói tin này bằng cách mang đến một giao diện sử dụng một bảng các bộ lọc. iptables là ứng dụng dòng lệnh và cũng đồng thời là bức tường lửa Linux cho phép người dùng thiết lập, duy trì và kiểm tra các bảng này.
Người sử dụng có thể tùy ý thiết lập nhiều bảng với mỗi bảng chứa nhiều chuỗi, mỗi chuỗi là một quy tắc. Mỗi quy tắc sẽ định nghĩa việc phải làm với gói tin khi phù hợp với gói đó.
Một target (mục tiêu) sẽ được đưa ra khi có một gói tin được xác định. Target có thể là một chuỗi khác để khớp với một trong các giá trị sau:
Người dùng có thể dùng lệnh sau để xem các rules hiện có trong iptables:
iptables -L –v TARGET PROT OPT IN OUT SOURCE DESTINATION ACCEPT all -- lo any anywhere anywhere ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh ACCEPT tcp -- any any anywhere anywhere tcp dpt:http ACCEPT tcp -- any any anywhere anywhere tcp dpt:https DROP all -- any any anywhere anywhere
iptables -A INPUT -i lo -j ACCEPT
Lệnh này có nghĩa là:
Gõ lại lệnh iptables -L -v bạn sẽ thấy 1 rule mới xuất hiện
after-created-iptables-rule
Sau khi thêm mới hoặc thay đổi gõ lệnh lưu và khởi động lại iptables để áp dụng các thay đổi.
service iptables save service iptables restart
Tiếp tục thêm một rule mới để 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 ra khỏi máy chủ.
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Cho phép các cổng được truy cập từ bên ngoài vào qua giao thức tcp: SSH(22), HTTP(80), HTTPS(443)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
-p tcp : Giao thức được áp dụng (tcp, udp, all)
–dport 22: Cổng cho phép áp dụng. 22 là cho SSH
Cuối cùng, chặn toàn bộ các kết nối truy cập từ bên ngoài vào không thỏa mãn những rule trên. Tương ứng với rule 5 ở trên.
iptables -A INPUT -j DROP
Để chèn 1 rule mới vào 1 vị trí (hàng) nào đó, ví dụ là vị trí thứ 2. Hãy thay tham số -A table bằng tham số INSERT -I.
iptables -I INPUT 2 -p tcp --dport 8080 -j ACCEPT
Để xóa 1 rule mà đã tạo ra tại vị trí 4, ta sẽ sử dụng tham số -D
iptables -D INPUT 4
Xóa toàn bộ các rule chứa hành động DROP có trong iptables:
iptables -D INPUT -j DROP