commit:     d838e64623453aa3ec106d76b34509327d583066
Author:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 25 21:56:38 2019 +0000
Commit:     Georgy Yakovlev <gyakovlev <AT> gentoo <DOT> org>
CommitDate: Mon Mar 25 21:57:22 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d838e646

net-misc/endlessh: new package, ssh tarpit service

Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Georgy Yakovlev <gyakovlev <AT> gentoo.org>

 net-misc/endlessh/Manifest             |  1 +
 net-misc/endlessh/endlessh-0.1.ebuild  | 70 ++++++++++++++++++++++++++++++++++
 net-misc/endlessh/endlessh-9999.ebuild | 70 ++++++++++++++++++++++++++++++++++
 net-misc/endlessh/files/endlessh.confd | 22 +++++++++++
 net-misc/endlessh/files/endlessh.initd | 22 +++++++++++
 net-misc/endlessh/files/logrotated     |  7 ++++
 net-misc/endlessh/metadata.xml         | 23 +++++++++++
 7 files changed, 215 insertions(+)

diff --git a/net-misc/endlessh/Manifest b/net-misc/endlessh/Manifest
new file mode 100644
index 00000000000..997e300902a
--- /dev/null
+++ b/net-misc/endlessh/Manifest
@@ -0,0 +1 @@
+DIST endlessh-0.1.tar.gz 8566 BLAKE2B 
e8fefd6ef80d26c25f57ffe1cef502af05322e348d63ca17c0bb626e35d5c1d35cb98384b35c86c579f2876573f4c13468605c3f44325a48d19e27c499657853
 SHA512 
0d11c82a708a26bd77ca85f7f3bd0eda2807ded9de88e3e518da09a38b3e94fc2658ea6f210e4f1493d38ca5948968c5488c8f2f09ff2adf22b799622b4952b8

diff --git a/net-misc/endlessh/endlessh-0.1.ebuild 
b/net-misc/endlessh/endlessh-0.1.ebuild
new file mode 100644
index 00000000000..105c786b101
--- /dev/null
+++ b/net-misc/endlessh/endlessh-0.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_6 )
+
+inherit python-single-r1 systemd toolchain-funcs
+
+DESCRIPTION="SSH tarpit that slowly sends and endless banner"
+HOMEPAGE="https://github.com/skeeto/endlessh";
+
+if [ ${PV} == "9999" ] ; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/skeeto/${PN}.git";
+else
+       SRC_URI="https://github.com/skeeto/${PN}/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+       KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="Unlicense"
+SLOT="0"
+IUSE="tools"
+REQUIRED_USE="tools? ( ${PYTHON_REQUIRED_USE} )"
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+       tools? (
+               ${PYTHON_DEPS}
+               dev-db/sqlite
+               dev-python/pyrfc3339[${PYTHON_USEDEP}]
+       )
+"
+
+BDEPEND=""
+
+pkg_setup() {
+       use tools && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       tc-export CC
+
+       sed -i \
+               -e 's/^CC/CC?/' \
+               -e 's/^CFLAGS  =/CFLAGS  +=/' \
+               -e 's/ -Os//' \
+               -e 's/^LDFLAGS/LDFLAGS?/' \
+               Makefile || die
+
+       sed -i -e "/^ExecStart=/ s:=/opt/endlessh:=${EPREFIX}/usr/bin:" \
+               util/endlessh.service || die
+}
+
+src_install() {
+       dobin endlessh
+
+       newinitd "${FILESDIR}"/endlessh.initd endlessh
+       newconfd "${FILESDIR}"/endlessh.confd endlessh
+
+       systemd_dounit util/endlessh.service
+
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}/logrotated" endlessh
+
+       einstalldocs
+}

diff --git a/net-misc/endlessh/endlessh-9999.ebuild 
b/net-misc/endlessh/endlessh-9999.ebuild
new file mode 100644
index 00000000000..105c786b101
--- /dev/null
+++ b/net-misc/endlessh/endlessh-9999.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_6 )
+
+inherit python-single-r1 systemd toolchain-funcs
+
+DESCRIPTION="SSH tarpit that slowly sends and endless banner"
+HOMEPAGE="https://github.com/skeeto/endlessh";
+
+if [ ${PV} == "9999" ] ; then
+       inherit git-r3
+       EGIT_REPO_URI="https://github.com/skeeto/${PN}.git";
+else
+       SRC_URI="https://github.com/skeeto/${PN}/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+       KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="Unlicense"
+SLOT="0"
+IUSE="tools"
+REQUIRED_USE="tools? ( ${PYTHON_REQUIRED_USE} )"
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+       tools? (
+               ${PYTHON_DEPS}
+               dev-db/sqlite
+               dev-python/pyrfc3339[${PYTHON_USEDEP}]
+       )
+"
+
+BDEPEND=""
+
+pkg_setup() {
+       use tools && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+       default
+
+       tc-export CC
+
+       sed -i \
+               -e 's/^CC/CC?/' \
+               -e 's/^CFLAGS  =/CFLAGS  +=/' \
+               -e 's/ -Os//' \
+               -e 's/^LDFLAGS/LDFLAGS?/' \
+               Makefile || die
+
+       sed -i -e "/^ExecStart=/ s:=/opt/endlessh:=${EPREFIX}/usr/bin:" \
+               util/endlessh.service || die
+}
+
+src_install() {
+       dobin endlessh
+
+       newinitd "${FILESDIR}"/endlessh.initd endlessh
+       newconfd "${FILESDIR}"/endlessh.confd endlessh
+
+       systemd_dounit util/endlessh.service
+
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}/logrotated" endlessh
+
+       einstalldocs
+}

