Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83167cdd4c | ||
|
|
7bf49663dd | ||
|
|
c751768731 | ||
|
|
05cf135b52 | ||
|
|
2341043c79 | ||
|
|
7c99aa19e0 | ||
|
|
745931444a | ||
|
|
8f7f3f0695 | ||
|
|
a97cc1d6ce | ||
|
|
ebbbde5ea8 | ||
|
|
8826a81a74 | ||
|
|
fdfb86b6bb | ||
|
|
1328c7ae93 | ||
|
|
43b6402acf | ||
|
|
c4acd62225 | ||
|
|
936240fc7a | ||
|
|
209ba1dabf | ||
|
|
db998ef8c5 | ||
|
|
4e5c4478d8 | ||
|
|
f6b52d55fc | ||
|
|
940ed980b3 | ||
|
|
9976169cad | ||
|
|
24d4d04840 | ||
|
|
95e50cb69d | ||
|
|
2484831bca | ||
|
|
76b0ae3000 | ||
|
|
1e40024850 |
No files matched your search
@@ -26,7 +26,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Lint Ansible Playbook
|
||||
uses: ansible/ansible-lint@8861a737a10e4bea5f5875d55d2f664908e7425c # v25
|
||||
uses: ansible/ansible-lint@7f6abc5ef97d0fb043a0f3d416dfbc74399fbda0 # v26
|
||||
@@ -11,18 +11,18 @@ jobs:
|
||||
if: github.repository == 'dev-sec/ansible-collection-hardening'
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
# deploy the collection first, because if it fails, we don't want
|
||||
# to update the galaxy.yml
|
||||
- name: Deploy the collection
|
||||
uses: artis3n/ansible_galaxy_collection@f6110aef877db4caaa7e9a192975fb006dea61fe # v2
|
||||
uses: artis3n/ansible_galaxy_collection@415a92b829b5898b6e8ca1dd7a69fe2a1e5fd4c0 # v2
|
||||
with:
|
||||
api_key: ${{ secrets.GALAXY_API_KEY }}
|
||||
galaxy_version: ${{ github.event.release.tag_name }}
|
||||
|
||||
# checkout master instead of the release-tag so we can push the galaxy.yml
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
ref: master
|
||||
|
||||
|
||||
@@ -56,13 +56,13 @@ jobs:
|
||||
# - fedora # geerlingguy.mysql does not support fedora
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
@@ -75,6 +75,7 @@ jobs:
|
||||
run: |
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: matrix.molecule_distro == 'rocky8' || matrix.molecule_distro == 'almalinux8'
|
||||
|
||||
|
||||
@@ -55,13 +55,13 @@ jobs:
|
||||
# - fedora # no support from geerlingguy role
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
@@ -74,6 +74,7 @@ jobs:
|
||||
run: |
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: matrix.molecule_distro == 'rocky8' || matrix.molecule_distro == 'almalinux8'
|
||||
|
||||
|
||||
@@ -60,13 +60,13 @@ jobs:
|
||||
- "/lib/systemd/systemd"
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
@@ -79,6 +79,7 @@ jobs:
|
||||
run: |
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: matrix.molecule_distro == 'rocky8' || matrix.molecule_distro == 'almalinux8'
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ on: # yamllint disable-line rule:truthy
|
||||
- 'molecule/os_hardening_vm/**'
|
||||
- '.github/workflows/os_hardening_vm.yml'
|
||||
- 'requirements.txt'
|
||||
- 'requirements-vm.txt'
|
||||
pull_request:
|
||||
branches: [master]
|
||||
paths:
|
||||
@@ -16,6 +17,7 @@ on: # yamllint disable-line rule:truthy
|
||||
- 'molecule/os_hardening_vm/**'
|
||||
- '.github/workflows/os_hardening_vm.yml'
|
||||
- 'requirements.txt'
|
||||
- 'requirements-vm.txt'
|
||||
schedule:
|
||||
- cron: '0 6 * * 2'
|
||||
|
||||
@@ -53,7 +55,7 @@ jobs:
|
||||
- generic/arch
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
@@ -63,7 +65,7 @@ jobs:
|
||||
source ~/.venv/ansible-collection-hardening/bin/activate
|
||||
python -m pip install --no-cache-dir --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install python-vagrant
|
||||
pip install -r requirements-vm.txt
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
|
||||
- name: Downgrade Ansible for Rocky 8 tests
|
||||
@@ -71,6 +73,7 @@ jobs:
|
||||
source ~/.venv/ansible-collection-hardening/bin/activate
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: >
|
||||
matrix.molecule_distro == 'generic/rocky8' ||
|
||||
@@ -84,6 +87,8 @@ jobs:
|
||||
- name: Test with molecule
|
||||
run: |
|
||||
source ~/.venv/ansible-collection-hardening/bin/activate
|
||||
# Workaround for https://github.com/ansible-community/molecule-plugins/issues/301
|
||||
export MOLECULE_VAGRANT_PLUGIN_DIR=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')/molecule_plugins/vagrant
|
||||
molecule test -s os_hardening_vm
|
||||
env:
|
||||
MOLECULE_DISTRO: ${{ matrix.molecule_distro }}
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Git checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
ref: ${{ github.head_ref }}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
if: github.repository == 'dev-sec/ansible-collection-hardening'
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: master
|
||||
|
||||
@@ -27,10 +27,10 @@ jobs:
|
||||
- ssh_hardening
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
|
||||
@@ -63,13 +63,13 @@ jobs:
|
||||
- "/lib/systemd/systemd"
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
@@ -82,6 +82,7 @@ jobs:
|
||||
run: |
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: matrix.molecule_distro == 'rocky8' || matrix.molecule_distro == 'almalinux8'
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ on: # yamllint disable-line rule:truthy
|
||||
- 'molecule/ssh_hardening_bsd/**'
|
||||
- '.github/workflows/ssh_hardening_bsd.yml'
|
||||
- 'requirements.txt'
|
||||
- 'requirements-vm.txt'
|
||||
pull_request:
|
||||
branches: [master]
|
||||
paths:
|
||||
@@ -16,6 +17,7 @@ on: # yamllint disable-line rule:truthy
|
||||
- 'molecule/ssh_hardening_bsd/**'
|
||||
- '.github/workflows/ssh_hardening_bsd.yml'
|
||||
- 'requirements.txt'
|
||||
- 'requirements-vm.txt'
|
||||
schedule:
|
||||
- cron: '0 6 * * 5'
|
||||
|
||||
@@ -41,7 +43,7 @@ jobs:
|
||||
- freebsd14
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
@@ -51,7 +53,7 @@ jobs:
|
||||
source ~/.venv/ansible-collection-hardening/bin/activate
|
||||
python -m pip install --no-cache-dir --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install python-vagrant
|
||||
pip install -r requirements-vm.txt
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
|
||||
- name: Update Vagrant Box
|
||||
@@ -61,6 +63,8 @@ jobs:
|
||||
- name: Test with molecule
|
||||
run: |
|
||||
source ~/.venv/ansible-collection-hardening/bin/activate
|
||||
# Workaround for https://github.com/ansible-community/molecule-plugins/issues/301
|
||||
export MOLECULE_VAGRANT_PLUGIN_DIR=$(python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])')/molecule_plugins/vagrant
|
||||
molecule test -s ssh_hardening_bsd
|
||||
env:
|
||||
MOLECULE_DISTRO: ${{ matrix.molecule_distro }}
|
||||
|
||||
@@ -63,13 +63,13 @@ jobs:
|
||||
- "/lib/systemd/systemd"
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
|
||||
with:
|
||||
path: ansible_collections/devsec/hardening
|
||||
submodules: true
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6
|
||||
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
||||
with:
|
||||
python-version: 3.13
|
||||
cache: 'pip'
|
||||
@@ -82,6 +82,7 @@ jobs:
|
||||
run: |
|
||||
pip install "ansible-core<2.17"
|
||||
ansible-galaxy collection install 'community.crypto:<3.0.0'
|
||||
ansible-galaxy collection install 'community.general:<12.0.0'
|
||||
working-directory: ansible_collections/devsec/hardening
|
||||
if: matrix.molecule_distro == 'rocky8' || matrix.molecule_distro == 'almalinux8'
|
||||
|
||||
|
||||
@@ -1,5 +1,32 @@
|
||||
# Changelog
|
||||
|
||||
## [Unreleased](https://github.com/dev-sec/ansible-collection-hardening/tree/HEAD)
|
||||
|
||||
[Full Changelog](https://github.com/dev-sec/ansible-collection-hardening/compare/10.4.0...HEAD)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- fix: replace deprecated community.general.yaml callback plugin [\#918](https://github.com/dev-sec/ansible-collection-hardening/pull/918) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([Normo](https://github.com/Normo))
|
||||
- Consistently access facts via the ansible\_facts.\* namespace [\#917](https://github.com/dev-sec/ansible-collection-hardening/pull/917) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([Normo](https://github.com/Normo))
|
||||
- disable systemd audit logging [\#902](https://github.com/dev-sec/ansible-collection-hardening/pull/902) [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] ([z-bsod](https://github.com/z-bsod))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- /etc/sysctl.conf is no longer honored in Debian 13 [\#905](https://github.com/dev-sec/ansible-collection-hardening/issues/905)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- chore\(deps\): update actions/setup-python digest to a309ff8 [\#929](https://github.com/dev-sec/ansible-collection-hardening/pull/929) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update ansible/ansible-lint action to v26 [\#928](https://github.com/dev-sec/ansible-collection-hardening/pull/928) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update artis3n/ansible\_galaxy\_collection digest to 415a92b - autoclosed [\#927](https://github.com/dev-sec/ansible-collection-hardening/pull/927) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update ansible/ansible-lint digest to a2bc8b8 [\#924](https://github.com/dev-sec/ansible-collection-hardening/pull/924) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update actions/setup-python digest to 83679a8 [\#920](https://github.com/dev-sec/ansible-collection-hardening/pull/920) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update actions/checkout action to v6 [\#919](https://github.com/dev-sec/ansible-collection-hardening/pull/919) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update dependency molecule to v25.12.0 [\#914](https://github.com/dev-sec/ansible-collection-hardening/pull/914) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- chore\(deps\): update ansible/ansible-lint digest to 40f24c2 [\#913](https://github.com/dev-sec/ansible-collection-hardening/pull/913) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
- Update test environments to current Ansible version [\#909](https://github.com/dev-sec/ansible-collection-hardening/pull/909) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] ([schurzi](https://github.com/schurzi))
|
||||
- chore\(deps\): update ansible/ansible-lint digest to d7cd7cf [\#903](https://github.com/dev-sec/ansible-collection-hardening/pull/903) ([renovate[bot]](https://github.com/apps/renovate))
|
||||
|
||||
## [10.4.0](https://github.com/dev-sec/ansible-collection-hardening/tree/10.4.0) (2025-10-22)
|
||||
|
||||
[Full Changelog](https://github.com/dev-sec/ansible-collection-hardening/compare/10.3.1...10.4.0)
|
||||
@@ -11,6 +38,14 @@
|
||||
- Add support for current versions of Debian and EL [\#893](https://github.com/dev-sec/ansible-collection-hardening/pull/893) [[mysql_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/mysql_hardening)] [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] [[nginx_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/nginx_hardening)] ([schurzi](https://github.com/schurzi))
|
||||
- Add SSH config for EL/AlmaLinux 10 [\#888](https://github.com/dev-sec/ansible-collection-hardening/pull/888) [[ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/ssh_hardening)] ([jonathanspw](https://github.com/jonathanspw))
|
||||
|
||||
**Fixed bugs:**
|
||||
|
||||
- Write sysctl config to separate file [\#907](https://github.com/dev-sec/ansible-collection-hardening/pull/907) [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] ([schurzi](https://github.com/schurzi))
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- sysctl-34 - fs.protected\_regular not set [\#536](https://github.com/dev-sec/ansible-collection-hardening/issues/536)
|
||||
|
||||
**Merged pull requests:**
|
||||
|
||||
- Update ArchLinux test environment before testing [\#908](https://github.com/dev-sec/ansible-collection-hardening/pull/908) [[os_hardening](https://github.com/dev-sec/ansible-collection-hardening/labels/os_hardening)] ([schurzi](https://github.com/schurzi))
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
namespace: devsec
|
||||
name: hardening
|
||||
version: 10.3.1
|
||||
version: 10.4.0
|
||||
readme: README.md
|
||||
authors:
|
||||
- dev-sec <[email protected]>
|
||||
|
||||
@@ -12,22 +12,22 @@
|
||||
mysql_python_package_debian: python3-pymysql
|
||||
when:
|
||||
- mysql_python_package_debian is not defined
|
||||
- ansible_distribution == "Ubuntu"
|
||||
- ansible_distribution_major_version|int > 19
|
||||
- ansible_facts.distribution == "Ubuntu"
|
||||
- ansible_facts.distribution_major_version|int > 19
|
||||
|
||||
- name: Determine required MySQL Python libraries.
|
||||
ansible.builtin.set_fact:
|
||||
mysql_python_package_debian: "{% if 'python3' in ansible_python_interpreter | default('') %}python3-mysqldb{% else %}python-mysqldb{% endif %}"
|
||||
when:
|
||||
- mysql_python_package_debian is not defined
|
||||
- ansible_distribution != "Ubuntu"
|
||||
- ansible_distribution_major_version|int < 20
|
||||
- ansible_facts.distribution != "Ubuntu"
|
||||
- ansible_facts.distribution_major_version|int < 20
|
||||
|
||||
- name: Use Python 3 on Suse
|
||||
ansible.builtin.set_fact:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
when:
|
||||
- ansible_os_family == 'Suse'
|
||||
- ansible_facts.os_family == 'Suse'
|
||||
|
||||
- name: Include mysql_hardening role
|
||||
ansible.builtin.include_role:
|
||||
|
||||
@@ -22,7 +22,9 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
# Currently not supported by dev-sec.mysql role
|
||||
# inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
|
||||
|
||||
@@ -17,25 +17,25 @@
|
||||
ansible.builtin.set_fact:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
when:
|
||||
- ansible_distribution == 'Debian'
|
||||
- ansible_distribution_major_version|int >= 11
|
||||
- ansible_facts.distribution == 'Debian'
|
||||
- ansible_facts.distribution_major_version|int >= 11
|
||||
|
||||
- name: Use Python 3 on Suse
|
||||
ansible.builtin.set_fact:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
when:
|
||||
- ansible_os_family == 'Suse'
|
||||
- ansible_facts.os_family == 'Suse'
|
||||
|
||||
- name: Run the equivalent of "apt-get update && apt-get upgrade"
|
||||
ansible.builtin.apt:
|
||||
upgrade: safe
|
||||
update_cache: true
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
- name: Install required python packages on Suse
|
||||
ansible.builtin.command: zypper -n install python311-rpm python311-PyMySQL
|
||||
changed_when: false
|
||||
when: ansible_os_family == 'Suse'
|
||||
when: ansible_facts.os_family == 'Suse'
|
||||
|
||||
- name: Create missing directory
|
||||
ansible.builtin.file:
|
||||
@@ -48,23 +48,23 @@
|
||||
mysql_python_package_debian: python3-pymysql
|
||||
when:
|
||||
- mysql_python_package_debian is not defined
|
||||
- ansible_distribution == "Ubuntu"
|
||||
- ansible_distribution_major_version|int > 19
|
||||
- ansible_facts.distribution == "Ubuntu"
|
||||
- ansible_facts.distribution_major_version|int > 19
|
||||
|
||||
- name: Determine required MySQL Python libraries.
|
||||
ansible.builtin.set_fact:
|
||||
mysql_python_package_debian: "{% if 'python3' in ansible_python_interpreter | default('') %}python3-mysqldb{% else %}python-mysqldb{% endif %}"
|
||||
when:
|
||||
- mysql_python_package_debian is not defined
|
||||
- ansible_distribution != "Ubuntu"
|
||||
- ansible_distribution_major_version|int < 20
|
||||
- ansible_facts.distribution != "Ubuntu"
|
||||
- ansible_facts.distribution_major_version|int < 20
|
||||
|
||||
- name: Install required MySQL Python libraries on RHEL
|
||||
ansible.builtin.dnf:
|
||||
name: "{% if 'python3' in ansible_python_interpreter | default('') %}python36-PyMySQL{% else %}python2-PyMySQL{% endif %}"
|
||||
when:
|
||||
- ansible_os_family == "RedHat"
|
||||
- ansible_distribution_major_version == "7"
|
||||
- ansible_facts.os_family == "RedHat"
|
||||
- ansible_facts.distribution_major_version == "7"
|
||||
|
||||
- name: Install mysql with a generic Ansible role
|
||||
ansible.builtin.include_role:
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
ansible.builtin.set_fact:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
when:
|
||||
- ansible_os_family == 'Suse'
|
||||
- ansible_facts.os_family == 'Suse'
|
||||
|
||||
- name: Install procps for debian systems
|
||||
ansible.builtin.apt:
|
||||
name: procps
|
||||
state: present
|
||||
update_cache: true
|
||||
when: ansible_distribution == 'Debian'
|
||||
when: ansible_facts.distribution == 'Debian'
|
||||
|
||||
- name: Include tests for the service
|
||||
ansible.builtin.include_tasks: verify_tasks/service.yml
|
||||
|
||||
@@ -21,7 +21,9 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
# Currently not supported by geerlingguy.nginx role
|
||||
# inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- name: Set correct distribution Version for Amazon Linux
|
||||
ansible.builtin.set_fact:
|
||||
ansible_distribution_major_version: 7
|
||||
when: ansible_distribution == 'Amazon'
|
||||
when: ansible_facts.distribution == 'Amazon'
|
||||
|
||||
- name: Install nginx with a generic Ansible role
|
||||
ansible.builtin.include_role:
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
name: procps
|
||||
state: present
|
||||
update_cache: true
|
||||
when: ansible_distribution == 'Debian'
|
||||
when: ansible_facts.distribution == 'Debian'
|
||||
|
||||
- name: Verify
|
||||
hosts: localhost
|
||||
|
||||
@@ -17,7 +17,8 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
ansible.builtin.apt:
|
||||
upgrade: safe
|
||||
update_cache: true
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
- name: Install required tools on SuSE
|
||||
# cannot use zypper module, since it depends on python-xml
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
# this uses the date from the expire_date variable and subtracts the current date.
|
||||
# it should be bigger that the password_expire_min of the user "pw_no_ageing"
|
||||
that:
|
||||
- ( expiry_date.stdout | trim | to_datetime('%b %d, %Y') - ansible_date_time.date | to_datetime('%Y-%m-%d')).days == 60
|
||||
- ( expiry_date.stdout | trim | to_datetime('%b %d, %Y') - ansible_facts.date_time.date | to_datetime('%Y-%m-%d')).days == 60
|
||||
|
||||
- name: Get Password Expiry warning days for pw_ageing
|
||||
ansible.builtin.shell: chage -l pw_ageing | grep "warning before password expires" | cut -d ":" -f 2
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
- name: Check that shell_sys_acc's shell is still bash
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- getent_passwd['shell_sys_acc'][5] == "/bin/bash"
|
||||
- ansible_facts.getent_passwd['shell_sys_acc'][5] == "/bin/bash"
|
||||
@@ -30,7 +30,7 @@
|
||||
os_mnt_var_options: rw,nosuid,nodev,compress=zstd:1,subvol=var
|
||||
when:
|
||||
- ansible_facts.distribution == 'Fedora'
|
||||
- ansible_distribution_major_version|int == 40
|
||||
- ansible_facts.distribution_major_version|int == 40
|
||||
|
||||
- name: Include os_hardening role
|
||||
ansible.builtin.include_role:
|
||||
|
||||
@@ -24,7 +24,10 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
# Workaround for https://github.com/ansible-community/molecule-plugins/issues/301
|
||||
library: "${MOLECULE_PROJECT_DIRECTORY}/plugins/modules:/usr/share/ansible:${MOLECULE_VAGRANT_PLUGIN_DIR}"
|
||||
inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
env:
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
ansible.builtin.dpkg_selections:
|
||||
name: grub-pc
|
||||
selection: hold
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
# we need to free up space, since the /boot partition in some Vagrant images is
|
||||
# pretty small and system updates might fail
|
||||
@@ -35,20 +35,20 @@
|
||||
paths: /boot
|
||||
patterns: "initrd.img*"
|
||||
register: find_results
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
- name: Delete all initrd.img to free space on /boot
|
||||
ansible.builtin.file:
|
||||
path: "{{ item['path'] }}"
|
||||
state: absent
|
||||
with_items: "{{ find_results['files'] }}"
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
- name: Run the equivalent of "apt-get update && apt-get upgrade"
|
||||
ansible.builtin.apt:
|
||||
upgrade: safe
|
||||
update_cache: true
|
||||
when: ansible_os_family == 'Debian'
|
||||
when: ansible_facts.os_family == 'Debian'
|
||||
|
||||
- name: Install required tools on fedora
|
||||
ansible.builtin.dnf:
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
- name: Make sure environment variable for MOLECULE_DISTRO is set
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "lookup('env','MOLECULE_DISTRO')"
|
||||
- "lookup('env','MOLECULE_DISTRO') | length > 0"
|
||||
fail_msg: "You need to set MOLECULE_DISTRO to a supported image name. See CONTRIBUTING.md"
|
||||
@@ -17,7 +17,8 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
inject_facts_as_vars: false
|
||||
inventory:
|
||||
host_vars:
|
||||
# https://molecule.readthedocs.io/en/latest/examples.html#docker-with-non-privileged-user
|
||||
|
||||
@@ -20,7 +20,10 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
# Workaround for https://github.com/ansible-community/molecule-plugins/issues/301
|
||||
library: "${MOLECULE_PROJECT_DIRECTORY}/plugins/modules:/usr/share/ansible:${MOLECULE_VAGRANT_PLUGIN_DIR}"
|
||||
inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
env:
|
||||
|
||||
@@ -17,7 +17,8 @@ provisioner:
|
||||
config_options:
|
||||
defaults:
|
||||
interpreter_python: auto_silent
|
||||
callbacks_enabled: profile_tasks, timer, yaml
|
||||
callbacks_enabled: profile_tasks, timer
|
||||
inject_facts_as_vars: false
|
||||
verifier:
|
||||
name: ansible
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
molecule-plugins[vagrant]==25.8.12
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
molecule==25.1.0
|
||||
molecule-plugins[docker]==23.7.0
|
||||
ansible-core==2.18.6
|
||||
molecule==25.12.0
|
||||
molecule-plugins[docker]==25.8.12
|
||||
ansible-core==2.19.3
|
||||
docker==7.1.0
|
||||
jmespath==1.0.1
|
||||
jmespath==1.1.0
|
||||
aar-doc==2.3.0
|
||||
passlib==1.7.4
|
||||
@@ -27,3 +27,8 @@
|
||||
path: "{{ item }}"
|
||||
state: remounted
|
||||
loop: "{{ mountpoints_changed }}"
|
||||
|
||||
- name: Restart journald
|
||||
ansible.builtin.systemd:
|
||||
name: systemd-journald.service
|
||||
state: restarted
|
||||
@@ -16,3 +16,15 @@
|
||||
- Restart auditd via service
|
||||
- Restart auditd via systemd
|
||||
tags: auditd
|
||||
|
||||
- name: Disable systemd-journald.audit
|
||||
when:
|
||||
- ansible_facts.os_family != 'Suse' # socket doesn't seem to exist on suse
|
||||
ansible.builtin.systemd:
|
||||
name: systemd-journald-audit.socket
|
||||
state: stopped
|
||||
enabled: false
|
||||
masked: true
|
||||
notify:
|
||||
- Restart journald
|
||||
tags: auditd
|
||||
@@ -4,4 +4,4 @@
|
||||
name: ctrl-alt-del.target
|
||||
masked: true
|
||||
daemon_reload: true
|
||||
when: ansible_service_mgr == "systemd"
|
||||
when: ansible_facts.service_mgr == "systemd"
|
||||
@@ -37,7 +37,7 @@
|
||||
group: root
|
||||
mode: "0755"
|
||||
state: directory
|
||||
when: ansible_service_mgr == "systemd"
|
||||
when: ansible_facts.service_mgr == "systemd"
|
||||
|
||||
- name: Create custom.conf for disabling coredumps
|
||||
ansible.builtin.template:
|
||||
@@ -46,7 +46,7 @@
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: ansible_service_mgr == "systemd"
|
||||
when: ansible_facts.service_mgr == "systemd"
|
||||
notify: Reload systemd
|
||||
|
||||
- name: Enable coredumps
|
||||
@@ -56,7 +56,7 @@
|
||||
ansible.builtin.file:
|
||||
path: /etc/systemd/coredump.conf.d
|
||||
state: absent
|
||||
when: ansible_service_mgr == "systemd"
|
||||
when: ansible_facts.service_mgr == "systemd"
|
||||
notify: Reload systemd
|
||||
|
||||
- name: Remove 10.hardcore.conf config file
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
- name: Generate list of current available mounted filesystems on the system
|
||||
ansible.builtin.set_fact:
|
||||
mountpoints_list: "{{ ansible_mounts | map(attribute='mount') | list }}"
|
||||
mountpoints_list: "{{ ansible_facts.mounts | map(attribute='mount') | list }}"
|
||||
|
||||
- name: Append special devices list to valid mountpoint list
|
||||
ansible.builtin.set_fact:
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
- mount.enabled | bool
|
||||
- mount.path in mountpoints_list
|
||||
vars:
|
||||
mountinfo: "{{ ansible_mounts | selectattr('mount', 'equalto', mount.path) | list | first | default(None) }}"
|
||||
mountinfo: "{{ ansible_facts.mounts | selectattr('mount', 'equalto', mount.path) | list | first | default(None) }}"
|
||||
notify: Remount filesystems
|
||||
|
||||
- name: "Check for existence of mount {{ mount.path }}"
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
- name: Remove used filesystems from fs-list
|
||||
ansible.builtin.set_fact:
|
||||
os_unused_filesystems: "{{ os_unused_filesystems | difference(ansible_mounts | map(attribute='fstype') | list) }}"
|
||||
os_unused_filesystems: "{{ os_unused_filesystems | difference(ansible_facts.mounts | map(attribute='fstype') | list) }}"
|
||||
|
||||
- name: Disable unused filesystems | os-10
|
||||
ansible.builtin.template:
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
when: ansible_facts.os_family == 'RedHat'
|
||||
|
||||
- name: Change sysctls
|
||||
when: ansible_virtualization_type not in ['docker', 'lxc', 'openvz']
|
||||
when: ansible_facts.virtualization_type not in ['docker', 'lxc', 'openvz']
|
||||
block:
|
||||
- name: Protect sysctl.conf
|
||||
ansible.builtin.file:
|
||||
|
||||
@@ -4,28 +4,28 @@
|
||||
database: passwd
|
||||
# creates a dict for each user containing UID/HOMEDIR etc...
|
||||
# skip this task if getent was run before without specifying a key (single entry)
|
||||
when: getent_passwd is undefined or
|
||||
getent_passwd | length <= 1
|
||||
when: ansible_facts.getent_passwd is undefined or
|
||||
ansible_facts.getent_passwd | length <= 1
|
||||
|
||||
- name: Read local linux shadow database
|
||||
ansible.builtin.getent:
|
||||
database: shadow
|
||||
|
||||
- name: Extract system accounts from local user database
|
||||
loop: "{{ getent_passwd.keys() | list }}"
|
||||
loop: "{{ ansible_facts.getent_passwd.keys() | list }}"
|
||||
when:
|
||||
- getent_passwd[item][1]|int > 0
|
||||
- getent_passwd[item][1]|int <= os_auth_sys_uid_max|int
|
||||
- ansible_facts.getent_passwd[item][1]|int > 0
|
||||
- ansible_facts.getent_passwd[item][1]|int <= os_auth_sys_uid_max|int
|
||||
- item is not in os_always_ignore_users # skip users from "os_always_ignore_users" list (taken from role "vars")
|
||||
- item is not in os_ignore_users # skip users from "os_ignore_users" list (taken from role "defaults")
|
||||
ansible.builtin.set_fact:
|
||||
system_users: "{{ system_users | default([]) + [item] }}"
|
||||
|
||||
- name: Extract regular (non-system, non-root) accounts from local user database
|
||||
loop: "{{ getent_passwd.keys() | list }}"
|
||||
loop: "{{ ansible_facts.getent_passwd.keys() | list }}"
|
||||
when:
|
||||
- getent_passwd[item][1]|int >= os_auth_uid_min|int
|
||||
- getent_passwd[item][1]|int <= os_auth_uid_max|int
|
||||
- ansible_facts.getent_passwd[item][1]|int >= os_auth_uid_min|int
|
||||
- ansible_facts.getent_passwd[item][1]|int <= os_auth_uid_max|int
|
||||
- item is not in os_always_ignore_users # skip users from "os_always_ignore_users" list (taken from role "vars")
|
||||
- item is not in os_ignore_users # skip users from "os_ignore_users" list (taken from role "defaults")
|
||||
ansible.builtin.set_fact:
|
||||
@@ -42,13 +42,14 @@
|
||||
- os_user_pw_ageing
|
||||
- regular_users is defined and (regular_users | length > 0)
|
||||
- item not in os_users_without_password_ageing
|
||||
- getent_shadow[item][0] is not match("\*") # password hashes containing illegal characters like "*" are unusable (locked) and don't need to age
|
||||
- getent_shadow[item][0] is not match("\!") # password hashes containing illegal characters like "!" are unusable (locked) and don't need to age
|
||||
# password hashes with illegal characters like "*" or "!" are unusable (locked) and don't need to age
|
||||
- ansible_facts.getent_shadow[item][0] is not match("\*")
|
||||
- ansible_facts.getent_shadow[item][0] is not match("\!")
|
||||
|
||||
- name: Extract root account(s) from local user database
|
||||
loop: "{{ getent_passwd.keys() | list }}"
|
||||
loop: "{{ ansible_facts.getent_passwd.keys() | list }}"
|
||||
when:
|
||||
- getent_passwd[item][1]|int == 0
|
||||
- ansible_facts.getent_passwd[item][1]|int == 0
|
||||
ansible.builtin.set_fact:
|
||||
root_users: "{{ root_users | default([]) + [item] }}"
|
||||
|
||||
@@ -56,7 +57,7 @@
|
||||
ansible.builtin.file:
|
||||
mode: "0700"
|
||||
owner: "{{ item }}"
|
||||
path: "{{ getent_passwd[item][4] }}"
|
||||
path: "{{ ansible_facts.getent_passwd[item][4] }}"
|
||||
state: directory
|
||||
loop: "{{ root_users }}"
|
||||
when:
|
||||
@@ -71,8 +72,9 @@
|
||||
loop: "{{ root_users }}"
|
||||
when:
|
||||
- os_rootuser_pw_ageing | bool
|
||||
- getent_shadow[item][0] is not match("\*") # password hashes containing illegal characters like "*" are unusable (locked) and don't need to age
|
||||
- getent_shadow[item][0] is not match("\!") # password hashes containing illegal characters like "!" are unusable (locked) and don't need to age
|
||||
# password hashes with illegal characters like "*" or "!" are unusable (locked) and don't need to age
|
||||
- ansible_facts.getent_shadow[item][0] is not match("\*")
|
||||
- ansible_facts.getent_shadow[item][0] is not match("\!")
|
||||
|
||||
- name: Remove additional users with UID=0 ("root" user is not touched)
|
||||
ansible.builtin.user:
|
||||
@@ -98,13 +100,13 @@
|
||||
createhome: false
|
||||
loop: "{{ system_users }}"
|
||||
when:
|
||||
- getent_shadow[item][0] is not match("\!") # password hashes containing illegal characters like "!" are unusable already (locked)
|
||||
- ansible_facts.getent_shadow[item][0] is not match("\!") # password hashes containing illegal characters like "!" are unusable already (locked)
|
||||
|
||||
- name: Limit access to home directories of regular (non-system, non-root) accounts
|
||||
ansible.builtin.file:
|
||||
mode: "0700"
|
||||
owner: "{{ item }}"
|
||||
path: "{{ getent_passwd[item][4] }}"
|
||||
path: "{{ ansible_facts.getent_passwd[item][4] }}"
|
||||
state: directory
|
||||
loop: "{{ regular_users }}"
|
||||
when:
|
||||
|
||||
Reference in new issue
Block a user