修正が多いファイルをリファクタリングの対象にする
長期に運用されているアプリケーションでは多くの領域が全く変化しない状態になって、開発が進行しているのはごく少数の機能やその周辺のみとなることが多い。
特定のファイルが頻繁に編集されている場合、 そのファイルはリファクタリングの理想的なターゲットの一つと言える。
# 直近1年間で最も頻繁に編集された10ファイルのリストを取得する(空白行は除く) git log --since="1 years ago" --pretty=format:"" --name-only| \ grep "[^\+s]" | \ sort | \ uniq -c | \ sort -nr | head -10
レガシーソフトウェア改善ガイド (Object Oriented Selection)
- 作者: クリス・バーチャル,吉川邦夫
- 出版社/メーカー: 翔泳社
- 発売日: 2016/11/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
FTPでログインは成功するがコマンドがタイムアウトする
事象
EC2上にftpサーバを構築すべく、vsftpdをインストールした。 ログインは成功するが、外部のftpクライアントからコマンドを実行したらタイムアウトする
$ ftp 192.168.1.10 Connected to 192.168.1.10 (192.168.1.10). 220 (vsFTPd 2.2.2) Name (192.168.1.10:ec2-user): ec2-user 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 227 Entering Passive Mode (192,168,1,10,235,43). ftp: connect: Connection timed out
原因
logに出力している通り、本環境はPassive Modeで稼働している このときは制御portには21が使われていたが、データ転送はサーバに指定してあるポート(60000-65000)で接続していた。
- /etc/vsftpd/vsftpd.conf
pasv_min_port=60000 pasv_max_port=65000
今回は21番ポートは開いていたが、60000-65000番ポートをVPCのセキュリティグループでアクセス権限していたためコマンド実行に失敗していた。 (iptablesや別ACLで制限している可能性もあった。)
おまけ: PASV レスポンスについて
60000-65000のポートで接続されていたことを確認する
227 Entering Passive Mode (192,168,1,10,235,43).
[192,168,1,10]の箇所は IPアドレスの第1-第4オクテットを10進表記したもの。 [235, 43]の箇所は ポートの第1,第2オクテットを10進表記したもの。
ポート番号を確認すると 10進数:235 -> 2進数:11101011 10進数:43 -> 2進数:00101011
結合すると 11101011 00101011 10進表記に直すと「60203」
- ポート:60203で接続されたことがわかった
Audit ってなんだ
Audit イズ 何?のレベルだったのでメモる
/var/log/messages にログ出力を見つける
auditd[1225]: Audit daemon rotating log files
システムコールの監査ログ(audit.log)をローテートしたよの意
Audit ってなんだっけ
Linux Audit システムは、システム上のセキュリティ関連情報を追跡する方法を提供します。事前設定ルールに基づき、Audit はシステム上で発生しているイベントについての情報をできるだけ多く記録するためのログエントリーを生成します。この情報は、セキュリティポリシーの違反者と違反者によるアクションを判断する上でミッションクリティカルな環境で必須のものです。Audit は新たなセキュリティをシステムに追加するわけではありません。システム上で使われているセキュリティポリシーの侵害を発見するために使用されます。これらの侵害は、SELinux などの追加のセキュリティ対策でさらに防ぐことができます。
第7章 システム監査 - Red Hat Customer Portal
ログをみる
audit関連ファイルのデフォルトパス
- config:
/etc/audit/auditd.conf
- rule:
/etc/audit/audit.rules
- log:
/var/log/audit/audit.log
ログファイルの一部
type=USER_AUTH msg=audit(1503126566.333:87164): user pid=8535 uid=0 auid=501 ses=14381 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/4 res=success'
見やすくすると
type=USER_AUTH msg=audit(1503126566.333:87164): user pid=8535 uid=0 auid=501 ses=14381 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/4 res=success'
- 上のログではUID 0(=root)のユーザがrootユーザとしてログオンを試みて成功したことを記録している。
7.6. Audit ログファイルについて - Red Hat Customer Portal B.2. Audit 記録のタイプ - Red Hat Customer Portal