スキップしてメイン コンテンツに移動

Linux Firewall の設定 [ iptables ] 其の二


Linux Firewall の設定 [ iptables ] の続き

iptables に引っかかったログを取りたいため以下の設定を行う。

iptables

ルールの一覧表示
iptables -nvL --line-numbers

オプション説明
-nIPアドレスをDNSに問い合わせない
-v詳細な設定を表示
-Lルール一覧を表示
--line-numbersルール番号を表示


ログの出力の設定
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix "[iptables firewall] : " --log-level=info

オプション説明
-m limit -limit 1/s単位時間当たりに記録するパケット数(この場合は1秒1パケット)
-j LOGログ出力を実施
-log-prefix “[iptables firewall] : ”ログ出力時につける識別子。
-log-level=infoログ出力のレベル。デフォルトはwarning

なお、この設定だとログを取りすぎる可能性があるため、iptables のルールの順序を再考する必要がある。

次のルールだとログを取ってから、TCP 22 へのアクセスは捨てられる。
# iptables -nL
LOG      all  --  0.0.0.0/0       0.0.0.0/0      limit: avg 1/sec burst 5 LOG flags 0 level 6 prefix `[iptables firewall input] : ' 
DROP     tcp  --  0.0.0.0/0       0.0.0.0/0      tcp dpt:22

次のルールだと先に TCP 22 へのアクセスが捨てられるため、ログは残らない。
# iptables -nL
DROP     tcp  --  0.0.0.0/0       0.0.0.0/0      tcp dpt:22
LOG      all  --  0.0.0.0/0       0.0.0.0/0      limit: avg 1/sec burst 5 LOG flags 0 level 6 prefix `[iptables firewall input] : ' 


次のコマンドでサービスを再起動する。
/etc/init.d/iptables restart 又は service iptables restart

ログの出力は dmesg コマンドで確認できる。
このままではカーネルのリングバッファに残るだけで順番に消えてしまうため保存する設定を次で行う。

rsyslog

rsyslog サービスでログを取る。
/etc/rsyslog.conf を編集する。
#kern.* /dev/console
上の行のコメントを外すとシステムコンソールにログが流れていくので
/var/log/kernlogに保存するように記述する。
#kern.* /dev/console
kern.* /var/log/kernlog 

この後、
/etc/init.d/rsyslog restart 又は service rsyslog restart
にてサービスを再起動する。
このままだと /ver/log/kernlog にログがたまり続けるため、必要に応じて logrotate の設定を行う。

logrotate

