HƯỚNG DẪN Cài đặt Iptables Firewall trên CentOS 6

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 27/10/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Giới thiệu
    Tường lửa (firewall) là một loại công cụ an ninh mạng để điều khiển lưu lượng mạng inbound và outbound theo bộ quy tắc được xác định trước của nó. Chúng tôi có thể sử dụng một tường lửa cùng với các biện pháp an toàn khác để bảo vệ các máy chủ của chúng tôi khỏi các cuộc tấn công của các hacker.
    Các thiết kế của một tường lửa có thể là phần cứng chuyên dụng hoặc một chương trình phần mềm chạy trên máy của chúng tôi. Trên CentOS 6, chương trình tường lửa mặc định là iptables.
    Trong bài viết này, tôi sẽ cho bạn thấy làm thế nào để thiết lập một bức tường lửa iptables cơ bản, nó sẽ giúp ngăn chặn tất cả lưu lượng trừ các dịch vụ web, SSH, NTP, DNS, và ping. Tuy nhiên, đây chỉ là một cấu hình sơ bộ, đáp ứng nhu cầu an ninh chung. Bạn sẽ cần một cấu hình iptables phức tạp hơn nếu bạn có yêu cầu thêm.

    Chú thích:
    Nếu bạn thêm một địa chỉ IPv6 cho máy chủ của bạn, bạn cũng nên thiết lập các dịch vụ ip6tables. Cấu hình ip6tables nằm ngoài phạm vi của bài viết này.
    Không giống như CentOS 6, iptables không còn là chương trình tường lửa mặc định trên CentOS 7, và đã được thay thế bằng một chương trình gọi là firewalld. Nếu bạn đang có kế hoạch sử dụng CentOS 7, bạn sẽ cần phải thiết lập tường lửa của bạn sử dụng firewalld.

    Đăng nhập vào root.
    Bước 1: Xác định các dịch vụ và các cổng được sử dụng trên máy chủ của bạn
    Tôi giả sử rằng máy chủ này sẽ chỉ được dùng blog WordPress, và nó sẽ không được sử dụng như một bộ định tuyến hoặc cung cấp các dịch vụ khác (ví dụ, mail, FTP, IRC, vv).

    Ở đây, chúng ta cần các dịch vụ sau:
    HTTP (TCP trên cổng 80)
    HTTPS (TCP trên cổng 443)
    SSH (TCP trên cổng 22 theo mặc định, có thể được thay đổi cho mục đích an ninh)
    NTP (UDP trên cổng 123)
    DNS (TCP và UDP trên cổng 53)
    ping (ICMP)
    Tất cả các cổng không cần thiết khác sẽ bị chặn.

    Bước 2: Cấu hình các quy tắc iptables
    Iptables điều khiển lưu lượng với một danh sách các quy tắc. Khi các gói tin mạng được gửi đến máy chủ của chúng tôi, iptables sẽ kiểm tra chúng bằng cách sử dụng từng quy tắc trong trình tự và có những hành động phù hợp.
    Nếu một quy tắc được đáp ứng, các quy định khác sẽ bị bỏ qua. Nếu không có quy tắc được đáp ứng, iptables sẽ sử dụng chính sách mặc định.
    Tất cả lưu lượng truy cập có thể được phân loại như là INPUT, OUTPUT, và Forward.
    • Lưu lượng Input có thể là bình thường hoặc nguy hiểm, nên được cho phép chọn lọc.
    • Lưu lượng OUTPUT thường được coi là an toàn và được phép.
    • Lưu lượng Forward là không có lợi gì và nên bị cấm.
    Bây giờ, chúng ta hãy cấu hình các quy tắc iptables theo nhu cầu của chúng tôi. Tất cả các lệnh sau đây cần được nhập từ thiết bị đầu cuối SSH của bạn như root.
    Kiểm tra các quy định hiện hành:
    Mã:
    iptables -L -n
    Flush tất cả các quy định hiện hành:
    Mã:
    iptables -F; iptables -X; iptables -Z
    Kể từ khi thay đổi cấu hình iptables sẽ có hiệu lực ngay lập tức, nếu bạn quên cấu hình các quy tắc iptables, bạn có thể bị chặn trên các máy chủ của bạn. Bạn có thể ngăn accidental blockouts với các lệnh sau đây. Nhớ thay [Your-IP-Address] với dải địa chỉ IP công cộng hoặc địa chỉ IP của bạn (ví dụ, 201.55.119.43 hoặc 201.55.119.0/24).
    Mã:
    iptables -A INPUT -s [Your-IP-Address] -p tcp --dport 22 -j ACCEPT
    Cho phép tất cả lưu lượng loopback (lo) và drop tất cả lưu lượng với 127.0.0.0/8:
    Mã:
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -d 127.0.0.0/8 -j REJECT
    
    Ngăn chặn một số cuộc tấn công phổ biến:
    Mã:
    iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
    
    Chấp nhận tất cả các kết nối inbound:
    Mã:
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    Cho phép HTTP và lưu lượng inbound HTTPS:
    Mã:
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
    Cho phép kết nối SSH:
    Mã:
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    Cho phép kết nối NTP:
    Mã:
    iptables -A INPUT -p udp --dport 123 -j ACCEPT
    Cho phép truy vấn DNS
    Mã:
    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    iptables -A INPUT -p tcp --dport 53 -j ACCEPT
    
    Cho phép ping:
    Mã:
    iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
    Cuối cùng, thiết lập chính sách mặc định:
    Mã:
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD DROP
    
    Bước 3: Lưu cấu hình
    Mỗi lệnh mà chúng tôi thực hiện ở trên đã có hiệu lực, nhưng chúng không phải là vĩnh viễn. Nếu chúng ta không lưu chúng vào đĩa cứng, chúng sẽ bị mất một khi hệ thống khởi động lại.
    Lưu cấu hình iptables với lệnh sau đây:
    Mã:
    service iptables save
    Thay đổi của chúng tôi sẽ được lưu trong tập tin /etc/sysconfig/iptables. Bạn có thể xem lại hoặc sửa đổi các quy tắc bằng cách chỉnh sửa tập tin đó.
     
    #1 quyet1990, 27/10/16
    Sửa lần cuối: 27/10/16

Chia sẻ trang này

Đang tải...