ufw
Ansible
có một ufw
mô-đun để xử lý các quy tắc tường lửa. Trong roles/common/tasks/main.yml
, được bao gồm trong tất cả các máy chủ của tôi, tôi có (trong số những thứ khác):
- name: Install ufw
apt: name=ufw
- name: Allow ssh through firewall
ufw: proto=tcp port=22 rule=allow
- name: Set ufw policy
ufw: state=enabled direction=incoming policy=deny
Chỉnh sửa : Cần phải cho phép ssh trước khi đặt chính sách mặc định thành "từ chối" (ban đầu nó ngược lại ở trên), nếu không bạn có thể bị khóa ở giữa hai bước.
Sau đó, trong mỗi vai trò, tôi có các quy tắc tường lửa bổ sung cho vai trò đó. Ví dụ, trong roles/nginx/tasks/main.yml
, tôi có (trong số những thứ khác) này:
- name: Allow nginx firewall
ufw: proto=tcp port=80 rule=allow
- name: Allow nginx ssl firewall
ufw: proto=tcp port=443 rule=allow
Vì vậy, tất cả các máy chủ nginx của tôi có cổng 80 và 443 được mở.
Bằng cách này, bạn có thể xây dựng bất kỳ cấu hình phổ biến nào bạn muốn và thêm các quy tắc bổ sung trong các vai trò cụ thể hơn.
ferm
Nếu bạn có các quy tắc ufw
không thể xử lý, một giải pháp tôi nghĩ sẽ hoạt động tốt là ferm
; nó có thể làm hầu hết mọi thứ, và bạn có thể cấu hình nó để đọc quy tắc từ thư mục như /etc/ferm/input.d/
, /etc/ferm/output.d/
, /etc/ferm/forward.d/
, vv Bạn có thể làm cho bạn common
vai trò chuẩn bị cần thiết ferm
cấu hình và sau đó có vai trò khác thả tập tin trong các thư mục này.
iptables đơn giản
Yêu cầu của bạn để có ansible
các quy tắc cụ thể ngoài các quy tắc được chỉ định theo cách khác là không bình thường và dường như bất chấp hầu hết các điểm để sử dụng ansible
. Thật không may, tôi không thấy cách nào để làm điều đó ngoài việc đơn giản iptables
, điều này sẽ khá xấu xí. Dưới đây là một ví dụ về việc mở cổng 80 trong roles/nginx/tasks/main.yml
(chưa được kiểm tra):
- name: Check if port 80 is allowed
shell: iptables -L | grep -q "Allow http" && echo -n yes || echo -n no
register: check_allow_http
changed_when: no
always_run: yes
- name: Allow port 80
command: >
iptables -A INPUT -p tcp -m tcp --dport 80
-m comment --comment "Allow http" -j ACCEPT
when: check_allow_http.stdout == "no"
notify:
- Save iptables
nơi Save iptables
xử lý mà thực thi iptables-save
. Tất cả những điều trên là khá tẻ nhạt để viết, nhưng nó có thể phù hợp, đặc biệt nếu bạn chỉ có một vài quy tắc để quản lý ansible
.