Dominik 'Rathann' Mierzejewski 0654eba
Summary: Port Scan Attack Detector (psad) watches for suspect traffic
Dominik 'Rathann' Mierzejewski 0654eba
Name: psad
Dominik 'Rathann' Mierzejewski 11c9473
Version: 2.4.3
Dominik 'Rathann' Mierzejewski 11c9473
Release: 2%{?dist}
Dominik 'Rathann' Mierzejewski 0654eba
License: GPLv2+
Dominik 'Rathann' Mierzejewski 0654eba
Group: System Environment/Daemons
Dominik 'Rathann' Mierzejewski 11c9473
URL: https://www.cipherdyne.org/psad/
Dominik 'Rathann' Mierzejewski 11c9473
Source0: https://www.cipherdyne.org/psad/download/psad-%{version}.tar.bz2
Dominik 'Rathann' Mierzejewski 11c9473
Source1: https://www.cipherdyne.org/psad/download/psad-%{version}.tar.bz2.asc
Dominik 'Rathann' Mierzejewski 3e032ae
# curl -O https://www.cipherdyne.org/signing_key ; gpg --import ./signing_key
Dominik 'Rathann' Mierzejewski 3e032ae
# gpg --export --export-options export-minimal 4D6644A9DA036904BDA2CB90E6C9E3350D3E7410 > 4D6644A9DA036904BDA2CB90E6C9E3350D3E7410.gpg
Dominik 'Rathann' Mierzejewski 3e032ae
Source2: 4D6644A9DA036904BDA2CB90E6C9E3350D3E7410.gpg
Dominik 'Rathann' Mierzejewski 3e032ae
Source3: psad.service
Dominik 'Rathann' Mierzejewski 3e032ae
Source4: psad-tmpfiles.conf
Dominik 'Rathann' Mierzejewski 11c9473
# patch to:
Dominik 'Rathann' Mierzejewski 11c9473
# * allow specifying Fedora CFLAGS
Dominik 'Rathann' Mierzejewski 11c9473
# * use system whois
Dominik 'Rathann' Mierzejewski 11c9473
# * set some sensible defaults in /etc/psad/psad.conf
Dominik 'Rathann' Mierzejewski 11c9473
Patch0: psad-fedora.patch
Dominik 'Rathann' Mierzejewski 3e032ae
BuildRequires: %{_bindir}/gpgv2
Dominik 'Rathann' Mierzejewski 0654eba
BuildRequires: perl-generators
Dominik 'Rathann' Mierzejewski 11c9473
BuildRequires: systemd
Dominik 'Rathann' Mierzejewski 11c9473
# works with system one, but doesn't crash or break without it
Dominik 'Rathann' Mierzejewski 3e032ae
Recommends: %{_bindir}/whois
Dominik 'Rathann' Mierzejewski 0654eba
Requires: iptables
Dominik 'Rathann' Mierzejewski 11c9473
# The automatic dependency generator doesn't find these
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(Bit::Vector)
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(Carp::Clan)
Dominik 'Rathann' Mierzejewski 0654eba
Requires: perl(Date::Calc)
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(IPTables::ChainMgr)
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(IPTables::Parse)
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(NetAddr::IP)
Dominik 'Rathann' Mierzejewski 11c9473
Requires: perl(Storable)
Dominik 'Rathann' Mierzejewski 0654eba
Requires: perl(Unix::Syslog)
Dominik 'Rathann' Mierzejewski 11c9473
Requires(post): %{_sbindir}/semodule
Dominik 'Rathann' Mierzejewski 11c9473
Requires(postun): %{_sbindir}/semodule
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%description
Dominik 'Rathann' Mierzejewski 0654eba
Port Scan Attack Detector (psad) is a collection of three lightweight
Dominik 'Rathann' Mierzejewski 0654eba
system daemons written in Perl and in C that are designed to work with Linux
Dominik 'Rathann' Mierzejewski 0654eba
iptables firewalling code to detect port scans and other suspect traffic.  It
Dominik 'Rathann' Mierzejewski 0654eba
features a set of highly configurable danger thresholds (with sensible
Dominik 'Rathann' Mierzejewski 0654eba
defaults provided), verbose alert messages that include the source,
Dominik 'Rathann' Mierzejewski 0654eba
destination, scanned port range, begin and end times, tcp flags and
Dominik 'Rathann' Mierzejewski 0654eba
corresponding nmap options, reverse DNS info, email and syslog alerting,
Dominik 'Rathann' Mierzejewski 0654eba
automatic blocking of offending ip addresses via dynamic configuration of
Dominik 'Rathann' Mierzejewski 0654eba
iptables rulesets, and passive operating system fingerprinting.  In addition,
Dominik 'Rathann' Mierzejewski 0654eba
psad incorporates many of the tcp, udp, and icmp signatures included in the
Dominik 'Rathann' Mierzejewski 11c9473
snort intrusion detection system (https://www.snort.org) to detect highly
Dominik 'Rathann' Mierzejewski 0654eba
suspect scans for various backdoor programs (e.g. EvilFTP, GirlFriend,
Dominik 'Rathann' Mierzejewski 0654eba
SubSeven), DDoS tools (mstream, shaft), and advanced port scans (syn, fin,
Dominik 'Rathann' Mierzejewski 0654eba
xmas) which are easily leveraged against a machine via nmap.  psad can also
Dominik 'Rathann' Mierzejewski 0654eba
alert on snort signatures that are logged via fwsnort
Dominik 'Rathann' Mierzejewski 11c9473
(https://www.cipherdyne.org/fwsnort/), which makes use of the
Dominik 'Rathann' Mierzejewski 0654eba
iptables string match module to detect application layer signatures.
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%prep
Dominik 'Rathann' Mierzejewski 3e032ae
gpgv2 --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0}
Dominik 'Rathann' Mierzejewski 0654eba
%setup -q
Dominik 'Rathann' Mierzejewski 11c9473
%patch0 -p1 -b .f
Dominik 'Rathann' Mierzejewski 11c9473
# remove bundled stuff
Dominik 'Rathann' Mierzejewski 11c9473
rm -r deps/{Bit-Vector,Carp-Clan,Date-Calc,IPTables-ChainMgr,IPTables-Parse,NetAddr-IP,Storable,Unix-Syslog,whois}
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%build
Dominik 'Rathann' Mierzejewski 11c9473
make OPTS="%{optflags}" %{?_smp_mflags}
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%install
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm755 -t %{buildroot}%{_sbindir} kmsgsd psad{,watchd}
Dominik 'Rathann' Mierzejewski 11c9473
install  -pm755 fwcheck_psad.pl %{buildroot}%{_sbindir}/fwcheck_psad
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm755 -t %{buildroot}%{_bindir} nf2csv
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm644 logrotate.psad %{buildroot}%{_sysconfdir}/logrotate.d/psad
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm644 -t %{buildroot}%{_sysconfdir}/%{name} \
Dominik 'Rathann' Mierzejewski 11c9473
 auto_dl \
Dominik 'Rathann' Mierzejewski 11c9473
 icmp_types \
Dominik 'Rathann' Mierzejewski 11c9473
 icmp6_types \
Dominik 'Rathann' Mierzejewski 11c9473
 ip_options \
Dominik 'Rathann' Mierzejewski 11c9473
 pf.os \
Dominik 'Rathann' Mierzejewski 11c9473
 posf \
Dominik 'Rathann' Mierzejewski 11c9473
 protocols \
Dominik 'Rathann' Mierzejewski 11c9473
 psad.conf \
Dominik 'Rathann' Mierzejewski 11c9473
 signatures \
Dominik 'Rathann' Mierzejewski 11c9473
 snort_rule_dl \
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm644 -t %{buildroot}%{_mandir}/man8 {fwcheck_psad,kmsgsd,psad{,watchd}}.8
Dominik 'Rathann' Mierzejewski 11c9473
install -Dpm644 -t %{buildroot}%{_mandir}/man1 nf2csv.1
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 11c9473
cp -pr deps/snort_rules %{buildroot}%{_sysconfdir}/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 3e032ae
install -Dpm644 -t %{buildroot}%{_unitdir} %{S:3}
Dominik 'Rathann' Mierzejewski 3e032ae
install -Dpm644 %{S:4} %{buildroot}%{_tmpfilesdir}/psad.conf
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 11c9473
# upstream's installer creates those as root-accessible only
Dominik 'Rathann' Mierzejewski 11c9473
install  -dm700 %{buildroot}/var/{lib,log,run}/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
touch %{buildroot}/var/lib/%{name}/psadfifo
Dominik 'Rathann' Mierzejewski 11c9473
touch %{buildroot}/var/run/%{name}/psad.cmd
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%post
Dominik 'Rathann' Mierzejewski 11c9473
%systemd_post psad.service
Dominik 'Rathann' Mierzejewski 11c9473
# missing from current SELinux policy (rhbz#1174309)
Dominik 'Rathann' Mierzejewski 11c9473
TMPDIR=$(%{_bindir}/mktemp -d)
Dominik 'Rathann' Mierzejewski 11c9473
cat >> $TMPDIR/psad-rpm.cil << __EOF__
Dominik 'Rathann' Mierzejewski 11c9473
(allow psad_t psad_var_log_t(file (read rename unlink write)))
Dominik 'Rathann' Mierzejewski 11c9473
__EOF__
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/semodule -i $TMPDIR/psad-rpm.cil
Dominik 'Rathann' Mierzejewski 11c9473
rm $TMPDIR/psad-rpm.cil && rmdir $TMPDIR
Dominik 'Rathann' Mierzejewski 11c9473
exit 0
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%preun
Dominik 'Rathann' Mierzejewski 11c9473
%systemd_preun psad.service
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%postun
Dominik 'Rathann' Mierzejewski 11c9473
%systemd_postun_with_restart psad.service
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/semodule -r psad-rpm || :
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%files
Dominik 'Rathann' Mierzejewski 11c9473
%license LICENSE
Dominik 'Rathann' Mierzejewski 0654eba
%doc BENCHMARK FW_HELP FW_EXAMPLE_RULES README README.SYSLOG SCAN_LOG
Dominik 'Rathann' Mierzejewski 11c9473
%{_bindir}/nf2csv
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/fwcheck_psad
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/kmsgsd
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/psad
Dominik 'Rathann' Mierzejewski 11c9473
%{_sbindir}/psadwatchd
Dominik 'Rathann' Mierzejewski 11c9473
%{_mandir}/man1/nf2csv.1*
Dominik 'Rathann' Mierzejewski 11c9473
%{_mandir}/man8/fwcheck_psad.8*
Dominik 'Rathann' Mierzejewski 11c9473
%{_mandir}/man8/kmsgsd.8*
Dominik 'Rathann' Mierzejewski 11c9473
%{_mandir}/man8/psad.8*
Dominik 'Rathann' Mierzejewski 11c9473
%{_mandir}/man8/psadwatchd.8*
Dominik 'Rathann' Mierzejewski 11c9473
%{_tmpfilesdir}/psad.conf
Dominik 'Rathann' Mierzejewski 11c9473
%{_unitdir}/psad.service
Dominik 'Rathann' Mierzejewski 0654eba
%dir %{_sysconfdir}/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
%dir %{_sysconfdir}/logrotate.d
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/logrotate.d/psad
Dominik 'Rathann' Mierzejewski 11c9473
%config(noreplace) %{_sysconfdir}/%{name}/psad.conf
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/signatures
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/auto_dl
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/ip_options
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/snort_rule_dl
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/posf
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/pf.os
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/icmp_types
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/icmp6_types
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/protocols
Dominik 'Rathann' Mierzejewski 0654eba
%dir %{_sysconfdir}/%{name}/snort_rules
Dominik 'Rathann' Mierzejewski 0654eba
%config(noreplace) %{_sysconfdir}/%{name}/snort_rules/*
Dominik 'Rathann' Mierzejewski 11c9473
%dir /var/lib/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
%ghost %attr(0700,root,root) /var/lib/%{name}/psadfifo
Dominik 'Rathann' Mierzejewski 11c9473
%dir /var/log/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
%ghost %dir /var/run/%{name}
Dominik 'Rathann' Mierzejewski 11c9473
%ghost %attr(0700,root,root) /var/run/%{name}/psad.cmd
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
%changelog
Dominik 'Rathann' Mierzejewski 11c9473
* Sun Oct 09 2016 Dominik Mierzejewski <rpm@greysector.net> - 2.4.3-2
Dominik 'Rathann' Mierzejewski 11c9473
- fix SELinux policy temporarily (#1040425)
Dominik 'Rathann' Mierzejewski 11c9473
- document patch purpose and file/dir permissions
Dominik 'Rathann' Mierzejewski 3e032ae
- depend on whois binary, not package
Dominik 'Rathann' Mierzejewski 3e032ae
- verify tarball GPG signature in prep
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 11c9473
* Fri Aug 12 2016 Dominik Mierzejewski <rpm@greysector.net> - 2.4.3-1
Dominik 'Rathann' Mierzejewski 11c9473
- update to 2.4.3
Dominik 'Rathann' Mierzejewski 11c9473
- use https in URLs
Dominik 'Rathann' Mierzejewski 11c9473
- supply native systemd unit
Dominik 'Rathann' Mierzejewski 11c9473
- drop obsolete patches
Dominik 'Rathann' Mierzejewski 11c9473
- merge Fedora-specific changes into one patch
Dominik 'Rathann' Mierzejewski 11c9473
- use system whois client instead of bundled one
Dominik 'Rathann' Mierzejewski 11c9473
- update (and sort) Requires list
Dominik 'Rathann' Mierzejewski 11c9473
- tighten file list
Dominik 'Rathann' Mierzejewski 11c9473
- remove bundled stuff in prep
Dominik 'Rathann' Mierzejewski 11c9473
Dominik 'Rathann' Mierzejewski 0654eba
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.1-7
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.1-6
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.1-5
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.1-4
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2.1-3
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Wed Jul 17 2013 Petr Pisar <ppisar@redhat.com> - 2.2.1-2
Dominik 'Rathann' Mierzejewski 0654eba
- Perl 5.18 rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Tue Jan 22 2013 Viktor Hercinger <vhercing@redhat.com> - 2.2.1-1
Dominik 'Rathann' Mierzejewski 0654eba
- Update to psad-2.2.1
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.7-6
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Tue Feb 07 2012 Peter Vrabec <pvrabec@redhat.com>  2.1.7-5
Dominik 'Rathann' Mierzejewski 0654eba
- don't write to /tmp (#782527)
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Thu Jan 19 2012 Peter Vrabec <pvrabec@redhat.com>  2.1.7-4
Dominik 'Rathann' Mierzejewski 0654eba
- adjust qw() use to new perl (#771779)
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.7-3
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.7-2
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Thu Nov 25 2010 Peter Vrabec <pvrabec@redhat.com>  2.1.7-1
Dominik 'Rathann' Mierzejewski 0654eba
- upgrade
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Tue Aug 11 2009 Ville Skyttä <ville.skytta@iki.fi> - 2.1.3-4
Dominik 'Rathann' Mierzejewski 0654eba
- Use bzipped upstream tarball.
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.3-3
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.1.3-2
Dominik 'Rathann' Mierzejewski 0654eba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Wed Aug 13 2008 Peter Vrabec <pvrabec@redhat.com>  2.1.3-1
Dominik 'Rathann' Mierzejewski 0654eba
- some adjustments to meet fedora standartds
Dominik 'Rathann' Mierzejewski 0654eba
Dominik 'Rathann' Mierzejewski 0654eba
* Sun Apr 27 2008 Steve Grubb <sgrubb@redhat.com> 2.1.2-1
Dominik 'Rathann' Mierzejewski 0654eba
- Initial packaging