[Bug 1756582] Review Request: sshguard - Protect hosts from brute-force attacks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=1756582



--- Comment #13 from Christopher Engelhard <ce@xxxxxxx> ---
Sorry for the delay, work intruded. Also, thanks again for the time & effort
you put into this.

- Just to clarify, afaik the packages linked on the sshguard website are not
built/maintained by upstream, though the debian package might be derived from
their 'debian' branch.
- Regarding 1.1, is there something similar to Arch's base-devel group, i.e. a
set of packages that forms a standard build environment and is thus assumed to
be present at buildtime and thus not listed explicitly? Anything using a
configure script is likely to require coreutils and diffutils for example, but
I don't usually see them as builddeps.

spec: https://gitlab.com/lcts-rpm/sshguard/raw/sshguard-2.4.0-10/sshguard.spec
diff:
https://gitlab.com/lcts-rpm/sshguard/compare/sshguard-2.4.0-9...sshguard-2.4.0-10
srpm:
https://copr-be.cloud.fedoraproject.org/results/lcts/sshguard/fedora-rawhide-x86_64/01045896-sshguard/sshguard-2.4.0-10.fc32.src.rpm

1.1) Additional dependencies.
fixed.
  coreutils - 'echo' is used in /usr/sbin/sshguard
  diffutils - 'diff' and 'cmp' are used at buildtime (in 'configure' and
'ylwrap', respectively), see question above
  fillup    - not needed. opensuse-specific dependency, I don't know what they
use it for.
  grep      - grep is used by /usr/sbin/sshguard
  openssh   - not needed. People might in fact want to monitor e.g. ftp on a
host without (a need for) ssh
              so I'd say it's bad to include this as a dependency. If ssh is
missing/not running, the configs if unmodified
              will cause sshguard to monitor an empty log, which it is
perfectly happy to do

1.2) %{?systemd_requires}
fixed - nice, learned something new.

2.1) the upstream package has better structured docs.
fixed:
%{_pkgdocdir}/sshguard/
  |- CONTRIBUTING.rst
  |- README.rst
  |- examples/
    |- sshguard.conf.sample
    |- whitelistfile.example

2.2) /var/lib/sshguard/db ownership
- used by the blacklist feature in the opensuse package, but not expected or
created by sshguard on its own
- not upstream's suggested path for the blacklist, they put it directly in
/var/lib/sshguard/. According to the spec .../db is an opensuse default
- see 2.4

2.3) better config file
fixed - I adapted examples/sshguard.conf.sample, which is extensively commented

2.4) white/blacklisting
I decided to set up the package so that it is prepared for this feature, but
leaves it disabled. That way, a user can simply uncomment the relevant lines in
the config file without further configuration
- added /etc/sshguard.whitelist containing only commented instructions for use
- added /var/lib/sshguard as package-owned dir
- preset blacklist file to /var/lib/sshguard/blacklist, which will be created
by sshguard if bl is enabled. It's not owned by the package, so RPM will delete
the folder if the user didn't enable it, but retain the blacklist file if they
did

2.5) net.sshguard.plist
correct, removed

2.6) prefix the directory you pack with "%dir"
fixed

3) simclist
I haven't heard back yet.

4) CI testing
It's a bit convoluted right now:
- 'make check' already checks that all log parsing / pattern matching is
working as expected
- GitLab CI (config:
https://gitlab.com/lcts-rpm/sshguard/blob/master/.gitlab-ci.yml) tests
installation and basic functionality
  - set up minimal docker installations of the various official CentOS & Fedora
images on docker hub
  - build & install the (sub-)package(s)
  - test that systemctl/service start|stop|status works without issues
  - lint the packages
- sshguard-testing repo on copr tests that the build also works on other
architectures
- I have a tiny cloud server that uses those test builds and checks that the
package is safe to use (for 'checks', read: it installs & uses the test build
and I test if I can lock myself out etc.)

GitLab CI is triggered by commits, test builds on copr by commits to master,
test server updates via dnf-automatic.
It should not be too difficult to integrate all that into a single pipeline - I
only use copr+gitlab ci because the latter only does x86_64. Simulating an
attack programmatically is certainly possible. If ssh is available, one could
probably just try to log into localhost with fake credentials to trigger a
block. I'll have to test that a bit.
I'll have a look at fedora's CI ... it uses ansible, so that's a plus already
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux