質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Q&A

解決済

4回答

1286閲覧

iptables ルール

keep_den

総合スコア14

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

0グッド

0クリップ

投稿2017/06/14 12:12

Apache
centos6.6

iptablesで下のルールを設定したいです。

INPUT FOWAWARDの基本は全てDROP

OUTPUTは全てACCPT

INPUTのルールで(171.20.0.0/19)のみ
port 80 444 22を許可(他は全て拒否)

再起動しても大丈夫なように

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

/etc/sysconfig/iptablesに、

*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] # 127.0.0.1からの通信を全て許可 -A INPUT -p tcp -i lo -j ACCEPT # セッション確立後のパケット疎通は許可 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # SSHへの接続制限(xxx.xxx.xxx.xxxの箇所は許可するIPアドレスを指定) -A INPUT -p tcp -m tcp --dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT # HTTPへの接続許可 -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # port 444 -A INPUT -p tcp -m tcp --dport 444 -j ACCEPT

と書いて、保存。

保存後、

service iptables start

でご要望の制限が可能です。

投稿2017/06/14 12:33

JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasi_tanaka

2017/06/14 13:47

ご回答ありがとうございます 何も知らないのですいません [0:0]の意味はなんでしょうか?
keep_den

2017/06/14 21:52

ありがとうございます もしINPUTのルールが(172.16.0.0/16)のみ port 80 443 22を許可(他は全て拒否)の場合上のiptablesはどうなりますか?
JunMatsumoto

2017/06/14 23:47 編集

sshのルールに記載している、 -a xxx.xxx.xxx.xxx の箇所は接続元IPを指定しています。 port22も80も443も、上記の箇所に -a 172.16.0.0/16 と書けば良いです。 それにしても/16とは大きいネットワークですね。 環境がAWSの話をしているのであれば、iptablesでは無くセキュリティグループを使用する事をオススメします。
takasi_tanaka

2017/06/15 02:54

すいません 別の立場から質問させていただきます 何も知らない初心者ですが、 # 127.0.0.1からの通信を全て許可 -A INPUT -p tcp -i lo -j ACCEPT これはどういう意味があるんでしょうか?
keep_den

2017/06/15 07:33

すいません僕も気になってました # 127.0.0.1からの通信を全て許可 -A INPUT -p tcp -i lo -j ACCE 意味を教えてくれるとありがたいです
JunMatsumoto

2017/06/15 09:19

失礼しました。 :OUTPUT ACCEPT [0:0] と、デフォルトルールを記載していたので、 -A INPUT -p tcp -i lo -j ACCEPT は書かなくても大丈夫です。 :OUTPUT DROP [0:0] としていた場合は、上記を記載しないとサーバー内部から外部に対する通信が出来ません。 と言う意味でした。
keep_den

2017/06/15 12:23

ご回答ありがとうございます 話は変わるんですが cronでシェルスクリプト実施する場合シェルスクリプトのファイル(log.sh)を bin/log.shに置いたらbinには普通置かないと言われました。 どこに置くのが普通なんですか?
JunMatsumoto

2017/06/15 13:40 編集

/bin /sbin /usr/bin などは、OSが標準的に利用する箇所で、 yum update 等で、意図せずに上書きされる可能性があるからでは無いでしょうか? また、/tmpもOS再起動時に削除される場所になるので、永続的なファイルを置く場所ではありません。 では、それ以外の場所でどこが相応しいか? は、人それぞれになり、ご自身が意図せずに変更がされない場所であればどこでもいいかと思います。 rootで動かすなら/root配下でも良いですし、 /usr/local/scripts 等のフォルダを作成して、まとめて置くのも良いと思います。 フォルダを深くしすぎて、スクリプトまでの絶対PATHを打つのが面倒であれば、 環境変数PATHに追加すれば、カレントディレクトリがどこにいてもlog.sh だけで スクリプトは実行できます。
keep_den

2017/06/15 22:42

ありがとうございます bin/log.shだったのを home/user/html/sh/log.sh に置いても大丈夫ですか? また、rootでログインした場合と上のuserでログインした場合cronに登録する場合のディレクトリはどうなりますか? rootでログインした時は /bin/log.shで登録して動きました
JunMatsumoto

