Fibocom L-850GLのUSBモデム化その後(1)

 article  Comments Off on Fibocom L-850GLのUSBモデム化その後(1)
Nov 092019
 
ThinkPad T480sのLTEモジュール(Fibocom L-850GL)をUSBモデムとして認識させるでUSBモデムとして認識するようになったものの、肝心のモバイルネットワーク接続ができません。

もう一度Tools for the Fibocom L850-GL / Intel XMM7360 LTE modemのサイトを眺めていると”FCC Lock”の記述があります。
mmcliでモデムを確認すると、Statusでdisabledになっている部分があるのですが、こちらの影響でしょうか。

$ mmcli -m 0
  -----------------------------
  General  |         dbus path: /org/freedesktop/ModemManager1/Modem/0
           |         device id: adde8d2a200ae40256de3f06bf7f000d71d71f2b
  -----------------------------
  Hardware |      manufacturer: Fibocom Wireless Inc.
           |             model: L850-GL
           | firmware revision: 18500.5001.08.02.24.09
           |      h/w revision: V1.0.4
           |         supported: gsm-umts, lte
           |           current: gsm-umts, lte
           |      equipment id: XXXXXXXXXXXXXXX
  -----------------------------
  System   |            device: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6
           |           drivers: cdc_mbim
           |            plugin: Fibocom
           |      primary port: cdc-wdm0
           |             ports: cdc-wdm0 (mbim), wwan0 (net)
  -----------------------------
  Numbers  |               own: NNNNNNNNNNN
  -----------------------------
  Status   |    unlock retries: sim-pin2 (3)
           |             state: disabled
           |       power state: low
           |    signal quality: 0% (cached)
  -----------------------------
  Modes    |         supported: allowed: 3g, 4g; preferred: none
           |           current: allowed: 3g, 4g; preferred: none
  -----------------------------
  IP       |         supported: ipv4, ipv6, ipv4v6
  -----------------------------
  3GPP     |              imei: XXXXXXXXXXXXXXX
           |     enabled locks: fixed-dialing
  -----------------------------
  SIM      |         dbus path: /org/freedesktop/ModemManager1/SIM/0

IMEIや電話番号は伏せています。

もともと人柱覚悟で始めたことですのでFCC Lockのところに記述されているATコマンドを実行してみます。

$ sudo screen /dev/ttyACM0
+PBREADY
at@nvm:fix_cat_fcclock.fcclock_mode=0

OK
at@store_nvm(fix_cat_fcclock)
Committed to NVM flash...
OK
AT+CFUN=15
$ mmcli -L
    /org/freedesktop/ModemManager1/Modem/1 [Fibocom Wireless Inc.] L850-GL
$ mmcli -m 1
  -----------------------------
  General  |         dbus path: /org/freedesktop/ModemManager1/Modem/1
           |         device id: adde8d2a200ae40256de3f06bf7f000d71d71f2b
  -----------------------------
  Hardware |      manufacturer: Fibocom Wireless Inc.
           |             model: L850-GL
           | firmware revision: 18500.5001.08.02.24.09
           |      h/w revision: V1.0.4
           |         supported: gsm-umts, lte
           |           current: gsm-umts, lte
           |      equipment id: XXXXXXXXXXXXXXX
  -----------------------------
  System   |            device: /sys/devices/pci0000:00/0000:00:14.0/usb1/1-6
           |           drivers: cdc_mbim
           |            plugin: Fibocom
           |      primary port: cdc-wdm0
           |             ports: cdc-wdm0 (mbim), wwan0 (net)
  -----------------------------
  Numbers  |               own: NNNNNNNNNNN
  -----------------------------
  Status   |    unlock retries: sim-pin2 (3)
           |             state: enabled
           |       power state: on
           |    signal quality: 0% (cached)
  -----------------------------
  Modes    |         supported: allowed: 3g, 4g; preferred: none
           |           current: allowed: 3g, 4g; preferred: none
  -----------------------------
  IP       |         supported: ipv4, ipv6, ipv4v6
  -----------------------------
  3GPP     |              imei: XXXXXXXXXXXXXXX
           |     enabled locks: fixed-dialing
           |      registration: idle
  -----------------------------
  SIM      |         dbus path: /org/freedesktop/ModemManager1/SIM/1
