Ubuntu记录用户IP访问操作信息工具

本文介绍了如何在Ubuntu系统中使用shell脚本记录用户IP访问操作信息。脚本会每隔一天创建新的日志文件,并存储在/data/log/history目录下,同时过滤掉特定IP。通过在/etc/profile中添加脚本并启用,以及设置crontab任务进行定时更新,确保日志监控的持续运行。

1. 用脚本时刻记录用户IP访问操作信息工具,用shell脚本去记录
2. 每隔一天存放用户信息,记录操作时间,固定地方存放

脚本如下:

在服务器环境变量中加入如下代码:

vi /etc/profile

#!/bin/bash

basedir="/data/log/history/";

if [ ! -d /data/log/history ]

then

mkdir /data/log/history

fi

datedir=$(date +%Y年%m月%d日);

if [ -d “basedirbasedirbasedirdatedir” ];

then

while [ true ]; do

/bin/sleep 1

echo

<think>嗯,用户想在Ubuntu上实时监控指定端口的外部IP访问情况。我需要先想想有哪些工具可以做到这一点。首先,可能用iftop,但记得iftop主要是监控网络流量,按端口过滤可能需要特定参数。比如iftop -P可以显示端口,加上-F来指定网段。不过不确定是否直接支持端口监控。 然后想到的是netstat或者ss命令,结合watch实时刷新。比如用watch -n 1 'netstat -tn | grep :端口',这样每隔一秒刷新一次,显示连接到该端口的连接。不过netstat可能已经过时,ss更推荐。比如用ss -ntp | grep ':80',然后配合watch使用。 还有nmap工具,可以扫描端口,但实时监控可能不太适合。可能需要结合其他命令循环执行。 另外,用户提到了安装Netdata,引用里的资料提到Netdata可以实时监控,可能需要配置它的插件来监控特定端口的连接。需要查看Netdata的文档,看看是否有现成的端口监控模块,或者自定义配置。 iptables的日志功能也是一个方法。添加一条iptables规则记录访问特定端口的连接,然后用tail监控日志。比如添加规则记录到/var/log/iptables.log,然后用tail -f实时查看。不过需要安装iptables-persistent来保存规则,如引用1提到的安装和持久化步骤。 可能还需要考虑权限问题,比如使用sudo执行这些命令。另外,确保防火墙设置不会干扰监控,比如如果UFW启用的话,需要允许相关端口的流量。 用户可能需要结合多个工具,比如用iftop查看流量,用ss实时查看连接,或者用iptables日志记录。需要根据具体情况选择最合适的方法,并确保命令正确无误。还要注意命令的持续运行,比如使用screen或tmux来保持长时间监控。 最后,整理步骤时,分点说明每种方法,包括安装命令、示例和注意事项,确保用户能逐步操作。同时引用相关的参考资料,比如安装iptables-persistent和Netdata的方法来自引用1和2。</think>### 分步解决方案:Ubuntu实时监控指定端口外部IP访问的方法 #### 方法1:使用`iftop`按端口+IP过滤流量 1. **安装iftop** ```bash sudo apt-get install iftop ``` 2. **监控指定端口的流量** 通过`-P`显示端口号,`-f`过滤端口(例如监控80端口): ```bash sudo iftop -P -f "port 80" ``` 输出会实时显示外部IP的流量情况[^4]。 3. **结合网段过滤**(如监控192.168.1.0/24网段): ```bash sudo iftop -F 192.168.1.0/24 -P ``` --- #### 方法2:使用`ss`命令+`watch`实时刷新连接 1. **查看当前连接到指定端口的IP** 例如监控443端口(HTTPS): ```bash watch -n 1 'ss -ntp | grep ":443"' ``` - `-n`: 显示IP而非域名 - `-t`: 仅TCP连接 - `-p`: 显示进程信息 2. **解析输出字段** 输出示例: ``` ESTAB 0 0 192.168.1.2:443 203.0.113.5:55678 users:(("nginx",pid=1234,fd=15)) ``` 其中`203.0.113.5`为外部IP,`55678`为源端口。 --- #### 方法3:通过`iptables`日志记录访问 1. **添加iptables规则** 记录访问80端口的连接(保存到`/var/log/iptables.log`): ```bash sudo iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "[PORT80_ACCESS] " ``` 2. **持久化规则**(参考引用[^1]) ```bash sudo netfilter-persistent save sudo netfilter-persistent reload ``` 3. **实时查看日志** ```bash sudo tail -f /var/log/syslog | grep "PORT80_ACCESS" ``` --- #### 方法4:使用Netdata监控工具(参考引用[^2]) 1. **安装Netdata** ```bash bash <(curl -Ss https://my-netdata.io/kickstart.sh) ``` 2. **访问Web界面** 打开浏览器访问`http://localhost:19999`,进入**TCP/UDP监听器**仪表盘,筛选指定端口。 --- #### 方法对比表 | 方法 | 实时性 | 可定制性 | 复杂度 | 适用场景 | |---------|--------|----------|--------|------------------------| | iftop | 高 | 中 | 低 | 快速查看流量趋势 | | ss+watch| 高 | 低 | 低 | 简单连接状态监控 | | iptables| 中 | 高 | 高 | 长期审计或安全分析 | | Netdata | 中 | 低 | 中 | 可视化集成监控 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值