+# TODO:
+# - add trigger to enable this:
+# * sshd(8): This release turns on pre-auth sandboxing sshd by default for
+# new installs, by setting UsePrivilegeSeparation=sandbox in sshd_config.
#
# Conditional build:
%bcond_without audit # sshd audit support
%if "%{pld_release}" == "ac"
%define pam_ver 0.79.0
%else
-%define pam_ver 1:1.1.5-5
+%define pam_ver 1:1.1.8-5
%endif
-
Summary: OpenSSH free Secure Shell (SSH) implementation
Summary(de.UTF-8): OpenSSH - freie Implementation der Secure Shell (SSH)
Summary(es.UTF-8): Implementación libre de SSH
Summary(ru.UTF-8): OpenSSH - свободная реализация протокола Secure Shell (SSH)
Summary(uk.UTF-8): OpenSSH - вільна реалізація протоколу Secure Shell (SSH)
Name: openssh
-Version: 6.0p1
-Release: 1
+Version: 6.8p1
+Release: 2
Epoch: 2
License: BSD
Group: Applications/Networking
Source0: ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/%{name}-%{version}.tar.gz
-# Source0-md5: 3c9347aa67862881c5da3f3b1c08da7b
+# Source0-md5: 08f72de6751acfbd0892b5f003922701
Source1: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
# Source1-md5: 66943d481cc422512b537bcc2c7400d1
Source2: %{name}d.init
Source8: %{name}d.upstart
Source9: sshd.service
Source10: sshd-keygen
-Patch100: %{name}-heimdal.patch
+Source11: sshd.socket
+Source12: sshd@.service
Patch0: %{name}-no_libnsl.patch
Patch2: %{name}-pam_misc.patch
Patch3: %{name}-sigpipe.patch
# http://pkgs.fedoraproject.org/gitweb/?p=openssh.git;a=tree
-Patch4: %{name}-5.9p1-ldap.patch
-Patch5: %{name}-5.9p1-ldap-fixes.patch
-Patch8: ldap.conf.patch
-Patch6: %{name}-config.patch
-# https://bugzilla.mindrot.org/show_bug.cgi?id=1663
-Patch7: authorized-keys-command.patch
+Patch4: %{name}-ldap.patch
+Patch5: %{name}-ldap-fixes.patch
+Patch6: ldap.conf.patch
+Patch7: %{name}-config.patch
+Patch8: ldap-helper-sigpipe.patch
# High Performance SSH/SCP - HPN-SSH - http://www.psc.edu/networking/projects/hpn-ssh/
# http://www.psc.edu/networking/projects/hpn-ssh/openssh-5.2p1-hpn13v6.diff.gz
Patch9: %{name}-5.2p1-hpn13v6.diff
Patch10: %{name}-include.patch
Patch11: %{name}-chroot.patch
-# http://people.debian.org/~cjwatson/%{name}-blacklist.diff
-Patch12: %{name}-blacklist.diff
-Patch13: %{name}-kuserok.patch
+
Patch14: %{name}-bind.patch
+Patch15: %{name}-disable_ldap.patch
+Patch16: libseccomp-sandbox.patch
URL: http://www.openssh.com/portable.html
BuildRequires: %{__perl}
+%{?with_tests:BuildRequires: %{name}-server}
%{?with_audit:BuildRequires: audit-libs-devel}
BuildRequires: autoconf >= 2.50
BuildRequires: automake
%{?with_gtk:BuildRequires: gtk+2-devel}
%{?with_kerberos5:BuildRequires: heimdal-devel >= 0.7}
%{?with_libedit:BuildRequires: libedit-devel}
+BuildRequires: libseccomp-devel
%{?with_selinux:BuildRequires: libselinux-devel}
-BuildRequires: libwrap-devel
%{?with_ldap:BuildRequires: openldap-devel}
-BuildRequires: openssl-devel >= 0.9.7d
+BuildRequires: openssl-devel >= 0.9.8f
BuildRequires: pam-devel
%{?with_gtk:BuildRequires: pkgconfig}
BuildRequires: rpm >= 4.4.9-56
BuildRequires: rpmbuild(macros) >= 1.627
BuildRequires: sed >= 4.0
-BuildRequires: zlib-devel
+# libseccomp based sandbox requires NO_NEW_PRIVS prctl flag
+%{?with_tests:BuildRequires: uname(release) >= 3.5}
+BuildRequires: zlib-devel >= 1.2.3
+Requires: zlib >= 1.2.3
%if "%{pld_release}" == "ac"
Requires: filesystem >= 2.0-1
Requires: pam >= 0.79.0
%else
Requires: filesystem >= 3.0-11
Requires: pam >= %{pam_ver}
-Suggests: openssh-blacklist
Suggests: xorg-app-xauth
%endif
Obsoletes: ssh
Requires: %{name}
Provides: ssh-clients
Obsoletes: ssh-clients
+%requires_eq_to openssl openssl-devel
%description clients
Ssh (Secure Shell) a program for logging into a remote machine and for
Requires(pre): /usr/sbin/useradd
Requires(post,preun,postun): systemd-units >= 38
Requires: %{name} = %{epoch}:%{version}-%{release}
-# remove in 6.0, kept for flawless upgrade
-Requires: %{name}-server-ldap = %{epoch}:%{version}-%{release}
Requires: pam >= %{pam_ver}
Requires: rc-scripts >= 0.4.3.0
Requires: systemd-units >= 38
Requires: util-linux
+%{?with_ldap:Suggests: %{name}-server-ldap}
Suggests: /bin/login
+Suggests: xorg-app-xauth
Provides: ssh-server
Provides: user(sshd)
+%requires_eq_to openssl openssl-devel
%description server
Ssh (Secure Shell) a program for logging into a remote machine and for
Summary(pl.UTF-8): Wsparcie LDAP dla serwera OpenSSH
Group: Daemons
Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: openldap-nss-config
%description server-ldap
OpenSSH LDAP backend is a way how to distribute the authorized tokens
Group: Networking/Daemons
Requires(post,postun): sed >= 4.0
Requires: openldap-servers
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
%description -n openldap-schema-openssh-lpk
This package contains OpenSSH LDAP Public Key schema for openldap.
%prep
%setup -q
-%{?with_kerberos5:%patch100 -p1}
%patch0 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-%patch8 -p1
%patch6 -p1
%patch7 -p1
+%patch8 -p1
+
%{?with_hpn:%patch9 -p1}
%patch10 -p1
%patch11 -p1
-%patch12 -p1
-%patch13 -p1
+
%patch14 -p1
+%{!?with_ldap:%patch15 -p1}
+%patch16 -p1
%if "%{pld_release}" == "ac"
# fix for missing x11.pc
-%{__sed} -i -e '/pkg-config/s/ x11//' contrib/Makefile
+%{__sed} -i -e 's/\(`$(PKG_CONFIG) --libs gtk+-2.0\) x11`/\1` -lX11/' contrib/Makefile
%endif
# hack since arc4random from openbsd-compat needs symbols from libssh and vice versa
%{__aclocal}
%{__autoconf}
%{__autoheader}
-CPPFLAGS="-DCHROOT"
+CPPFLAGS="%{rpmcppflags} -DCHROOT -std=gnu99"
%configure \
PERL=%{__perl} \
--disable-strip \
--with-mantype=man \
--with-md5-passwords \
--with-pam \
- --with-authorized-keys-command \
--with-pid-dir=%{_localstatedir}/run \
--with-privsep-path=%{_privsepdir} \
+%if "%{pld_release}" != "ac"
+ --with-sandbox=libseccomp_filter \
+%endif
%{?with_selinux:--with-selinux} \
- --with-tcp-wrappers \
%if "%{pld_release}" == "ac"
--with-xauth=/usr/X11R6/bin/xauth
%else
%{__sed} -i -e '/ecdsa/d' sshd.init
%endif
+%if %{without audit}
+# remove recording user's login uid to the process attribute
+%{__sed} -i -e '/pam_loginuid.so/d' sshd.pam
+%endif
+
install -p sshd.init $RPM_BUILD_ROOT/etc/rc.d/init.d/sshd
cp -p sshd.pam $RPM_BUILD_ROOT/etc/pam.d/sshd
cp -p %{SOURCE4} $RPM_BUILD_ROOT/etc/sysconfig/sshd
%{__sed} -e 's|@@LIBEXECDIR@@|%{_libexecdir}|g' %{SOURCE9} >$RPM_BUILD_ROOT%{systemdunitdir}/sshd.service
cp -p %{SOURCE10} $RPM_BUILD_ROOT%{_libexecdir}/sshd-keygen
+cp -p %{SOURCE11} $RPM_BUILD_ROOT%{systemdunitdir}
+cp -p %{SOURCE12} $RPM_BUILD_ROOT%{systemdunitdir}
+
%if %{with gnome}
install -p contrib/gnome-ssh-askpass1 $RPM_BUILD_ROOT%{_libexecdir}/ssh/ssh-askpass
%endif
EOF
%{__rm} $RPM_BUILD_ROOT%{_mandir}/README.openssh-non-english-man-pages
-%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/ldap.conf
+%{?with_ldap:%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/ldap.conf}
%clean
rm -rf $RPM_BUILD_ROOT
%post server
/sbin/chkconfig --add sshd
%service sshd reload "OpenSSH Daemon"
-if ! grep -qs ssh /etc/security/passwd.conf ; then
- umask 022
- echo "ssh" >> /etc/security/passwd.conf
-fi
NORESTART=1
%systemd_post sshd.service
fi
%systemd_reload
+%triggerpostun server -- %{name}-server < 6.2p1-1
+cp -f %{_sysconfdir}/sshd_config{,.rpmorig}
+sed -i -e 's#AuthorizedKeysCommandRunAs#AuthorizedKeysCommandUser##g' %{_sysconfdir}/sshd_config
+
%triggerpostun server -- %{name}-server < 2:5.9p1-8
# lpk.patch to ldap.patch
if grep -qE '^(UseLPK|Lpk)' %{_sysconfdir}/sshd_config; then
%{__sed} -i -e '
# disable old configs
# just UseLPK/LkpLdapConf supported for now
- s/^UseLPK/## Obsolete &/
- s/^Lpk/## Obsolete &/
+ s/^\s*UseLPK/## Obsolete &/
+ s/^\s*Lpk/## Obsolete &/
# Enable new ones, assumes /etc/ldap.conf defaults, see HOWTO.ldap-keys
/UseLPK/iAuthorizedKeysCommand %{_libexecdir}/ssh-ldap-wrapper
' %{_sysconfdir}/sshd_config
%defattr(644,root,root,755)
%doc TODO README OVERVIEW CREDITS Change*
%attr(755,root,root) %{_bindir}/ssh-key*
-%attr(755,root,root) %{_bindir}/ssh-vulnkey*
+#%attr(755,root,root) %{_bindir}/ssh-vulnkey*
%{_mandir}/man1/ssh-key*.1*
-%{_mandir}/man1/ssh-vulnkey*.1*
+#%{_mandir}/man1/ssh-vulnkey*.1*
%dir %{_sysconfdir}
%dir %{_libexecdir}
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/sshd
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/security/blacklist.sshd
%{systemdunitdir}/sshd.service
+%{systemdunitdir}/sshd.socket
+%{systemdunitdir}/sshd@.service
%if %{with ldap}
%files server-ldap