Mình có một máy chủ CentOS 7, trên máy chủ cài dịch vụ Apache Web Server và lắng nghe trên cổng 80. Nhưng khi cài đặt xong thì không thể truy cập được cổng 80 thông qua domain và địa chỉ IP của máy chủ. (Áp dụng được cả với CentOS 8)
Nguyên nhân là do tường lửa (Firewall) trên CentOS 7/8 mặc định block port 80 trên server. Vì vậy nhiệm vụ của chúng ta là mở port trên server để có thể truy cập tới dịch vụ Web.
Mở cổng (port) trên CentOS 7/8
Tưởng lửa trên CentOS 7/8 giờ được quản lý bằng công cụ firewall-cmd, nên để mở port sử dụng command sau với quyền của tài khoản root.
– Kiểm tra zone nào của tường lửa đang được active
#Kiểm tra zone nào của tường lửa đang được active firewall-cmd --get-active-zones
– Mở cổng (VD: 80) trên zone đang active (Public Zone)
firewall-cmd --zone=public --add-port=80/tcp --permanent
– Sau đó để luật mới có hiệu lực cần reload lại tường lửa bằng command sau:
firewall-cmd --reload
Để kiểm tra việc mở port đã thành công hay chưa, truy cập trực tiếp bằng domain hoặc địa chỉ IP của Server để xem máy chủ web đã hoạt động chưa.
Mở cổng trên CentOS 7/8 chỉ cho IP nhất định.
Với cách trên ai cũng có thể truy cập tới server của bạn, nhưng nếu bạn muốn tăng cường bảo mật thì bạn có thể chỉ cần thiết lập cho 1 địa chỉ IP hoặc 1 dải IP nhất định được phép truy cập.
firewall-cmd --permanent --zone=public --add-rich-rule=' rule family="ipv4" source address="1.2.3.4/32" port protocol="tcp" port="80" accept'
Hoặc sửa trực tiếp file config của firewall ở địa chỉ: /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="dhcpv6-client"/> <service name="ssh"/> <rule family="ipv4"> <source address="1.2.3.4"/> <port protocol="tcp" port="80"/> <accept/> </rule> <rule family="ipv4"> <source address="1.2.3.5"/> <port protocol="tcp" port="80"/> <accept/> </rule> </zone>
Và nhớ là phải reload lại firewall để áp dụng luật mới
firewall-cmd --reload
Để mở cổng cho Windows Server, các bạn vui lòng tham khảo bài viết này: Hướng dẫn mở cổng (open port) trên Windows Server