$ 

Statusがenabledになりました!

ところがnm-connection-editorでMobile NetworkのAPN設定をおこなっても接続できません。。。そう簡単にはいかないものですね。

ThinkPad T480sのLTEモジュール(Fibocom L-850GL)をUSBモデムとして認識させる

 article  Comments Off on ThinkPad T480sのLTEモジュール(Fibocom L-850GL)をUSBモデムとして認識させる
Oct 222019
 

ThinkPad X1やT480sにはLTEモジュールとしてFibocom L850-GLが搭載できます。こちらWindowsでは問題なく使えるのですがLinuxでは使えません。

Fibocomのサイトに掲載されている仕様ではLinuxもサポートされているように書かれているのですが、これはUSBモードの場合のみのようでLinuxで認識されるPCIeインターフェースの状態では利用できないようです。
Solved: WWAN Fibocom L850-GL and Linux support – Lenovo Communityなどでも語られています。

使える方法がないものかいろいろ散策しておりましたら、「Linux drivers for XMM 7360 LTE #7」の情報を見つけまして、この中のコメントにPCIeからUSBモードにする処理を作成したとの情報を発見。
Tools for the Fibocom L850-GL / Intel XMM7360 LTE modem
ちょっと人柱覚悟でArch Linuxにて試してみましたので覚書です。

ちなみにモデムとしては認識されるようになったもののMobile Network接続はまだうまくできておりません。

まずacpi_callカーネルモジュールをインストールします。

$ sudo pacman -S acpi_call

次に先ほど紹介したgitリポジトリーをcloneします。

$ git clone https://github.com/abrasive/xmm7360.git

変更前にPCIとUSBのデバイスを見てみると、LTEモジュールはPCIで認識されていることがわかります。

$ lspci | grep -i modem
02:00.0 Wireless controller [0d40]: Intel Corporation XMM7360 LTE Advanced Modem (rev 01) $ lsusb | grep -i modem $

先ほどのGitHubからcloneしたxmm2usbを実行してみます。

$ cd xmm7360
$ sudo ./xmm2usb
Found XMM7360 modem at 0000:02:00.0 (_SB_.PCI0.RP04.PXSX) Parent port is at 0000:00:1c.3
Disabling PCIe link… Resetting modem…
OK!
$

PCIリンクを無効にしたとのメッセージ。再びlspciとlsusb実行してみます。

$ lspci | grep -i modem
02:00.0 Wireless controller [0d40]: Intel Corporation XMM7360 LTE Advanced Modem (rev ff)
$ lsusb | grep -i modem
Bus 001 Device 006: ID 8087:095a Intel Corp. MODEM + 2 CDC-ACM + 3 CDC-NCM + SS
$

USBにモデムが出現するようになりました。PCIにも出現していますが、(rev ff)となっています。

続けてGitHubのページにあるように、MBIM(Mobile Broadband Interfaceモード?)へのスイッチを実行します。

$ sudo screen /dev/ttyACM0
AT+GTUSBMODE?
AT+GTUSBMODE=7
AT+CFUN=15
$

そうするとlsusbでの出力が以下に変わりました。

$ lsusb | grep -i fibocom
Bus 001 Device 006: ID 2cb7:0007 Fibocom Wireless Inc. L850-GL

dmesgをみてもUSBモデムと認識されているようです。