diff --git a/net-misc/endlessh/files/endlessh.confd 
b/net-misc/endlessh/files/endlessh.confd
new file mode 100644
index 00000000000..a114889c8ca
--- /dev/null
+++ b/net-misc/endlessh/files/endlessh.confd
@@ -0,0 +1,22 @@
+# /etc/conf.d/endlessh: config file for /etc/init.d/endlessh
+#
+#ENDLESSH_ARGS=""
+#
+#  -d INT    Message millisecond delay [10000]
+#  -f        Set and load config file [/etc/endlessh/config]
+#  -l INT    Maximum banner line length (3-255) [32]
+#  -m INT    Maximum number of clients [4096]
+#  -p INT    Listening port [2222]
+#  -v        Print diagnostics to standard output (repeatable)
+
+# EXAMPLE: listen on port 22, log all queries and errors in very verbose mode
+
+#ENDLESSH_ARGS="-p 22 -vv"
+
+# plain file (preferred), change logrotate file as well if you change this.
+#output_log=/var/log/"${RC_SVCNAME}.log"
+#error_log=/var/log/"${RC_SVCNAME}.error.log"
+
+# syslog support via LOGGER(1). Note this spawns logger processes per io stream
+#output_logger="logger -p daemon.none --"
+#error_logger="logger -p daemon.err --"

diff --git a/net-misc/endlessh/files/endlessh.initd 
b/net-misc/endlessh/files/endlessh.initd
new file mode 100755
index 00000000000..a88fd9c34c9
--- /dev/null
+++ b/net-misc/endlessh/files/endlessh.initd
@@ -0,0 +1,22 @@
+#!/sbin/openrc-run
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+       need localmount
+       use net
+}
+
+description="Starts endlessh tarpit"
+
+command="/usr/bin/endlessh"
+command_args="${ENDLESSH_ARGS}"
+command_background="true"
+extra_started_commands="reload"
+pidfile="/run/${RC_SVCNAME}.pid"
+
+reload() {
+       ebegin "Reloading ${RC_SVCNAME} configuration"
+       start-stop-daemon --exec $command --signal HUP
+       eend $?
+}

diff --git a/net-misc/endlessh/files/logrotated 
b/net-misc/endlessh/files/logrotated
new file mode 100644
index 00000000000..53c9efbfe87
--- /dev/null
+++ b/net-misc/endlessh/files/logrotated
@@ -0,0 +1,7 @@
+/var/log/endlessh.log /var/log/endlessh.error.log {
+       missingok
+       notifempty
+       postrotate
+               /etc/init.d/endlessh -q reload
+       endscript
+}

diff --git a/net-misc/endlessh/metadata.xml b/net-misc/endlessh/metadata.xml
new file mode 100644
index 00000000000..10db1a22fbf
--- /dev/null
+++ b/net-misc/endlessh/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>gyakov...@gentoo.org</email>
+               <name>Georgy Yakovlev</name>
+       </maintainer>
+       <longdescription lang="en">
+               Endlessh is an SSH tarpit that very slowly sends an endless, 
random SSH banner.
+               It keeps SSH clients locked up for hours or even days at a time.
+               The purpose is to put your real SSH server on another port and 
then let the script kiddies get stuck in this tarpit instead of bothering a 
real server.
+
+               Since the tarpit is in the banner before any cryptographic 
exchange occurs, this program doesn't depend on any cryptographic libraries.
+               It's a simple, single-threaded, standalone C program.
+               It uses poll() to trap multiple clients at a time.
+       </longdescription>
+       <upstream>
+               <remote-id type="github">skeeto/endlessh</remote-id>
+       </upstream>
+       <use>
+               <flag name="tools">Install additional python script which can 
be used to parse logs and save summary to sqlite database</flag>
+       </use>
+</pkgmetadata>

Reply via email to