zfs

zfs swap

2010年4月16日 ZFSにスワップ領域を作成する方法:FreeBSD Daily Topics|gihyo.jp … 技術評論社 2010

 # zfs create -V size \
                    -o org.freebsd:swap=on \
                    -o checksum=off \
                    -o compression=off \
                    -o dedup=off \
                    -o sync=disabled \
                    -o primarycache=none \
                    poolname/swap

ZFS - Running swap on ZFS | The FreeBSD Forums 2015

稼働中にswapを追加(変更)

To add more swap on a ZFS system:

# zfs create -V 64G \
    -o org.freebsd:swap=on \
    -o checksum=off \
    -o compression=off \
    -o dedup=off \
    -o sync=disabled \
    -o primarycache=none \
    tank/swap2

To add it:

# swapon /dev/zvol/tank/swap2

To resize you could first remove it:

# swapoff /dev/zvol/tank/swap

Then destroy it:

# zfs destroy tank/swap

ZFS swap · IT notes 2018

起動時に org.freebsd:swap=on をみてswaponしている

/etc/rc.d/zvol 

...
zvol_start()
{
        # Enable swap on ZVOLs with property org.freebsd:swap=on.
        zfs list -H -o org.freebsd:swap,name -t volume |
        while read state name; do
                case "${state}" in
                ([oO][nN])
                        swapon /dev/zvol/${name}
                        ;;
                esac
        done
}

zfs マウント

>マウントポイントのディレクトリは必要に応じて作成されます。

mountpoint プロパティーを変更すると、ファイルシステムが古いマウントポイントから自動的にマウント解除されて、新しいマウントポイントに再マウントされます。マウントポイントのディレクトリは必要に応じて作成されます。ファイルシステムがアクティブであるためにマウント解除できない場合は、エラーが報告され、手動で強制的にマウント解除する必要があります。
https://docs.oracle.com/cd/E24845_01/html/819-6260/gaynd.html

nginx CSP

CSP Content Security Policy

上記のように、「サービス運営者はこれと、これと、あれが必要だ、それ以外は要らないと言っている(上記のルール記載)」とブラウザが認識し、そのルールに従って、サイトに訪れる一人ひとりの利用者を守っています。
Content Security Policy でユーザーを守ろう 2018

Content-Security-Policyの概要メモ - Qiita

HTMLでは<script>、<iframe>、<img>などの要素で外部サイトのコンテ ンツ埋め込みが許可されています。JavaScriptはインラインスクリプトはもちろん、 onclick などのイベント属性でも簡単に実行できます。 これは便利ではありますが、Ajax などに対する同一生成元ポリシーしか制限がないことで、クロスサイトスクリプティング(Cross Site Scripting:XSS)などの攻撃が容易になっているという側面もあります。そこで、Firefox 4からは新時代のセキュリティ ポリシーとして、コンテンツセキュリティポリシー(Content Security Policy:CSP)が 導入されました。
https://www.oreilly.co.jp/pub/9784873114972/FxHacksR__sample05.pdf
O'Reilly Japan - Firefox Hacks Rebooted

Googleタグマネージャーを使う場合のコンテンツセキュリティポリシーの設定 | 4番は司令塔

Content-Security-Policy (CSP)
CSP は Cross Site Scripting (XSS) や data injection 攻撃を防ぐための HTTP の仕様です。
CSP を有効にするには、以下のいずれかを実施します。
HTTP header で Content-Security-Policy を返す
meta タグで Content-Security-Policy を埋め込む
ApacheでContent Security Policy(CSP)を設定する - ハマログ 2016

nginx CSP

CSP report

CSP Report 収集と実レポートの考察 | blog.jxck.io 2017

CSP logging with nginx | Michael Maclean 2020

CSPのreport-uriを試してみたよ - Qiita 2018

Content-Security-Policy
Content-Security-Policy-Report-Only

