十六、SELINUX、netfilterファイアウォール及びそのiptablesツール


SELINUX
selinuxを閉じるには2つの方法があります.selinuxファイアウォールを一時的に閉じ、次回再起動するとselinuxが開きます.setenforce 0 #getenforce                    
#一時停止selinuxのステータス表示コマンド永久停止selinux
#vi/etc/selinux/config       
#selinuxのプロファイルの変更
「SELINUX=enforcing」を変更し、SELINUX=disabledの保存を終了します.
ここで再起動する必要があります.disabledに変更できます.
[root@localhost~]#/usr/sbin/sestatus-vまたは#sestatus
#selinuxのステータス表示コマンドSELinux status:disabled
2,netfliterファイアウォール、およびそのツールiptables
# iptables -nvL
nvLは表示ルールです.-nはIPに対してホスト名を逆解析しないことを示します.-Lはリストの意味を表す.-vは、リストされた情報がより詳細であることを示します.-tを追加しない場合は、filterテーブルに関する情報を印刷します.
#iptables-Fは、すべてのルールをすべて削除することを示します.
#iptables-Zは、パケットおよびトラフィックカウンタをゼロにすることを示します
-Fは現在のルールをクリアするが、これは一時的なものであり、システムを再起動するか、iptalbesサービスを再起動すると保存したルールがロードされるため、/etc/initを使用する必要がある.d/iptables saveルールを保存して、上のコマンド出力で私たちも見ることができます.ファイアウォールルールは/etc/sysconfig/iptablesに保存されています.このファイルを見てください.
-A/-D:削除ルールを追加します.
-I:ルールを挿入しますが、実は-Aの効果と同じです.
-p:tcp、udpまたはicmpのプロトコルを指定します.
--dport:-pと一緒に使用し、ターゲットポートを指定します.
--sport:-pと一緒に使用し、ソースポートを指定します.
-s:ソースIP(ipセグメントであってもよい)を指定します.
-d:指定先IP(ipセグメントであってもよい);
-j:ACCEPTは許可パケットを表し、DROPはパケットを失うことを表し、REJECTはパケットを拒否することを表す.
-i:NICを指定します(一般的ではありませんが、使用できる場合があります).
-P(大文字)の後にチェーン名、ポリシー内容またはDROPまたはACCEPT、デフォルトはACCEPTが続く.
注意:リモートサーバに接続している場合は、このコマンドを勝手にノックしないでください.ノックが終わると、車を切るからです.
このポリシーが設定されると、iptables-P INPUT ACCEPTのみが元の状態に戻り、-Fパラメータは使用できません.
例:
# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

これは、-tを省略するルールを追加したので、filterテーブルを対象にします.-Aは1つのルールを追加することを示し、また-Iは1つのルールを挿入することを示し、-Dは1つのルールを削除する.後のINPUTはチェーン名であり、OUTPUTまたはFORWORDであってもよい.-sの後にソースアドレス;pプロトコル(tcp,udp,icmp);--sport/--dportの後にソースポート/ターゲットポート;d後跟目的IP(主にイントラネットまたは外部ネットに対して);jヒール動作(DROPはパケットを破棄し、REJECTはパケットを拒否し、ACCEPTはパケットを許可する).
[root@localhost ~]# iptables -I INPUT -s 1.1.1.1 -j DROP

上の例では、1.1.1.1からのすべてのパケットを破棄するルールを挿入します.
[root@localhost ~]# iptables -D INPUT -s 1.1.1.1 -j DROP

挿入したルールを削除します.注意1つのルールを削除するには、挿入されたルールと一致する必要があります.つまり、2つのiptablesコマンドは、-Iと-Dが異なる以外は同じです.
[root@localhost ~]# iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP

前例は2.2.2.2かつtcpプロトコルから本機の80ポートへのパケットを破棄することを示す.ここで、--dport/--sportは-pオプションと一緒に使用する必要があります.そうしないと、エラーが発生します.
[root@localhost ~]# iptables -p tc

このルールは、10.0.2.34に送信された22ポートのパケットを破棄することを示しています.
iptablesルールスクリプト設定
需要:filterテーブルのみに対して、ポリシーINPUTチェーンDROPをプリセットし、他の2つのチェーンACCEPTを設定し、192.168.137.0/24に対して22ポートを開通し、すべてのセグメントに対して80ポートを開放し、すべてのセグメントに対して21ポートを開放する.この需要は複雑ではありませんが、複数のルールがあるので、スクリプトの形式に書いたほうがいいです.スクリプトの内容は次のとおりです.
# cat/usr/local/sbin/iptables.sh
#!/bin/bashipt="/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -s 192.168.137.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
スクリプトの作成が完了したら、直接実行
/bin/sh  /usr/local/sbin/iptables.shでいいです.起動時にファイアウォールルールを初期化するには/etc/rcが必要です.d/rc.localに行を追加
“/bin/sh/usr/local/sbin/iptables.sh”
iptalbesルールの保存とバックアップ
設定したファイアウォールルールはメモリに保存されているだけで、ファイルに保存されていません.つまり、システムが再起動すると以前に設定したルールがなくなりますので、ルールを設定して保存しておきます.
[root@localhost ~]# service iptables save
iptables:ファイアウォールルールを/etc/sysconfig/iptablesに保存:[OK]
ファイアウォールルールが/etc/sysconfig/iptablesファイルに保存されていることを示すメッセージが表示されます.このファイルはiptablesのプロファイルです.その後、ファイアウォールのルールをバックアップするタスクに遭遇した場合は、このファイルのコピーをコピーします.
ファイアウォールのすべてのルールをクリアする必要がある場合があります.iptables-Fコマンドを使用してもいいですが、最善の方法はファイアウォールサービスを停止することです.
[root@localhost ~]# service iptables stop
iptables:ファイアウォールルールのクリア:[OK]
iptables:チェーンをポリシーACCEPT:nat filterに設定[OK]
iptables:モジュールをアンインストール中:[OK]
これでファイアウォールは無効になりますが、ルールを再設定すると(1つでも)、ファイアウォールサービスは自動的にオンになります.次の銘さんは、ファイアウォールのルールをバックアップするコマンドを紹介します.
[root@localhost ~]# sh/usr/local/sbin/iptables.sh
[root@localhost ~]# iptables-save > myipt.rule
まず、さっき書いたiptablesスクリプトを実行し、iptables-saveコマンドを使用してファイルにリダイレクトします.これらのルールを復元するには、次のコマンドを使用します.
[root@localhost ~]# iptables-restore < myipt.rule
http://blog.chinaunix.net/uid-X125X ... htmlX102X
参考資料