Liên hệProfile
Danh mục

Mục Lục

    Shorewall là gì? Cách sử dụng Shorewall để cấu hình tưởng lửa nâng cao cho máy chủ Linux

    Nguyễn Hưng

    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Mục lục

    Shorewall là phần mềm quản lý tường lửa nguồn mở trên Linux, cho phép thiết lập các quy tắc bảo mật phức tạp thông qua giao diện cấu hình dạng file văn bản, thay vì thao tác trực tiếp với iptables. Trong bài viết này, mình sẽ hướng dẫn bạn quy trình cài đặt, định nghĩa vùng mạng và thiết lập các chính sách bảo mật cơ bản với Shorewall trên nền tảng Linux.

    Những điểm chính

    • Định nghĩa Shorewall: Hiểu rõ Shorewall là phần mềm quản lý tường lửa qua file văn bản, giúp đơn giản hóa việc thiết lập bảo mật so với iptables phức tạp.
    • Các đối tượng sử dụng chính: Xác định được liệu Shorewall có phù hợp với vai trò của bạn hay không, từ quản trị viên hệ thống, DevOps đến người dùng cá nhân.
    • Hướng dẫn cài đặt: Nắm vững các lệnh cài đặt Shorewall một cách nhanh chóng trên các bản phân phối Linux phổ biến như Debian/Ubuntu và CentOS/RHEL.
    • Hướng dẫn thiết lập cấu hình: Nắm vững quy trình từng bước để thiết lập một tường lửa hoàn chỉnh, từ việc khai báo vùng mạng, thiết lập chính sách đến định nghĩa các quy tắc bảo mật chi tiết.
    • Lưu ý khi sử dụng: Nắm được các lưu ý quan trọng để sử dụng Shorewall một cách an toàn và hiệu quả, giúp tránh các lỗi phổ biến như tự khóa truy cập SSH.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề nâng cao như ưu điểm so với iptables, khả năng tích hợp xác thực người dùng và tính phù hợp với môi trường cloud.

    Shorewall là gì?

    Shorewall là phần mềm giúp quản lý và kiểm soát tường lửa trên Linux một cách dễ dàng, linh hoạt. Thay vì phải thao tác trực tiếp với iptables, Shorewall cho phép bạn thiết lập các quy tắc bảo mật thông qua những file cấu hình văn bản rõ ràng. Với Shorewall, bạn có thể chia mạng thành nhiều vùng, kiểm soát lưu lượng giữa các mạng (LAN, DMZ, Internet), hỗ trợ NAT, Forwarding, VPN và điều chỉnh chính sách bảo mật tuỳ ý theo nhu cầu sử dụng.

    Các tính năng nổi bật của Shorewall:

    • Quản lý theo vùng: Shorewall cho phép phân chia mạng thành các vùng logic (Internet, LAN, DMZ) để dễ dàng kiểm soát.
    • Hỗ trợ đa tính năng: Shorewall tích hợp sẵn NAT, Port Forwarding, Traffic Shaping và VPN.
    • Kiểm soát trạng thái: Bạn có thể theo dõi trạng thái kết nối trên Shorewall để xử lý gói tin chính xác.
    • Khả năng mở rộng: Shorewall cho phép bạn quản lý firewall đơn giản cho hệ thống từ nhỏ đến quy mô doanh nghiệp.
    Shorewall là phần mềm giúp quản lý và kiểm soát tường lửa trên Linux một cách dễ dàng, linh hoạt
    Shorewall là phần mềm giúp quản lý và kiểm soát tường lửa trên Linux một cách dễ dàng, linh hoạt

    Các đối tượng sử dụng chính của Shorewall

    Dưới đây là các nhóm đối tượng sử dụng chính của Shorewall:

    • Quản trị viên hệ thống: Cần giải pháp thay thế cú pháp iptables phức tạp để bảo vệ server, quản lý port và chặn IP dễ dàng thông qua file cấu hình văn bản.
    • Quản trị viên mạng: Muốn biến máy chủ Linux thành Router/Gateway chuyên dụng hỗ trợ các tính năng cao cấp như Multi-ISP, cân bằng tải và quản lý băng thông (QoS).
    • Kỹ sư DevOps và Cloud: Cần quản lý cấu hình tường lửa dưới dạng mã nguồn để dễ dàng lưu trữ trên Git và triển khai tự động qua Ansible/Puppet.
    • Người dùng Home Lab và SOHO: Muốn tận dụng phần cứng cũ hoặc Raspberry Pi để xây dựng hệ thống Firewall/Router mạnh mẽ, chi phí thấp thay thế cho modem nhà mạng.
    Các đối tượng sử dụng chính của Shorewall
    Các đối tượng sử dụng chính của Shorewall

    Hướng dẫn cài đặt Shorewall chi tiết

    Để minh họa cho bài viết, mình sẽ thiết lập Shorewall trên một máy chủ Linux đóng vai trò Gateway với 2 giao diện mạng vật lý:

    • eth0 (Zone: net): Giao diện kết nối trực tiếp với Internet (WAN).
    • eth1 (Zone: loc): Giao diện kết nối với mạng nội bộ (LAN).

    Trên Debian/Ubuntu

    Bạn sử dụng trình quản lý gói apt để cài đặt với cú pháp như sau:

    sudo apt update
    sudo apt install shorewall
    Cài đặt Shorewall trên Debian/Ubuntu
    Cài đặt Shorewall trên Debian/Ubuntu

    Trên RHEL/CentOS/Fedora

    Để cài đặt, bạn sử dụng trình quản lý gói yum với cú pháp như sau:

    sudo yum install shorewall

    1. Khởi tạo cấu hình ban đầu

    Shorewall không hoạt động ngay sau khi được cài đặt, do đó bạn cần sao chép các file cấu hình mẫu để làm cơ sở chỉnh sửa. Hệ thống cung cấp sẵn các mẫu cấu hình trong thư mục tài liệu, bạn hãy sao chép mẫu two-interfaces vào thư mục cấu hình chính /etc/shorewall:

    Bạn thực thi lệnh sau:

    sudo cp /usr/share/doc/shorewall/examples/two-interfaces/* /etc/shorewall
    cd /etc/shorewall
    ls
    Khởi tạo cấu hình ban đầu
    Khởi tạo cấu hình ban đầu

    2. Khai báo các vùng mạng

    File zones dùng để khai báo các vùng logic trong hệ thống mạng. Để mở file và chỉnh sửa, bạn thực thi lệnh sau:

    sudo nano /etc/shorewall/zones
    Khai báo các vùng mạng
    Khai báo các vùng mạng

    Giải thích:

    • fw (Firewall): Là máy chủ cài đặt Shorewall.
    • net (Internet): Là vùng mạng bên ngoài (IPv4).
    • loc (Local): Là vùng mạng nội bộ.

    Các zone này sẽ được sử dụng xuyên suốt trong những file cấu hình quan trọng khác của Shorewall như:

    • interfaces: Dùng để ánh xạ các card mạng vật lý như eth0, eth1,… vào từng zone, giúp Shorewall biết mỗi vùng tương ứng với những giao diện mạng nào.
    • policy: Xác định chính sách mặc định cho lưu lượng đi giữa các zone.
    • rules: Khai báo các luật firewall chi tiết để cho phép, chặn, chuyển hướng,… một số loại kết nối hoặc port nhất định.

    Việc phân chia này giúp bạn thiết lập các luật bảo mật dựa trên nguồn và đích của vùng thay vì địa chỉ IP cụ thể.

    3. Thiết lập chính sách mặc định

    File policy quy định hành động mặc định khi một gói tin đi từ vùng này sang vùng khác mà chưa có quy tắc cụ thể (rules) nào xử lý.

    Để mở file cấu hình, bạn thực thi lệnh sau:

    sudo nano /etc/shorewall/policy
    Bạn mở file cấu hình
    Bạn mở file cấu hình

    Phân tích các dòng chính sách quan trọng:

    1. loc net ACCEPT:
      • Ý nghĩa: Cho phép (ACCEPT) toàn bộ lưu lượng khởi tạo từ mạng nội bộ (loc) đi ra Internet (net).
      • Ứng dụng: Các máy tính trong LAN có thể truy cập web, SSH, ping,… ra bên ngoài..
    2. net all DROP $LOG_LEVEL:
      • Ý nghĩa: Hủy bỏ (DROP) mọi gói tin từ Internet (net) gửi đến bất kỳ vùng nào (all), bao gồm cả fw (firewall) và loc (LAN).
      • Tham số $LOG_LEVEL: Ghi lại hành động này vào log hệ thống, thường ở mức info hoặc notice trong shorewall.conf để phục vụ giám sát.
    3. all all REJECT $LOG_LEVEL:
      • Ý nghĩa: Quy tắc này đóng vai trò như một bộ lọc tổng hợp ở cuối bảng chính sách. Mọi lưu lượng không khớp với các quy tắc trên sẽ bị từ chối (REJECT).
      • Sự khác biệt: REJECT sẽ gửi trả lại một gói tin báo lỗi cho người gửi, giúp minh bạch hóa việc từ chối kết nối.

    4. Ánh xạ giao diện mạng

    File interfaces dùng để gán các giao diện vật lý vào các vùng logic. Bạn thực thi lệnh sau:

    sudo nano /etc/shorewall/interfaces
    Ánh xạ giao diện mạng
    Ánh xạ giao diện mạng

    Giải thích cấu hình:

    • ?FORMAT 2: Chỉ thị cho Shorewall sử dụng định dạng phiên bản 2, cho phép sử dụng biến số.
    • Cột ZONE: Tên vùng (net, loc).
    • Cột INTERFACE: Là tên giao diện vật lý, thường được đặt dưới dạng biến như NET_IF (thường là eth0) và LOC_IF (thường là eth1). Bạn cần đảm bảo các biến này khớp với thực tế hoặc điền trực tiếp tên interface (ví dụ: eth0, eth1).

    5. Thiết lập rule chi tiết

    File rules là nơi định nghĩa các ngoại lệ cụ thể, cho phép hoặc chặn các dịch vụ chi tiết dựa trên giao thức và cổng. Để mở file, bạn thực hiện lệnh sau đây:

    sudo nano /etc/shorewall/rules
    Thiết lập rule chi tiết
    Thiết lập rule chi tiết

    Giải thích:

    Các dòng đặc biệt ở đầu file:

    ?SECTION ALL
    ?SECTION ESTABLISHED
    ?SECTION RELATED
    ?SECTION INVALID
    ?SECTION UNTRACKED
    ?SECTION NEW

    Dưới là các section markers giúp Shorewall phân loại các rule theo trạng thái kết nối:

    SectionMô tả
    ALLÁp dụng cho tất cả các gói
    ESTABLISHEDGói thuộc kết nối đã thiết lập
    RELATEDGói liên quan đến kết nối đã được chấp nhận
    INVALIDGói không hợp lệ
    UNTRACKEDGói không được connection tracking xử lý
    NEWGói bắt đầu kết nối mới

    Phân tích các section và rule ví dụ:

    1. Invalid(DROP) net all tcp:
      • Hành động: Loại bỏ (DROP) các gói tin TCP có trạng thái không hợp lệ (INVALID) từ Internet gửi đến mọi vùng.
      • Mục đích: Bảo vệ hệ thống khỏi các gói tin bị lỗi header hoặc các dạng tấn công làm sai lệch gói tin.
    2. DNS(ACCEPT) $FW net:
      • Hành động: Cho phép chính máy firewall ($FW) gửi yêu cầu DNS (cổng 53 UDP/TCP) ra Internet (net).
      • Mục đích: Giúp server phân giải tên miền.
    3. SSH(ACCEPT) loc $FW:
      • Hành động: Cho phép kết nối SSH (cổng 22) từ mạng nội bộ (loc) vào firewall ($FW).
      • Mục đích: Cho phép quản trị viên truy cập điều khiển server từ mạng LAN.
    4. Ping(ACCEPT) loc $FW:
      • Hành động: Cho phép mạng nội bộ gửi gói tin ICMP (Ping) đến firewall.
      • Mục đích: Hỗ trợ việc kiểm tra kết nối mạng, phát hiện sự cố.

    6. Kích hoạt Shorewall

    Mặc định, Shorewall sẽ bị vô hiệu hóa để tránh việc người dùng bị khóa khỏi hệ thống do cấu hình sai, do đó bạn cần kích hoạt Shorewall thủ công. Để chỉnh sửa file cấu hình toàn cục, bạn thực hiện lệnh dưới đây:

    sudo nano /etc/shorewall/shorewall.conf

    Sau đó, bạn tìm biến STARTUP_ENABLED và đổi giá trị thành Yes:

    STARTUP_ENABLED=Yes
    Bạn tìm biến STARTUP_ENABLED và đổi giá trị thành Yes
    Bạn tìm biến STARTUP_ENABLED và đổi giá trị thành Yes

    Tiếp theo, bạn khởi động dịch vụ và thiết lập tự động chạy cùng hệ thống với lệnh sau đây:

    sudo systemctl restart shorewall
    sudo systemctl enable shorewall
    Bạn khởi động dịch vụ và thiết lập tự động chạy
    Bạn khởi động dịch vụ và thiết lập tự động chạy

    7. Kiểm tra và xác thực

    Kiểm tra trạng thái dịch vụ

    Bạn sử dụng lệnh sau để xác nhận Shorewall đang hoạt động và các zone đã được nạp đúng:

    sudo shorewall status
    Bạn kiểm tra trạng thái dịch vụ
    Bạn kiểm tra trạng thái dịch vụ

    Kiểm tra kết nối

    Từ một máy trạm trong mạng LAN, bạn hãy thực hiện lệnh ping tới địa chỉ IP của máy chủ Shorewall. Nếu được cấu hình chính xác, máy chủ sẽ phản hồi.

    Hãy kiểm tra kết nối của bạn
    Hãy kiểm tra kết nối của bạn

    Lưu ý khi sử dụng Shorewall

    Dưới đây là những lưu ý quan trọng khi sử dụng Shorewall:

    • Ưu tiên lệnh safe-restart: Bạn hãy dùng shorewall safe-restart thay vì restart khi thao tác từ xa vì lệnh này cho phép tự động khôi phục cấu hình cũ nếu bạn vô tình chặn mất kết nối SSH của chính mình.
    • Vô hiệu hóa Firewall khác: Bạn tắt hoàn toàn các trình quản lý tường lửa mặc định như UFW (Ubuntu) hay Firewalld (CentOS) để tránh xung đột quyền kiểm soát với Shorewall.
    • Kiểm tra cú pháp: Luôn chạy lệnh sudo shorewall check sau khi chỉnh sửa file cấu hình để phát hiện lỗi chính tả hoặc logic trước khi bạn khởi động dịch vụ.
    • Dự phòng quyền truy cập Console: Đảm bảo bạn có quyền truy cập qua KVM hoặc màn hình Console vật lý để khôi phục server trong trường hợp lỡ tay cấu hình chặn toàn bộ mạng.
    • Cấu hình Log hợp lý: Bạn thiết lập mức Log (như INFO) trong file Policy cho các gói tin bị chặn (DROP/REJECT) để phục vụ việc tra cứu và gỡ lỗi sau này.
    Lưu ý khi sử dụng Shorewall
    Lưu ý khi sử dụng Shorewall

    Câu hỏi thường gặp

    Shorewall có ưu điểm kỹ thuật nào vượt trội so với việc sử dụng trực tiếp iptables trong môi trường doanh nghiệp?

    Shorewall cung cấp cấu hình tường lửa dạng file văn bản giúp việc quản lý và triển khai tự động qua các công cụ như Git, Ansible, Puppet dễ dàng hơn. Nhờ mô hình quản lý theo vùng, các chính sách bảo mật được tổ chức rõ ràng, tối ưu hóa cho hệ thống nhiều lớp mạng.
    Điều này giúp đơn giản hóa quy trình kiểm soát khi cần mở rộng hạ tầng hoặc tích hợp nhiều gateway/network segment, thay vì phải duyệt thủ công từng rule phức tạp như với iptables.

    Shorewall có tích hợp xác thực người dùng hoặc quản lý truy cập theo danh tính không?

    Shorewall tập trung quản lý truy cập dựa trên vùng, địa chỉ IP và port, chưa hỗ trợ trực tiếp xác thực theo danh tính người dùng. Để kiểm soát chi tiết truy cập theo user, bạn nên tích hợp thêm hệ thống xác thực riêng biệt trên dịch vụ cần bảo vệ, đồng thời sử dụng chính sách của Shorewall để giới hạn truy cập ở tầng mạng, hỗ trợ cho tầng ứng dụng xử lý xác thực nội bộ.

    Shorewall có phù hợp cho môi trường cloud, ảo hóa hoặc hybrid cloud không?

    Shorewall được thiết kế tương thích tốt với máy chủ vật lý và ảo hóa, dễ dàng cấu hình cho container, bridge interface hoặc các overlay network trong môi trường cloud. Việc lưu trữ cấu hình dạng text cho phép đồng bộ qua git, triển khai qua các CI/CD pipeline, đồng thời áp dụng mẫu cấu hình với variable – giúp nhất quán policy trên hàng loạt instance. Bạn chỉ cần chỉnh sửa template và tự động hoá khâu deploy lên các máy chủ cần bảo vệ.

    Shorewall là giải pháp tường lửa nguồn mở mạnh mẽ dành cho Linux, nổi bật với khả năng quản lý linh hoạt qua các file cấu hình văn bản. Việc tổ chức hệ thống theo mô hình vùng mạng giúp kiểm soát luồng dữ liệu hiệu quả, đồng thời đơn giản hóa triển khai các chính sách bảo mật phức tạp. Chúc bạn cấu hình thành công và hẹn gặp lại bạn trong các bài viết tiếp theo.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn dùng lệnh cd trong Linux để điều hướng thư mục nhanh chóng, chính xác
    Hướng dẫn dùng lệnh cd trong Linux để điều hướng thư mục nhanh chóng, chính xác

    Trong Linux, cd là lệnh được tích hợp sẵn trong shell, cho phép thay đổi thư mục làm việc hiện tại trên terminal. Việc di chuyển qua lại giữa các thư mục bằng lệnh này là một trong những thao tác cơ bản và được sử dụng thường xuyên nhất, giúp bạn thực hiện việc…

    12/03/2026

    Hướng dẫn chống tấn công DDoS bằng Nginx với kỹ thuật phân tích Signature
    Hướng dẫn chống tấn công DDoS bằng Nginx với kỹ thuật phân tích Signature

    Chống tấn công DDoS bằng Nginx là việc xây dựng bộ lọc nhận diện signature tấn công ngay trên Nginx giúp loại bỏ chính xác truy vấn từ botnet, bảo vệ toàn vẹn dịch vụ cho người dùng thật. Trong bài viết này, mình sẽ hướng dẫn bạn các bước chống tấn công DDoS bằng…

    12/03/2026

    Hướng dẫn chống DDoS SYN Flood nâng cao với iptables u32
    Hướng dẫn chống DDoS SYN Flood nâng cao với iptables u32

    iptables u32 là một module mở rộng trong công cụ tường lửa iptables trên hệ điều hành Linux, cho phép kiểm tra và lọc gói tin ở mức độ cực kỳ chi tiết. Trong bài viết này, mình sẽ hướng dẫn bạn cách chống DDoS SYN Flood nâng cao với iptables u32 chi tiết và…

    12/03/2026

    Hướng dẫn cài đặt và sử dụng BpyTOP để giám sát tài nguyên Linux
    Hướng dẫn cài đặt và sử dụng BpyTOP để giám sát tài nguyên Linux

    BpyTOP được viết bằng Python và phát triển dựa trên công cụ bashtop nhưng có giao diện hiện đại, trực quan và nhiều hiệu ứng đồ họa hơn so với các lệnh truyền thống như top hay htop. Công cụ này hiển thị dạng dashboard ngay trong terminal, giúp quản trị viên quan sát nhanh…

    12/03/2026

    linux

    lenh

    text