[  162.799214] usb 1-6: new high-speed USB device number 5 using xhci_hcd
[  162.940604] usb 1-6: New USB device found, idVendor=8087, idProduct=07f5, bcdDevice= 0.00
[  162.940612] usb 1-6: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[  169.651754] usb 1-6: USB disconnect, device number 5
[  175.462630] usb 1-6: new high-speed USB device number 6 using xhci_hcd
[  175.620153] usb 1-6: New USB device found, idVendor=2cb7, idProduct=0007, bcdDevice= 3.33
[  175.620162] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  175.620167] usb 1-6: Product: L850-GL
[  175.620172] usb 1-6: Manufacturer: Fibocom Wireless Inc.
[  175.620176] usb 1-6: SerialNumber: 004999010640000
[  175.738001] cdc_acm 1-6:1.2: ttyACM0: USB ACM device
[  175.738980] cdc_acm 1-6:1.4: ttyACM1: USB ACM device
[  175.739743] cdc_acm 1-6:1.6: ttyACM2: USB ACM device
[  175.740493] usbcore: registered new interface driver cdc_acm
[  175.740494] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[  175.742909] usbcore: registered new interface driver cdc_ncm
[  175.744812] usbcore: registered new interface driver cdc_wdm
[  175.793275] cdc_mbim 1-6:1.0: setting rx_max = 16384
[  175.794443] cdc_mbim 1-6:1.0: cdc-wdm0: USB WDM device
[  175.794574] cdc_mbim 1-6:1.0 wwan0: register 'cdc_mbim' at usb-0000:00:14.0-6, CDC MBIM, a2:a6:4d:05:3f:91
[  175.794616] usbcore: registered new interface driver cdc_mbim

ちなみに冒頭でも述べましたようにMobile Network接続には至っておりません。またPC再起動後は毎回xmm2usbコマンドの実行が必要です。

Arch Linuxでswayを使う

 article  Comments Off on Arch Linuxでswayを使う
Jun 172019
 

先日購入したThinkPad T480sにArch Linuxを入れて使っています。
最初はGNOMEデスクトップ環境にしていましたが、タイル型Window Managerにしたくなり、折角Waylandで動いているのだからとswayを使ってみました。

パッケージはステータスバーにi3statusを使いますが、アプリケーションメニューのi3-dmenu-desktopとdmenuは動かないらしいので、j4-dmenu-desktopとbemenuを導入します。

$ sudo pacman -S sway i3status bemenu
$ yay j4-dmenu-desktop

パッケージデフォルトの設定は/etc/sway/configにありますので、そちらを~/.config/sway/configにコピーして以下の設定を追加しました。

ターミナル設定はurxvtd+urxvtcに変更

set $term urxvtc
exec urxvtd -q -o -f

メニューはj4-dmenu-desktop+bemenuに変更

set $menu j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='urxvtc'

ステータスコマンドはi3statusに変更

status_command i3status

WaylandではXのキーマップ設定が効かないので、swayで日本語キーボート設定を追加

# keymap
input * xkb_layout  jp
input * xkb_model   jp106
input * xkb_options ctrl:nocaps

fcitxの起動設定を追加

exec fcitx-autostart

i3のときもそんなにカストマイズして使っていたわけではないので、上の設定で今のところ不満なく動いています。

 Posted by at 11:48 pm  Tagged with:

Zabbix 4.0.9 SELinux設定

 article  Comments Off on Zabbix 4.0.9 SELinux設定
Jun 132019
 

SELinuxを有効にしたCentOS 7にZabbix 4.0.9を導入した際のSELinux設定メモです。

CentOS 7にZabbix 4.0.9、MariaDB、Apache HTTP Serverを導入し、SELinux無効化状態であれば起動するところまで設定済みなところから始めます。

まずはApacheからZabbix Serverへの接続許可、Zabbixからのネットワーク接続を許可するbool値を設定します。httpd_can_network_connect_dbというのもありますが、今回ApacheからMySQLへの接続はUNIXドメインソケット経由となり、ネットワーク経由ではありませんので不要です。

# setsebool -P httpd_can_connect_zabbix=on
# setsebool -P zabbix_can_network=on

ポリシー作成に必要なパッケージをインストールします。

# yum install -y policycoreutils-python selinux-policy-devel

