somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Linux】ポートの解放

ファイアーウォールの設定をしている場合、使用したいポートの解放を行う必要があります。その設定に関するメモです。

GUIから

メニューのシステムから、管理>セキュリティレベルとファイヤーウォールの設定を選択するとセキュリティレベルの設定ダイアログが表示されます。ファイアーウォール自体を解除したい場合は、無効にすることで解決します。

次に、httpやftpなど有名なもので使用されているポートは、信頼されているサービスのチェック状態によって管理できます。

その他のポートについては、以下の手順で設定できます。

  1. その他のポートを押下する
  2. 追加ボタンを押下する
  3. ポート番号を入力する
  4. プロトコルを選択し、OKボタンをする
  5. ポートの一覧に追加されるので、問題なければOKボタンを押下する

実は、ポート番号ではなくhttpと入力すると対応するポート番号が追加されます。

ターミナルから

/etc/sysconfig/iptablesを編集します。GUIから設定したら以下のような書式になっていました。

-Aはチェイン名(RH-Firewall-1-INPUTはユーザが定義したもの)、-pはプロトコル、-m stateはをstateを使うためのオプションであり--stateは接続状態(NEWは新規)、--dportはポート、-jはパケットの処理方法を指定しています。

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 

新しいユーザー定義チェイン

-Nオプションで定義を追加することができます。

iptables -N RH-Firewall-1-INPUT

# 新しいチェイン名
:RH-Firewall-1-INPUT - [0:0]

-は定義自体に対する処理が何もないことをあらわしています。

処理の追加

-Aオプションで定義に対して処理を追加することができます。

iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT 

設定の保存

直接/etc/sysconfig/iptablesを編集でもできますが、iptables-saveで行えます。末尾に以下のようなメッセージが表示されます。

# Completed on Thu Jan  5 12:27:43 2012

iptables-saveは、iptablesコマンドの最終結果を出力してくれます。それを、別のファイルにリダイレクトで保存するだけです。

iptables-save > /etc/sysconfig/iptables_save

設定の反映

設定を保存した後、iptablesのサービスを再起動します。

service iptables restart

再起動時に何を行っているかというと、/etc/sysconfig/iptablesを再読み込みしています。実際に行っているコマンドは以下のコマンドです。

iptables-restore

/etc/sysconfig/iptablesを編集せずに、iptables-saveを行った場合は、/etc/sysconfig/iptablesには反映されていませんので意味がありません。iptables-restoreの入力となるファイルを指定しなくてはなりません。

iptables-restore < /etc/sysconfig/iptables_save

処理の追加

下記コマンドでまず処理内容を確認します。

iptables -L --line-number

-Dオプションで削除できます。-Lで確認後、各定義の中からn個目を削除する場合は以下のように削除します。

iptables -D 定義名 n

定義の削除

-Dオプションで定義を追加することができます。

定義の作成時、-は定義自体に対する処理が何もないことをあらわしていますと書きました。これでは定義に対する処理を書いても有効になりませんでしたので、いったん削除して作り直しました。

iptables -D RH-Firewall-1-INPUT

-は定義自体に対する処理が何もないことをあらわしています。よくわからないですが、削除できませんでした・・・。