Logs

有記錄 FTP 傳輸的地方嗎?

  • May 22, 2018

好的,假設我負責我並不真正了解詳細資訊的舊應用程序,我正在嘗試保護我的伺服器,並且有人建議禁止用於 FTP 的 21 埠。

但我不確定哪些程序每天都在執行和使用 FTP。

假設我沒有在伺服器或網路上安裝所需工具的解決方案。我的解決方案是什麼?

  • 我是否應該切斷 21 埠並查看防火牆阻止了哪些傳輸?
  • AIX 伺服器上是否有我應該去查看通過此埠訪問和訪問伺服器的列表的地方?如果我有伺服器的 IP 和文件名,我將能夠跟踪執行它的程序。那麼有FTP的日誌文件嗎?

編輯:

a)inetd處於活動狀態並ftp在其中(感謝@JeffSchaller)

b)我正在嘗試了解此埠上的傳入傳出流量 - 使用已執行的命令(如果可能)。換句話說,我的目標是知道

  • 在本地 FTP 伺服器上執行了哪些命令
  • 本地 FTP 客戶端對其他伺服器執行了哪些命令

歡迎任何建議。

在本地 FTP 伺服器上執行了哪些命令?

要在 AIX 系統上啟用 FTP 日誌記錄,您需要重新配置 FTP(在您的情況下由 inetd 呼叫)以將調試日誌發送到 syslog 並配置 syslog 以將這些日誌保存到文件中。

  1. 編輯/etc/inetd.conf並添加-d到 ftpd 行的末尾:
ftp     stream  tcp6    nowait  root    /usr/sbin/ftpd  ftpd -d
  1. 刷新inetd:refresh -s inetd
  2. 編輯/etc/syslog.conf並添加一行daemon.debug以將日誌保存在某處:
daemon.debug /var/log/ftp.log
  1. 為 syslog 創建一個文件以寫入:touch /var/log/ftp.log
  2. 刷新系統日誌:refresh -s syslogd

Syslog 會將任何守護程序的日誌發送到此文件,因此您可能需要使用 過濾它grep,也許:grep 'daemon:debug ftpd' /var/log/ftp.log

通過 FTP 發送的命令將使用字元串記錄command:;這是一個範例:

May 18 10:13:35 ftpserver daemon:debug ftpd[3932700]: command: USER username-here^M
May 18 10:13:35 ftpserver daemon:debug ftpd[3932700]: <--- 331
May 18 10:13:35 ftpserver daemon:debug ftpd[3932700]: Password required for username-here.
May 18 10:13:42 ftpserver daemon:debug ftpd[3932700]: command: PASS
May 18 10:13:42 ftpserver daemon:debug ftpd[3932700]: <--- 230-
May 18 10:13:42 ftpserver daemon:debug ftpd[3932700]: Last login: Fri May 18 10:13:02 EDT 2018 on ftp from ftpclient.example.com
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: <--- 230
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: User username-here logged in.
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: command: PORT 10,1,1,1,229,54^M
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: <--- 200
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: PORT command successful.
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: command: LIST^M
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: <--- 150
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: Opening data connection for /bin/ls.
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: <--- 226
May 18 10:13:43 ftpserver daemon:debug ftpd[3932700]: Transfer complete.

是的,那些 Control-M 就這樣出現在日誌中!


本地 FTP 客戶端對其他伺服器執行了哪些命令?

由於應用程序可以執行它們自己的 FTP 操作,因此很難包裝所有可能的客戶端程序(例如/usr/bin/ftp)來擷取它。最好的辦法是配置遠端 FTP 伺服器來記錄命令,就像我們上面所做的那樣。第二好的方法是將 AIX 防火牆配置為允許並記錄發往埠 21 的流量。

確保您已安裝 ipsec 文件集:

lslpp -L bos.net.ipsec.rte; echo $?

它應該顯示一個返回程式碼為 0 的文件集,而不是:

lslpp: 0504-132  Fileset bos.net.ipsec.rte not installed.

確保啟用 ipsec 設備:

lsdev -l ipsec_v4

您應該得到一條回复說“可用”,而不是“已定義”或根本沒有回复。

如果沒有輸出或設備已“定義”:

  1. smitty ipsec4
  2. 選擇Start/Stop IP Security
  3. 選擇Start IP Security
  4. 保留預設值Now and After RebootDeny All Non_Secure = no
  5. 點擊輸入。

ipsec device_v4 現在應該顯示為“可用”。

創建一個日誌文件:touch /var/log/ipsec.log.

更新系統日誌:

echo "local4.debug /var/log/ipsec.log rotate size 100k files 4" >> /etc/syslog.conf
refresh -s syslogd

添加規則以允許和記錄發往埠 21 的流量:

# -v 4 == IPv4
# -n 2 == add this after the first rule
# -a P == permit
# -O eq == destination port *equals* 21
# -P 21 == destination port 21
# -w O == outbound connections; change this to “B” to log in both directions
# -c tcp == TCP protocol
# -s, -m, -d, -M = source/dest IP & mask (any)
# -l Y = Log it
# -r L = applies only to packets destined or originated from the local host
genfilt -v 4 -n 2 -a P -O eq -P 21 -w O -c tcp -s 0.0.0.0 -m 0.0.0.0 -d 0.0.0.0 -M 0.0.0.0  -l Y -r L -D “allow and log port 21 traffic”

開始記錄:

mkfilt -g start

啟動規則集:

mkfilt -u

等待出站 FTP 連接發生,然後:

grep ipsec_logd /var/log/ipsec.log | grep DP:21

您將看到出站 FTP 連接的源 IP 和目標 IP 以及時間戳,例如:

May 18 11:29:40 localhost local4:info ipsec_logd: #:0 R:p  O:10.1.1.1 S:10.1.1.1 D:10.2.2.2 P:tcp SP:55091 DP:21 R:l I:en0 F:n T:0 L:0

它不會記錄 FTP 會話的內容(命令),但您會有時間戳和目的地。請注意,每個 FTP 連接的每個數據包都會被記錄*!*


參考:

引用自:https://unix.stackexchange.com/questions/444375