私が参考にしたものは次のとおりです。https://unix.stackexchange.com/a/145933
その場合は、次のようにしてください。
iptables -I INPUT -p tcp -s MY IP --dport 21 -j ACCEPT
iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j DROP
MY IP
ポート21にのみ接続できることがわかります。しかし、他の許可IPを追加する方法はありますか?
私はこれを試しました:
iptables -I INPUT -p tcp -s MY OTHER IP --dport 21 -j ACCEPT
ところがまだまだ詰まっているのに、DROPが以前にあったからだと思います。 DROPルールを削除せずに追加できますか?
答え1
オプション-I
はありませんiptables
追加(つまり-A
、)は次の目的で使用されます。入れる新しいルール。違いは、-A
新しいルールが追加されたことです。終わりチェーン、基本的に-I
チェーン内スタートチェーン。
チェーンは順次読み込まれるため、ルールの-j ACCEPT
前にルールを処理することが重要です-j DROP
。
これを行う方法はいくつかあります。
- ルールを追加する
-A
代わりに使用してください。-I
これにより、ルールが最後に追加され、コマンドの順序を変更しないと正しい順序になります。私は他の2つのオプションよりもこれをお勧めします。 - 引き続き使用します
-I
が、ルールを変更してください。これにより、-j ACCEPT
ルールはルールの前に処理されます-j DROP
。 -I
オプションで、新しいルールを挿入するチェーンの場所である追加の引数(数値)を許可します。パラメータなしでルールを追加したので、-j ACCEPT
最初のルール(つまり行1)になります。したがって、2行目に2番目のルールを追加します。iptables -I INPUT 2 -p tcp -s 0.0.0.0/0 --dport 21 `-j DROP`
しかし、最初のルールなど、多くのルールが必要な場合は、パフォーマンス上の理由でカスタムチェーンを作成する方が良いでしょう。
iptables -N check-ftp
iptables -A check-ftp -s IP1 -j ACCEPT
iptables -A check-ftp -s IP2 -j ACCEPT
[...]
iptables -A check-ftp -j DROP
iptables -A INPUT -p tcp --dport 21 -j check-ftp
これにより、チェーンに「FTP接続」のルールが作成されます。これにより、着信ネットワークパケットがFTPパケットでない場合、netfilterコードはこの特定のパケットを許可するかどうかを決定するために(長い)ルールのリストを繰り返すことなく、すぐに次のルールに進みます。その場合はいFTPパケット、その後〜する長いリストを見てください。