Docker容器sshd日志[关闭]

htzpubme  于 2024-01-06  发布在  Docker
关注(0)|答案(3)|浏览(226)

**已关闭。**此问题为not about programming or software development。目前不接受回答。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
16天前关闭
社区在16天前审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question
如何使用openssh-server在Docker容器中启用ssh连接日志(/var/log/auth.log)?
我的容器中不存在/var/log/auth. log。

  • Docker版本:9.0
  • 主机:Ubuntu 13.10
  • 容器:Ubuntu 13.10
a1o7rhls

a1o7rhls1#

auth日志由Syslog服务管理。该服务本身传统上由init系统(在您的情况下为Upstart)管理(启动)。默认情况下,容器不会运行init系统,这意味着您必须手动启动rsyslog

# rsyslogd

字符串
之后,您将在/var/log中找到常用的日志文件。
注意:init系统与Docker容器并不完全兼容。通常的做法是使用Supervisord自动启动多个服务/进程。

ipakzgxi

ipakzgxi2#

在docker容器中安装rsyslog包:

$ apt-get install rsyslog

字符串
然后启动daemon:

$ service rsyslog start


似乎可以忽略下面这样的消息,sshd无论如何都会记录到/var/log/auth.log

* Starting enhanced syslogd rsyslogd                                                                                                                                                                                                           
rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
rsyslogd: activation of module imklog failed [v8.32.0 try http://www.rsyslog.com/e/2145 ]

50pmv0ei

50pmv0ei3#

我解决了这个问题。始终保持在同一个目录中。我这样做了:
Dockerfile:

FROM ubuntu:latest

RUN apt-get update && apt-get install -y openssh-server

# Neuer User mit ssh Verzeichnis für id_rsa.pub und Rechtevergabe
RUN useradd -m -s /bin/bash test&& echo "test:123456" | chpasswd
RUN mkdir -p /home/test/.ssh && chown test:test/home/test/.ssh &&  chmod 700 /home/test/.ssh

# Verzeichnis für Logging erstellen
RUN mkdir -p /etc/ssh/logs && chown root:root /etc/ssh/logs && chmod 700 /etc/ssh/logs

# Behebe Fehlermeldung bei Start des Containers
RUN mkdir -p /run/sshd && chown root:root /run/sshd && chmod 700 /run/sshd

# Kopieren des Public-Keys in das Verzeichnis des Benutzers test mit Rechtevergabe
COPY id_rsa.pub /home/test/.ssh/authorized_keys
RUN chmod 644 /home/test/.ssh/authorized_keys

# Passwort-Authentifizierung deaktivieren
RUN sed -i '1i PasswordAuthentication no' /etc/ssh/sshd_config
# Leere Passwörter verbieten
RUN sed -i '1i PermitEmptyPasswords no' /etc/ssh/sshd_config
# Tastatur-Interaktive Authentifizierung deaktivieren
RUN sed -i '1i KbdInteractiveAuthentication no' /etc/ssh/sshd_config
# PAM-Authentifizierung aktivieren
RUN sed -i '1i UsePAM yes' /etc/ssh/sshd_config
# PublicKey Authentifizierung
RUN sed -i '1i PubkeyAuthentication yes' /etc/ssh/sshd_config
# X11-Weiterleitung aktivieren
RUN sed -i '1i X11Forwarding no' /etc/ssh/sshd_config
# PermitRootLogin auf no setzen
RUN sed -i '1i PermitRootLogin no' /etc/ssh/sshd_config
# Stimmen Dateirechte nicht, wird eine Verbindung verweigert
RUN sed -i '1i StrictModes yes' /etc/ssh/sshd_config

# LogLevel auf INFO setzen für Fail2Ban
RUN sed -i '1i LogLevel INFO' /etc/ssh/sshd_config

# Sicherheit erhöhen für sshd_config
RUN chmod 600 /etc/ssh/sshd_config

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D", "-E", "/etc/ssh/logs/auth.log"]

字符串
重要的日志是行:
运行mkdir -p /etc/ssh/logs && chown root:root /etc/ssh/logs && chmod 700 /etc/ssh/logs
Run sed -i '1i LogLevel INFO' /etc/SSH/sshd_config
“-E”,“/etc/ssh/logs/auth.log”
我用puttygen创建ssh密钥,并将文件id_rsa.pub复制到存放Dockerfile和docker-compose.yml的目录中
创建图像:

docker build -t sshd .


docker-compose.yml:

version: '3.9'

services:
  sshdocki:
    image: sshd
    container_name: sshdtest
    ports:
      - 22:22

    volumes:
      - ./logs:/etc/ssh/logs


启动docker compose:

docker-compose up -d


现在你可以在./logs/auth.log中检查你的日志。这对Fail 2Ban非常有用:

tail -f ./logs/auth.log


我构建了这个ssh容器,通过ssh访问我的数据库。我认为这是一个很好的安全解决方案。当你有更好的想法时,请告诉我:)

相关问题