着信アクセスをブロックするようにiptablesを設定するとします(ポート22および他のいくつかのポートを除く)。また、次の規則に従って、iptablesが自宅に電話する遊び心のあるソフトウェアを「プッシュ」できるようにしたいとします。
iptables -A OUTPUT -p all -s $THIS_SERVER -m conntrack --state NEW -j LOG --log-prefix "OUTBOUND "
これはすべて優れていますが、SSHトンネルトラフィックもある場合、iptablesを使用してそのトラフィックを異なる方法で処理するにはどうすればよいですか?ここに私の具体的な例があります。クライアントが次のことを実行できるように、sshdが配信を許可しているとします。
ssh -D127.0.0.1:12345 uid@myserver -N
次に、一端にアウトバウンド要求を実行できるSOCKSプロキシがあります$THIS_SERVER
。これは許可したい動作ですが、上記のサーバー自体から発生したトラフィックとは異なるトラフィックとして記録したい(または転送されたトラフィックをまったく記録しない場合があります)。
これが可能だと思いますか?可能であれば説明してください。私がやろうとしているのは、FORWARDチェーンを介して2番目のクラスをキャプチャすることですが、うまくいきません。どちらのトラフィックタイプも同じ基準で選択されているため、区別できません。これらのSSHトンネルパケットを相互接続する方法はありますか?
疑いの余地をなくすために、私のサーバーを介してSOCKSプロキシを設定し、Firefoxを開くことに関連するログエントリは次のとおりです。UID=980
Linuxパーサーユーザー、UID=1000
SSH経由でトンネリングするリモートユーザーです。
[15719.755667] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=62202 DF PROTO=UDP SPT=35744 DPT=53 LEN=53 UID=980 GID=980
[15719.755771] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=73 TOS=0x00 PREC=0x00 TTL=64 ID=62203 DF PROTO=UDP SPT=32777 DPT=53 LEN=53 UID=980 GID=980
[15720.046668] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=95 TOS=0x00 PREC=0x00 TTL=64 ID=62256 DF PROTO=UDP SPT=33118 DPT=53 LEN=75 UID=980 GID=980
[15720.047446] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=34.210.48.174 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=520 DF PROTO=TCP SPT=34758 DPT=443 WINDOW=29200 RES=0x00 SYN URGP=0 UID=1000 GID=1000
[15720.049736] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=34.210.48.174 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=1938 DF PROTO=TCP SPT=34760 DPT=443 WINDOW=29200 RES=0x00 SYN URGP=0 UID=1000 GID=1000
[15720.614489] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=62296 DF PROTO=UDP SPT=43834 DPT=53 LEN=54 UID=980 GID=980
[15720.614573] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=74 TOS=0x00 PREC=0x00 TTL=64 ID=62297 DF PROTO=UDP SPT=55510 DPT=53 LEN=54 UID=980 GID=980
[15720.615559] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=75 TOS=0x00 PREC=0x00 TTL=64 ID=62298 DF PROTO=UDP SPT=40906 DPT=53 LEN=55 UID=980 GID=980
[15728.039642] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=72 TOS=0x00 PREC=0x00 TTL=64 ID=63174 DF PROTO=UDP SPT=39308 DPT=53 LEN=52 UID=980 GID=980
[15728.039723] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=72 TOS=0x00 PREC=0x00 TTL=64 ID=63175 DF PROTO=UDP SPT=53907 DPT=53 LEN=52 UID=980 GID=980
[15729.529947] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=63315 DF PROTO=UDP SPT=45694 DPT=53 LEN=61 UID=980 GID=980
[15729.530068] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=63316 DF PROTO=UDP SPT=52263 DPT=53 LEN=61 UID=980 GID=980
[15729.896039] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=63355 DF PROTO=UDP SPT=40457 DPT=53 LEN=50 UID=980 GID=980
[15729.896132] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=63356 DF PROTO=UDP SPT=38307 DPT=53 LEN=50 UID=980 GID=980
[15730.189743] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=82 TOS=0x00 PREC=0x00 TTL=64 ID=63442 DF PROTO=UDP SPT=40521 DPT=53 LEN=62 UID=980 GID=980
[15730.189870] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=82 TOS=0x00 PREC=0x00 TTL=64 ID=63443 DF PROTO=UDP SPT=34444 DPT=53 LEN=62 UID=980 GID=980
[15730.190707] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=63444 DF PROTO=UDP SPT=55549 DPT=53 LEN=61 UID=980 GID=980
[15730.192361] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=52.43.38.51 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=22080 DF PROTO=TCP SPT=60876 DPT=443 WINDOW=29200 RES=0x00 SYN URGP=0 UID=1000 GID=1000
[15730.641766] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=63507 DF PROTO=UDP SPT=54359 DPT=53 LEN=61 UID=980 GID=980
[15730.641890] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=63508 DF PROTO=UDP SPT=52250 DPT=53 LEN=61 UID=980 GID=980
[15749.499230] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=87 TOS=0x00 PREC=0x00 TTL=64 ID=198 DF PROTO=UDP SPT=57205 DPT=53 LEN=67 UID=980 GID=980
[15749.499394] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=87 TOS=0x00 PREC=0x00 TTL=64 ID=199 DF PROTO=UDP SPT=45791 DPT=53 LEN=67 UID=980 GID=980
[15749.500301] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=116 TOS=0x00 PREC=0x00 TTL=64 ID=200 DF PROTO=UDP SPT=37022 DPT=53 LEN=96 UID=980 GID=980
[15749.500917] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=54.68.157.14 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=64708 DF PROTO=TCP SPT=43082 DPT=443 WINDOW=29200 RES=0x00 SYN URGP=0 UID=1000 GID=1000
[15752.028535] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=585 DF PROTO=UDP SPT=59245 DPT=53 LEN=61 UID=980 GID=980
[15752.028624] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=586 DF PROTO=UDP SPT=55551 DPT=53 LEN=61 UID=980 GID=980
[15752.029484] OUTPUT:LOG,ACCEPT IN= OUT=eth0 SRC=$THIS_SERVER DST=$NAMESERVER LEN=75 TOS=0x00 PREC=0x00 TTL=64 ID=587 DF PROTO=UDP SPT=34032 DPT=53 LEN=55 UID=980 GID=980
答え1
SSHトンネルには宛先ポート22がある可能性があるため、そのポートを無視するようにルールに指示できます。
iptables -A OUTPUT -p tcp --dport 22 -s $THIS_SERVER -m conntrack --state NEW -j ACCEPT
iptables -A OUTPUT -p all -s $THIS_SERVER -m conntrack --state NEW -j LOG --log-prefix "OUTBOUND "
答え2
結果を得る1つの方法は、sshd
別のネットワークネームスペースで実行し、着信SSH接続にDNATトンネリングを提供し、そのネームスペースのアウトバウンドトラフィックにNATを提供することです。この設定では、sshd
別々の(仮想)インターフェイスからトラフィックを受信します。