Beyond
This is the beyond page that an additional post enumeration and assessment are conducted as the root
user after compromising the target system.
Firewall
root@peppo:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate NEW,RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:auth
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt
ACCEPT tcp -- anywhere anywhere tcp dpt:webmin
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
DROP all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:ssh state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:auth state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:auth state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:postgresql state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:postgresql state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http-alt state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:http-alt state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:webmin state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:webmin state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:domain state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:domain state NEW,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp dpt:domain state NEW,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
DROP all -- anywhere anywhere
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:postgresql
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:3000
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Redmine
root@peppo:~# docker inspect redmine
[
{
"Id": "71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c",
"Created": "2020-06-01T06:41:18.018394832Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"rails",
"server",
"-b",
"0.0.0.0"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1090,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-08-02T19:39:49.448528219Z",
"FinishedAt": "2023-12-01T01:20:25.742654027Z"
},
"Image": "sha256:0c8429c66e074ea30f21ec1e37b5a35961a1105a63d226422ae168e726dbe12b",
"ResolvConfPath": "/var/lib/docker/containers/71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c/hostname",
"HostsPath": "/var/lib/docker/containers/71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c/hosts",
"LogPath": "/var/lib/docker/containers/71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c/71aa857fe988d500a65dd1699c6f699c0170e2d54f1f985c0ce92ec5d18f9a3c-json.log",
"Name": "/redmine",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"3000/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
},
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/f6733bc1dfa14b059597f4943a563d07e53374c2128c5c208b6aff557d0f3f4e-init/diff:/var/lib/docker/overlay2/7930949e472fc0d4faaa40e455e98f66b59ee654b4d8738922b6909f5ef392c8/diff:/var/lib/docker/overlay2/5b6c3671914624835add07b0086d778fc22e59e1e157de3ceca0c4ea1e00e532/diff:/var/lib/docker/overlay2/4b39aaee4fd7b4763018d52fd0defe4d42b174e19dc620b167ace50e6834d96a/diff:/var/lib/docker/overlay2/26a068261b1fc88409399bf05120fb4b1c29a599860815883beb1a8bc6d3e9cd/diff:/var/lib/docker/overlay2/e7519ad698cd6deb2fd915040b8253faf36d8348882fba4c60a4f539b253641c/diff:/var/lib/docker/overlay2/e79cfb1c1495b62cb5eb2a02936744e475cf34bd246ca9db1387200be485b4d8/diff:/var/lib/docker/overlay2/31ac5488aed65b2181e58ce785dba5b1952ecc638d23196b001d04512034c398/diff:/var/lib/docker/overlay2/55ae185ca99b97c5192fb788cb821505e8313c31e20f4896a67052c3e5fdce9f/diff:/var/lib/docker/overlay2/d05bebf923d6f04d1e750d430dc7392f4edd302187b505792c8a016b7ef69590/diff:/var/lib/docker/overlay2/6046072037e0b5446c66911376e8fda438c6b7b378d36658c8802949f6152b0e/diff:/var/lib/docker/overlay2/d8db3c269c4361859ccd1efff700b8c34dade41772cb83936312d65ae902d565/diff:/var/lib/docker/overlay2/78c7afd3a0c7dd5b0392592db9adb22277eda2adcf324ec3720300174615fa08/diff:/var/lib/docker/overlay2/ba462b3bca4feb8ac4c0f2decde80497affcea7443e2eeba8e1d06e22fd7ecc5/diff",
"MergedDir": "/var/lib/docker/overlay2/f6733bc1dfa14b059597f4943a563d07e53374c2128c5c208b6aff557d0f3f4e/merged",
"UpperDir": "/var/lib/docker/overlay2/f6733bc1dfa14b059597f4943a563d07e53374c2128c5c208b6aff557d0f3f4e/diff",
"WorkDir": "/var/lib/docker/overlay2/f6733bc1dfa14b059597f4943a563d07e53374c2128c5c208b6aff557d0f3f4e/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "e6a25e0b1e38d101074f3a21f633660c78c63678058e6f3e8f32a7933ce85338",
"Source": "/var/lib/docker/volumes/e6a25e0b1e38d101074f3a21f633660c78c63678058e6f3e8f32a7933ce85338/_data",
"Destination": "/usr/src/redmine/files",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "71aa857fe988",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"RUBY_MAJOR=2.6",
"RUBY_VERSION=2.6.6",
"RUBY_DOWNLOAD_SHA256=5db187882b7ac34016cd48d7032e197f07e4968f406b0690e20193b9b424841f",
"GEM_HOME=/usr/local/bundle",
"BUNDLE_SILENCE_ROOT_WARNING=1",
"BUNDLE_APP_CONFIG=/usr/local/bundle",
"RAILS_ENV=production",
"HOME=/home/redmine",
"REDMINE_VERSION=4.1.1",
"REDMINE_DOWNLOAD_MD5=a15a25dec7b866e213bbd4b041f05f17"
],
"Cmd": [
"rails",
"server",
"-b",
"0.0.0.0"
],
"Image": "redmine",
"Volumes": {
"/usr/src/redmine/files": {}
},
"WorkingDir": "/usr/src/redmine",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "588611d90d5e6773c523a6c81a65b219614a93a8d6a3caee890b6ec0eadaf2a3",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"3000/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "8080"
}
]
},
"SandboxKey": "/var/run/docker/netns/588611d90d5e",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "efd46737a66257fac00a22a6c6fdd35694f019fa8e9c168c948fe4e0e7d04184",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "a4e64e8c15320d3ce7dc45c6d7892c8c20faeae2a7e78eabd36fc7b27d43201d",
"EndpointID": "efd46737a66257fac00a22a6c6fdd35694f019fa8e9c168c948fe4e0e7d04184",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]
PostgreSQL
root@peppo:~# docker inspect postgres
[
{
"Id": "326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb",
"Created": "2020-06-01T06:41:31.655506076Z",
"Path": "docker-entrypoint.sh",
"Args": [
"postgres"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 1084,
"ExitCode": 0,
"Error": "",
"StartedAt": "2024-08-02T19:39:49.408206742Z",
"FinishedAt": "2023-12-01T01:20:25.78936215Z"
},
"Image": "sha256:adf2b126dda8aa62b7ab2cb10c30e0a20bad35a21570da9b4d602c9cca548a0b",
"ResolvConfPath": "/var/lib/docker/containers/326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb/hostname",
"HostsPath": "/var/lib/docker/containers/326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb/hosts",
"LogPath": "/var/lib/docker/containers/326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb/326cfee157384615c872763b1a690d34c59650bfc4a9007be1df15b81b6d7bfb-json.log",
"Name": "/postgres",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {
"5432/tcp": [
{
"HostIp": "",
"HostPort": "5432"
}
]
},
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": [],
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/9044167633acb5527fbca7686b0932a351288c1e11a7cc164edc68220cc75f50-init/diff:/var/lib/docker/overlay2/473bfa6f86b34207dc615f09a53f3646839151085069d9b8c0f1d601c1ab4503/diff:/var/lib/docker/overlay2/a4c3e2791f324737755da4460b3d2bd20c380dcd4e6900aeb9c82474b219cb77/diff:/var/lib/docker/overlay2/3ba3a53eca26343ba7f71275910acb0e930c04251f93daca1f69decc9c535f3c/diff:/var/lib/docker/overlay2/7ceef80a059ef393dfed6f95e74bf676990ff6d60d9e0b1bd1e2d0f27ceb616a/diff:/var/lib/docker/overlay2/9e69b245c49c5f32df82f64d880e120e18a2adf3add69fb5eea9d5f2a4870aff/diff:/var/lib/docker/overlay2/a1ae21ed3fce9afc6153fa916e2f0c74b88f31160772684a0d40bbac7155409f/diff:/var/lib/docker/overlay2/c1fc42e1a8e9255fe54ff790bdf8d6c355357d3d5dc9b2d425fadfdc3571f83b/diff:/var/lib/docker/overlay2/a014a76806176e2502a811b5ff3c02f983d216387b642227f4f261d0022d09cf/diff:/var/lib/docker/overlay2/91096f6294dd91a4107e10f0edbc2122d711b1bde90571d887da495eb3c78c0d/diff:/var/lib/docker/overlay2/031a07190e9fcea143aa19e4a745ad67d61f0e1d5f1ef81cf81ca6ef5a40757e/diff:/var/lib/docker/overlay2/e2b75230b221a32317088676f1e748b3221e2bec3389f4d798be25ae014789ec/diff:/var/lib/docker/overlay2/521d121ed30004744a2c08abcbd1baafb2f6a12f227edc64636948e225072117/diff:/var/lib/docker/overlay2/d14320b6f06eaba161d1c3f727370929a761c91a6161a5bc492535b43b0319b8/diff:/var/lib/docker/overlay2/ba462b3bca4feb8ac4c0f2decde80497affcea7443e2eeba8e1d06e22fd7ecc5/diff",
"MergedDir": "/var/lib/docker/overlay2/9044167633acb5527fbca7686b0932a351288c1e11a7cc164edc68220cc75f50/merged",
"UpperDir": "/var/lib/docker/overlay2/9044167633acb5527fbca7686b0932a351288c1e11a7cc164edc68220cc75f50/diff",
"WorkDir": "/var/lib/docker/overlay2/9044167633acb5527fbca7686b0932a351288c1e11a7cc164edc68220cc75f50/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "e954816a73d6d26add13ae4fad3caeeec7ffafe5e11d3408d76d8d269ae33be4",
"Source": "/var/lib/docker/volumes/e954816a73d6d26add13ae4fad3caeeec7ffafe5e11d3408d76d8d269ae33be4/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "326cfee15738",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"5432/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"POSTGRES_PASSWORD=postgres",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/postgresql/12/bin",
"GOSU_VERSION=1.12",
"LANG=en_US.utf8",
"PG_MAJOR=12",
"PG_VERSION=12.3-1.pgdg100+1",
"PGDATA=/var/lib/postgresql/data"
],
"Cmd": [
"postgres"
],
"Image": "postgres",
"Volumes": {
"/var/lib/postgresql/data": {}
},
"WorkingDir": "",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "cf3125c79233d9ee81f090f272579986cef6958f59163951e0c77e0e6dafc4ff",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5432/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5432"
}
]
},
"SandboxKey": "/var/run/docker/netns/cf3125c79233",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "685f3fe163670f29c06a3d66889fed28110e545d6af36315a2a10bd0e3fc1ca4",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "a4e64e8c15320d3ce7dc45c6d7892c8c20faeae2a7e78eabd36fc7b27d43201d",
"EndpointID": "685f3fe163670f29c06a3d66889fed28110e545d6af36315a2a10bd0e3fc1ca4",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
}
}
]
Ident
root@peppo:~# systemctl status ident2.service
● ident2.service - RFC 1413 ident2 daemon
Loaded: loaded (/etc/systemd/system/ident2.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-08-02 15:39:47 EDT; 7 months 26 days ago
Main PID: 476 (ident2)
Tasks: 1 (limit: 4915)
Memory: 280.0K
CPU: 689us
CGroup: /system.slice/ident2.service
└─476 /usr/sbin/ident2
root@peppo:~# cat /etc/systemd/system/ident2.service
[Unit]
Description=RFC 1413 ident2 daemon
[Service]
ExecStart=/usr/sbin/ident2
Type=Forking
PIDFile=/var/run/ident2.pid
[Install]
WantedBy=multi-user.target
Port 10000
root@peppo:~# cd helloworld/
root@peppo:~/helloworld# ll
total 12K
4.0K drwxr-xr-x 4 1000 eleanor 4.0K Mar 29 19:43 ..
4.0K drwxr-xr-x 2 root root 4.0K Jun 1 2020 .
4.0K -rw-r--r-- 1 1000 eleanor 270 Jun 1 2020 index.js
root@peppo:~/helloworld# cat index.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 10000;
http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port, hostname, () => {
console.log('Server running...');
});