+1

KIẾN THỨC CƠ BẢN VỀ FIREWALLD, SELINUX

I. FIREWALLD

1.Khái niệm.

Firewalld cung cấp một firewall động có thể quản lý được, hỗ trợ cho các vùng mạng/ tường lửa xác định mức độ tin cậy của các kết nối hoặc giao diện. Nó có hỗ trợ cài đặt tường lửa IPv4, IPv6, ethernet bridge và IP set. Các tùy chọn cấu hình giữa runtime và permanent là tách biệt. Nó cũng cung cấp một giao diện cho các dịch vụ hoặc ứng dụng để thêm các rule một cách trực tiếp.

Những lợi ích của Firewalld:

  • Bảo vệ mạng và dữ liệu: Firewalld giúp ngăn chặn các truy cập không mong muốn vào máy chủ, bảo vệ mạng và dữ liệu của bạn khỏi các cuộc tấn công mạng.
  • Quản lý truy cập mạng: Bạn có thể dễ dàng quản lý các quy tắc truy cập mạng thông qua Firewalld để chỉ định các dịch vụ hoặc ứng dụng nào được phép hoạt động qua mạng và dịch vụ nào bị chặn.
  • Kiểm soát cổng kết nối: Firewalld cho phép bạn quản lý cổng kết nối (port) mà máy chủ sử dụng để truy cập các dịch vụ khác nhau. Bạn có thể mở hoặc đóng cổng cụ thể tùy theo nhu cầu.
  • Dễ dàng cấu hình: Firewalld có giao diện dòng lệnh và giao diện đồ họa (firewall-config trên GNOME hoặc firewall-cmd) giúp bạn dễ dàng cấu hình và quản lý tường lửa của hệ thống.

2.Các Zone trong Firewalld.

Trong firewall, các "zone" định nghĩa các khu vực mạng với các cấp độ đáng tin cậy khác nhau, giúp quản lý quyền truy cập mạng và bảo vệ hệ thống. Các zone thường được sử dụng để xác định các tùy chọn cấu hình bảo vệ cho các giao diện mạng hoặc kết nối mạng cụ thể. Sau đây là các zone: Các zone được xác định trước theo mức độ tin cậy, theo thứ tự từ “ít-tin-cậy-nhất” đến “đáng-tin-cậy-nhất”: drop: ít tin cậy nhất – toàn bộ các kết nối đến sẽ bị từ chối mà không phản hồi, chỉ cho phép duy nhất kết nối đi ra.

  • block: tương tự như drop nhưng các kết nối đến bị từ chối và phản hồi bằng tin nhắn từ icmp-host-prohibited (hoặc icmp6-adm-prohibited).

  • public: đại diện cho mạng công cộng, không đáng tin cậy. Các máy tính/services khác không được tin tưởng trong hệ thống nhưng vẫn cho phép các kết nối đến trên cơ sở chọn từng trường hợp cụ thể.

  • external: hệ thống mạng bên ngoài trong trường hợp bạn sử dụng tường lửa làm gateway, được cấu hình giả lập NAT để giữ bảo mật mạng nội bộ mà vẫn có thể truy cập.

  • internal: đối lập với external zone, sử dụng cho phần nội bộ của gateway. Các máy tính/services thuộc zone này thì khá đáng tin cậy.

  • dmz: sử dụng cho các máy tính/service trong khu vực DMZ(Demilitarized) – cách ly không cho phép truy cập vào phần còn lại của hệ thống mạng, chỉ cho phép một số kết nối đến nhất định.

  • work: sử dụng trong công việc, tin tưởng hầu hết các máy tính và một vài services được cho phép hoạt động.

  • home: môi trường gia đình – tin tưởng hầu hết các máy tính khác và thêm một vài services được cho phép hoạt động.

  • trusted: đáng tin cậy nhất – tin tưởng toàn bộ thiết bị trong hệ thống.

3. Quy tắc Runtime/ Permanent