単純にZabbix Serverを起動すると、/var/run/zabbix/配下に各種ソケットファイルが作成できないとのエラーが発生しますので、そちらを許可するポリシーを作成します。

# cat zabbix-server_local.te
module zabbix-server_local 1.0;

require {
        type zabbix_var_run_t;
        type zabbix_t;
        class sock_file create;
        class sock_file unlink;
        class unix_stream_socket connectto;
}

#============= zabbix_t ==============
allow zabbix_t zabbix_var_run_t:sock_file create;
allow zabbix_t self:unix_stream_socket connectto;
allow zabbix_t zabbix_var_run_t:sock_file unlink;

作成したポリシーファイルをビルドしてインストールします。

# make -f /usr/share/selinux/devel/Makefile zabbix-server_local.pp
# semodule -i zabbix-server_local.pp

通常はここまで実施すればZabbix Server自身の稼働には問題ないのですが、Template DB MySQLを適用してMariaDBの状態を監視しようとするとエラーになります。

具体的にはmysql UNIXドメインソケットに接続できない、my.cnfファイルが読み込めずにmysqlコマンドを実行できないため、これらを許可するポリシーを作成します。

# cat zabbix-agentd_local.te
module zabbix-agentd_local 1.0;

require {
        type mysqld_etc_t;
        type mysqld_home_t;
        type mysqld_t;
        type zabbix_agent_t;
        class unix_stream_socket connectto;
        class file open;
        class file read;
}

#============= zabbix_agent_t ==============
allow zabbix_agent_t mysqld_etc_t:file open;
allow zabbix_agent_t mysqld_etc_t:file read;
allow zabbix_agent_t mysqld_home_t:file open;
allow zabbix_agent_t mysqld_home_t:file read;
allow zabbix_agent_t mysqld_t:unix_stream_socket connectto;

また、zabbixユーザーが使用する.my.cnfは/var/lib/zabbix/.my.cnfに配置しますので、こちらのファイルタイプがmysqld_home_tになるようにファイルコンテキストも作成します。

# cat zabbix-agentd_local.fc
/var/lib/zabbix/\.my\.cnf -- unconfined_u:object_r:mysqld_home_t:s0

teファイル、fcファイル両方揃ったところでビルドしインストールします。

# make -f /usr/share/selinux/devel/Makefile zabbix-agentd_local.pp
# semodule -i zabbix-agentd_local.pp

これでMySQL監視もおこなえるようになりました。

導入したポリシーモジュールは以下のプライオリティ400のものになります。

# semodule -lfull|grep zabbix
400 zabbix-agentd_local pp
400 zabbix-server_local pp
100 zabbix              pp

ISC BINDのバージョン番号隠蔽

 article  Comments Off on ISC BINDのバージョン番号隠蔽
Jul 152018
 

RHEL7/CentOS7で使われているISC BIND 9.9.4では、version “適当な値”;とするより適切な設定があります。

バージョン番号隠蔽。デフォルトは稼働しているBINDのバージョン。

// disables processing query of the name version.bind with type TXT, class CHAOS.
version none;

ホスト名隠蔽。デフォルトはgethostbyname()の値。

// disables processing query of the name hostname.bind with type TXT, class CHAOS.
hostname none;

こちらもホスト名隠蔽だが、デフォルトnoneなので返答しない。server-id hostname;にするとgethostname()の値が応答される。

// disables processing query of the name ID.SERVER with type TXT, class CHAOS.
server-id none;

Administrator Reference Manual – Chapter 6. BIND 9 Configuration ReferenceのBuilt-in server information zonesに説明があります。

NetworkManager で resolv.conf の nameserver を設定

 article  Comments Off on NetworkManager で resolv.conf の nameserver を設定
Jul 142018
 

RHEL7/CentOS7系では、resolv.conf の設定は 通常 NetworkManager によっておこなわれます。
通常は ifcfg-* に記述された DNS の値もしくは DHCP サーバーから渡された DNS になると思います。