設定ファイルは /etc/logrotate.conf であり、この中に
include /etc/logrotate.d
が書かれていれば、/etc/logrotate.d/* にあるファイルも読み込む。
このディレクトリに次の内容のファイルを作り置いておく。
内容は yum ファイルをコピーし、修正したものである。
===ここから===
/var/log/kernlog {
    missingok 
    notifempty
    weekly
    create 0600 root root
    rotate 4
}
===ここまで===

  • missingok
    該当ログファイルがなくてもエラーを吐かない
  • notifempty
    ログファイルが空だった時、ローテーションしない
  • weekly
    一週間単位でローテーションする
  • create 0600 root root
    ローテションのたびに新しいファイルを作る。
    ファイルのアクセス権は600、ユーザroot、グループroot。
  • rotate 4
    ローテーションした時ファイルを過去4つ残す。
    weekly なら 4週間分。
cron から起動されるため、cron が起動していればよい。
cron の設定は /etc/crontab や /etc/anacrontab などに設定が書かれている。


しばらく、ログの採集状況を見て設定を変更する必要がある。


[参考]
iptablesでログ出力設定
http://wokowa.net/blog/archives/63
多機能なログ管理システム「rsyslog」の基本的な設定
https://knowledge.sakura.ad.jp/8969/
logrotate入門
https://qiita.com/zom/items/c72c7bac63462225971b
logrotate(8) - Linux man page
https://linux.die.net/man/8/logrotate
cron の設定ガイド
https://www.express.nec.co.jp/linux/distributions/knowledge/system/crond.html

コメント

このブログの人気の投稿

Ubuntu で RAIDディスクをマウントする

謎のHDDが見つかった。 データを確認するためWindowsにつなぐもマウントされず。 これは extとかffsの辺りかなと思い、Linux(Ubuntu)に繋ぐ。 しかし、自動マウントされない。 取り敢えずマウントする。 # mount /dev/sdb1 /mnt/disk すると'linux_raid_member'とエラー表示された。 ということで、まずファイルシステムを確認。 # parted -l このコマンドでファイルシステムが表示される。 また、Gparted でも表示される。 そこでRAIDディスクを扱うためにmdadmパッケージをインストール。 # apt install mdadm ネットでは mountコマンドの -t オプションで明示的にファイルシステムを指定するとマウントできると書いてあったのでそれを試すとマウントできた。 # mount -t ext3 /dev/sdb1 /mnt/disk 内容を確認すると不要なデータだったのでデータを削除する。 # shred -v /deb/sdb この処理はとても時間がかかるので普段使わないコンピュータで処理をした。

Perl/Tk の基本的なこと

X を利用したアプリケーションを作る方法は色々あるが、Tk を用いると簡単に出来る。 Tk - Wikipedia https://ja.wikipedia.org/wiki/Tk_(ツールキット) Tk で作るWindowをどの言語で書くかによって変わってくるが、Tcl/Tkが最も有名かもしれない。 Tcl/Tk - Wikipedia https://ja.wikipedia.org/wiki/Tcl/Tk wish (Windowing Shell) を用いてスクリプトを組むことでグラフィカルなアプリを作れる。 Tclはこのwishで使われるプログラミング言語であり、簡単に使える。かなり多くのシステムに導入されていることもあり、特に何かをインストールせずとも使うことが出来る。 このTclの部分をperlに置き換えたものがPerl/Tkである。 Perl/Tk インストール Perl/Tk は Tcl/Tk と違いデフォルトでインストールされていないことが多い。 ubuntuだと perl-tk をインストールすると使えるようになる。 # apt install perl-tk 取り敢えず作ってみる 次のようなサンプルファイル sample.pl を作る。 sample.pl use utf8; use Tk; # トップウィンドウを作る $top = MainWindow->new(); # ウィンドウ内に文字(ラベル)を表示する $label = $top->Label(-text => "ここに文字を書く")->pack(); # ウィンドウを生成する MainLoop(); ちなみに文字コードは UTF-8 になってる。 $ file sample.pl sample.pl: UTF-8 Unicode text 次のコマンドで実行する。 $ perl sample.pl 実行できる形の sample.pl Shebang を書いて実行ファイルとしても実行できる。 たぶん次のようなファイルになる。 一行目のShebangは環境によって異なるが多くのシステムは多分これで通る。 #!/usr/bin/perl use utf8; use...

自動ログイン on Lubuntu

Lubuntu 19.04 の 自動ログインを設定してみた。 グラフィカルログインを自動で行うようにしたいが、 ユーザー設定 の中に自動ログインの設定がない。 そこでコマンドラインから設定してみた。 まず、ログインをするときに使用しているディスプレイマネージャを確認する。 $ cat /etc/X11/default-display-manager /usr/bin/sddm sddm を使っているので、sddm の自動ログインを設定する。 OSは systemd で動いていると設定ファイルがないようなので作成する。 # sddm --example-config > /etc/sddm.conf.d/sddm.conf この設定ファイルに Autologin について書いてあるのでここにユーザ名を入力。 $ head /etc/sddm.conf.d/sddm.conf [Autologin] # Whether sddm should automatically log back into sessions when they exit Relogin=false # Name of session file for autologin session (if empty try last logged in) Session= # Username for autologin session User= ここの User= にユーザ名を書き込み保存後、再起動すると自動でログインされる。