Bài đăng nổi bật

Hướng dẫn thay đổi thư mục root mặc định của Docker trên Linux

Hoàn cảnh: người viết gặp một trường hợp như này Được team hạ tầng cấp cho một máy chủ gồm 2 phân vùng lưu trữ, 1 phân vùng 20GB được gắn và...

07 tháng 5, 2014

Cơ bản về tường lửa trên Linux với Iptables

Bài viết này mình chỉ tập trung vào một số kiến thức cơ bản về tường lửa trên Linux với ứng dụng Iptables.
Trước khi đi vào bài viết, có một số note trước khi bắt đầu bạn cần lưu ý:
  • Nguyên tắc áp dụng luật trên Iptables: áp dụng theo thứ tự từ trên xuống, nếu không tìm thấy luật nào thì chuyển sang dòng tiếp theo, nếu khớp với một luật thì iptables sẽ áp dụng luật đó và ngừng kiểm tra dòng tiếp theo.
  • Để sao lưu các luật trong iptables ta dùng lệnh service iptables save, tập tin sao lưu mặc định sẽ nằm ở /etc/sysconfig/iptables.
  • Để khôi phục các luật trong iptables ta dùng lệnh  iptables-restore < /etc/sysconfig/iptables.
Bây giờ ta bắt đầu đi vào tìm hiểu.
Iptables bao gồm 3 tập tin là:
  • /etc/init.d/iptables – là kịch bản điều kiển bao gồm start|stop|restart và save.
  • /etc/sysconfig/iptables – Vị trí sao lưu luật.
  • /sbin/iptables – ứng dụng chạy.
Iptables bao gồm 3 bảng:
  • Filter
  • NAT
  • Mangle
Hiện tại, iptables bao gồm 4 chain:
  • INPUT: dành cho các luồng đi vào hệ thống
  • OUTPUT: dành cho các luồng đi ra từ hệ thống
  • FORWARD: dành cho các luồng đi qua hệ thống từ các giao diện khác (?)
  • RH-Firewall-1-INPUT: luồng do người dùng tự định nghĩa.
Lưu ý: Các thông tin ở trên có thể hơi khác biệt trên các phiên bản hệ điều hành khác nhau.
Để bật, tắt hoặc khởi động lại iptables ta dùng các lệnh như sau:
# /etc/init.d/iptables start 
# /etc/init.d/iptables stop
# /etc/init.d/iptables restart
Để yêu cầu mỗi khi khởi động lại hệ điều hành, iptables tự động được bật ta chạy lệnh sau:
#chkconfig --level 345 iptables on
Để sao lưu các luật trong iptables ta dùng lệnh sau:
#service iptables save
Mặc định dữ liệu sau lưu sẽ nằm tại /etc/sysconfig/iptables. Dữ liệu này có thể dùng để phục hồi lại cho iptables sau này.
Để kiểm tra trạng thái của iptables ta dùng lệnh sau, với -L là liệt kê danh sách luật, -n là hiển thị dưới dạng số, -v là hiển thị chi tiết:
[root@tecmint ~]# iptables -L -n -v

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    6   396 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 5 packets, 588 bytes)
 pkts bytes target     prot opt in     out     source               destination
Để thêm các đánh dấu dòng khi hiển thị trạng thái của iptables ta dùng thêm tùy chọn --line-numbers. Với tham số này ta có thể sử dụng số dòng để thêm, bớt hoặc xoá các luật chỉ định.
[root@tecmint ~]# iptables -n -L -v --line-numbers

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1       51  4080 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 45 packets, 5384 bytes)
num   pkts bytes target     prot opt in     out     source               destination
Để xóa toàn bộ luật trong iptables ta dùng lệnh sau:
[root@tecmint ~]# iptables -F
 Xóa hoặc chèn thêm một luật. Trước tiên ta cần phải hiểu sơ qua các luật trong iptables. Lênh dưới đây sẽ hiển thị tất cả các luật trong INPUT, OUTPUT của iptables, các thông số này sẽ giúp ta có thể dễ dàng xóa hoặc thêm các luật mới:
[root@tecmint ~]# iptables -L INPUT -n --line-numbers

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

[root@tecmint ~]# iptables -L OUTPUT -n --line-numbers
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Giả sử ta muốn xóa luật thứ 5 trong INPUT, ta phải nhập lệnh sau:
[root@tecmint ~]# iptables -D INPUT 5

Giả sử ta muốn thêm một luật vào giữa luật số 4 và 5 của INPUT ta dùng lệnh sau:
[root@tecmint ~]# iptables -I INPUT 5 -s ipaddress -j DROP
Trên đây là những kiến thức cơ bản với iptables. Để có thể hiểu thêm chi tiết về Iptables tôi sẽ mạn phép trình bày ở một bài viết khác.

Không có nhận xét nào:

Đăng nhận xét