tcpdump 例

tcpdump

とりあえず動かす。
一番小さい(ifconfigで最初に表示されるinterface?)interfaceを見る。


tcpdump -i eth0 -s0 not port 22 and not arp

-i eth0 ... eth0を見る。

-s0 ... デフォルトでは先頭68バイトしかdumpしないので、全部取りたい時はこうする。

not port 22 and not arp ... ポート22とarpは除外する。portだけ指定すると送受信両方の指定になる。どちらかを限定するときは src port または dst port とする。


tcpdump -i eth0 -s0 -x not port 22 and not arp

-x: 16進数表示


tcpdump -i eth0 -s0 -X not port 22 and not arp

-X: 16進数とascii表示






tcpdump -i eth0 icmp


icmpだけを見る。



tcpdump -i eth0 src host 1.2.3.4 and not port 22

送信元が1.2.3.4で、portが22以外




tcpdump -i eth0 host 1.2.3.4


送信元或いは宛先が 1.2.3.4




tcpdump -i eth0 dst host 5.6.7.8


宛先が 5.6.7.8



tcpdump -n -i eth0 -s0 -w dump001.cap not port 22 and not arp

-n: ipアドレスを名前解決しない

-w: 出力ファイル名。このファイルをwiresharkで開ける。 tcpdump -r dump001.cap でも開ける。



tcpdump -?


引数一覧を表示



man tcpdump


マニュアルを表示

centos7 postfix 送れない

さくらのクラウドで借りている、centos7のサーバでlogwatchの設定をした。

mailtoを自分のgmailのアカウントにして、
でもpostfixの設定とかMXレコードとかなにもしてないから送れないよな・・・
と思いつつlogwatchを実行してみるとなぜか送れた。

サービスを確認すると、postfixは動いていた。デフォルトで動くのか?

ちなみにcentos7ではサービスを確認するコマンドは変わっている。

# systemctl status postfix

のように。再起動や停止もsystemctlを使う。


logwatchのサーバのホスト名が localhost.localdomainになっていた。
まず、サーバのホスト名を直す。

postfix設定ファイルを見るとなにもやってなかったので、
ググって、必要そうな設定を、例によって確証のないままなんとなくやる。

すると、メールが送れなくなった。

/var/log/maillog

Nov 23 10:01:50 localhost postfix/qmgr[30237]: 867B65FDCA: from=<root@adam.monqy.net>, size=1848, nrcpt=1 (queue active)
Nov 23 10:01:50 localhost postfix/qmgr[30237]: D56C15FDD7: from=<root@adam.monqy.net>, size=418, nrcpt=1 (queue active)
Nov 23 10:01:50 localhost postfix/smtp[30346]: 867B65FDCA: to=<じーめーるのあどれす>, relay=none, delay=2221, delays=2221/0/0/0, dsn=4.4.3, status=deferred (Host or domain name not found. Name service error for name=gmail.com type=MX: Host not found, try again)


ゾーンを編集する。

変わらない。

名前解決ができてないのか?

適当なホスト名にpingを打つと、名前解決していない。

/etc/resolv.conf を見たら何も書いてない。

nameserverを書く。

解決。



自分のドメインのゾーンとか、mxとかは、自分のドメイン宛のメールを受信するときに必要な設定だから今回の件とは関係ないか。


解決したからいいけど、なぜ最初送れたのかが気になる。
host名がlocalhost.localdomainだったから名前解決が必要なかったのかと思ったがそれは自分のホストだし。

postfixでmyhostとかmydomainとかを設定したからか?

pam_unix(smtp:auth): authentication failure

さくらのVPSで借りているサーバで、毎日logwatchを送信しているのだが、
ほぼ毎日、下記のようなログが延々と記録されている。

 pam_unix(smtp:auth): check pass; user unknown
 pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
 pam_succeed_if(smtp:auth): error retrieving information about user test


これはsmtpサーバの認証をユーザー名を変えて手当たり次第におこなっているもので、
幸い認証は成功していないし特にサーバがダウンするとかパフォーマンスが低下するとかいう事態にもなっていないのでそんなに深刻なことではないのだが、ウザい。

25番ポートを閉じれば停められるのだが、それをやると外部からのメールが転送できない。

実際、ついこないだまで25番は閉じていたのだが、そうするとgmailなどから送信したメールが届かないことに気づいて開けて、そうしたらこのようなイタズラが始まったのだ。

この手のアクセスは送信元IPアドレスやセグメントを制限し始めるときりがない。

本当は送信元を知りたいのだがわからない。

不正アクセスしたアドレスを自動でブロックするものなどもあるようだが、あまり使いたくない。


smtp認証をsmtps認証にするという方法があってやってみたのだがうまくいかなかったので、とりあえず認証方式をmd5にした。


cyrus-sasl-md5 をインストール

/etc/postfix/main.cfで、

smtpd_sasl_security_options=noanonymous,noplaintext

を追加


/usr/sbin/saslpasswd2 -c -u example.com user

でパスワードを設定。


postfixとsaslauthdをrestart


iphoneのメール設定は、
usernameにドメイン名をつける(user@example.comのように)

use sslはオフ

authenticationは MD5 Challenge-Responseにする。

Server portは587(これは設定による?)

さくらのクラウドのサーバ設定

sshの設定を変える。

今どうなってたっけ、とつないでみると22番でrootで入れる。

これは危険だ。

ポート番号を変えて、PermitRootLoginをnoにする。

sshd.conf


変えたポート番号をfirewalldで許可する。

9999番を開けるには

# firewall-cmd --permanent --add-port=9999/tcp



ちょっと簡単なcgiを動かそうと思った。

VPSの方はパフォーマンス向上を狙ってnginxにしたが

やっぱりapacheの方が簡単で情報も多い。


さて、cgiってデフォルト状態で動くんだっけ?

cgi-binにスクリプトを置いて実行するとinternal server errorになる。


httpd.confを直すのかな・・・と、

適当にいじるがダメ。


なんでだろう・・・と思ったら、perlが入ってなかった。

yum install perl


動いた。