時 DesdeLinux 私はまだ数か月しか経っていなかったので、iptables について非常にシンプルでわかりやすいチュートリアルを書きました。 初心者、好奇心、興味のある人のためのiptables(前半) 。 コンピューターと家の比較、ファイアウォールと家のドアの比較などの比喩を使用して、多くの技術や複雑な概念を使用せずに、ファイアウォールとは何か、iptablesとは何か、それを使い始めて設定する方法。 これは続きであり、前のiptablesチュートリアルの第2部です🙂
数日前にLinksysAP(アクセスポイント)を使ってガールフレンドの家にWifiを置いたことがありますが、その地域は技術的に最も知識が豊富ではありません。つまり、ひび割れの危険性が高いわけではありません。 、Wifiとコンピューターの両方で優れたセキュリティを確保することは常に良い考えです。
ここではWifiのセキュリティについてコメントしません。これは投稿の目的ではないため、現在ラップトップで使用しているiptables構成に焦点を当てます。
前回の投稿で、ファイアウォールで最初にすべての着信トラフィックを拒否する必要があることを説明しました。これは次のとおりです。
sudo iptables -P INPUT DROP
次に、自分のコンピューターにデータ入力の許可を与える必要があります。
sudo iptables -A INPUT -i lo -j ACCEPT
私たちのコンピューターから発信されたリクエストのパケットを受け入れるだけでなく:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
これまでのところ、私たちのコンピューターは問題なくインターネットをナビゲートできますが、他の環境(LAN、インターネット、Wifiなど)からの誰も私たちのコンピューターにアクセスすることはできません。 必要に応じてiptablesの設定を開始します。
ulogdを使用してiptablesログを別のファイルに出力します。
デフォルトでは、iptablesログはカーネルログやシステムログなどに記録されます...デフォルトではArchにありますが、今はどこに移動するかさえ覚えていません。そのため、 ウログド iptablesログが別のファイルにあるようにします。
sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG
私のプライベートサーバーへのアクセスを許可する:
VirtualBoxや仮想化に類似したものは使用していません。プライベートサーバーを仮想化しています。 Qemu + KVM これはラップトップに接続できる必要があり、上記で指定したiptablesルールでは接続できません。そのため、仮想サーバーのIPにアクセス許可を与えて、ラップトップにアクセスできるようにする必要があります。 :
sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT
この行について詳しく説明します。これらは今後何度も繰り返されるため、各パラメーターの意味を理解することが重要です。
-入力 :インバウンドトラフィックのルールを宣言するつもりだと言っています
-i virbr0 :トラフィックを受け入れるインターフェイスはetho(LAN)でもwlan0(Wifi)でもないことを宣言します。具体的には、それが私のvirbr0インターフェイス、つまりラップトップが通信する仮想ネットワークインターフェイス(内部)であると言います。私の仮想サーバーで(およびその逆)
-p TCP :私はプロトコルを指定します。最もよく使用されるのはUDPとTCPです。ここでは、これを入れなくても十分でしたが...受け入れるプロトコルのタイプを指定するのが通例です。
-s 192.168.122.88 :ソース、パッケージのソース。 つまり、このルールは、特にIP192.168.122.88からのパケットを参照します。
-j受け入れる :すでにここで、上記に一致するパッケージで何をしたいのかを言います。この場合は受け入れます。
言い換えれば、要約すると、私はIP 192.168.122.88からのパケットを受け入れますが、そのIPからのパケットを入力したい場合は、しかし! それらはvirbr0ではないインターフェースから入力します。つまり、IP 192.168.122.88からパケットを入力しようとしますが、Wifiネットワーク内のコンピューターから入力します。その場合、パケットは拒否されます。 どうして? はいと明確に指定しているため、192.168.122.88はいからのパケットを受け入れますが、パケットが別のインターフェイス(LAN、RAS、)からのものである場合は、virbr0インターフェイス(内部、仮想ネットワークインターフェイス)からも入力する必要があります。 Wifiなど)の場合は受け付けられません。 ご覧のとおり、インターフェイスを指定することで、さらに制限することができ、コンピューターに何が入るか(または入らないか)をより適切に制御できます。
ホームWifiの任意のIPからのpingを受け入れる:
Wifiに接続している他のコンピューターから、ラップトップにpingを実行しようとすると、許可したいと思います。 理由? また、次の数週間で、隣の家のPCをネットワークにリンクするため、情報の共有がより簡単になり、より流動的になります。デスクトップをWi-Fiにリンクするテストを開始すると、次のようになります。接続を確認するためにラップトップにpingを実行する必要があります。ラップトップがpingを返さない場合は、APに障害が発生しているか、Wifiへのアクセス中にエラーが発生したと考えられます。そのため、pingを許可します。
sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT
-入力 :以前と同じように、着信トラフィックを参照します
-私は1 :以前と同様。 前のケースでは仮想インターフェイスを指定しましたが、この場合は別のインターフェイス、つまりWi-Fiのインターフェイスを指定します:wlo1
-p icmp :Icmpプロトコル、icmp = ping。 つまり、SSHなどは許可せず、ping(icmp)のみを許可します。
-s 192.168.1.0/24 :パケットの送信元、つまり、パケットがIP192.168.1から送信されている限り。 受け入れられます
-d192.168.1.51 :宛先IP、つまり私のIP。
-j受け入れる :上記に一致するパッケージをどうするかを示し、受け入れます。
つまり、これを実行的に説明するために、192.168.1 .__などのIPからのものである限り、宛先が具体的に私のIPである私(icmpプロトコル)にpingを送信することを受け入れます。任意のネットワークインターフェイスから、特に私のWifiネットワークインターフェイス(wlo1)から入力する必要があります
XNUMXつのIPに対してのみSSHを受け入れます。
時々私は接続する必要があります スマートフォンからSSHでラップトップを制御する、そのため、WifiのIPからラップトップへのSSHアクセスを許可する必要があります。
sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT
この行とは異なる、または強調表示するに値する唯一のものは次のとおりです。 –ポート22 (私が使用するSSHポート)
言い換えれば、ポート22を介してラップトップに接続する試みを受け入れます。ただし、Wi-FiのIPからのものである限り、特定の宛先としてIPを持ち、wlo1インターフェイスを介して接続する必要があります。私のwifiのそれ(LANなどではない)
彼らにあなたのウェブサイトを閲覧させる:
私の場合ではありませんが、ホストされているWebサイトを持っていて、だれにもアクセスを拒否したくない場合、つまり、どこからでも誰でもそのWebサイトにアクセスできる場合は、思ったよりもはるかに簡単です。
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
言い換えると、ここでは、ポート80を介したすべての着信トラフィック(tcp)を許可しています。ご覧のとおり、アクセスを許可するIPまたはネットワークを指定していません。許可するIP範囲を指定しないことで、iptablesは必要なものを想定しています。既存のすべてのIP範囲、つまり全世界へのアクセスを許可します🙂
その他の組み合わせ:
他にも多くのルールがあります。たとえば、ホームLANからのIPのpingを受け入れる(このため、基本的に上記と同じ行で、IP範囲を変更します)。これは、上記で説明したものとほぼ同じです。 。私のラップトップ自体では、接続の制限、アンチDDoSなど、非常に複雑なものは使用していません。サーバーに任せています。ラップトップでは必要ありません🙂
とにかく、これまでの記事。
ご覧のとおり、iptablesの操作はそれほど複雑でもそれほど複雑でもありません。ルールを作成するスクリプトを作成すると、それを変更したり、ファイアウォールにルールを追加または削除したりするのは非常に簡単です。
私は自分自身をこのテーマの専門家とは考えていません。あなたが質問をするかもしれませんが、彼らはここにコメントします。私はできる限りあなたを助けようとします。
よろしく
とても良い、とてもよく説明されている、素晴らしい。
私はこのタイプの投稿が大好きです。
コメントありがとうございます🙂
この投稿は私が長い間持っていた借金でした、それを完済することができるのは結局快適で楽しいです^ _ ^
よろしく
質問はキューバにいますか?
…数日前、Linksys AP(アクセスポイント)を使用して、ガールフレンドの家にWi-Fiを設置したことがあります。
はい、もちろん、私はキューバで生まれ、住んでいます。 なんで聞くの?
@FIXOCONN:こんにちは、質問のオフトピックを許してください。しかし、ユーザーエージェントでデスクトップ環境として表示されるようにCinnamonをどのように定義しますか? 私はCinnamonでMint13を使用していますが、このサイトにコメントするたびにCinnamonのロゴがユーザーエージェントに表示されることはありません。
それほど問題がなければ、ユーザーエージェントの詳細を教えていただけませんか。 自分で配置するためのデータを知りたい=)
あなたがそれをレビューして私に情報を与えることができるように、私はあなたにページを残します。 おかげで、管理者は、この情報で私の側の「トローリング」(あなたがそれを呼ぶことができるなら)を許してください-> http://user-agent-string.info/
UserAgentの任意の部分に「シナモン」(引用符なし)を追加すると、ロゴは将来のコメントに表示されます🙂
とても良い投稿です! 非常に明確です😀
読んでくれてありがとう、コメントありがとう🙂
ありがとう!本当に助かります!
こんにちは、まずはブログおめでとうございます。素晴らしいと思います。
言及するのが良いかもしれないことは、ULOGでログを記録するオプションは、ulogd2を備えたオペレーティングシステムでは機能しないということです。この場合、ルールは次のようになります。
sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN、SYN、RST、ACK SYN -j NFLOG
まず第一に、あなたがブログについて言ってくれてありがとう🙂
Archにulogdv2.0.2-2をインストールしましたが、配置した行は問題なく機能します(/etc/ulogd.confにloglevel = 1を配置する必要がありましたが、ログは問題なく別のファイルに移動します。
ulogd v2以降を使用していますが、残した行が間違っていますか?
よろしく、コメントありがとうございます。
私はいつもXNUMX番目の部分を待っていました。最初の部分を読んだときのことを覚えています(それはファイアウォールでの私の開始でした)。 ありがとう@KZKG ^我愛羅、よろしく🙂
私を読んでくれてありがとう😀
そして、はい、私が言ったこと...この投稿は私がずっと前に持っていた借金でした^ _ ^
よろしく。 とても良い投稿です。 イカからダンガーディアンにトラフィックをリダイレクトするようにiptablesルールを構成しようとしていますが、それでも目標を達成できません。 この点で助けていただければ幸いです。
そのためのiptables? それはSquidのACLで直接行われていませんか?
「私には他にもたくさんのルールがあります。」
これは私がパラノイアと呼んでいるものです、男の子
もう少しすると、モデム/ルーターの開いている各ポートにロットワイラーのパックを入れます🙂
HAHAHAHAHAHAHAHAHA rottwailershahahahaと一緒に笑いたくてたまらない
友人の皆さん、カスタムネームサーバーのブラウザにアドレスを入力したとき、つまりたとえばns80.mydomain.comと入力したときに、ポート1のアクセスのみを拒否するようにIPTablesを構成するためのヘルプが必要になることがあります。およびns2.mydomain.com(私のネームサーバー)IPtablesはポート80へのアクセスを拒否するため、ブラウザーはページを読み込もうとしますが、しばらくするとページが期限切れになり、読み込まれなくなります。次のようなコマンドを既に試したことがあります。
iptables -A INPUT -d ns1.midomini.com -p tcp –dport 80 -j DROP
iptables -A INPUT -d ns2.midomini.com -p tcp –dport 80 -j DROP
しかし、それが行う唯一のことは、すべてのドメインのポート80へのエントリを拒否することです(仮想ホストと同じIPを共有しているため)。ネームサーバーのURLとネームサーバーが指すIPにのみ含めるようにします。つまり、IPテーブルは次のポート80へのアクセスを拒否します。
ns1.midomini.com(ポインティングA)-> 102.887.23.33
ns2.midomini.com(ポインティングA)-> 102.887.23.34
ネームサーバーが指すIP
102.887.23.33
102.887.23.34
このシステムを使用している会社の例は次のとおりです。Dreamhost
それらのネームサーバー:ns1.dreamhost.comとns2.dreamhost.com、およびそれらが指すIPは、ブラウザーのアドレスバーに入力したときに応答しません。
よろしくお願いします。これを手に入れていただきたいと思います。本当に必要であり、緊急に!
良い一日 !!
こんにちはイワン、
メールでご連絡ください (kzkggaara[at]desdelinux[dot]net) もっと冷静に話して、もっとわかりやすく説明するために、明日必ず答えます(今日は通りすがりです)
あなたがしたいことは単純です、あなたが私に言った行があなたのために機能しない理由はわかりません、彼らはそうするべきです、しかしあなたはこのあたりで長すぎるログや他のものをチェックしなければなりません。
ご挨拶と私はあなたの電子メールを待ちます
理論的にはiptablesを使用すると、aircrackなどのプログラムから切断要求が送信されるのを回避できます。 私は正しいですよ??? さて私はテストをしますが、あなたが私にとても幸せになると言ったらXDDD
理論的にはそう思います、今、私はそれがどのようにできるのか分かりません、私はそれをしたことがありません...しかし、理論的には、私はそれができると思います。
iptablesルールを適用した後、ローカルネットワーク上の共有Windowsフォルダーにアクセスできなくなりました。 それを修正するにはどのようなルールを適用する必要がありますか?
ありがとう。
どのiptablesルールを適用しましたか?
これは「初心者のためのiptables」の第2部ですが、最初の部分を読みましたか? 前の投稿にあったルールを適用したかどうかを知るためにこれをお願いします
はい、両方の部分を読みました。 スクリプトについては、systemdでルールを開始することについて投稿した別の投稿に基づいています。
#!/ bin / bashに
#-UTF 8-
#Iptablesバイナリ
iptables =»/ usr / bin / iptables»
捨てた ""
##テーブルをきれいにする##
$ iptables -F
$ iptables -X
$ iptables -Z
#echo»-FLUSをiptablesに作成»&& echo»»
## ULOGDを使用してログを確立する##
$ iptables -A INPUT -p tcp -m tcp –tcp-フラグFIN、SYN、RST、ACK SYN -j ULOG
##デフォルトのDROPポリシーを定義します##
$ iptables -P INPUT DROP
$ iptables -P FORWARD DROP
#echo»-デフォルトで定義されているDROPポリシー»&& echo»»
##すべてをローカルホストに許可する##
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A OUTPUT -o lo -j ACCEPT
#echo»-ローカルホストですべて許可»&& echo»»
##開始した接続のパケットの入力を許可します##
$ iptables -A INPUT -m state –state ESTABLISHED、RELATED -j ACCEPT
#echo»-my»&& echo»»によって開始された許可された接続パケット
捨てた " ##############################"
エコー»## IPTABLES CONFIGURED OK! ##»
捨てた " ##############################"
私はインターネットで、sambaの場合、スクリプトに次のルールが必要であることを読みました。
$ iptables -A INPUT -p tcp –dport 139 -j ACCEPT
$ iptables -A INPUT -p tcp –dport 445 -j ACCEPT
$ iptables -A INPUT -p udp –sport 137 -j ACCEPT
$ iptables -A INPUT -p udp –dport 137 -j ACCEPT
$ iptables -A INPUT -p udp –dport 138 -j ACCEPT
ただし、それらを使用しても、Windowsワークグループは表示されません。 :S
問題が解決しました。 ワークグループとホストを変更して、Samba構成ファイルのパラメーターを許可します。
素晴らしい記事、ただ素晴らしい!!!!
私はそれを読んだばかりで、あなたがそれを説明する方法とiptablesの本当に便利な使い方の両方が大好きです、私はそれをもっと深く使う方法を本当に学びたいです。
ご挨拶と素晴らしい記事、Iptablesについてもっと公開していただければ幸いです。 ^^
親愛な;
iptablesを使用したプロキシがあり、ネットワークのXNUMXつがpingできません http://www.google.cl このため、ポートをブロックし、ポートを開くためのXNUMXの方法を試しましたが、何も起こりません。 pingできない場合はOutlookを接続できません
投稿おめでとうございます! とても良い。 しかし、私は質問があります。 ネットワークで割り当てられているIPアドレスが変更される場合がありますが(MACアドレスにIPを割り当てることができる場合)、IptablesでMACアドレスによるSSH経由のサーバーへのアクセスを許可する可能性はありますか?
私は自分自身をよく説明したと思います。
よろしくお願いいたします。
こんにちは、Linuxサーバーを構成していて、これらのコマンドを入力した後、すべてをブロックしてアクセスを失ったことを知っています。ほとんどすべてを回復できましたが、2つ欠けています。 * ip、10.10.10.5を使用した場合、Webブラウザからcname«server»を介してアクセスできなくなります。一方、\\ serverとを配置する前に、ネットワーク上のWindowsエクスプローラから共有リソースが表示されません。私はすべての共有リソースを見ました。 あなたが私を助けてくれることを願っています、私はそれがばかげていることを知っていますが、私はそれを解決することができません、ありがとう
私は逐語的に引用します:
'
Icmpプロトコル、icmp = ping。 つまり、SSHなどは許可せず、ping(icmp)のみを許可します。
'
ICMPとPINGは同じではありません。 pingはICMPプロトコルの一部ですが、すべてではありません。 ICMP(インターネット制御メッセージプロトコル)プロトコルにはさらに多くの用途があり、そのうちのいくつかには特定の危険性があります。 そして、すべてのICMPトラフィックを受け入れています。 pingのみに制限する必要があります。
Saludos!
インターンシップをしなければなりませんが、iptablesについてよくわかりません。助けていただけませんか…。
ありがとう!!!!!!!