Tôi đã cài đặt một số bộ chứa docker trên máy chủ của mình. Tất cả các vùng chứa đều nằm trong cùng một mạng docker và về cơ bản, cấu trúc là mọi vùng chứa nằm sau vùng chứa proxy ngược nginxproxymanager.
Cho đến nay rất tốt, mọi thứ hoạt động tốt.Vì vậy, tôi đang cố gắng củng cố cấu trúc bằng cách thêm fail2ban, điều mà tôi đã không thể làm cho nó hoạt động. Tôi đang cố gắng hiểu rõ hơn về iptables nhưng tôi không thể làm cho nó hoạt động được.
Sau khi khởi động lại docker và kiểm tra tệp iptables (/etc/iptables/iptables.rules), tôi có cái này
# Được tạo bởi iptables-save v1.8.7 vào Thứ Sáu, ngày 29 tháng 10 09:48:00 năm 2021
* tự nhiên
: CHẤP NHẬN TRƯỚC [82:13454]
:CHẤP NHẬN ĐẦU VÀO [71:12758]
:CHẤP NHẬN ĐẦU RA [72:4846]
:CHẤP NHẬN SAU ĐÓ [858:45979]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-ĐẦU RA! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MẶT MẠO
-A POSTROUTING -s 172.19.0.0/16 ! -o br-0aee38841ef3 -j MẶT MẠO
-A POSTROUTING -s 172.19.0.2/32 -d 172.19.0.2/32 -p tcp -m tcp --dport 3000 -j MASQUERADE
-A DOCKER -i docker0 -j TRẢ LẠI
-A DOCKER -i br-0aee38841ef3 -j TRẢ LẠI
-NGƯỜI ĐẶT CHỖ! -i br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j DNAT --to-destination 172.19.0.2:3000
LÀM
# Hoàn thành vào Thứ Sáu 29/10 09:48:00 2021
# Được tạo bởi iptables-save v1.8.7 vào Thứ Sáu, ngày 29 tháng 10 09:48:00 năm 2021
*lọc
:CHẤP NHẬN ĐẦU VÀO [98:7750]
:CHẤP NHẬN TRƯỚC [0:0]
:CHẤP NHẬN ĐẦU RA [77:11194]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A INPUT -s 37.XXX.XXX.XX/32 -j DROP
-A INPUT -j DOCKER-NGƯỜI DÙNG
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A FORWARD -o docker0 -j DOCKER
-A VỀ PHÍA TRƯỚC -i docker0 ! -o docker0 -j CHẤP NHẬN
-A CHUYỂN ĐI -i docker0 -o docker0 -j CHẤP NHẬN
-A FORWARD -o br-0aee38841ef3 -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
-A PHÍA TRƯỚC -o br-0aee38841ef3 -j DOCKER
-A VỀ PHÍA TRƯỚC -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j CHẤP NHẬN
-A VỀ PHÍA TRƯỚC -i br-0aee38841ef3 -o br-0aee38841ef3 -j CHẤP NHẬN
-A DOCKER -d 172.19.0.2/32 ! -i br-0aee38841ef3 -o br-0aee38841ef3 -p tcp -m tcp --dport 3000 -j CHẤP NHẬN
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-0aee38841ef3 ! -o br-0aee38841ef3 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-0aee38841ef3 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -s 37.XXX.XXX.XX/32 -j DROP
LÀM
# Hoàn thành vào Thứ Sáu 29/10 09:48:00 2021
Tôi vừa xóa các quy tắc vùng chứa khác, vì chúng giống với khái niệm của quy tắc tôi đã để lại (dport 3000).
br-0aee38841ef3
là cầu nối được tạo khi tôi tạo mạng docker nơi chứa các thùng chứa của tôi.
Như bạn có thể thấy, tôi đã cố gắng thêm quy tắc DROP vào địa chỉ ip công khai của mình (37.XXX.XXX.XX) trong cả chuỗi INPUT và DOCKER-USER, nhưng tôi vẫn có thể điều hướng qua các vùng chứa của mình (tôi có một miền tùy chỉnh mà A bản ghi trỏ đến IP của tôi), vì vậy quy tắc không hoạt động.
Tất nhiên iptables được bắt đầu và tải lại với các quy tắc mới, vậy tôi còn thiếu điều gì để cấm IP?