目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
ユーザ追加 | useradd username | ||
パスワード設定 | passwd username | (警告時) BAD PASSWORD: it is based on a dictionary word |
外からの接続がなく一人で使う場合のみ、無視してよい。 |
wheelグループにusernameを追加 | usermod -aG Wheel username | cat /etc/group | grep wheel wheelグループ登録ユーザを確認 左記コマンド実行 cat /etc/group | grep wheel グループに追加されていることを確認 wheelはデフォルトで入っているグループ。流用するか否かは開発者の好みだが、本サーバではセキュリティ面で使わず、独自のグループを作成して設定した方がよいように思う。 | |
su(root)を利用できるユーザを制限 | vi /etc/pam.d/su #auth sufficient pam_wheel.so trust use_uid → コメント(#)を外して有効化 |
複数のユーザを使っている場合に有効。 自宅サーバを自分一人で使ってる時にはあまり意味がないかも。 | |
SSHアクセスでrootログインを禁止 | vi /etc/ssh/sshd_config #PermitRootLogin yes → コメント(#)を外して有効化するため再起動 /etc/rc.d/init.d/sshd restart |
設定内容に不安な場合は -tでチェックすればエラー箇所が特定できる。 /usr/sbin/sshd -t | |
SSHアクセスできるユーザを限定 | vi /etc/ssh/sshd_config (追記) AllowUsers username |
ユーザを限定しておくことで、不用意なユーザからアクセスを防げるので、セキュリティも増す | |
空パスワードを不許可 | vi /etc/ssh/sshd_config #PermitEmptyPasswords → コメント外す |
||
SSHアクセスできるコンソール数を制限 | vi /etc/sysconfig/init ACTIVE_CONSOLES=/dev/tty[1-6] → ACTIVE_CONSOLES=/dev/tty[1-3] |
アクセス端末数も制限することで更にセキュリティも増す。 |
目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
ユーザ追加時に、共通して追加するテンプレート | /etc/skel 配下に、ユーザ追加時に追加するディレクトリ、ファイル、bashrc等の設定を作成する パーミッションも継承される |
bashrc, bash_profileも継承されるので、複数人で使う場合は整えておくと便利になる。 独りサーバでは基本的には不要だろう。 |
目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
スクリーンセーバを使わない | vi .bashrc (追記) setterm -blank 0 |
VM環境で使う場合はスクリーンセーバは使わない方が便利がいいため。 | |
プロンプト設定 | export PS1=’(設定内容)’ source ~/.bashrc ----- \[\e[0;36;44m\] (ここから始める) (表示内容 [\u@\h \W] など) \[\e[0m\] (これで終了) 終了で [0m\]を設定しないと、プロンプト後の文字まで色がついてしまい、非常に見づらくなる。 (エラー文を強調したいとか、意図的にしている場合はいいが) ----- root(su)ログインの場合は、赤。 → .bashrc を修正 ほかユーザは、白。 → /home/username/.bashrc を修正 |
\a ASCIIのベル文字(07)を表示・鳴らす \d Fri Jan 5 で日付を表示 \e ASCIIのエスケープ文字(033)を表示 \h ホスト名の最初の「.」までの部分を表示 \H ホスト名を表示 \n 改行 \r 復帰 \s シェルの名前を表示する \t 24時間の「HH:MM:SS」形式 \T 12時間の「HH:MM:SS」形式 \@ 12時間の「am/pm」形式 \u 現在のユーザー名を表示する \v bashのバージョンを表示 \V bashのリリースを表示 \w ユーザーhomeからの絶対パスで表示 \W 現在の作業ディレクトリを表示 \! このコマンドの履歴番号を表示 \# ログイン後何回実行したか \$ 実効UIDが0の場合に#、それ以外は$ \nnn 8進数nnnに対応する文字を表示する \\ バックスラッシュを表示する \[ escape sequence/端末制御 \] 非表示文字のシーケンスを終了する |
指定例 [1;31;44m] (有効;文字;背景) 0 修飾なし 1 太字 4 下線 5 (実質未使用) 7 反転文字 8 背景色で塗りつぶし 30 黒 31 赤 32 緑 33 黄 34 青 35 紫 36 シアン(水色) 37 白 m 終了 |
プロンプトのスクリプト |
$PS 1 通常入力 2 コマンド入力未完了(> ) 3 インタラクティブメニュー( ) 4 プログラミングデバッグ(+ ) | ||
履歴の量を変更 | export HISTSIZE=1000000 | ||
言語設定 | export LANG='ja_JP.UTF-8' export LC_ALL='ja_JP.UTF-8' export LC_MESSAGES='ja_JP.UTF-8' |
||
キーボード設定 | vi /etc/sysconfig/keyboard KEYTABLE="jp106" MODEL="jp106" LAYOUT="jp" KEYBOARDTYPE="pc" |
日本語106/109キーボードを使っている場合、数字1やブレスが使えない場合は英語キーボードになっている。そういう場合は設定ファイルの変更が必要。 | |
###bashprofile | |||
コマンドエイリアス | vi .bash_profile alias name='コマンド' (有効化) source .bashr_profile |
(例) alias ls='ls -F --color=auto' |
エイリアス無効化 \ls (lsのエイリアス解除) |
目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
現在のネットワークを確認 | ifconfig | lo Link encap:Local Loopback |
ネットワークアダプタが「lo」のみ、ということが分かる。(つまり外へのアクセスが出来ない状態) |
ネットワークアダプタを有効化 |
vi /etc/sysconfig/network-script/ifcfg-eth0 ONBOOT="no" → ONBOOT="yes" BOOTPROTO=dhcp /etc/rc.d/init.d/network restart |
ifconfig → eth0 Link encap:Ethernet ... と表示されれば有効化できている ping 8.8.8.8 -c 3 → エラーなければ外へも繋がったことが確認できる (8.8.8.8はGoogleの公開DNS) |
CentOS6ではデフォルトでDHCP設定が入っていないので追記する必要がある。 固定IPの場合は、 IPADDR NETMASK GATEWAY を追記し、更に /etc/resolv.confにDNSサーバを追加する echo "nemeserver 192.168.100.200" >> /etc/resolv.conf |
SSH有効化 | vi /etc/ssh/sshd_config (コメントアウトする) Port 22 PermitRootLogin yes PasswordAuthentication yes |
PermitRootLogin yes は、rootでのログインを許すことになるので通常はコメントのまま残す。 なぜ書いたかというとどうしてもログインしないといけない場合がある時や解決の糸口が見つからない場合のことを考えて書いた。 |
目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
bash-4.1.2-15.el6にbashコードインジェクションの脆弱性があります ※CentOS5、4にも同様の脆弱性あり |
(確認) rpm -qa | grep bash |
(調査結果) bash-4.1.2-15 → 4.1.2-15以前は対策が必須 (対策) yum update bash →アップデートが完了したら、再度bashのバージョンを確認すること |
2014年09月に確認されている脆弱性で急務です。 ネットワーク通信が出来るようになればすぐに実施してください。 ・bash の脆弱性対策について(CVE-2014-6271 等) http://www.ipa.go.jp/security/ciadr/vul/20140926-bash.html&br() |
glibc-2.12-1.166.el6_7.3 以前のものに脆弱性あり ※CentOS7も同様の脆弱性あり。 |
(確認) rpm -qa | grep glibc |
(調査結果) glibc-2.12-1.166.el6_7.3 → 2.12-1.166.el6_7.3以前は対策が必須 (対策) yum update glibc →アップデートが完了したら、再度bashのバージョンを確認すること |
JPCERT/CCによる、glibc ライブラリの脆弱性 (CVE-2015-7547) に関する注意喚起 <https://www.jpcert.or.jp/at/2016/at160009.html> |
glibc-2.12-1.132 以前のものに脆弱性あり | (確認) rpm -qa | grep glibc |
(調査結果) glibc-2.12-1.132 → 2.12-1.132以前は対策が必須 (対策) yum update glibc yum update rsh rsh-server glibc, glibc-common, glibc-devel, glibc-headers, glibc-static, glibc-utils, nscd も更新確認があるので同時に進める →アップデートが完了したら、再度bashのバージョンを確認すること |
glibc脆弱性(GHOST)の脆弱性 CVE-2015-0235 - Red Hat Customer Portal <https://access.redhat.com/security/cve/CVE-2015-0235> |
ntpを更新 (うるう秒対策) ntp-4.2.8p10 より前 ntp-4.3.0 から ntp-4.3.93 まで |
(サービス稼働確認) /sbin/sservice ntpd status (外部連携の確認) /usr/sbin/ntpq -p (バージョン確認) rpm -qa | grep ntpd |
→ runningと表示されれば稼働中 → サマリーが表示されれば連携がある yum update ntpd バージョンを再度確認して最新になっていることを確認する |
ntpdに関しては次の脆弱性がある。 OSバージョンによらず、全体的にあるので注意 JVNVU#95549222: NTP.org の ntpd に複数の脆弱性 <https://jvn.jp/vu/JVNVU95549222/> |
opensshを更新 OpenSSH 5.4 から 7.1p1 まで |
(バージョン確認) rpm -qa | grep ssh |
→ 7.1p1 以下の場合は対策が必要 ※2017/03/20現在 最新版は、7.5となっている。 |
JVNVU#95595627: OpenSSH のクライアントに複数の脆弱性 <https://jvn.jp/vu/JVNVU95595627/> OpenSSHに複数の脆弱性 ( CVE-2016-10009 , CVE-2016-10010 , CVE-2016-10011 , CVE-2016-10012 ) — | サイオスOSS | サイオステクノロジー <https://oss.sios.com/security/openssh-security-vulnerability-20161220> |
※その他、一般的な脆弱課題は、【脆弱情報】にまとめています。 適宜、ソフトウェア、アプリの更新を行い、セキュリティを突かれないよう対策をしましょう。 |
目的・判断 | コマンド | 実行内容・結果 | 対処・備考 |
【CentOS6系】 ゲストOS、コンテナOS側 iptables確認 |
iptables -L | ACCEPT tcp -- anywhere anywhere tcp dpt:ssh 上記の一文が入っていればsshのポートは開放されている。 |
iptables -nL でポート番号を確認することができる。 デフォルトではsshが解放されているだけなので、apacheやFTPなどはiptables -A INPUTで個別に許可してやる必要がある。 もちろんスクリプトで流し込んでも良い。 |
【CentOS7系】 firewalld 確認 |
firewall-cmd --list-services --zone=public --permanent (詳細設定) /usr/lib/firewalld/services/ 配下にある各xmlファイル (変更したらfirewalld再起動) firewall-cmd --reload |
→ dhcpv6-client http ssh SSHが含まれていれば開放されている |
ポートを変更したい場合は、/usr/lib/firewalld/services/ 配下にあるxmlを編集して再起動すればよい。 <port protocol="tcp" port="22"/> のようなタグがあるのでここを編集すればよい。 |
Virtualbox |
設定 →ネットワーク →アダプター1 →高度 →ポートフォワーディング ホスト、ゲストの開放・接続ポートを設定 |
ゲストOS側が起動中であっても変更すれば即時適用される。 SSH(22)開放をゲストOS側のiptablesで四苦八苦やってもここが解放されてないとホストOS側からSSH接続できない、結構盲点になりやすい。 同様に、FTP(20, 21)telnet(23)、www(80)、DB(3306, 1521, 5432, 1433, 27017等)なども同じなので注意。 | |
VMware (VMware Workstation11の場合) |
編集 →仮想ネットワークエディタ →設定の変更 →VMnet8(NAT) →NAT設定 →ポート転送 →追加 →着信ポートのマッピング で設定 |
VMwareの場合、明示的にポートフォワーディングを設定できるが、特になにもしなくてもよかったと思う。 | |
コンソールからSSH接続確認 poderosa teraterm putty など |
・SSHでログイン、接続できること | IPは、Virtualboxの場合、192.168.56.1か127.0.0.1 VMwareの場合、192.168.232.129 Vagrantの場合、192.168.33.10 Dockerの場合、172.17.0.9等 がデフォルトになっている。 任意に設定しているなら設定したIPとポートに接続する。 |