NetworkManager の設定で、更新後の nameserver を指定するようにしてみます。
こんな感じになります。

$ sudo vi /etc/NetworkManaer/conf.d/dns.conf
$ cat /etc/NetworkManaer/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.test

[global-dns-domain-*]
servers=127.0.0.1, 192.168.110.71

そうすると、NetworkManager 再起動後の resolv.conf 設定は以下になります。

$ cat /etc/resolv.conf
# Generated by NetworkManager
search example.test
nameserver 127.0.0.1
nameserver 192.168.110.71

ゾーン自体の動的追加もゾーンの中身も動的更新できるBIND環境

 article  Comments Off on ゾーン自体の動的追加もゾーンの中身も動的更新できるBIND環境
May 222018
 

ISC BINDの動的更新環境を試してみたくてやってみました。環境はCentOS 7.5.1804です。
SELinux 有効のまま、ゾーンの動的追加とゾーンの動的更新 2 つを実施できる環境を目指します。

ゾーンの動的追加

/etc/named.conf の options に allow-new-zones yes を追加して named サービスを起動します。

[root@dns1 ~]# vi /etc/named.conf
[root@dns1 ~]# systemctl start named.service

ゾーンファイルを作成します。ここではファイルを作成しているだけで、このファイルを使ったゾーンの追加は後ほどrndcコマンドで実施します。

[root@dns1 ~]# cat <<__EOF__ > /var/named/example.com.db
\$ORIGIN example.com.
\$TTL 86400
@         IN  SOA  dns1.example.com.  hostmaster.example.com. (
              2018040101  ; serial
              21600       ; refresh after 6 hours
              3600        ; retry after 1 hour
              604800      ; expire after 1 week
              86400 )     ; minimum TTL of 1 day
;
          IN  NS     dns1.example.com.
;
dns1      IN  A      192.168.110.71
__EOF__
[root@dns1 ~]# chown named: /var/named/example.com.db
[root@dns1 ~]# chmod o-rwx /var/named/example.com.db
[root@dns1 ~]# ls -l /var/named/example.com.db
-rw-r-----. 1 named named 404 May 21 00:51 /var/named/example.com.db
[root@dns1 ~]#

ゾーンを動的追加すると、named.conf の directory 配下にファイルが作成されます。
こちらに named プロセス実行ユーザーで書き込みできるようパーミッションを変更します。

[root@dns1 ~]# chmod g+w /var/named/
[root@dns1 ~]# ls -ld /var/named/
drwxrwx---. 6 root named 169 May 22 01:00 /var/named/
[root@dns1 ~]#

rndc コマンドで先ほど作成したゾーンファイルを指定し、ゾーンを追加してみます。あとで nsupdate による RR 変更も実施したいので、localhost からの update も許可しています。

[root@dns1 ~]# rndc addzone example.com '{
    type master;
    file "example.com.db";
    allow-update { localhost; };
};'
rndc: 'addzone' failed: permission denied
[root@dns1 ~]#

ディレクトリの書き込み権限は先ほど与えたのに、permission denied です。
SELinux は無効化していないため、audit.log を確認してみます。

[root@dns1 ~]# audit2allow < /var/log/audit/audit.log


#============= named_t ==============

#!!!! This avc can be allowed using the boolean 'named_write_master_zones'
allow named_t named_zone_t:dir { add_name remove_name write };

#!!!! This avc can be allowed using the boolean 'named_write_master_zones'
allow named_t named_zone_t:file { append create rename unlink write };
[root@dns1 ~]#

どうやら named_write_master_zones を on にする必要があるようです。

[root@dns1 ~]# getsebool named_write_master_zones
named_write_master_zones --> off
[root@dns1 ~]# setsebool named_write_master_zones=on
[root@dns1 ~]# rndc addzone example.com '{
    type master;
    file "example.com.db";
    allow-update { localhost; };
};'
[root@dns1 ~]# 

今度はエラーなく実行できました。dig コマンドでのクエリーも問題ありません。

