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
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
Public 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.
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
Nguồn: vinasupport.com
Kiểm tra và mở port VPS trên CentOS
Nếu bạn muốn mở hoặc đóng port cho VPS thì phải chỉnh sửa file cấu hình của iptables. Mặc định thì file này có đường dẫn là /etc/sysconfig/iptables
Để sử dụng sâu hơn, các bạn tham khảo bài viết : Hướng dẫn sử dụng Iptables
Đối với CentOS 7, các bạn tham khảo Thiết lập tường lửa FirewallD
Ví dụ để mở port xxx, bạn hãy thực hiện lệnh sau:
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport xxx -j ACCEPT
Sau đó lưu lại cấu hình và khởi động lại iptables
service iptables save service iptables restart
Đóng port VPS
Để đóng port bất kỳ, bạn chỉnh sửa trực tiếp file /etc/sysconfig/iptables
, comment những dòng có port cần đóng.
nano /etc/sysconfig/iptables
Sau đó lưu lại cấu hình và khởi động lại iptables
service iptables save service iptables restart
Kiểm tra lại port đang mở
Danh sách toàn bộ port đang mở:
iptables -L -n
Kiểm tra port đang được dùng bởi service nào:
netstat -anp | grep 80
hoặc
lsof -i | grep 80