Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -A INPUT --state NEW -p tcp --dport 4711 -j LOG
- tcpdump "dst port 4711 and tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn"
- tcpdump "src port 4711 and tcp[tcpflags] & (tcp-syn|tcp-ack) == (tcp-syn|tcp-ack)"
- #!/usr/bin/env stap
- # To monitor another TCP port run:
- # stap -G port=80 tcp_connections.stp
- # or
- # ./tcp_connections.stp -G port=80
- global port = 22
- global connections
- function report() {
- foreach (addr in connections) {
- printf("%s: %dn", addr, @count(connections[addr]))
- }
- }
- probe end {
- printf("n=== Summary ===n")
- report()
- }
- probe kernel.function("tcp_accept").return?,
- kernel.function("inet_csk_accept").return? {
- sock = $return
- if (sock != 0) {
- local_port = inet_get_local_port(sock)
- if (local_port == port) {
- remote_addr = inet_get_ip_source(sock)
- connections[remote_addr] <<< 1
- printf("%s New connection from %sn", ctime(gettimeofday_s()), remote_addr)
- }
- }
- }
- [root@bubu ~]# ./tcp_connections.stp -G port=80
- Mon Mar 17 04:13:03 2014 New connection from 192.168.122.1
- Mon Mar 17 04:13:04 2014 New connection from 192.168.122.1
- Mon Mar 17 04:13:08 2014 New connection from 192.168.122.4
- ^C
- === Summary ===
- 192.168.122.1: 2
- 192.168.122.4: 1
- strace -r -f -e trace=accept -o /tmp/strace ${PROGRAM} ${ARGS}
- strace -r -f -e trace=accept -o /tmp/strace -p ${PID_OF_PROGRAM}
- 999 0.000000 accept(3, {sa_family=AF_INET, sin_port=htons(34702), sin_addr=inet_addr("192.168.122.4")}, [16]) = 5
- 999 0.008079 --- SIGCHLD (Child exited) @ 0 (0) ---
- 999 1.029846 accept(3, {sa_family=AF_INET, sin_port=htons(34703), sin_addr=inet_addr("192.168.122.4")}, [16]) = 5
- 999 0.008276 --- SIGCHLD (Child exited) @ 0 (0) ---
- 999 3.580122 accept(3, {sa_family=AF_INET, sin_port=htons(50114), sin_addr=inet_addr("192.168.122.1")}, [16]) = 5
- # gawk 'match($0, /^([0-9]+)[[:space:]]+([0-9.]+)[[:space:]]+accept(.*htons(([^)]+)),.*inet_addr("([^"]+)").*[[:space:]]+=[[:space:]]+([1-9][0-9]*)/, m) {connections[m[4]]++} END {for (addr in connections) printf("%s: %dn", addr, connections[addr]); }' /tmp/strace
- 192.168.122.4: 3
- 192.168.122.1: 2
- cat conn_minute.sh
- #!/bin/bash
- function save_log {
- LOG_DIR=/mnt/logs/ip_conntrack/`date +%Y%m%d`
- TEMP_FILE=$LOG_DIR/`date +%Y%m%d_%H%M%S`.gz
- LOG_FILE=$LOG_DIR/`date +%Y%m%d_%H`.tar
- if [ ! -d $LOG_DIR ]
- then
- mkdir $LOG_DIR
- fi
- gzip -c /proc/net/ip_conntrack > $TEMP_FILE
- if [ -f $LOG_FILE ]; then
- tar -rf $LOG_FILE $TEMP_FILE 2> /dev/null
- else
- tar -cf $LOG_FILE $TEMP_FILE 2> /dev/null
- fi
- rm $TEMP_FILE
- }
- function log_minute {
- i=1;
- LOOP_COUNTER=3
- LOOP_TIME=20
- while [ $i -le $LOOP_COUNTER ]; do
- save_log
- i=$[i+1]
- sleep $LOOP_TIME
- done
- }
- log_minute
- nohup netstat -c | grep -E "xxx|xxxx" >> netstat_log 2>&1 &
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement