Linux iptables ファイアウォールに関する面接での 13 の質問
頻繁にテクミントを訪れている西田アガルワルは、プネーの民間ホスティング会社で受けたばかりの就職面接に関する経験 (質疑応答) を私たちに共有してくれました。インドのインドです。彼女はさまざまなトピックについて多くの質問を受けましたが、 彼女はiptables の専門家であり、iptables に関連するこれらの質問とその回答 (彼女が与えた) を、これからアクセスする可能性のある他の人たちと共有したいと考えていました。近いうちに面接を受ける。
すべての質問とその答えはニシタ・ アガルワルの記憶に基づいて書き換えられています。
"皆さん、こんにちは!私の名前はニシタ・ アガルワルです。私はテクノロジーの学士号を取得しました。私の専門分野は UNIX と UNIX のバリアント (BSD、Linux) で、それを聞いたときからとても興味を持っています。私は保管分野で 1 年以上の経験があります。転職先を探していたところ、インドのプネにあるホスティング会社に決まりました。 」
面接で聞かれたことをまとめてみました。私の記憶に基づいて、iptables に関連する質問とその回答のみを文書化しました。これが面接突破に役立つことを願っています。
1. Linux の iptables とファイアウォールについて聞いたことがありますか?それらが何であり、何に使用されるかについて何か考えはありますか?
答え : 私はかなり長い間 iptables を使用しており、iptables とファイアウォールの両方について認識しています。 iptables は、主に C プログラミング言語で書かれたアプリケーション プログラムであり、GNU General Public License に基づいてリリースされています。システム管理の観点から書かれたもので、iptables 1.4.21 の最新の安定リリースです。iptables は、< と呼ばれる UNIX のようなオペレーティング システムのファイアウォールと見なすことができます。より正確には、strong>iptables/netfilterです。管理者は、コンソール/GUI フロントエンド ツールを介して iptables と対話し、事前定義されたテーブルにファイアウォール ルールを追加および定義します。 Netfilter は、カーネル内に構築され、フィルタリングの仕事を行うモジュールです。
Firewalld は、RHEL/CentOS 7 でのフィルタリング ルールの最新の実装です (私が気づいていない他のディストリビューションにも実装されている可能性があります)。 iptables インターフェースを置き換え、netfilter に接続します。
2. iptables または Linux コマンド ライン用の何らかの GUI ベースのフロント エンド ツールを使用したことがありますか?
答え : ただし、私は GUI で Webmin を活用した Shorewall などの iptables 用の GUI ベースのフロントエンド ツールと、コンソール経由の iptables への直接アクセスの両方を使用しました。 Linux コンソールを介して iptables に直接アクセスすると、柔軟性が高まり、バックグラウンドで何が起こっているかをよりよく理解できるという形で、ユーザーに計り知れない力が与えられることは認めます。 GUI は初心者管理者向けであり、コンソールは経験豊富な管理者向けです。
3. iptables と firewalld の基本的な違いは何ですか?
答え : iptables と firewalld は同じ目的 (パケット フィルタリング) を果たしますが、アプローチが異なります。 iptables は、firewalld とは異なり、変更が行われるたびにルールセット全体をフラッシュします。通常、iptables 設定の場所は「/etc/sysconfig/iptables」にありますが、firewalld 設定は XML ファイルのセットである「/etc/firewalld/」にあります。 XML ベースの firewalld の構成は、iptables の構成に比べて簡単ですが、パケット フィルタリング アプリケーション、つまり iptables と firewalld の両方を使用して同じタスクを実行できます。 Firewalld は、独自のコマンド ライン インターフェイスと、上で述べた XML ベースの設定ファイルとともに、内部で iptables を実行します。
4. 機会があれば、すべてのサーバーで iptables を firewalld に置き換えますか?
答え : 私は iptables に精通しており、正常に動作しています。firewalld の動的側面を必要とするものが何もないのであれば、すべての設定を iptables から firewalld に移行する理由はないようです。ほとんどの場合、これまでのところ、iptables が問題を引き起こしているのを見たことがありません。情報技術の一般原則にも「壊れていないのになぜ直すのか」というものがあります。ただし、これは私の個人的な考えであり、組織が iptables を firewalld に置き換える場合は、firewalld を実装することを気にしません。
5. あなたは iptables に自信があるようですが、プラスポイントは、サーバー上で iptables を使用していることです。
iptables で使用されるテーブルは何ですか? iptables で使用されるテーブルとそれらがサポートするチェーンについて簡単に説明します。
答え : ご認識いただきありがとうございます。質問部分に移ります。iptables では次の 4 つのテーブルが使用されます。
- ナットテーブル
- マングルテーブル
- フィルタテーブル
- 生のテーブル
Nat テーブル : Nat テーブルは主にネットワーク アドレス変換に使用されます。マスカレードされたパケットの IP アドレスは、表のルールに従って変更されます。ストリーム内のパケットは Nat テーブルを 1 回だけ通過します。つまり、パケットのジェットからのパケットがマスカレードされた場合、ストリーム内の残りのパッケージはこのテーブルを再度通過しません。このテーブルではフィルタをかけないことをお勧めします。 NAT テーブルがサポートするチェーンは、PREROUTING チェーン、POSTROUTING チェーン、および OUTPUT チェーンです。
マングル テーブル : 名前が示すように、このテーブルはパケットをマングルするために機能します。スペシャルパッケージの変更に使用されます。これを使用して、さまざまなパケットの内容とそのヘッダーを変更できます。マングル テーブルはマスカレードには使用できません。サポートされているチェーンは、PREROUTING チェーン、OUTPUT チェーン、Forward チェーン、INPUT チェーン、POSTROUTING チェーンです。
フィルタ テーブル : フィルタ テーブルは、iptables で使用されるデフォルトのテーブルです。パケットのフィルタリングに使用されます。ルールが定義されていない場合、フィルター テーブルがデフォルト テーブルとして使用され、このテーブルに基づいてフィルタリングが実行されます。サポートされているチェーンは、INPUT チェーン、OUTPUT チェーン、FORWARD チェーンです。
生のテーブル : 生のテーブルは、以前に除外されたパッケージを構成する場合に機能します。 PREROUTING チェーンと OUTPUT チェーンをサポートします。
6. iptables のターゲット値 (target で指定できる) とその機能は何ですか。簡単に説明してください。
答え : iptables の target で指定できるターゲット値は次のとおりです。
- 同意 : パケットを受け入れます
- キュー : ユーザー空間への Paas パッケージ (アプリケーションとドライバーが存在する場所)
- DROP : パケットをドロップします
- リターン : 呼び出し側チェーンに制御を戻し、チェーン内の現在のパケットに対する次のルール セットの実行を停止します。
7. iptables の技術的な側面に移りましょう。技術的とは実用的なことを意味します。
CentOS に iptables をインストールするために必要な iptables rpm を確認するにはどうすればよいですか?
答え : iptables rpm は標準の CentOS インストールに含まれているため、個別にインストールする必要はありません。 rpm は次のようにして確認できます。
rpm -qa iptables
iptables-1.4.21-13.el7.x86_64
インストールする必要がある場合は、yum を実行して入手してください。
yum install iptables-services
8. iptables サービスが実行されているかどうかを確認するにはどうすればよいですか?
答え : iptables のステータスを確認するには、ターミナルで次のコマンドを実行します。
service iptables status [On CentOS 6/5]
systemctl status iptables [On CentOS 7]
実行されていない場合は、以下のコマンドが実行される可能性があります。
---------------- On CentOS 6/5 ----------------
chkconfig --level 35 iptables on
service iptables start
---------------- On CentOS 7 ----------------
systemctl enable iptables
systemctl start iptables
次のように、iptables モジュールがロードされているかどうかを確認することもできます。
lsmod | grep ip_tables
9. iptables で定義されている現在のルールをどのように確認しますか?
答え : iptables の現在のルールは、次のように簡単に確認できます。
iptables -L
サンプル出力
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
10. すべての iptables ルールまたは特定のチェーンをフラッシュするにはどうすればよいですか?
答え : 特定の iptables チェーンをフラッシュするには、次のコマンドを使用できます。
iptables --flush OUTPUT
すべての iptables ルールをフラッシュします。
iptables --flush
11. 信頼できる IP アドレス (たとえば 192.168.0.7) からのパケットを受け入れるためのルールを iptables に追加します。
答え : 上記のシナリオは、以下のコマンドを実行するだけで実現できます。
iptables -A INPUT -s 192.168.0.7 -j ACCEPT
次のように、ソースに標準のスラッシュまたはサブネット マスクを含めることができます。
iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT
iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT
12. iptables で ssh サービスに ACCEPT、REJECT、DENY、DROP のルールを追加する方法。
答え : ssh がポート 22 (ssh のデフォルト ポートでもある) で実行されていることを望み、次のようにルールを iptables に追加できます。
SSH サービス (ポート 22) の TCP パケットを受け入れる には。
iptables -A INPUT -s -p tcp --dport 22 -j ACCEPT
SSH サービス (ポート 22) の TCP パケットを拒否します。
iptables -A INPUT -s -p tcp --dport 22 -j REJECT
SSH サービス (ポート 22) の TCP パケットを拒否します。
iptables -A INPUT -s -p tcp --dport 22 -j DENY
SSH サービス (ポート 22) の TCP パケットをドロップします。
iptables -A INPUT -s -p tcp --dport 22 -j DROP
13. シナリオを紹介しましょう。ローカル IP アドレスが 192.168.0.6 のマシンがあるとします。マシンへのポート 21、22、23、および 80 の接続をブロックする必要があります。あなたは何をしますか?
答え : 使用する必要があるのは、iptables の後にブロックするポート番号を指定した「マルチポート」オプションだけであり、上記のシナリオは次のように一度に実現できます。 .
iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 21,22,23,80 -j DROP
書かれたルールは以下のコマンドで確認できます。
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
DROP tcp -- 192.168.0.6 anywhere multiport dports ssh,telnet,http,webcache
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
インタビュアー : 私が聞きたかったのはそれだけです。あなたは私たちが逃したくない貴重な従業員です。あなたの名前を人事部に推薦します。何か質問があれば、私に聞いてください。
候補者として、私は会話を台無しにしたくなかったので、もし選ばれたら私が担当するプロジェクトや社内で他にどのような人材がいるのかについて尋ね続けました。言うまでもなく、HRラウンドは突破するのが難しくなく、チャンスを得ることができました。
また、私のインタビューを記録するために時間を割いてくださったアヴィシェクとラヴィ(私は長年の友人です)にも感謝したいと思います。
皆さん! あなたがそのようなインタビューを受けたことがあり、そのインタビュー体験を世界中の何百万人もの Tecmint 読者に共有したいと思いませんか?その後、質問と回答を [email に送信するか、次のフォームを使用して面接の経験を送信することもできます。
ありがとう!接続を維持します。また、私がやったことよりも質問に正しく答えることができたかどうかも教えてください。