一、实验背景

 

用iptables做端口转发,希望能记录转发的源IP到日志文件中。

 

二、实验环境  

 

虚拟机:test03  IP:192.168.124.5    模拟客户端访问者

虚拟机:test01  IP:192.168.124.6    模拟跳板机转发服务器

虚拟机:test02  IP:192.168.124.7    模拟后端服务器

 

在test02后端服务器上安装httpd并开启80端口,通过iptables在test01跳板机转发服务器设置防火墙策略,实现客户端访问跳板机的8080端口,跳转至后端服务器的80端口。

192.168.4.5---->192.168.124.6:8080---->192.168.124.7:80

在跳板机转发服务器上生成单独的iptables日志以记录客户端ip(源ip)。

 

 

三、实验操作

 

在test1跳板机转发服务器上

 

#  iptables -A FORWARD -P ACCEPT

 

#  iptables -t nat -A PREROUTING -p tcp  -d 192.168.124.6  --dport 8080 -j DNAT  --to-destination  192.168.124.7:80

 

通过跳板机访问后端服务80端口的信息都将被记录

#  iptables -t nat -A POSTROUTING  -p tcp  --dport 80 -j LOG --log-level 4 --log-prefix seatalk2

 

#  iptables -t nat -A POSTROUTING  -j  MASQUERADE

 

开启内核转发功能

#  echo 1 > /proc/sys/net/ipv4/ip_forward

 

 

在test3客户端服务器上

浏览器测试访问   http://192.168.124.6:8080

 

 

 

在test1跳板机转发服务器上

 

开启iptables日志

# vim /etc/rsyslog.conf

##################################

kern.warning     /var/log/iptables.log

###################################

 

#  systemctl restart  rsyslog

 

浏览器测试访问跳板机8080端口,在test01跳板机转发服务器上动态查看日志内容

#  tail   -f    /var/log/iptables.log

 

 

 

四、日志处理

 

通过时间来判定访问源地址

#    awk '{print $1,$2,$3,$9}'     /var/log/iptables.log

 

统计源ip出现次数

#awk '{print $1,$2,$3,$9}'  iptables.log | awk -F= '{print $2}' | awk '{ip[$1]++}END{for(i in ip){print ip[i],i}}' | sort -n |column -t

 

如果后端主机要获取源ip的话可以通过获取跳板机日志的方式来实现,通过比对后端访问日志的时间和跳板机时间来确定源ip。

服务器之间的时间同步显得特别重要。

 

后端httpd服务的访问日志 access_log

 

跳板机转发服务器上的iptables日志

 

 

五、参考

 

Linux上开启独立iptables日志

https://blog.51cto.com/babyshen/1966077

 

开启iptables日志管理 ,记录NAT信息

http://blog.sina.com.cn/s/blog_6d51d1b70101etc8.html

 

开启iptables的日志管理

https://blog.csdn.net/chinalinuxzend/article/details/1765259?utm_source=blogxgwz1

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