前提・実現したいこと
踏み台として利用するサーバーを
安全に利用するために最低限のiptablesを設定したい。
- ssh(50222)開いており、
- http(80)が開いており、
- https(50443)が開いており、
SSHポートフォワードでsshクライアントに50443を使わせたい。
- 踏み台はyum update等したい(80?)
- nmap <対象サーバのIP>
されても、使用しているポートがばれないようにしたい
上記を満たすようなiptablesを参考サイトを見ながら、
/etc/sysconfig/iptables を書いてみました。
発生している問題・エラーメッセージ
- SSHの接続が異常なほどに遅くなる(名前解決に時間がかかるから?)
- 名前解決ができなくなってる?
- 現状、対象サーバーにnmapすると、
80番を使っていることがバレてしまう。
- SSHした別サーバーから踏み台サーバの20443番を利用できない。
[user@proxy .ssh]# ping 8.8.8.8 -c3 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=51 time=1.56 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=51 time=1.69 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=51 time=1.71 ms --- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 1.561/1.655/1.714/0.067 ms [user@proxy .ssh]# curl -Ivs ifconfig.io * getaddrinfo(3) failed for ifconfig.io:80 * Couldn't resolve host 'ifconfig.io' * Closing connection #0 [user@proxy .ssh]# yum install -y update Loaded plugins: fastestmirror Setting up Install Process Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=stock error was 14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'" Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=extras&infra=stock error was 14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'" [user@other_server]# nmap <対象サーバのIP> Starting Nmap 5.51 ( http://nmap.org ) at 2019-06-22 15:07 JST Nmap scan report for dv.ptr139.ptrcloud.net (対象サーバのIP) Host is up (0.00078s latency). Not shown: 999 filtered ports PORT STATE SERVICE 80/tcp open http
該当のソースコード
vim /etc/sysconfig/iptables
# Reference url # https://knowledge.sakura.ad.jp/4048/ # filter table *filter # Set the policy (-P, --policy chain target) :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # Accept loopback -A INPUT -i lo -j ACCEPT # Accept established connection -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT # Drop connections for packets that do not have data -A INPUT -p tcp --tcp-flags ALL NONE -j DROP # Drop connections that appear to be SYNflood attacks -A INPUT -p tcp ! --syn -m state --state NEW -j DROP # Drop connections that appear to be stealth scans -A INPUT -p tcp --tcp-flags ALL ALL -j DROP # Accept icmp -A INPUT -p icmp -j ACCEPT # Accept ssh -A INPUT -p tcp -m state --syn --state NEW --dport 50222 -m hashlimit --hashlimit-name t_sshd --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT # Accept other -A INPUT -m multiport -p tcp --dports 80,20443 -j ACCEPT COMMIT
試したこと
接続が遅い問題に関しては、
ここが起因しているように思えた。
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
全部開けたら、時間がかかることはなくなった。
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
iptablesの設定方法を調べると、
INPUT, FORWARD チェインを全てDROPにする
ホワイトリスト形式ばかりでてくるのですが、
私と同じ問題が発生していないのか疑問に思っています。
補足情報(FW/ツールのバージョンなど)
SSHポートフォワードでsshクライアントに50443を使わせたい。
:FORWARD DROP [0:0]
とすると、使わせられないと思うのですが、
SSHリモートフォワードさせたクライアントのみに許可する
という書き方はできますか。
iptablesはv1.4.7 でした。
踏み台サーバーはクラウドサービスで動いているVMで、
外部にでるときに、SNATしている。
[user@proxy .ssh]# iptables -v iptables v1.4.7: no command specified
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。