初級編
アンチウィルスは効いている?
# curl https://www.eicar.org/download/eicar.com > test.txt
上記コマンドにより、eicar というテストウィルス (無害だけどウィルスとして扱われる) をダウンロードし、Disk に書き込みます。このときアンチウィルスソフトのリアルタイムスキャンが効いていれば何かしら反応があるはずです。
なお、http:// としてしまうと、社内 NW だと UTM のアンチウィルス機能により eicar を駆除される可能性がありますので、https://として通信を暗号化し、UTM をすり抜けましょう。
余計なTCP/UDPポートは開いてない?
# ss -nltu
ss コマンドで、開放している TCP/UDP ポートを確認できます。
CentOS 7.4.1708 の minimum install だとデフォルトで以下が開放されています。
[root@localhost ~]# ss -nltu Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:48798 *:* udp UNCONN 0 0 *:68 *:* udp UNCONN 0 0 127.0.0.1:323 *:* udp UNCONN 0 0 :::50926 :::* udp UNCONN 0 0 ::1:323 :::* tcp LISTEN 0 128 *:22 *:* tcp LISTEN 0 100 127.0.0.1:25 *:* tcp LISTEN 0 128 :::22 :::* tcp LISTEN 0 100 ::1:25
これだとどのプロセスが LISTEN しているのか不明なので、以下コマンドで lsof コマンドをインストールし、
[root@localhost ~]# yum -y install lsof
以下コマンドでプロセスを確認します。
[root@localhost ~]# lsof -i -n -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME chronyd 711 chrony 1u IPv4 16941 0t0 UDP 127.0.0.1:323 chronyd 711 chrony 2u IPv6 16942 0t0 UDP [::1]:323 sshd 1001 root 3u IPv4 19425 0t0 TCP *:22 (LISTEN) sshd 1001 root 4u IPv6 19432 0t0 TCP *:22 (LISTEN) master 1450 root 13u IPv4 19830 0t0 TCP 127.0.0.1:25 (LISTEN) master 1450 root 14u IPv6 19831 0t0 TCP [::1]:25 (LISTEN) dhclient 11356 root 6u IPv4 29681 0t0 UDP *:68 dhclient 11356 root 20u IPv4 29671 0t0 UDP *:48798 dhclient 11356 root 21u IPv6 29672 0t0 UDP *:50926 sshd 11420 root 3u IPv4 30690 0t0 TCP 192.168.169.128:22->192.168.169.1:63512 (ESTABLISHED) sshd 11424 t.yamada 3u IPv4 30690 0t0 TCP 192.168.169.128:22->192.168.169.1:63512 (ESTABLISHED) [root@localhost ~]#
オプション -i でIPアドレスとバインドされているプロセスを表示できます。-n はIPアドレスの名前解決(逆引き)をしない、-P はポート番号の変換をしない、という意味です。
ssh は *:22 と表示されていますが、これは全ての NIC インタフェースの IP アドレスで LISTEN する、という意味です。
例えば 2 つの NIC があり、1 つは Web サービス用 IP (10.1.1.1/24)、もう 1 つは管理用 IP (192.168.10.1/24) がアサインされていた場合、本来であれば SSH アクセスは管理用 IP のみで LISTEN すればよいところを、色々なクライアントがアクセス可能な Web サービス用 IP (10.1.1.1) でも SSH が許可されてしまいます。
この是正は次の項目で説明します。
SSH のセキュリティ設定は問題ない?
SSH は強力なツールである分、セキュリティには気を付けなければなりません。
# vi /etc/ssh/sshd_config
この設定を加え、sshd を再起動 (# systemctl restart sshd ) することで、ss -nltu の SSH の箇所が *:22 から 192.168.10.1:22 と変更され、Webサービス用IP(10.1.1.1)からSSHアクセスを受け付けないようになります。
このような設定は Apache(httpd)の httpd.conf の Listen や、Postfix の main.cf の inet_interfaces にて同様に必要なインタフェースの IP を設定すれば、ss -nltu の *:80 や *:25 が 10.1.1.1:80 や 10.1.1.1:25 と受付 IP が限定されます。さらに Postfix に関しては :::1:25 と IPv6 のループバックアドレスが Listen になっていますので、inet_protocols = ipv4 と設定します。
また、SSH のポート番号も 22 番だと攻撃されやすいので、変更したほうがよいでしょう。
なお、SELinux を有効にしている場合はそのままではできませんので、無効化するか、以下を実施することで対応できます。
# yum -y install policycoreutils-python # semanage port -a -t ssh_port_t -p tcp 10022
また、SSH はデフォルトで root によるログインが許可されていますが、不許可にしましょう。
また、SSH アクセスを許可するユーザを限定し、さらにそのユーザがどの NW セグメントからアクセスしてよいかを限定する設定ができます。例えば t.yamada というユーザは全ての NW セグメントから許可しつつ、h.suzuki というユーザは 172.16.1.0/24 と 172.16.3.0/24 からのみアクセスを許可する場合は /etc/ssh/sshd_config の最下部に以下を設定します。
パッケージは最新版?
以下コマンドでパッケージが最新版かどうかを確認できます。
# yum check-update
また、確認ではなく実際に最新版に更新するには以下コマンドを使います。
# yum update
脆弱性情報やパッチ情報を定期的にチェックしてる?
JP CERT
US CERT
RedHat
中級編
近日追記予定
コメント