ウェブ公開に先立ち、必要最小限のiptablesの設定を行っているところです。
普段の運用として、スクリプトがこけた時にスマホにメールを送る処理があるのですが、これを許可するための設定をいろいろ試して、最終的に次の4行の追加で送信できるようになりました。
iptables -A OUTPUT -p tcp --sport 25 --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 1024:65535 --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 --dport 1024:65535 -j ACCEPT
しかし、この設定だとメールを送るのに10秒ぐらいかかります。
iptablesを停止すると一瞬で送れます。
あと書き方も何か冗長な感じがします。もっとスマートに2行ぐらいで行けそうな気もするのですが、いかがなものでしょうか。
やりたい事はsendmailでドコモのスマホにメールを送るだけのいたって単純な処理です。
No.6
- 回答日時:
No.5です。
できたようで何よりです。
ちなみに、
>tcpdumpは実行すると目にも留まらぬ速さでダンプデータがずっと流れ続けます^^
>見るとこれはほぼSSH接続のパケットであることが分かり、SSHを介しての解析はしんどいと、いったん中断。
tcpdumpにはフィルタ機能があり、ダンプ対象をホストやポートで絞り込むことも、特定の条件を除外することも可能です。一般的にはフィルタをかけてパケットダンプします。もしくは、今回のように未知のポートの通信による影響があることも考えて、ファイルに出力するといった方法もあります。これなら画面表示がやまびこのようにパケットダンプに乗るといったことも防げるでしょう。
シェルは一般的にSSH接続が前提のためtcpdumpにSSHを除外する機能があるとは思いましたが、そのやり方を調査するのがしんどかったため、先に第二の提案であるiptablesのログを試させてもらいました^^;
普段からアクセスログを見る癖がないため今回やすやすと質問してしまいましたが、この質問でiptablesのログの取り方を学習したため、iptablesの設定に関しては今後おいそれと質問する事は激減すると思います。
No.5ベストアンサー
- 回答日時:
No.4です。
>よってDNSに関する許可設定は問題なさげでしょうか。
そうですね、ありがちだったので例示してみましたが、別の原因のように思えます。ちなみに、メールでは大きなDNSパケットを扱うこともままありますので、TCPは通しておいた方がいいです。
本格的な診断が必要になりますが、少なくとも簡単に通る、通らない状況を再現できるとのことですので、tcpdumpコマンドなどを使ってパケットダンプを取って、上手くいく場合と行かない場合を比較してみるとわかると思います。もしくは、iptablesのログを取るようにする(DROPとかREJECTの箇所に仕掛ける)とかですね。具体的な方法は、ある程度トライアンドエラーが必要になる場合があるためここではこれ以上突っ込んだ説明はしませんが、真剣に原因を究明し解決したいけど自分の力では難しいということであれば、専門家に調査してもらうことをお勧めします。
できました!
tcpdumpは実行すると目にも留まらぬ速さでダンプデータがずっと流れ続けます^^
見るとこれはほぼSSH接続のパケットであることが分かり、SSHを介しての解析はしんどいと、いったん中断。
続いてiptablesのログを取ってみました。
するとポート113番の通信が行われていることが分かり、これをヒントにテストを重ねた結果、次の4行の設定を追加することで遅延なく即座にメールが送れるようになりました。
iptables -A OUTPUT -p tcp -s 127.0.0.1 --sport 1024:65535 -d 127.0.0.1 --dport 113 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.1 --sport 1024:65535 -d 127.0.0.1 --dport 113 -j ACCEPT
iptables -A OUTPUT -p tcp -s 127.0.0.1 --sport 113 -d 127.0.0.1 --dport 1024:65535 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.1 --sport 113 -d 127.0.0.1 --dport 1024:65535 -j ACCEPT
ポート113番はメールを送る時に何らかの認証を行うシステムだそうですが、ここで認証に失敗したとしてもメールの拒否はしないという意味不明な仕組みです。
DNSのTCPパケットについて少し調べました。
昔は512バイトを超える通信時にUDPだと失敗し、TCPで再リクエストするという手続きだったようですが、今はUDPで容量制限なく通信できるためTCPは使われていないとの事で、あえて開けなくて良いのかなと思ったのですが、どんなもんでしょう。
No.4
- 回答日時:
10秒ぐらいというところからすると、他の通信で引っかかっている可能性があります。
メール送信でありがちなのが、DNSによる名前解決です。たとえばdomainをTCPしか通していなかったりしないでしょうか?iptablesが動いている状態で、次のコマンドを打ったときに遅ければそれが原因の可能性があります。
$ dig oshiete.goo.ne.jp
DNSの許可は次の2行で設定してありました。
iptables -A OUTPUT -p udp --sport 1024:65535 --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT
TCPではなくUDPの設定のみでした。
試しにTCPの設定を次の2行で追加して、DNSの許可設定を計4行としました。
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 --dport 1024:65535 -j ACCEPT
しかし挙動の変化はなかったため、元の2行の設定に戻しました。
その状態で、
$ dig oshiete.goo.ne.jp
を実行しましたが、レスポンスは即座に返ってきました。
よってDNSに関する許可設定は問題なさげでしょうか。
No.3
- 回答日時:
-m state --state NEW
とかつけるモノなんじゃないです?
新規接続に関しては制限掛けて、TCPの接続済みのパケットはそのまま通すものかと思いますが。
あと…TCPは記載されていますが、UDPはどうなんでしょう?
名前解決のパケット通っているんでしょうか??
破棄したパケットのログとか取ってみて、どのパケットが遅くなる原因なのか?を調べるのもアリかと思いますが。
# ただし、結構な量になるかもしれませんけど。
送れている様なので大丈夫なのかも知れませんが…メール送信で25番だけで大丈夫なんです?
認証やら必要でしょうし、INPUTで普通に受け入れているようですが…サーバ動いているなら第三者中継しないように設定されているんですよね??
# まぁ、第三者中継されようとしたらISP側でブロックしているかもしれませんけど。
ブロードバンドルーター(今どきだとWiFiルーター?)の内側にいるのであれば、ファイヤーウォールはそちらに任せるのが妥当だと思いますよ。
VPSで公開するならそうは行きませんけど。
すみませんiptablesについて、ごく断片的な知識しかないため-m state --state NEWなんてものは全然知りませんでした。
調べてみてもよく分かりませんでした。
メールって送信のたびに新規接続するものだと思っていたのですが、TCPの接続済みとはどのような状況を言うのでしょうか。
UDPはどうなんだろうと思い、単純に4行追加して次の計8行でテストしてみました。
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -j ACCEPT
iptables -A OUTPUT -p udp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --sport 25 -j ACCEPT
iptables -A INPUT -p udp --sport 25 -j ACCEPT
しかし挙動は特に変わりませんでした。
ログの見方も良く分からないのですが、ひとまずiptableを停止した時と動かした時にそれぞれメール送信を行った場合に/var/log/syslogへの出力内容がどのように変化するかを監視してみました。
両者の違いはプロセス番号や時刻と、あとは暗号のような良く分からないIDの羅列がありますが、これは毎回変わっている感じなので関係なさげで、あとはドコモのサーバーのIPアドレスでしょうか、これも毎回変わりますがiptablesの設定とは関係なさげです。それ以外の箇所は同一でした。
メール送信が25番だけで大丈夫か私も知りたいです。
送信自体は出来ているので最悪放置でも実害はなさげですが、できれば知りたいです。
認証というのはよく分かりません。
メールサーバーを公開しているわけではなく、やっている事は単に自作スクリプトからメール送信しているだけで、認証を求められたことはありません。
確かにルーターの内側にいるので私も常々ipta
No.2
- 回答日時:
なんか、前後の定義がないとはっきりしませんが、全体を晒すとセキュリティ的にアレですしね…
これってもしかしてiptablesが動いているホストとWebサーバーは同一ですか?
であれば、こういう定義でもいいのかも。
iptables -A OUTPUT -s 127.0.0.1 -p tcp --dport 25 -j ACCEPT
ちなみに、例えばメールコマンドで送った場合も同じ症状でしょうか?
https://minory.org/linux-sendmail.html
確かに私も読み返してみてiptablesのほんの一部の設定を抜き出しただけで、ここまで回答してもらってるのが逆にすごいなと思いました。
前後の定義を端折ったのはセキュリティを気にしていた訳ではなく、単に無精な事と、あまり長文だと回答者が減るという理由が主です。
しかし全体を晒すと確かにセキュリティも気になるので、メールに関係なさげな設定は端折らせてもらうとして、とは言っても関係ありそうなのは最初の方で設定している次の2行ぐらいでした。
iptables -P INPUT DROP
iptables -P OUTPUT DROP
さてiptablesが動いているホストとWebサーバーは同一なので、先の4行の設定はやめて、
iptables -A OUTPUT -s 127.0.0.1 -p tcp --dport 25 -j ACCEPT
の1行だけで試してみましたが送信できませんでした。
メールコマンドで送った場合も同じ症状でした。
すなわちiptablesなしだと一瞬で送れて、ありだと10秒ぐらいかかります。
No.1
- 回答日時:
1024:65535というレンジの広い判定をさせているからじゃないでしょうか?
内→外の通信もデフォルト拒否なんですかね?
であれば、送るだけなら↓この1行でいいような気がしますが…
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
受信もあるなら↓これも追加で。
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
の1行だと送れませんでした。
受信はありませんが、
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
を追加して計2行でもテストしてみましたが、やはり送れませんでした。
例によってさらに、
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
iptables -A INPUT -p tcp --sport 25 -j ACCEPT
を追加して計4行でテストすると、送ることはできます。
が、やはり遅いです。
謎です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- Outlook(アウトルック) Outlook2019でのメール転送について 3 2023/04/30 17:06
- その他(コンピューター・テクノロジー) 「プロトコル」の定義について 5 2023/04/16 13:13
- docomo(ドコモ) 携帯 arrows we の操作 4 2023/03/29 18:53
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- docomo(ドコモ) キャリアメールとGメールに詳しい方、これらの仕組みと言うか仕様について、ちょっと教えてください 8 2022/08/08 17:28
- ファイアウォール ポート開放で利用可能なTCP一覧の中に利用したいTCPが入ってない場合どうすればいいのでしょうか? 2 2022/09/12 10:31
- Gmail SPFレコードとDNSサーバーについて、gmailを設定できるかどうか 2 2023/06/10 23:55
- その他(メールソフト・メールサービス) Windows10付属のメール、なぜ設定が劇的に簡単になったのか? 1 2022/12/16 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
chkconfig iptables --listって...
-
ファイアウォールは必要?hosts...
-
sambaで使用するポートについて
-
エクセルで#N/Aを含めた平均値...
-
「DNSサーバーを自動的に取得す...
-
sftpのパスワードなしでログイン
-
AWSでSSH接続をしたいのですが...
-
「mail」コマンドと「sendmail...
-
パスワード設定していないユー...
-
vsftpd でのユーザーに対するパ...
-
BIND エラー not found: 3(NXD...
-
XPのライセンス認証回数の制限...
-
同一のホスト名で何か問題があ...
-
リモートデスクトップ接続でパ...
-
アウトルックで送信時に「名前...
-
VBAで入力規則 エラーでも入れ...
-
メールの添付ファイルはどれく...
-
LINUXのパスワード入力は無制限?
-
SSHで多段接続
-
こんにちは。サーバOSの保守の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
scpコマンドでサーバー間のファ...
-
サーバーでポート587番が開放で...
-
RH-Firewall-1-INPUTとは?
-
CentOS6.5のiptablesについて
-
ファイアウォールは必要?hosts...
-
chkconfig iptables --listって...
-
iptablesにてRDPが通らない。
-
iptablesでFTPのパッシブモード...
-
ポート番号の開放方法について
-
iptablesの設定でINPUTが制限さ...
-
iptablesが起動しない!?
-
iptablesの無効設定
-
sambaで使用するポートについて
-
iptablesを設定するとメール送...
-
iptablesのデフォルトの設定(#...
-
Choose the correct word(s) fo...
-
プログラムに別のPCからアクセ...
-
Linux環境で、UDP514ポートが開...
-
portmapについて
-
ファイアウォールとしてping of...
おすすめ情報
blesの設定は冗長だなと感じていました。
まあ2重の防御になるので、念のためここまで頑張って設定してきました。
しかしルーターの内側にいるので外から攻撃される事はまずないと仮定して試しにiptablesなしで公開してみるのもアリだと思いました。