コマンドラインから特定のIPアドレスへのTelnetアクセスをどのように停止しますか?
答え1
より一般的なソリューションロレンティウス・ロスク解決策は、すべてのディストリビューションで同じように機能し、基本的にどのソフトウェアがインストールされているかを独立したiptablesを使用することです。
# iptables -A INPUT -p tcp -s <ip_address> --dport telnet -j DROP
-j REJECT
代わりに使用することを選択できます-j DROP
。 REJECTを使用すると、相手にその特定のポートに何もないという事実が伝えられます。 DROP を使用すると、パケットが破棄され、リモートホストの接続タイムアウト間隔が経過した後、接続試行がタイムアウトします。
すでに存在する可能性のある「承認」ルールの前にこのルールを挿入する必要があるかもしれません。それから私はこれをするのが好きです:
# iptables -L INPUT --line-number
<some or lots of output>
# iptables -I INPUT <number of telnet accept rule> ...
上記のコマンドの...
すべての内容はどこにありますか?-p tcp
デフォルトでは-I INPUT n
(-A INPUT
-Iは位置の前に挿入されます。N, -A が追加されます。 )
/ etc / servicesにリストされている--dport telnet
とおりに使用できます。気になる方は一度お試しください。それ以外の場合は、数値ポート番号(たとえば)を使用する必要があります。telnet
grep telnet /etc/services
23
iptables-save
同様の方法を使用して、再起動時にルールを維持できます。詳細は展開と設定によって異なります。一般化することはできません。ディストリビューションとバージョンを指定することで、誰かがこれに具体的な洞察を提供することができます(または「ディストリビューションXバージョンYで再起動時にiptablesルールを維持する方法」という別の質問でより良いかもしれません)。
その意味は、私はこれに同意します代わりにSSHを使用する必要があります。ただし、特定のIPへのアクセスをブロックしたい場合があります。これを実行できるレベルが低いほど、スタックの上位部分にバグがあるため、破損やサービス拒否につながるリスクが軽減されます。
答え2
/etc/host.denyに追加:
telnet: <ip_addres>
ただし、代わりにsshを使用する必要があります。