在Debian系统中,你可以使用iptables
和syslog
来记录连接日志
iptables
和syslog-ng
。如果没有安装,可以使用以下命令进行安装:sudo apt-get update
sudo apt-get install iptables syslog-ng
syslog-ng
以记录连接日志。编辑/etc/syslog-ng/syslog-ng.conf
文件,添加以下内容:# Load the default configuration file
source /etc/syslog-ng/syslog-ng.conf.default;
# Define a new source for connection logging
log_format connection '$remote_addr - $remote_user [$time] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
# Define a destination for connection logs
destination connection {
file("/var/log/connections.log" mode="append");
create_directory("/var/log");
rotate(52);
compress();
}
# Include the connection logging configuration in the default configuration
include "/etc/syslog-ng/connection.conf";
这个配置文件定义了一个新的日志源(connection),用于记录连接日志。它还将日志写入/var/log/connections.log
文件,并设置了日志文件的轮换和压缩选项。
/etc/syslog-ng/connection.conf
,包含以下内容:# Use the connection log format
define connection '$format';
# Match the connection logging format
filter connection /^(?<remote_addr>\S+) - (?<remote_user>\S+) \[(?<time>\S+)\] "(?<request>\S+)" '
'(?<status>\d+) (?<body_bytes_sent>\d+) "(?<http_referer>\S+)" '
'"(?<http_user_agent>\S+)"$/;
这个配置文件定义了一个过滤器,用于匹配连接日志格式,并将其传递给之前定义的日志源。
syslog-ng
服务以应用更改:sudo systemctl restart syslog-ng
iptables
记录连接日志。你需要将INPUT
链的默认策略设置为DROP
,以便只允许已建立的连接通过。编辑/etc/iptables/rules.v4
文件,添加以下内容:*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
*nat
*mangle
*raw
*security
*log
*ipv6filter
*masquerade
这个配置文件将INPUT
链的默认策略设置为DROP
,并允许已建立的连接、ICMP请求、本地回环接口、SSH(端口22)、HTTP(端口80)和HTTPS(端口443)流量通过。
iptables
服务以应用更改:sudo systemctl restart netfilter-persistent
现在,Debian系统的iptables
和syslog-ng
应该已经配置好了,可以记录连接日志。连接日志将保存在/var/log/connections.log
文件中。