[root@dns1 ~]# dig +noall +answer @localhost example.com. ns
example.com.            86400   IN      NS      dns1.example.com.
[root@dns1 ~]#

先ほど設定した named_write_master_zones 設定を永続化します。

[root@dns1 ~]# setsebool -P named_write_master_zones=on
[root@dns1 ~]#

なお、追加したゾーン定義の情報は /var/named/ 配下に *.nzf として保存されます。
ファイル名は view (今回の例では default)を hash 化した値になるそうです。

[root@dns1 ~]# ls /var/named/*.nzf
/var/named/3bf305731dd26307.nzf
[root@dns1 ~]#

ゾーンの動的更新

次にゾーンの動的更新です。先ほど追加した example.com ゾーンに A レコードを追加します。
nsupdate にはローカル更新を指示するため、-l スイッチを付けて起動します(デフォルトでは SOA レコードを探索してネームサーバーを探しに行っちゃうはず)。

[root@dns1 ~]# nsupdate -l
update add newhost.example.com 86400 A 172.16.1.1
send
quit
[root@dns1 ~]# dig +noall +answer @localhost newhost.example.com. a
newhost.example.com.    86400   IN      A       172.16.1.1
[root@dns1 ~]#

できました。しかし追加したレコードはゾーン定義のジャーナルファイル(*.jnl)に格納されてゾーン定義ファイル自体には書き込まれません。rndc sync コマンドを使うとジャーナルファイルの内容をマージできます。-clean オプションは *.jnl ファイルも削除。

[root@dns1 ~]# rndc sync -clean example.com
[root@dns1 ~]#

ゾーンを指定しなければ全ゾーンの同期になります。

プロバイダがIPv6対応したのでDebianに設定

 article  Comments Off on プロバイダがIPv6対応したのでDebianに設定
Apr 132017
 

プロバイダがIPv6サービス提供を開始したので、フレッツ光とプロバイダにそれぞれ申し込んでみました。

フレッツ光でIPv6オプションを申し込んだ直後はNTT東日本のIPv6アドレスが割り当てられます。

gmtx24@debian:~$ ip -6 addr show dev eth0
2: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000
    inet6 2408:***:****:****:****:****:****:****/64 scope global mngtmpaddr dynamic 
       valid_lft 2591524sec preferred_lft 604324sec
    inet6 2001:c90:****:****:****:****:****:****/64 scope global deprecated mngtmpaddr dynamic 
       valid_lft 2584978sec preferred_lft 0sec
    inet6 fe80::a2b3:ccff:fee9:5cd7/64 scope link 
       valid_lft forever preferred_lft forever
gmtx24@debian:~$ 

次にプロバイダにIPv6オプションを申し込んだ後は、プロバイダ所有のプレフィックスアドレス(伏せてます)に変わりました。

gmtx24@debian:~$ ip -6 addr show dev eth0
2: eth0:  mtu 1500 qdisc mq state UP group default qlen 1000
    inet6 ****:****:****:****:****:****:****:****/64 scope global mngtmpaddr dynamic
       valid_lft 2591508sec preferred_lft 604308sec
    inet6 fe80::a2b3:ccff:fee9:5cd7/64 scope link
       valid_lft forever preferred_lft forever
gmtx24@debian:~$ 

ルーティングも同様に、NTT東日本からプロバイダに変わります。
フレッツ光のIPv6開通後

gmtx24@debian:~$ ip -6 route show
2001:c90:****:****::/64 dev eth0 proto kernel metric 256  expires 2581221sec pref medium
2408:***:****:****::/64 dev eth0 proto kernel metric 256  expires 2591184sec pref medium
fe80::/64 dev eth0 proto kernel metric 256  pref medium
default via fe80::30ff:fe0c:204d dev eth0 proto ra metric 1024  expires 1755sec hoplimit 64 pref medium
gmtx24@debian:~$ 

プロバイダのIPv6開通後