https://stackoverflow.com/questions/50018881/is-it-ok-to-put-line-breaks-in-add-header-in-nginx-configuration
ヘッダは一行(複数行にできない)

;で改行して表示
sed -e 's/;/;\n/g' /www/conf/nginx/snippets/security-header-csp.conf

差分
diff <(sed -e 's/;/;\n/g' security-header-csp.conf.old) <(sed -e 's/;/;\n/g' security-header-csp.conf)

web security headers

IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第8章 マッシュアップ:クライアントサイドマッシュアップ: #4 対策に利用できる技術

Webサーバで指定すべきヘッダ - Qiita 2012

Nginx設定の肝 - がとらぼ

https://securityheaders.com/

CSP → https://kurita1.hatenadiary.com/entry/2022/05/26/120115

nginx security headers

Nginxセキュリティ設定 - Qiita 2016
Mac上でnginxのセキュリティ最低限を確認する - もちゅろぐ 2020

「server」節と「location」節にadd_headerを付与した場合、「location」に記載した値のみ有効になります。
【Nginx】add_headerが効かない場合 - かえでBlog 2020

REST APIなどHTTPステータスコードを上記以外で使用している場合や4xx系・5xx系で返却された場合はadd_headerが付与されなくなります。
そのため、全てのステータスコードに付与したい場合は「always」を追加します。
【Nginx】add_headerが効かない場合 - かえでBlog 2020

X-XSS-Protection

add_header X-XSS-Protection "1; mode=block";

X-Frame-Options

add_header X-Frame-Options SAMEORIGIN;

外部から<iframe>で埋め込まれることを想定していないページに関してはX-Frame-Optionsレスポンスヘッダーを適切に設定しましょう。
Webエンジニアだったら当然知っておきたい「 クリックジャッキング対策 」とは? | 株式会社ヌーラボ(Nulab inc.)

X-Content-Type-Options

add_header X-Content-Type-Options nosniff;

Strict-Transport-Security HTST

nginx

add_header Strict-Transport-Security max-age=31536000;

apache

  Header always set Strict-Transport-Security "max-age=63072000"

すべてのコンテンツがHTTPS接続で表示されるように設定され、HTTPアクセスがHTTPSにリダイレクトするよう設定されていても、最初にHTTPでアクセスした時点で攻撃者がユーザーのCookieを傍受し個人情情報を収集したり、フィッシングサイトへリダイレクトしたりする可能性があり、セキュリティ上の問題が残ります。
こうした危険を減らすことができるのがHSTSです。

HTTP Strict Transport Security(HSTS)は、ブラウザに対して常にHTTPS経由でWebサイトに接続するよう指示します。
HSTSを設定すると、URL入力時に意図的に http:// を指示しても、ブラウザはHTTPS接続を行います。
HTTPS入門 リダイレクトとHSTS:SSL/TLS サーバ証明書 |DigiCert(デジサート)正規代理店

WebサーバーでHSTSを有効にしておくと、ブラウザからの初回アクセス時にHSTSを保持していない時、サーバーはブラウザに「次からこのドメインにアクセスする時は◯◯秒間HTTPSでアクセスしてね」というレスポンスを返します。(一般的には31536000秒=1年の設定が多いです)
HSTS(HTTP Strict Transport Security)について詳細、設定方法を解説します | 株式会社レオンテクノロジー 2019

https://ssl-config.mozilla.org/ だと63072000秒=2年の設定

Clam Antivirus clamav

https://clamav-jp.osdn.jp/jdoc/clamav.html
参考になる

https://www.lisenet.com/2014/automate-clamav-to-perform-daily-system-scan-and-send-email-notifications-on-linux/

FreeBSD clamav

https://www.adminbyaccident.com/freebsd/how-to-freebsd/how-to-install-the-clamav-antivirus-in-freebsd/

clamscan定期実行

[root@freebsd ~]# vi /etc/periodic/daily/600.clamscan
↓下記を記入
#!/bin/sh

/usr/local/bin/clamscan -i -r --remove /home >> /var/log/clamav/clamscan.log 2>&1

