Giới thiệu về FirewallD trên CentOS

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

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Firewalld là công cụ hoàn toàn mới trong RHEL 7. Mục đích là thay thế iptables và kết nối vào netfilter kernel code. . Nó cung cấp các dòng lệnh và giao diện đồ họa và có sẵn trong kho của hầu hết các bản phân phối Linux. Làm việc với FirewallD có hai sự khác biệt chính so với iptables kiểm soát trực tiếp:
    - FirewallD sử dụng các zone và dịch vụ (service) thay vì chuỗi và quy tắc.
    - Nó quản lý rulesets tự động, cho phép cập nhật mà không vi phạm các phiên và kết nối hiện tại.
    [​IMG]

    Cài đặt và quản lý FirewallD
    Để bắt đầu dịch vụ và cho phép FirewallD khi khởi động:
    Mã:
    systemctl start firewalld
    systemctl enable firewalld
    
    Để dừng và vô hiệu hóa nó:
    Mã:
    systemctl stop firewalld
    systemctl disable firewalld
    
    Kiểm tra tình trạng tường lửa. Đầu ra phải thể hiện tình trạng chạy hay không chạy.
    Mã:
     firewall-cmd --state
    Để xem trạng thái của daemon FirewallD:
    Mã:
     systemctl status firewalld
    Ví dụ về đầu ra:
    Mã:
    firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)
    Active: active (running) since Wed 2015-09-02 18:03:22 UTC; 1min 12s ago
    Main PID: 11954 (firewalld)
    CGroup: /system.slice/firewalld.service
    └─11954 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
    
    Để reload cấu hình tường lửa:
    Mã:
     firewall-cmd --reload
    Cấu hình FirewallD
    Firewalld được cấu hình với các tập tin XML.
    Cấu hình tập tin đang nằm trong hai thư mục:
    - /usr/lib/FirewallD giữ cấu hình mặc định như default zones và các dịch vụ thông thường. Tránh cập nhật chúng bởi vì các tập tin sẽ bị ghi đè bởi mỗi lần cập nhật gói firewalld.
    - /etc/firewalld giữ các tập tin cấu hình hệ thống. Những tập tin này sẽ ghi đè lên tập tin cấu hình mặc định.

    Thiết lập cấu hình
    Firewalld sử dụng hai thiết lập cấu hình: RuntimePermanent. Thay đổi cấu hình Runtime không được lưu giữ khi khởi động lại hoặc khi khởi động lại FirewallD trong khi thay đổi Permanent không được áp dụng cho hệ thống đang chạy.

    Theo mặc định, lệnh firewall-cmd áp dụng cho Runtime nhưng cách sử dụng cờ --permanent sẽ thiết lập một cấu hình ổn định. Để thêm và kích hoạt một quy tắc cố định, bạn có thể sử dụng một trong hai phương pháp.
    Thêm quy tắc cho cả thiết lập Runtime Permanent:
    Mã:
    firewall-cmd --zone=public --add-service=http --permanent
    firewall-cmd --zone=public --add-service=http
    
    Thêm các quy tắc đến thiết lập Permanent và khởi động lại FirewallD.
    Mã:
    firewall-cmd --zone=public --add-service=http --permanent
    firewall-cmd --reload
    
    Lệnh khởi động sẽ drop tất cả thiết lập Runtime và áp dụng thiết lập Permanent. Bởi vì firewalld quản lý ruleset động, nó sẽ không phá vỡ một kết nối và phiên hiện tại.

    Firewall Zones
    Các Zone là rulesets pre-constructed cho các mức độ tin cậy khác nhau. Các Zone khác nhau cho phép các dịch vụ mạng khác nhau và các loại lưu lượng gửi đến trong khi từ chối tất cả mọi thứ khác. Sau khi kích hoạt FirewallD cho lần đầu tiên, Public sẽ là zone mặc định.

    Các Zone cũng có thể được áp dụng cho các giao diện mạng khác nhau. Ví dụ, với giao diện riêng biệt cho cả một mạng nội bộ và Internet, bạn có thể cho phép DHCP trên một khu vực (zone) nội bộ nhưng chỉ HTTP và SSH trên khu vực bên ngoài. Bất kỳ giao diện không rõ ràng thiết lập một zone cụ thể sẽ được gắn vào vùng mặc định.

    Để xem zone mặc định:
    Mã:
    firewall-cmd –get-default-zone
    Để thay đổi zone mặc định:
    Mã:
    firewall-cmd –set-default-zone=internal
    Để xem các zone được sử dụng bởi giao diện mạng của bạn (s):
    Mã:
    firewall-cmd –get-active-zones
    Ví dụ đầu ra:
    Mã:
    public
    interfaces: eth0
    
    Để có được tất cả các cấu hình cho một zone cụ thể:
    Mã:
    firewall-cmd --zone=public --list-all
    Ví dụ đầu ra:
    Mã:
    public (default, active)
    interfaces: ens160
    sources:
    services: dhcpv6-client http ssh
    ports: 12345/tcp
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:
    
    Để có được tất cả các cấu hình cho tất cả các zone:
    Mã:
    firewall-cmd --list-all-zones
    Ví dụ đầu ra:
    Mã:
    block
      interfaces:
      sources:
      services:
      ports:
      masquerade: no
      forward-ports:
      icmp-blocks:
      rich rules:
    
      ...
    
    work
      interfaces:
      sources:
      services: dhcpv6-client ipp-client ssh
      ports:
      masquerade: no
      forward-ports:
      icmp-blocks:
      rich rules:
    
    Làm việc với các dịch vụ
    FirewallD có thể cho phép lưu lượng dựa trên các quy tắc được xác định trước cho các dịch vụ mạng cụ thể. Bạn có thể tạo những quy tắc dịch vụ riêng của bạn và thêm chúng vào khu vực bất kỳ. Các tập tin cấu hình cho các dịch vụ mặc định hỗ trợ được đặt tại /usr/lib/firewalld/services và các tập tin dịch vụ do người dùng tạo ra sẽ nằm trong /etc/firewalld /services.

    Để xem các dịch vụ có sẵn mặc định:
    Mã:
    firewall-cmd --get-services
    Như một ví dụ, để kích hoạt hoặc vô hiệu hóa dịch vụ HTTP:
    Mã:
    firewall-cmd --zone=public --add-service=http --permanent
    firewall-cmd --zone=public --remove-service=http --permanent
    
    Cho phép hoặc từ chối một cổng/giao thức (Port/Protocol)
    Ví dụ: Cho phép hoặc vô hiệu hóa lưu lượng TCP trên cổng 12345.
    Mã:
    firewall-cmd --zone=public --add-port=12345/tcp --permanent
    firewall-cmd --zone=public --remove-port=12345/tcp --permanent
    
    Cổng chuyển tiếp
    Các quy tắc ví dụ sẽ cho phép lưu lượng chuyển tiếp từ cổng 80 sang cổng 12345 trên cùng một máy chủ.
    Mã:
     firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345
    Để chuyển tiếp một cổng vào một máy chủ khác nhau:
    Kích hoạt masquerade trong zone mặc định.
    Mã:
    firewall-cmd --zone=public --add-masquerade
    Thêm luật forward. Ví dụ này sẽ chuyển lưu lượng từ cổng 80 đến cổng 8080 trên một máy chủ từ xa đặt tại địa chỉ IP: 123.456.78.9.
    Mã:
     firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9
    Để loại bỏ các quy tắc, thay --add với --remote. Ví dụ:
    Mã:
    firewall-cmd --zone=public --remove-masquerade
    Xây dựng một ruleset với FirewallD
    Như một ví dụ, đây là cách bạn sẽ sử dụng FirewallD gán quy tắc cơ bản đến máy chủ của bạn.
    Gán zone dmz như là zone mặc định đến eth0. Trong khu mặc định được cung cấp, dmz là nơi tốt nhất để bắt đầu cho ứng dụng này vì nó chỉ cho phép SSH và ICMP
    Mã:
    firewall-cmd --set-default-zone=dmz
    firewall-cmd --zone=dmz --add-interface=eth0
    
    Thêm quy tắc dịch vụ permanent cho HTTP và HTTPS tới vùng dmz:
    Mã:
    firewall-cmd --zone=dmz --add-service=http --permanent
    firewall-cmd --zone=dmz --add-service=https --permanent
    
    Khởi động lại FirewallD để các quy tắc có hiệu lực ngay lập tức:
    Mã:
    firewall-cmd --reload
    Nếu bây giờ bạn chạy câu lệnh firewall-cmd --zone=dmz --list-all, kết quả đầu ra:
    Mã:
    dmz (default)
    interfaces: eth0
    sources:
    services: http https ssh
    ports:
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:
    
    Điều này cho chúng ta biết rằng zone dmz là zone mặc định của chúng tôi áp dụng cho các giao diện eth0, tất cả các nguồn mạng và cổng.Lưu lượng Incoming HTTP (port 80), HTTPS (port 443) và SSH (port 22) được phép và vì không có hạn chế về phiên bản IP, điều này sẽ áp dụng cho cả IPv4IPv6.
    Masquerading và cổng chuyển tiếp không được phép. Chúng tôi không có khối ICMP, vì vậy lưu lượng ICMP được phép đầy đủ, và không có rich rules. Tất cả lưu lượng gửi đi được cho phép.

    Cấu hình nâng cao
    Các dịch vụ và cổng là tốt cho cấu hình cơ bản nhưng có thể quá hạn chế cho cấu hình nâng cao. Rich rules và Direct Interface cho phép bạn thêm các quy tắc tùy chỉnh hoàn toàn tường lửa vào bất kỳ zone đối với bất kỳ cổng, giao thức, địa chỉ và hành động.

    Rich rules
    Cú pháp Rich rules là rộng lớn nhưng đầy đủ tài liệu trong trang https://jpopelka.fedorapeople.org/firewalld/doc/firewalld.richlanguage.html (hoặc dùng lệnh man firewalld.richlanguage ). Sử dụng --add-rich-rule, --list-rich-rules and --remove-rich-rule với lệnh firewall-cmd để quản lý chúng.

    Dưới đây là một số ví dụ:
    Cho phép tất cả lưu lượng IPv4 từ host 192.168.0.14.
    Mã:
    firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept'
    
    Từ chối lưu lượng IPv4 qua TCP từ host 192.168.1.10 đến cổng 22.
    Mã:
    firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.1.10" port port=22 protocol=tcp reject'
    
    Cho phép lưu lượng IPv4 qua TCP từ host 10.1.0.3 đến cổng 80, và chuyển tiếp nó đến cổng 6532.
    Mã:
    firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532'
    
    Chuyển tiếp tất cả lưu lượng IPv4 trên cổng 80 đến cổng 8080 trên host 172.31.4.2
    Mã:
    firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=172.31.4.2'
    
    Để liệt kê Rich Rules hiện tại của bạn:
    Mã:
    firewall-cmd –list-rich-rules
    Iptables Direct Interface
    Để xem tất cả các chuỗi tùy chỉnh hoặc quy tắc thêm vào FirewallD:
    Mã:
    firewall-cmd --direct --get-all-chains
    firewall-cmd --direct --get-all-rules
    
     

Chia sẻ trang này

Đang tải...