開発者がファイルをアップロードするためにアクセスできるいくつかのWebアプリケーション(B2B、B2C eコマース)があります。
FTP部分が安全であることを確認する必要があります。
それについて最善の方法は何ですか?
現在、私は持っています:
FTPアクセスを安全にするのに十分ですか?
@ mahbubut-r-aamanがついでに言及していますが、SSHについて少し詳しく説明したいと思いました。 FTPを保護するために私が言う答えは、FTPを使用しないことです。その理由は、デフォルトでユーザー名とパスワードを平文で送信するためです。これは、非常に安全なアプローチとは見なされていません。
代わりに、SFTP(SSHプロトコルを使用)またはFTP(S)を使用して、暗号化にSSLを備えたFTPプロトコルを使用できます。
さらに、パスワード推測の試みをブロックするのに役立つ fail2ban のようなソリューションを検討することをお勧めします。
リッスンするポートを変更することは、ランダムな攻撃のログのノイズを回避するのに少し役立ちますが、それに頼るべきではありません。
特定のソースIPアドレスへのアクセスをロックダウンすることは、サイトへのアクセスを試行できるユーザーを制限するので、実用的である場合に適しています。
標準のFTPプロトコルは安全ではありません。ネットワーク上の誰でも(いわゆる「中間者」と呼ばれ、接続上のデータの読み取りや変更が可能な人)は、送信内容を確認し、送信されたデータを変更できます。典型的なFTPログインは次のようになります。
* TCP connection is made to the server
220 Welcome to this FTP server!
USER <username>
331 Password required for <username>
PASS <password>
<a positive or negative response>
ご覧のとおり、パスワードはまったく保護されていません。ネットワーク上の誰でもこれを読み取ることができるため、攻撃者は盗んだユーザー名とパスワードで簡単にログインできます。
これを修正する方法はいくつかあります。 FTP以外のものを使用することもできますが、ここではトピックから外れているので、ここでは説明しません。 FTP自体は、FTPSとSFTPの2つの一般的なセキュアバージョンを認識しています。 FTPSの最後にはSがあり、HTTPSと同じです。実際、これはHTTPSとまったく同じように機能し、SSL/TLSプロトコルによるものです。接頭辞Sが付いたSFTPは、SSHを使用して接続し、Linuxサーバーでより一般的です。
この投稿では、FTPSに焦点を当てます。
まず第一に、これを積極的に確保しようとしているのは良いことです。多くの人は単に気にしないでしょう!
ポート番号の変更
これは2つの点で役立ちますが、どちらも実際には価値がありません。
アップロードは固定(ローカル)IPから実行できます
これはもう少し役立ちますが、それもあなたを制限します。あなたが家にいて、あなたのウェブサイトに巨大なセキュリティホールに気づいたら、あなたは車を運転する必要があるでしょう。まともなパスワードを使用すれば、特に、無効なログイン試行が多すぎた後の自動禁止をサポートするサーバーがある場合は、IPを制限する必要はありません。
VPNを設定して車を運転しなくても済むようにすることはできますが、強力なFTPパスワードを選択するだけの場合はどうでしょうか。
あなたはそれについて言及しなかったので、私はあなたがどんなOSでも利用可能なFTPクライアントとサーバーの実装に開放的であると仮定します。
私は多くのFTPサーバーをテストしていませんが、FileZilla Serverは私の目的にはうまく機能し、小規模な組織にはうまくいくと思います。機能は次のとおりです。
Linuxサーバーを使用している場合は、同様のオプションを持つFTPサーバーを探すことができます。 サーバーで検索する最も重要な機能はFTPSまたはSFTPであり、暗号化せずに誤って接続できないように強制する可能性があります。さらに、自動禁止とロギングはかなり重要です。
次にクライアントについては、FileZillaは非常に優れたオプションであると再度思います。
次の手順は、FTPアクセスを保護するのに役立ちます
EDIT:
EDIT:実装例
EDIT:私は@Rory McCuneのAnswerが好きです。素晴らしい説明。
FTPを使用する代わりに、SFTP(SSHプロトコルを使用)またはFTP(S)を使用して暗号化にSSLを使用するFTP(S)を確認する方がよいでしょう。
fail2ban は、パスワード推測の試みをブロックするのに役立つ素晴らしいソリューションです。
リッスンするポートを変更すると、ランダムな攻撃のログのノイズを回避するのに少し役立ちます。
EDIT:@Rookのコメントを好む
don't use ftp! Your password and your code in in plain text!