Вопрос или проблема
В настоящее время я меняю порт для удаленной машины. Мне также нужно разрешить правила брандмауэра на Centos 6.9. Вот моя команда для открытия порта 2222 на sshd. Я не знаю, как открыть порт 2222 на iptables с помощью ansible. Может кто-то помочь?
- hosts: web
tasks:
- name: Сменить стандартный порт для SSH
lineinfile: dest=/etc/ssh/sshd_config
regexp="#Port 22"
line="Port 2222"
state=present
- name: Перезапустить sshd
service:
name: 'sshd'
state: 'restarted'
Как всегда, существует несколько способов достижения конкретной цели с помощью ansible, и правила iptables не исключение. Но здесь я оставлю вам способ открыть порт 2222 на iptables.
- iptables_raw:
name: allow_tcp_2222
rules: '-A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT'
Если ваш брандмауэр управляется system-config-firewall, то вы можете использовать lokkit
, чтобы открыть порты брандмауэра. Например:
- name: Открыть нестандартный ssh порт в system-config-firewall
command: lokkit -p 2222:tcp
when: ansible_os_family == 'RedHat' and ansible_distribution_major_version|int == 6
- name: Открыть стандартный ssh порт в system-config-firewall
command: lokkit -s ssh
when: ansible_os_family == 'RedHat' and ansible_distribution_major_version|int == 6
Ответ или решение
Открытие порта на iptables с использованием Ansible на CentOS 6.9
На данный момент, вы находитесь в процессе изменения порта для удаленной машины и хотите открыть порт 2222 в правилах файрвола CentOS 6.9. К счастью, с помощью Ansible это можно сделать достаточно просто. В этом руководстве мы рассмотрим несколько методов открытия порта 2222 в iptables, а также управление SSH.
Шаг 1: Изменение порта SSH
Вы уже написали задачу для изменения конфигурации SSH, что является правильным первым шагом. Используйте следующий код:
- hosts: web
tasks:
- name: Изменение порта по умолчанию для SSH
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "#Port 22"
line: "Port 2222"
state: present
- name: Перезапуск sshd
service:
name: sshd
state: restarted
Шаг 2: Открытие порта 2222 в iptables
Чтобы открыть порт 2222 в iptables, вы можете использовать модуль iptables_raw
, который позволяет добавлять любые правила в iptables. Вот пример кода для этого:
- name: Открыть порт 2222 в iptables
iptables_raw:
name: allow_tcp_2222
rules: '-A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT'
Конечный код
Объединяя всё вместе, ваш Playbook будет выглядеть следующим образом:
- hosts: web
tasks:
- name: Изменение порта по умолчанию для SSH
lineinfile:
dest: /etc/ssh/sshd_config
regexp: "#Port 22"
line: "Port 2222"
state: present
- name: Перезапуск sshd
service:
name: sshd
state: restarted
- name: Открыть порт 2222 в iptables
iptables_raw:
name: allow_tcp_2222
rules: '-A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT'
Использование lokkit (альтернативный метод)
Если вы используете систему управления файрволом system-config-firewall
, вы можете вместо этого воспользоваться утилитой lokkit
. Здесь пример использования lokkit
для открытия порта 2222:
- name: Открыть нестандартный порт SSH в system-config-firewall
command: lokkit -p 2222:tcp
when: ansible_os_family == 'RedHat' and ansible_distribution_major_version|int == 6
- name: Открыть стандартный порт SSH в system-config-firewall
command: lokkit -s ssh
when: ansible_os_family == 'RedHat' and ansible_distribution_major_version|int == 6
Заключение
С помощью вышеописанных методов вы можете успешно открыть порт 2222 в iptables или через lokkit
на CentOS 6.9, используя Ansible. Убедитесь, что вы протестировали изменения после их применения для обеспечения корректной работы SSH и работы службы. Работа с iptables и конфигурацией SSH требует тщательной проверки, чтобы избежать проблем с доступом к системе.
Данная инструкция предоставляет вам необходимые шаги для выполнения этой задачи качественно и эффективно.