Linux Ubuntuマシンをno-ip.comを介してSSHサーバーとして設定しましたが、うまく機能します。
最近、私はコマンドを発見しました、
Sudo lastb -ad -F -w
最新の失敗したSSHログイン試行のログを出力します。どのような対策を講じることができますか?パッシブ(たとえば、場所によるログイン試行のフィルタリングが向上していますか?)およびアクティブ(例:手動IPブロック)とその方法は?これは冗長な質問かもしれませんが、リンクや特定のLinux端末の例に感謝します。私は基本的にIS初心者です。
これは出力のごく一部であるため、中国の一部の人は本当に私の日を台無しにしたいと思います(リストされているIPはどちらも who.is で中国からのものだと言っています)。
root ssh:notty Sun Jan 31 23:48:58 2016 - Sun Jan 31 23:48:58 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:57 2016 - Sun Jan 31 23:48:57 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:55 2016 - Sun Jan 31 23:48:55 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:55 2016 - Sun Jan 31 23:48:55 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:52 2016 - Sun Jan 31 23:48:52 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:52 2016 - Sun Jan 31 23:48:52 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:49 2016 - Sun Jan 31 23:48:49 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:49 2016 - Sun Jan 31 23:48:49 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:46 2016 - Sun Jan 31 23:48:46 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:46 2016 - Sun Jan 31 23:48:46 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:43 2016 - Sun Jan 31 23:48:43 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:41 2016 - Sun Jan 31 23:48:41 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:38 2016 - Sun Jan 31 23:48:38 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:37 2016 - Sun Jan 31 23:48:37 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:35 2016 - Sun Jan 31 23:48:35 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:34 2016 - Sun Jan 31 23:48:34 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:32 2016 - Sun Jan 31 23:48:32 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
root ssh:notty Sun Jan 31 23:48:32 2016 - Sun Jan 31 23:48:32 2016 (00:00) 182.100.67.173
root ssh:notty Sun Jan 31 23:48:30 2016 - Sun Jan 31 23:48:30 2016 (00:00) 12.145.195.113.adsl-pool.jx.chinaunicom.com
私のマシンにアクセスしようとするブルートフォースの試みが疑われます(この試みは文字通り数秒ごとに発生しています)。手伝ってください。
できる限り多くの緩和策を実行します。
あなたの目標は、さまざまな潜在的な攻撃者に、より多くの労力、リソース、コンピュータ時間(したがって電気代)、そして最も特に「熟練」した(まれまたは乏しい、したがって貴重な)人時間を費やすことを強制することです。すべての脅威に対して1つの保護が機能するわけではありません。インターネット上に残っている間、すべての脅威を防御できるわけではありません。
ただし、多数の脅威(スクリプトキディ、スキルの低い、またはリソースの少ない攻撃者)は、多層防御を実現することにより、ほぼ常に打ち負かすことができます。単独で多くの脅威を倒します。したがって、システムのiptablesルールが誤って誰かを許可した場合、SSHD証明書認証はそれらを締め出します。 SSHDサービスに欠陥がある場合、VPNは誰にも見られないようにします。 VPNとSSHDの両方に同時に欠陥がある場合、ファイアウォールルールにより、世界中のほとんどのIPアドレスがその試みを阻止し、ローカルと大規模なボットネットのみが脆弱性を悪用して攻撃できるようにします。出来るだけ早く。
したがって、もう一度言いますが、できる限り多くのレベルで多くの緩和策を講じます。未発見の脆弱性がある脆弱性と、それらが悪用される順序を事前に知ることはできません。
SSH v2のみを許可するようにしてください
sshd_config
パッチを当てる
Iptablesを使用して、実際に使用するIPアドレスまたは範囲のみを許可する
UbuntuヘルプサイトのSSH/OpenSSH /設定ページ に従って、ユーザー名/パスワードではなく証明書によるアクセスのみを許可するようにSSHを設定します
sshd_config
PubkeyAuthenticationはい
PasswordAuthenticationいいえ
暗号化されたホームディレクトリを使用する場合
そうでない場合は、ホームディレクトリの通常の設定が機能します。
AuthorizedKeysFile%h/.ssh/authorized_keys
過度のアクセス許可がないことを確認してください。
chmod 700〜/ .ssh
chmod 600〜/ .ssh/authorized_keys
chmod go-w〜
そして、できるだけ強力な証明書を設定します。キーの生成は UbuntuヘルプサイトのSSH/OpenSSH/Keysページでカバーされています
私は、4096ビットのRSAキーまたは長い強力なパスフレーズを持つed25519キーから始めます。必ずローカルで生成し、プロンプトが表示されたら長く強力なパスフレーズを入力します。-oを使用して新しいOpenSSH 6.5の鍵形式を確認し、サーバーに公開鍵以外のものがないことを確認します。
ssh-keygen -o -t ed25519 -f〜/ .ssh/id_ed25519
ssh-keygen -o -b 4096 -t rsa -f〜/ .ssh/id_rsa
既存のキーの長さを確認するには、ssh-keygen -e -f mykeyfileを使用します
可能であれば、authorized_keysファイルのキーを特定のIPアドレスまたはホスト名のセットに制限します
from = "192.168.1.2" ssh-rsa ABCDE ... 012 [email protected]
from = "*。test.test、!BadPC.test.test" ssh-ed25519 ABCDE ... 012 [email protected]
OpenSSH 6.8以降を使用している場合は、 sshd_configで許可されたキーを特定のタイプに制限することができます
fail2ban を使用して、ブルートフォースの試行により多くの労力がかかるようにします(つまり、1台のマシンだけではなく、ボットネットを使用するか、長時間かかるようにします)。
ログイン猶予時間を短縮する
証明書を使用している場合、非常に低速の接続を使用しない限り、証明書をWAYダウンするオプションがあります。
それ以外の場合、まあ、どのくらい速くタイプしますか?
Mozilla.org Security/Guidelines/OpenSSH の情報を使用して、暗号スイートの選択を制御します
それはあなたのサーバーであり、あなただけが入っているので、最新のクライアントだけが許可されるように非常に非常にタイトなグループを選択できます。たぶん
HostKey/etc/ssh/ssh_Host_rsa_key
Sudo ssh-keygen -o -N '' -b 4096 -t rsa -f/etc/ssh/ssh_Host_rsa_key
または
HostKey/etc/ssh/ssh_Host_ed25519_key
Sudo ssh-keygen -o -N '' -t ed25519 -f/etc/ssh/ssh_Host_ed25519_key
明らかにHostKeyファイル名を正確に一致させてください!
または両方(最初に優先)
すべてのdsaキーを完全に削除します。 SSHの悲惨な1024ビットに修正されています
Ssh -Qディレクティブを使用して、システムが暗号スイートオプションに対してサポートするものを決定します。
KexAlgorithms [email protected]
暗号chacha20-poly1305 @ openssh.com、aes256-gcm @ openssh.com、aes128-gcm @ openssh.com
または、具体的な選択が最も安全だと感じること
そして、文学についていく。選択したものに欠陥がある場合は、その時点で既知の欠陥のないものを選択します。
I-blocklist のブロックリストでiptables(またはファイアウォール)を使用します
地理的またはISPベースのIPリストでiptables(またはファイアウォール)を使用します。そのような地理的リストのソースの1つは maxmind.com です。
RFC6335 ごとに49152〜65535のダイナミック(エフェメラル)ポート範囲のポートに切り替えます
Iptablesを介してそのサーバー上の他のすべてのポートをブロックします。多くの攻撃に見舞われる可能性があります
特にMySQLデータベースを強化します(ある場合)。IDSに対するMySQL(およびSQL Server)攻撃がたくさんあり、どちらも実行したり、ポートを開いたりしたことがありません。それらをローカルのルーティング不可能なIPのみなどに設定し、長いパスワードを設定し、無効にするなどします。
特にWebサーバーを無効にして、ローカルのルーティング不可能なIPのみに設定します。
Ubuntuヘルプサイト または A DigitalOcean記事 に従ってポートノッキングを使用する
iptables -A INPUT -p tcp --dport 22 -m Recent --update --seconds 60 --hitcount 5 --name SSH --rsource -j DROP
iptables -A INPUT -p tcp --dport 22 -m latest --set --name SSH --rsource -j ACCEPT
Debianのドキュメント「OpenSSH SFTP chroot()with ChrootDirectory」 に従ってchrootを使用することを検討してください
Sshd_configオプションでrhostsが無効になっていることを確認します
IgnoreRhostsはい
RhostsRSAAuthenticationいいえ
RhostsAuthenticationいいえ
認証前の非特権プロセスにさらに制限を追加する
フォワーディングやトンネリングを使用していない場合は、sshd_configで無効にしてください
X11転送なし
AllowTcpForwarding no
GatewayPortsいいえ
PermitTunnelいいえ
ディレクトリまたは権限で他の安全でないセットアップを防止する
StrictModesはい
そして、それが再び機能するまで、あなたの許可と設定を調べてください:)
ホストベースの認証を無効にする
「OpenSSHデーモンがServerKeyBitsディレクティブを無視する」に対するこのServerfaultの回答 に従って、最初のSSH v1を許可しないため、古いServerKeyBits sshd_configディレクティブは適用されなくなりました。場所。
Sshd_configでrootを許可しない
別のユーザー(おそらく、インストールするパッケージのサービスユーザー)に他のオプションを許可しない
pfSense または Ubiquiti Edgerouter Lite のような個別のオールアップファイアウォールをそのマシンと外界の間にインストールします。
そして、組み込みのVPNを使用しますさらに強化されたSSHログイン
また、ユーザー名/パスワードベースのログインではなく、証明書ベースのログイン
OpenVPNを使用している場合
--tls-auth "ta.key"事前共有鍵も必ず使用してください
デフォルトよりも優れた暗号を選択します
そして、このレベルでも上記のブロックリストを使用します
DeerHunterが述べたように、他の方法なしでsshやiptablesやその他のファイアウォール設定を変更すると、SSHを実行できない可能性があります。
どうぞ:
あなたはその特定のIPを正常にブロックしましたが、何千ものそのような悪意のあるコンピューターがあなたのsshを強引に押し込もうとしてボックスに侵入しようとしていることを私に話させてください。
いくつかのヒント:
下位レベルのヒント: