温馨提示×

debian iptables如何记录连接日志

小樊
81
2025-01-01 05:23:43
栏目: 智能运维

在Debian系统中,你可以使用iptablessyslog来记录连接日志

  1. 首先,确保你的系统已经安装了iptablessyslog-ng。如果没有安装,可以使用以下命令进行安装:
sudo apt-get update
sudo apt-get install iptables syslog-ng
  1. 配置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文件,并设置了日志文件的轮换和压缩选项。

  1. 创建一个新的配置文件/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+)"$/;

这个配置文件定义了一个过滤器,用于匹配连接日志格式,并将其传递给之前定义的日志源。

  1. 重启syslog-ng服务以应用更改:
sudo systemctl restart syslog-ng
  1. 使用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)流量通过。

  1. 重启iptables服务以应用更改:
sudo systemctl restart netfilter-persistent

现在,Debian系统的iptablessyslog-ng应该已经配置好了,可以记录连接日志。连接日志将保存在/var/log/connections.log文件中。

0