繰り返しコマンドを実行
echo test を繰り返し実行する。
出力先は、標準出力と、hoge.log となる。
# while true; do echo test |tee -a hoge.log; done;
10 秒間隔にする場合は以下となる。
# while true; do echo test |tee -a hoge.log; sleep 10; done;
VMware で Tera Term を使用したシリアルコンソール接続
1.VMware 側の設定
「仮想マシン設定」で「シリアルポート」を「名前付きパイプに出力」の以下の設定で追加する。
「\\.\pipe\com_1」★Tera Term の接続で使用する 「この端末はサーバです」 「接続先はアプリケーションです」
2.RHEL 側の設定
/boot/grub/grub.conf に以下の設定を追加して、OS を再起動
console=tty0 console=ttyS0,115200n8
3.Tera Term による接続
「ホスト(T:)」に「\\.\pipe\com_1」を入力して「OK」を押下。
参考情報
http://www.ajisaba.net/linux/serial_console.html
http://ttssh2.sourceforge.jp/manual/ja/usage/tips/namedpipe.html
RHEL7 の色々
1.ランレベル
デフォルトのランレベル (ランレベルという概念はなくなったらしいが) を確認する。
# systemctl get-default multi-user.target
上記のコマンドの結果とランレベルの紐付けは以下の情報を参照。
# ls -l /lib/systemd/system/runlevel*target lrwxrwxrwx. 1 root root 15 9月 11 2014 /lib/systemd/system/runlevel0.target -> poweroff.target lrwxrwxrwx. 1 root root 13 9月 11 2014 /lib/systemd/system/runlevel1.target -> rescue.target lrwxrwxrwx. 1 root root 17 9月 11 2014 /lib/systemd/system/runlevel2.target -> multi-user.target lrwxrwxrwx. 1 root root 17 9月 11 2014 /lib/systemd/system/runlevel3.target -> multi-user.target lrwxrwxrwx. 1 root root 17 9月 11 2014 /lib/systemd/system/runlevel4.target -> multi-user.target lrwxrwxrwx. 1 root root 16 9月 11 2014 /lib/systemd/system/runlevel5.target -> graphical.target lrwxrwxrwx. 1 root root 13 9月 11 2014 /lib/systemd/system/runlevel6.target -> reboot.target # # ls -l /usr/lib/systemd/system/default.target lrwxrwxrwx. 1 root root 16 9月 11 2014 /usr/lib/systemd/system/default.target -> graphical.target
デフォルトのランレベルの変更手順は以下となる。
OS を再起動すると以下の状態で起動する。
# systemctl get-default multi-user.target # # systemctl set-default graphical.target rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target' # # systemctl get-default graphical.target
再起動なしでランレベルを変更するには以下の手順となる。
# runlevel N 5 # # systemctl isolate multi-user.target # # runlevel 5 3
参考情報
http://thinkit.co.jp/story/2014/12/11/5388
2.NIC の設定
まずは、現在の接続とデバイスの状態を確認。
# nmcli c s 名前 UUID タイプ デバイス test01 99c13513-9423-4d09-89a2-1773fd7c6ab6 802-3-ethernet eno33554984 # # nmcli d s デバイス タイプ 状態 接続 eno33554984 ethernet 接続済み test01 eno16777736 ethernet 切断済み -- eno50332208 ethernet 切断済み -- eno67109432 ethernet 切断済み -- lo loopback 管理無し --
続いて、上記の「eno50332208」というデバイスを「eth0」という接続で追加。
※IP アドレスは 「192.168.110.127/24」で、ゲートウェイが「192.168.110.2」となる。
この場合、デフォルトゲートウェイが未設定の場合、この「192.168.110.2」が割り当てられる。
# nmcli con add type ethernet con-name eth0 ifname eno50332208 ip4 192.168.110.127/24 gw4 192.168.110.2 接続 'eth0' (82a1431d-6844-4a8b-bc99-98e790960fbe) が正常に追加されました。 # # nmcli c s 名前 UUID タイプ デバイス test01 99c13513-9423-4d09-89a2-1773fd7c6ab6 802-3-ethernet eno33554984 eth0 82a1431d-6844-4a8b-bc99-98e790960fbe 802-3-ethernet eno50332208 # # nmcli d s デバイス タイプ 状態 接続 eno33554984 ethernet 接続済み test01 eno50332208 ethernet 接続済み eth0 eno16777736 ethernet 切断済み -- eno67109432 ethernet 切断済み -- lo loopback 管理無し --
デバイスの情報を表示。
# nmcli device show eno50332208 libudev: udev_device_new_from_syspath: device 0x7f7784057030 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:06.0/net/eno50332208' libudev: udev_device_read_db: device 0x7f7784057030 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f778405a490 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:06.0' libudev: udev_device_read_db: device 0x7f778405a490 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f778405adb0 has devpath '/devices/pci0000:00/0000:00:11.0' libudev: udev_device_read_db: device 0x7f778405adb0 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f778405c120 has devpath '/devices/pci0000:00' libudev: udev_device_new_from_syspath: device 0x7f778405c120 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:06.0/net/eno50332208' libudev: udev_device_read_db: device 0x7f778405c120 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f778405adb0 has devpath '/devices/pci0000:00/0000:00:11.0/0000:02:06.0' libudev: udev_device_read_db: device 0x7f778405adb0 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f7784057030 has devpath '/devices/pci0000:00/0000:00:11.0' libudev: udev_device_read_db: device 0x7f7784057030 filled with db file data libudev: udev_device_new_from_syspath: device 0x7f778405a490 has devpath '/devices/pci0000:00' GENERAL.デバイス: eno50332208 GENERAL.タイプ: ethernet GENERAL.HWADDR: 00:0C:29:73:63:48 GENERAL.MTU: 1500 GENERAL.状態: 100 (接続済み) GENERAL.接続: eth0 GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/22 WIRED-PROPERTIES.キャリア: オン IP4.アドレス[1]: ip = 192.168.110.127/24, gw = 192.168.110.2 IP6.アドレス[1]: ip = fe80::20c:29ff:fe73:6348/64, gw = ::
デバイスの情報 (特定のフィールドのみ) を表示。
# nmcli --fields IP4 device show eno50332208 IP4.アドレス[1]: ip = 192.168.110.127/24, gw = 192.168.110.2
接続の情報を表示。
# nmcli c s eth0 connection.id: eth0 connection.uuid: 82a1431d-6844-4a8b-bc99-98e790960fbe connection.interface-name: eno50332208 connection.type: 802-3-ethernet connection.autoconnect: yes connection.timestamp: 1439647093 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.secondaries: connection.gateway-ping-timeout: 0 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: -- 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: 自動 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: { ip = 192.168.110.127/24, gw = 192.168.110.2 } ipv4.routes: ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.routes: ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (不明) ipv6.dhcp-hostname: -- GENERAL.名前: eth0 GENERAL.UUID: 82a1431d-6844-4a8b-bc99-98e790960fbe GENERAL.デバイス: eno50332208 GENERAL.状態: アクティベート済み GENERAL.デフォルト: はい GENERAL.デフォルト6: いいえ GENERAL.VPN: いいえ GENERAL.ゾーン: -- GENERAL.DBUS パス: /org/freedesktop/NetworkManager/ActiveConnection/22 GENERAL.CON パス: /org/freedesktop/NetworkManager/Settings/23 GENERAL.スペックオブジェクト: -- GENERAL.マスターパス: -- IP4.アドレス[1]: ip = 192.168.110.127/24, gw = 192.168.110.2 IP6.アドレス[1]: ip = fe80::20c:29ff:fe73:6348/64, gw = ::
接続の情報 (特定のフィールドのみ) を表示。
# nmcli --fields ipv4 connection show eth0 ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: { ip = 192.168.110.127/24, gw = 192.168.110.2 } ipv4.routes: ipv4.ignore-auto-routes: no ipv4.ignore-auto-dns: no ipv4.dhcp-client-id: -- ipv4.dhcp-send-hostname: yes ipv4.dhcp-hostname: -- ipv4.never-default: no ipv4.may-fail: yes
接続の停止と起動。
# nmcli c show 名前 UUID タイプ デバイス eth0 8c94448c-a235-40b3-9526-3a29f1e627c2 802-3-ethernet eno50332208 test01 cbead119-159c-4b0f-84a5-9bd168cfe338 802-3-ethernet eno16777736 # # nmcli con down eth0 # # nmcli c show 名前 UUID タイプ デバイス eth0 8c94448c-a235-40b3-9526-3a29f1e627c2 802-3-ethernet -- test01 cbead119-159c-4b0f-84a5-9bd168cfe338 802-3-ethernet eno16777736 # # nmcli con up eth0 接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5) # # nmcli c show 名前 UUID タイプ デバイス eth0 8c94448c-a235-40b3-9526-3a29f1e627c2 802-3-ethernet eno50332208 test01 cbead119-159c-4b0f-84a5-9bd168cfe338 802-3-ethernet eno16777736
デフォルトゲートウェイの追加と削除
# ip r default via 192.168.110.2 dev eno50332208 proto static metric 1024 192.168.16.0/24 dev eno16777736 proto kernel scope link src 192.168.16.131 192.168.110.0/24 dev eno50332208 proto kernel scope link src 192.168.110.127 # # ip route del default via 192.168.110.2 dev eno50332208 # # ip r 192.168.16.0/24 dev eno16777736 proto kernel scope link src 192.168.16.131 192.168.110.0/24 dev eno50332208 proto kernel scope link src 192.168.110.127 # # ip route add default via 192.168.110.2 dev eno50332208 # # ip r default via 192.168.110.2 dev eno50332208 192.168.16.0/24 dev eno16777736 proto kernel scope link src 192.168.16.131 192.168.110.0/24 dev eno50332208 proto kernel scope link src 192.168.110.127
IP アドレスの変更
# nmcli --fields ipv4.addresses connection show eth0 ipv4.addresses: { ip = 192.168.110.127/24, gw = 0.0.0.0 } # # nmcli connection modify eth0 ipv4.addresses "192.168.110.128/24" # # nmcli --fields ipv4.addresses connection show eth0 ipv4.addresses: { ip = 192.168.110.128/24, gw = 0.0.0.0 }
参考情報
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/Networking_Guide/index.html#sec-Static-Routes_and_the_Default_Gateway
http://enakai00.hatenablog.com/entry/20140712/1405139841
http://blog.yuryu.jp/2014/07/networkmanager-nmtui-nmcli.html
http://seesaawiki.jp/internetwiki/d/CentOS7/%A5%CD%A5%C3%A5%C8%A5%EF%A1%BC%A5%AF%C0%DF%C4%EA#content_1
http://thinkit.co.jp/author/271
http://thinkit.co.jp/story/2014/12/25/5412
http://www.school.ctc-g.co.jp/columns/nakai/nakai47.html
https://oss.sios.com/yorozu-blog/rhel6-rhel7change
https://oss.sios.com/yorozu-blog/oss-matome201508
https://oss.sios.com/redhat-ch
http://qiita.com/sion_cojp/items/115e1671fcbc8f214aee
audit による情報採取
1.特定のシステムコールの追跡
以下は、kill 関連の追跡の場合。
まずは、システムコール番号の確認を行う。
これがわからないと audit のログに記録されたシステムコールが何かわからない。
# ausyscall i386 kill kill 37 tkill 238 tgkill 270 # ausyscall x86_64 kill kill 62 tkill 200 tgkill 234
参考資料
http://qiita.com/h2suzuki/items/c2b0b51abb252155db2f
そして、以下のように、/etc/audit/audit.rules に追跡用のルールを設定する。
-a exit,always -F arch=b64 -S kill -k teste_kill ^^^^^^^^^^^^^★ログの検索用に設定
auditd を再起動して、以下のようにルールが設定されたことを確認する。
# auditctl -l LIST_RULES: exit,always arch=3221225534 (0xc000003e) key=teste_kill syscall=kill
システムコールが発行されると以下のように記録される。
# ausearch -if /var/log/audit/audit.log -k teste_kill ---- time->Mon Mar 16 02:26:42 2015 type=OBJ_PID msg=audit(1426440402.942:284): opid=2193 oauid=0 ouid=0 oses=42 ocomm="tail" type=SYSCALL msg=audit(1426440402.942:284): arch=c000003e syscall=62 success=yes exit=0 a0=891 a1=9 a2=0 a3=891 items=0 ppid=1516 pid=1518 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="bash" exe="/bin/bash" key="teste_kill"
上記のログから、以下の情報などが読み取れる。
arch=c000003e : 64 bit syscall=62 : kill a0=891 : 対象の PID が 2193 a1=9 : シグナル値が 9 から SIGKILL が発行
参考情報Security Guide
2.デバイスファイルへのアクセスの追跡
以下は、/dev/sdf への追跡の場合。
まずは、デバイスファイルのメジャー番号、マイナー番号を確認する。
# ll /dev/sdf brw-rw---- 1 root disk 8, 80 3月 17 19:16 2015 /dev/sdf
上記の情報をもとにルールを設定する。
# auditctl -a exit,always -F arch=b64 -F devmajor=8 -F devminor=80 -S all -k teste_kill # auditctl -l LIST_RULES: exit,always arch=3221225534 (0xc000003e) devmajor=8 (0x8) devminor=80 (0x50) key=teste_kill syscall=all
以下は、/dev/sdf に ls した場合の出力。
# ausearch -if /var/log/audit/audit.log -k teste_kill ---- time->Tue Mar 17 20:35:28 2015 type=CONFIG_CHANGE msg=audit(1426592128.816:11926): auid=0 ses=19 op="add rule" key="teste_kill" list=4 res=1 ---- time->Tue Mar 17 20:35:38 2015 type=PATH msg=audit(1426592138.127:11928): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50 type=CWD msg=audit(1426592138.127:11928): cwd="/etc/audit" type=SYSCALL msg=audit(1426592138.127:11928): arch=c000003e syscall=192 success=no exit=-95 a0=7fff9045890c a1=7f5d5c3a0319 a2=2390980 a3=ff items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill" ---- time->Tue Mar 17 20:35:38 2015 type=PATH msg=audit(1426592138.127:11927): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50 type=CWD msg=audit(1426592138.127:11927): cwd="/etc/audit" type=SYSCALL msg=audit(1426592138.127:11927): arch=c000003e syscall=6 success=yes exit=0 a0=7fff9045890c a1=238be80 a2=238be80 a3=7fff90457990 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill" ---- time->Tue Mar 17 20:35:38 2015 type=PATH msg=audit(1426592138.127:11929): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50 type=CWD msg=audit(1426592138.127:11929): cwd="/etc/audit" type=SYSCALL msg=audit(1426592138.127:11929): arch=c000003e syscall=6 success=yes exit=0 a0=7fff9045890c a1=7fff90457b70 a2=7fff90457b70 a3=7fff90457900 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill" ---- time->Tue Mar 17 20:35:38 2015 type=PATH msg=audit(1426592138.127:11930): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50 type=CWD msg=audit(1426592138.127:11930): cwd="/etc/audit" type=SYSCALL msg=audit(1426592138.127:11930): arch=c000003e syscall=192 success=no exit=-61 a0=7fff9045890c a1=7f5d5bd7bdb7 a2=0 a3=0 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill" ---- time->Tue Mar 17 20:35:38 2015 type=PATH msg=audit(1426592138.127:11931): item=0 name="/dev/sdf" inode=6111 dev=00:05 mode=060660 ouid=0 ogid=6 rdev=08:50 type=CWD msg=audit(1426592138.127:11931): cwd="/etc/audit" type=SYSCALL msg=audit(1426592138.127:11931): arch=c000003e syscall=192 success=no exit=-61 a0=7fff9045890c a1=7f5d5bd7bd88 a2=0 a3=0 items=1 ppid=1476 pid=3195 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="ls" exe="/bin/ls" key="teste_kill"
参考資料
https://access.redhat.com/ja/solutions/786713
http://eng-manima.blogspot.jp/2014/10/linux-auditd.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/Security_Guide/index.html#chap-system_auditing
http://www.secureos.jp/index.php?plugin=attach&refer=events%2Fjsosjk06&openfile=jsosjk06-linux-audit.pdf
http://www.usupi.org/sysad/222.html
https://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf
http://a4dosanddos.hatenablog.com/entry/2013/07/10/230710
https://www.suse.com/documentation/sled10/pdfdoc/auditqs_sp2/auditqs_sp2.pdf
http://people.redhat.com/sgrubb/audit/audit-parse.txt
date コマンド
翌日の日付 (時刻は 00:00) に設定する方法
# date -s "`date -d '1 days' '+%Y/%m/%d'`"
前日の日付 (時刻は 00:00) に設定する方法
# date -s "`date -d '1 days ago' '+%Y/%m/%d'`"
翌月の日付 (翌月の同日、時刻は 00:00) に設定する方法
# date -s "`date -d '1 months' '+%Y/%m/%d'`"
翌日の日付 (時刻は変更なし) に設定する方法
# date -s "`date -d '1 days' '+%m/%d %H:%M:%S %Y'`"
10 分後に設定する方法
# date -s "`date -d '10 minutes' '+%m/%d %H:%M:%S %Y'`"
10 分前に設定する方法
# date -s "`date -d '10 minutes ago' '+%m/%d %H:%M:%S %Y'`"
参考
http://qiita.com/na0AaooQ/items/af6b853faf32c58c21d3
http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/%E7%BF%8C%E6%97%A5%E3%81%AE%E6%97%A5%E4%BB%98%E3%82%92%E5%8F%96%E5%BE%97%E3%83%BBdate%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89.html
rndc 鍵 (rndc.key) の作成
rndc 鍵は rndc コマンドを実行するために必要となるが、RHEL6 では bind パッケージ導入後、サービスを起動しようとすると以下の rndc 鍵関連で停止する。
# service named start Generating /etc/rndc.key:
この場合、手動で rndc.key を作成することで解決する。
以下が参考情報となる。
http://k4200.hatenablog.com/entry/20130304/1362379763
・rndc 鍵の作成方法
rndc-confgen コマンドを使用する。
# rndc-confgen -a -r /dev/urandom wrote key file "/etc/rndc.key"
その後、サービスの起動は成功するが、その前に以下のコマンドで、/etc/rndc.key の属性の変更が必要。
# chmod 640 /etc/rndc.key # chown root.named /etc/rndc.key
上記を実行していない場合、サービスの起動は成功するが、以下のメッセージが出力され rndc コマンドの実行に失敗する。
named[2411]: none:0: open: /etc/rndc.key: permission denied named[2411]: couldn't add command channel 127.0.0.1#953: permission denied named[2411]: none:0: open: /etc/rndc.key: permission denied named[2411]: couldn't add command channel ::1#953: permission denied
rndc.key と類似のファイルで rndc.conf が存在する。
rndc.conf はリモートの bind サーバに対して、制御する際に使用されるものらしい。
以下が参考情報となる。
http://www.geocities.jp/yasasikukaitou/rndc.html
http://linux.kororo.jp/cont/server/bind_src.php
http://www.aconus.com/~oyaji/dns/bind_linux.htm