2017/06/15 22:58

お答えするのは簡単ですが、本題と違う質問で長くなりそうですので、新しく質問を投稿して貰えませんか?
keep_den

2017/06/17 04:20

ありがとうございます また新しく質問出すのでよろしくお願いします
keep_den

2017/06/17 04:22

すいません最後に一つお願いします セッション確立後のパケット疎通は許可 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT これをしないといけない理由を教えて下さい 調べてもわからず…お願いします
JunMatsumoto

2017/06/17 05:52

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTも、 :OUTPUT ACCEPT [0:0] なら不要です。 :OUTPUT DROPの場合、例えば、 サーバー側はSSH(tcp/22)を待ち受けているとして、 接続側は、ランダムなTCP番号で接続して来ます。(例えば、tcp/34567) 接続元(tcp/34567) →→→ サーバー側(tcp/22) の通信許可は、 -A INPUT -p tcp -m tcp --dport 22 -s xxx.xxx.xxx.xxx -j ACCEPT で大丈夫ですが、OUTPUT DROPの場合に問題になるのが、 接続元(tcp/34567)に対して、データを返せなくなくなります。 また、接続元のTCP番号は、一般的には固定されておらず、常に変動するので、 iptablesにルールを書く事も出来ません。 その為、”一度INPUTで受け入れた通信の戻りについては、すべて許可する” というルールが必要になります。 こちらの記述も、質問内容をよく読んでいませんでした。 申し訳ありません。
TaichiYanagiya

2017/06/17 16:21

横から失礼します。 「-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT」は自ホストから外部へ発信するパケットの戻りを受けるのに必要です。 外部へ ping したり、yum update などするとわかると思います。 「-A INPUT -p tcp -i lo -j ACCEPT」は、例えば、bind や tomcat など、127.0.0.1 にコントロールポートを持つようなサービスを動かす場合に必要です。 該当するポート番号(127.0.0.1:953 や 127.0.0.1:8005)のみを許可してもよいですが、これらのポート番号は忘れがちなので、lo すべてを許可してもいいと思います。
keep_den

2017/06/19 01:37

お二方ともご回答ありがとうございます もしSSHのポートを2222に変更した場合ittablesはどのように変更したらよいですか?
keep_den

2017/06/19 09:25

また dport 22 -sとなっていますが コメントでは port22も80も443も、上記の箇所に -a 172.16.0.0/16となっています -aと-sどっちを記述すればいいんでしょうか?
JunMatsumoto

2017/06/19 11:39

portを開ける場合は、--dport (任意のport番号) とすれば、任意のportを開けられます。 また、-aでは無く-sが正しいです。 スマからの回答だったので、単純なタイポです。
keep_den

2017/06/19 13:57

ありがとうございます INPUTのルールで(171.20.0.0/16)のみport 80 443 22を許可(他は全て拒否) のルールで171.20.0.0/16はport22だけでいいんですか?
guest

0

あと、同じような質問を投稿されていますが、こちらで回答した内容で事足りると思います。

ポートを変えて制限を掛けたいなどは、回答させて頂いたiptablesの設定内容を元に、
少しご自身で調べると回答に辿り着く内容です。

さすがにエンジニアとして理解しようとする姿勢が見受けられないので、これ以上の回答は控えさせて頂きます。

投稿2017/06/19 14:42

JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keep_den

2017/06/20 05:22

間違えて投稿してしました
guest

0

-s xxx.xxx.xxx.xxx が、送信元を制限する引数になります。

80/tcpも443/tcpも同じように制限したければ、
同様に -s xxx.xxx.xxx.xxxを付ければ問題ありません。

投稿2017/06/19 14:36

JunMatsumoto

総合スコア76

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ありがとうございます
INPUTのルールで(171.20.0.0/16)のみport 80 443 22を許可(他は全て拒否)

のルールで171.20.0.0/16はport22だけでいいんですか?

投稿2017/06/19 13:02

keep_den

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問