Các cấu hình tường lửa cần thiết cho máy chủ web CentOS mới hoạt động là gì?


1

Tôi mới có một máy chủ CentOS từ Linode.com mà tôi đang sử dụng như một máy chủ web Apache với ngăn xếp LAMP.

Tôi nhận thấy rằng tường lửa được bật theo mặc định nhưng dường như không có bất kỳ quy tắc hoạt động nào.

Tôi nên làm gì trong trường hợp này?

Tôi có nên chặn tất cả lưu lượng truy cập sau đó chỉ cho phép chọn cổng 80 và 443 cho máy chủ web của mình không?

Có bất kỳ "mẫu tường lửa" hoặc hướng dẫn quy tắc tường lửa cần thiết nào không?

Câu trả lời:


2

Bạn nên chặn tất cả & chọn lọc cho phép những cổng nào bạn cần. May mắn thay, nếu bạn vô tình tự khóa mình, bạn có thể truy cập Linode của mình thông qua bảng điều khiển Lish để xóa bất kỳ quy tắc tường lửa sai lầm nào.

Dưới đây là một số cấu hình tường lửa tôi thường xuyên sử dụng:

Cho phép SSH, HTTP, HTTPS

iptables -A INPUT -p tcp -m multiport --destination-ports 22,80,443 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Nếu bạn cần cho phép FTP, hãy bao gồm cổng 21 (đối với các kết nối thụ động, bạn có thể cần xác định phạm vi cổng bổ sung mà tôi sử dụng 21000-21100:

iptables -A INPUT -p tcp -m multiport --destination-ports 21,22,80,443,21000:21100 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Vì một số lý do, tôi cũng thấy rằng tôi không thể gửi thư bằng sendmail, exim, v.v. trừ khi tôi mở cổng 25 (cấu hình thư của bạn thường sẽ được thiết lập để chỉ chấp nhận email được gửi từ máy chủ cục bộ):

iptables -A INPUT -p tcp -m multiport --destination-ports 21,22,25,80,443,21000:21100 -j ACCEPT
iptables -A INPUT -s 127.0.0.1/24 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Để xóa quy tắc của bạn để bắt đầu lại mà không tự khóa, hãy sử dụng bộ lệnh sau:

iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -F

Để xem các quy tắc và thống kê tường lửa hiện tại của bạn, bạn có thể sử dụng lệnh sau:

iptables -L -nv

Cũng đừng quên lưu quy tắc của bạn và đảm bảo IPTables khởi động khi khởi động lại.


1

Nếu bạn chặn tất cả lưu lượng truy cập, hộp sẽ chết trong tích tắc (ít nhất là với bạn).

Nghiên cứu cổng nào bạn cần cho các dịch vụ bạn đang sử dụng (cũng như các dịch vụ bạn không sử dụng nhưng vẫn cần thiết, chẳng hạn như BIND)

Các cổng thiết yếu phổ biến cho máy chủ là:

22 TCP (SSH, but you should change this)
21 TCP (FTP, but this is insecure. Use SFTP on the SSH port.)
80, 443 TCP (HTTP/S)
53 UDP (DNS)
# use iptables -A INPUT -p (udp|tcp) --dport=$PORT -j ACCEPT

Bạn cũng nên chặn các vectơ tấn công phổ biến với tường lửa của mình, chẳng hạn như tràn ngập SYN (bắt tay của TCP SYN-SYN-ACK, với SYN sau là kết hợp) Chặn các kết nối SYN-ACKchưa được thiết lập cố gắng , nhưng chấp nhận các kết nối đã thiết lập.

/sbin/iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

Ngoài ra, không chặn ping (ICMP). Bạn không thể bị ping đến chết thông qua ICMP; Sẽ hiệu quả hơn nhiều khi sử dụng TCP và bạn có cổng 80 và 443 mở.

# Allow ICMP
/sbin/iptables -A INPUT -i eth0 -p icmp -j ACCEPT

Khi bạn có tất cả các dịch vụ bạn cần, hãy chặn tất cả lưu lượng truy cập còn lại. Bạn cũng nên xem xét việc có quyền truy cập hoàn toàn vào localhost nếu bạn có quyền truy cập đầy đủ vào hộp của mình và bạn biết những gì đang chạy trên nó.

/sbin/iptables -A INPUT -i lo -j ACCEPT

Và nếu bạn có IPv6, đừng quên làm tương tự như trên ip6tables. Gần như tất cả mọi người quên điều này vì một số lý do.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.