Trong FirewallD, các quy tắc được cấu hình thời gian hiệu lực Runtime hoặc Permanent.

  • Runtime(mặc định): có tác dụng ngay lập tức, mất hiệu lực khi reboot hệ thống.

  • Permanent: không áp dụng cho hệ thống đang chạy, cần reload mới có hiệu lực, tác dụng vĩnh viễn cả khi reboot hệ thống.'

Việc Restart/Reload sẽ hủy bộ các thiết lập Runtime đồng thời áp dụng thiết lập Permanent mà không hề phá vỡ các kết nối và session hiện tại. Điều này giúp kiểm tra hoạt động của các quy tắc trên tường lửa và dễ dàng khởi động lại nếu có vấn đề xảy ra.

4.Systemd Firewalld

Cài đặt Firewalld.

    yum install -y firewalld

image.png

Khởi động firewall, thiết lập cho firewall bật khi hệ thống bật.

    systemctl start firewalld
     systemctl enable firewalld

Kiểm tra tình trạng hoạt động của firewall

    systemctl status firewalld

Liệt kê các zone đã activate:

    firewall-cmd --list-all

image.png

Thiết lập cho phép services trên firewalld sử dụng.

    firewall-cmd --zone=public --add-service=http  --permanent
     firewall-cmd --zone=public --add-service=https –permanent

image.png

Thiết lập cho phép mở thêm port

    firewall-cmd –zone=public –add-port=25/tcp –permanent
     firewall-cmd –reload

image.png

Mở một dải port.

    firewall-cmd --zone=public --add-port=2000-2500/tcp --permanent
     firewall-cmd –reload
     firewall-cmd –list-ports

image.png

Đóng port với tham số remove-port:

    firewall-cmd –zone=public –remove-port=25/tcp -permanent
     firewall-cmd –reload
     firewall-cmd –list-port

image.png

Chặn một IP bằng tham số --add-rich-rule

    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='X.X.X.X' reject" 
     firewall-cmd –reload

Gỡ chặn 1 IP hay 1 dải IP bằng tham số --remove-rich-rule

    firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='X.X.X.X' reject"
     firewall-cmd –reload

II. SELINUX

1.Giới thiệu

SELinux (Security-Enhanced Linux) là một modun bảo mật ở nhân của Linux, cung cấp cơ chế hỗ trợ các chính sách bảo mật kiểm soát truy cập (access control).

SELinux có 3 chế độ hoạt động cơ bản:

  • Enforcing: Chế độ mặc định sẽ cho phép và thực thi chính sách bảo mật SELinux trên hệ thống, từ chối các hành động truy cập và ghi nhật ký
  • Permissive: Trong chế độ Permissive, SELinux được kích hoạt nhưng sẽ không thực thi chính sách bảo mật, chỉ cảnh báo và ghi lại các hành động. Chế độ Permissive hữu ích cho việc khắc phục sự cố
  • Disabled: SELinux bị vô hiệu hóa

2.Cấu hình Selinux

Vô hiệu hóa tạm thời selinux

    echo 0 > /selinux/enforce

hoặc

    setenforce 0

Vô hiệu hóa selinux vĩnh viễn

    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
     sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux

Bật lại selinux

    sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/sysconfig/selinux
     sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config

Cài đặt semanage

    yum install policycoreutils-python

Kiểm tra các cổng selinux đang được sử dụng cho chúng ta có thể chạy lệnh tùy chọn: ( có thể thay ssh bằng http, smtp..)

    semanage port -l | grep ssh

Để xóa port trên selinux

    semanage port -d -t ssh_port_t -p tcp 22

Mở port 2220 cho dịch vụ SSH

    semanage port -a -t ssh_port_t -p tcp 2220

Cảm ơn các bạn đã theo dõi, chúc bạn ngày mới tốt lành và học được thật nhiều điều bổ ích! 🤩🤩😘😘


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí