iptablesの設定
新しく契約したさくらVPS(バーチャル・プライベート・サーバー)の初期設定を備忘録として記載します。Macから接続しているので、Macユーザーの参考になればと。
今回は「iptablesの設定」です。
3−1. iptablesとは
iptablesとは、IPv4 のパケットフィルタとNAT管理するツールのことです。ファイアーウォール機能となるので、用途を勘案し理解しながら進めて行きたいと思います。
3−2. iptablesコマンド
iptablesを設定する上で、必要な項目を纏めます。
チェイン
チェイン | 説明 |
---|---|
-P (policy) | 指定チェインのポリシーを変更 |
-A (–append) | 指定チェインに新しいルールを追加 |
-D (–delete) | 指定チェインのルールを削除 |
-N (–new-chain) | 新しいユーザー定義チェインを作成 |
-X (–delete-chain) | 指定ユーザー定義チェインを削除 |
-F | ルールの初期化(※policyの設定は初期化されません) |
条件
条件 | 説明 |
---|---|
-j (–jump) ターゲット | 条件に合った際のアクションを指定 |
-p (–protocol) プロトコル名 | プロトコル名(tcp, udp, icmp, all)を指定 |
-s (–source) IPアドレス | 送信元アドレス(IPアドレスかホスト名)を指定 |
-d (–destination) IPアドレス | 送信先アドレス(IPアドレスかホスト名)を指定 |
–sport 送信元ポート番号 | 送信元ポート番号(80, httpなど)を指定 |
–dport 宛先ポート番号 | 宛先ポート番号(80, httpなど)を指定 |
-i (–in-interface) デバイス | パケット入力のインターフェースを指定 |
-o (–out-interface) デバイス | パケットを出力するインターフェースを指定 |
アクション
アクション | 説明 |
---|---|
ACCEPT | パケットの通過を許可 |
DROP | 通過しようとするパケットの破棄 |
LOG | ログの取得 |
REJECT | パケットを拒否し、ICMPメッセージを返信 |
3−3. 現在の登録状況を確認
まだiptablesの登録を行っていないので、何も登録されていないと思いますが、確認してみます。登録したユーザーnewuserで接続します。
[newuser@ ~]$ sudo iptables -nL [sudo] password for newuser: Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
何も登録されていませんので、設定を行って行きたいと思います。
3−4. iptablesの追加方法
iptabkesの追加: iptables -A <チェイン> <条件> <アクション>で追加を行います。
*filter # INPUTチェイン宣言(全ての入力パケットを許可する) :INPUT ACCEPT [0:0] # FORWARDチェイン宣言(全ての転送パケットを許可する) :FORWARD ACCEPT [0:0] # OUTPUTチェイン宣言(全ての出力パケットを許可する) :OUTPUT ACCEPT [0:0] #Firewallのセッティング :Firewall-setting1-INPUT - [0:0] -A INPUT -j Firewall-setting1-INPUT -A FORWARD -j Firewall-setting1-INPUT # ループバックインターフェースへの入力パケットを許可する -A Firewall-setting1-INPUT -i lo -j ACCEPT # 全てのICMPパケットを許可する。 -A Firewall-setting1-INPUT -p icmp --icmp-type any -j ACCEPT # Remote Mail Checking Protocolを許可する。 -A Firewall-setting1-INPUT -p 50 -j ACCEPT # IMP Logical Address Maintenanceを許可する。 -A Firewall-setting1-INPUT -p 51 -j ACCEPT # multicastDNSを許可する -A Firewall-setting1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT # 接続状態が「ESTABLISHED(確立),RELATED」の時にアクセスを許可する -A Firewall-setting1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 外部からTCPポート20番(ftp-data接続)へのアクセスを許可 -A Firewall-setting1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT # 外部からTCPポート21番(ftp接続)へのアクセスを許可 -A Firewall-setting1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # 外部からTCPポートxxxxxx番(SSH接続)へのアクセスを許可 -A Firewall-setting1-INPUT -m state --state NEW -m tcp -p tcp --dport xxxxxx -j ACCEPT # 外部からTCPポート80番(HTTP接続)へのアクセスを許可 -A Firewall-setting1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT # 拒否された ICMP パケットの応答としてエラーパケットを返す -A Firewall-setting1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
上記のような内容で登録します。</ br> ssh接続で使用するポートはxxxxxとしているので、自分で設定したポート番号に変更します。
] [newuser@ ~]$ sudo vi /etc/sysconfig/iptables
iptablesというファイルが無いので、新しい画面が開きます。上記で考えたファイアウォールパターンをコピーしてペーストします。「:wq」で書き込み終了します。登録したiptabelesを有効にするため再起動します。再起動後、iptables -nLで有効になった内容を確認します。
[newuser@ ~]$ sudo /etc/rc.d/init.d/iptables restart [newuser@ ~]$ sudo iptables -nL
これでファイアフォールの設定が終わったので、次はApacheのインストールを行いたいと思います。
コメント