[root@freebsd ~]# chmod 755 /etc/periodic/daily/600.clamscan

アンチウイルス Clam Antivirus インストール | FreeBSDサーバー構築マニュアル

→ ログに出力

http://history.ussr.kiev.ua/ru/periodic-ClamAV

→ daily run output に出力 → rootにメール送信

Amazon Linux 2 clamav

Clam AntiVirus のデーモンである、 clamd を起動せず、clamscan コマンドで検査する方法 を紹介します。

[AWS] Amazon Linux 2 に Clam AntiVirus をインストールしてチェックを自動化する | MSeeeeN 2021

FreeBSD sendmail sasl blacklistd

pkg(ports)のsendmailをインストールする

sendmail_program="/usr/local/sbin/sendmail"
sendmail_procname="/usr/local/sbin/sendmail"

blacklistd対応するなら以下も追加

sendmail_flags="-L sm-mta -bd -q30m -O UseBlacklist"

FreeBSDでpkg/ports版のSendmailを使う | 人生という名の酷道で遭難中 2022

とても参考になる

confEBINDIR
Bin directory for mail.local and smrsh
/usr/libexec から /usr/local/libexec に変更する

sendmail を ports パッケージに切り替える – システム管理メモ

FreeBSD 12.3

$ /usr/libexec/sendmail/sendmail -d0.1 -bv root
Version 8.16.1
 Compiled with: DNSMAP IPV6_FULL LOG MAP_REGEX MATCHGECOS MILTER
		MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS
		PIPELINING SCANF STARTTLS TCPWRAPPERS TLS_EC TLS_VRFY_PER_CTX
		USERDB XDEBUG
...

pkg

$ sudo pkg install sendmail

$ /usr/local/sbin/sendmail -d0.1 -bv root
Version 8.17.1
 Compiled with: DANE DNSMAP IPV6_FULL LOG MAP_REGEX MATCHGECOS MILTER
		MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS
		PICKY_HELO_CHECK PIPELINING SASLv2 SCANF STARTTLS TCPWRAPPERS
		TLS_EC TLS_VRFY_PER_CTX USERDB XDEBUG
...

DANE PICKY_HELO_CHECK SASLv2

SASLv2でSMTP-AUTH

blacklistd

P.S. blacklistctl dump -aってsortされないので表示順が見にくいですね。IPv4だけなら、IPアドレス順に表示したければ、

blacklistctl dump -a | sort -t . -n

last access順なら

blacklistctl dump -a | sort -t / -k 3

で一応sortできます。
blacklistd for sendmail(その5) – Welcome to ish.org

$ sudo blacklistctl dump -a 
    address/ma:port	id	nfail	last access
  141.98.11.17/32:587	OK	3/3	2022/05/11 23:16:03
  141.98.11.14/32:587		2/3	2022/05/11 22:57:48
  141.98.11.23/32:587		2/3	2022/05/11 23:05:02

$ sudo ipfw table port587 list
141.98.11.17/32 0

$ sudo ipfw -a list | grep port587
02587   16   1027 deny tcp from table(port587) to any 587

PICKY_HELO_CHECK

https://forums.freebsd.org/threads/sendmail-x-authentication-warning-claimed-to-be-local-ip.83527/

・ 実は、8.11.* からの移行の場合、特に .cf を変更しなくても大抵の場合正常に動作する。しかし、うちの 環境の場合、そのままでは mail header に
X-Authentication-Warning: : Host [] claimed to be <逆引きした host 名>
のような行が挿入されてうるさいので、とりあえず .mc の

define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl

define(`confPRIVACY_FLAGS', `noexpn,novrfy')dnl

に書き換えて対処。本当はこれだとその他の X-Authentication-Warning: も抑止されてしまうのであまりよろし くないのだが、根本的対策を取ってからまた warning を有効にすることにす る。
書きかけの歳時記 - 2002/06a Diary 2002