gmtx24@debian:~$ ip -6 route show
****:****:****::/64 dev eth0 proto kernel metric 256  expires 2591575sec pref medium
fe80::/64 dev eth0 proto kernel metric 256  pref medium
default via fe80::30ff:fe0c:204d dev eth0 proto ra metric 1024  expires 1375sec hoplimit 64 pref medium
gmtx24@debian:~$ 

このままだとMACアドレスベースで生成されたIPv6アドレスが設定されますので、IPv6プライバシー拡張を使ってランダム生成のアドレスにしたい場合は、/etc/network/interfacesに以下の設定をおこないます。

iface eth0 inet6 auto
    privext 2

確認はsysctlコマンドでnet.ipv6.conf.eth0.use_tempaddr=2になっているか、もしくはIPv6 test – IPv6/4 connectivity and speed testに接続してSLAAC noになっているかで確認しました。もちろんIPv6アドレスがMACアドレスベースになっていないことでも確認できます。

※参考
IPv6 プライバシー拡張

Debianでiptables設定(IPv4とIPv6)

 article  Comments Off on Debianでiptables設定(IPv4とIPv6)
Apr 122017
 

以前も書きましたがIPv6の設定も入れたので再掲。
DebianFirewall – Debian Wiki

こちらで一番ベーシックなiptables-persistentパッケージを導入して設定します。

# apt-get install iptables-persistent

あとはルールを作成。

IPv4用ルールはこちら。

$ cat /etc/iptables/rules.v4
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-unreachable
-A FORWARD -j REJECT --reject-with icmp-host-unreachable
COMMIT

IPv6用ルールはこちら。IPv4ベースに、ICMPv6プロトコル追加と、REJECT時のICMPメッセージをICMPv6に変更しています。

$ cat /etc/iptables/rules.v6
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp   -j ACCEPT
-A INPUT -p icmpv6 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp6-adm-prohibited
-A FORWARD -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

あとはサービス有効化して完了。

# systemctl start netfilter-persistent
# systemctl enable netfilter-persistent

libpwqualityあれこれ

 article  Comments Off on libpwqualityあれこれ
Apr 102016
 

RHEL 7やCentOS 7では、辞書に載っているパスワードへの変更を抑止する際に使われるPAMモジュールがpam_cracklibからpam_pwqualityに変更されています。パッケージとしてはlibpwqualityに含まれるモジュールになります。

libcrackにもリンクされていてパスワード辞書自体はデフォルトでcracklibのものを使用しますが、/etc/security/pwquality.confで変更可能です。詳しくはman pam_pwqualityやman pwquality.confを参照。

こちらのパッケージにはパスワードを生成してくれるpwmakeやパスワードの強度をチェックしてくれるpwscoreというコマンドが付属しています。

例えばpwscoreコマンドで「辞書に載っている」、「8文字未満」、「ユーザー名が含まれる」パスワードをチェックしてみると、それぞれ以下のような結果になります。

$ echo password | pwscore
Password quality check failed:
 The password fails the dictionary check - it is based on a dictionary word
$ echo passwor | pwscore
Password quality check failed:
 The password is shorter than 8 characters
# echo password4username| pwscore username
Password quality check failed:
 The password contains the user name in some form

3つめのコマンドのpwscoreに続く引数はユーザー名です。

pwmakeの使い方はビット数を引数に指定して実行するだけで、通常は64ビット、より強固にするには80や128ビットの指定がよいようです。
以下、Red Hat Enterprise Linux 7 セキュリティガイドの「第4章 ツールとサービスを使用したシステム強化」より。

指定可能な最小ビット数は 56 で、これはブルートフォース攻撃が滅多に仕掛けられないシステムやサービスのパスワードには十分なものです。攻撃者がパスワードハッシュファイルに直接アクセスできないアプリケーションであれば、64 ビットで十分です。攻撃者がパスワードハッシュへの直接アクセスを取得する可能性がある場合やパスワードが暗号化鍵として使用される場合は、80 ビットや 128 ビットを使うべきです。