web-dev-qa-db-ja.com

iptablesを使用してポート10022でIPサブネットからssh接続を許可するにはどうすればよいですか?

帯域幅テストのためにパブリックIPを使用してサーバーをセットアップする必要があり、必要なポートを除くすべての着信トラフィックをドロップするスクリプトが既にあります。 sshポートをデフォルト(22)から別のポートに変更しました(XXXXXと呼びましょう。パラノイアで申し訳ありませんが、先週ハッキングされました)。

だから私の質問は、特定のポートを介してサーバーにsshするためにIPの範囲をどのように許可することができますか?

前述のスクリプト:

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i em1 -p tcp --sport XXXXX -m state --state ESTABLISHED -j ACCEPT

そのため、リモートでsshできるようにip範囲を追加する必要があります。

2
Mike

iptables-sオプションを使用します。 nnn.nnn.nnn.nnn形式のIPまたはマスク(nnn.nnn.nnn.nnn/nnn.nnn.nnn.nnnまたはnnn.nnn.nnn.nnn/nn)を含むIPを受け入れます。たとえば、nnn.nnn.nnn。*からの接続を許可するには、次のように記述できます。

iptables -A INPUT -s nnn.nnn.nnn.0/255.255.255.0 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT

または

iptables -A INPUT -s nnn.nnn.nnn.0/24 -i em1 -p tcp --dport XXXXX -m state --state NEW,ESTABLISHED -j ACCEPT

(たとえば、ネットマスク計算については here を参照)

ネットマスクを作成できない場合は、サーバーへの接続を許可するIPアドレスごとにルールを複製する必要があると思います。

ただし、一般的に、iptablesを直接操作することは非常に素晴らしいとは思わず、すぐに概要を失う可能性があります。おそらく shorewall のようなものを探します。

1
January