What Would Jesus Do?

カテゴリ:Linux( 47 )




SSHログインをユーザ/グループで許可設定を行う

前回PAM認証について書きましたので、
今回はSSHログインをユーザ/グループ単位での設定方法を書きます。

ユーザ/グループ単位の設定をするには下記の3ファイルを利用します。
・/etc/pam.d/sshd
・/etc/ssh/sshd_config
・/etc/security/access.conf

まずは/etc/pam.d/sshdの設定です。
下記をラストに追加します。
account required pam_access.so

/etc/ssh/sshd_configは
UsePAM yes
の記述を確認します。

grep UsePAM sshd_config

最後に/etc/security/access.conf
です。
vi /etc/security/access.conf

#+ : root : 192.168.201.

+ : root : 100.100.100.100

#+ : john : 2001:4ca0:0:101::/64

+ : wheel : 10.10.10.10

#- : ALL : ALL

- : ALL : ALL


上記設定で
・rootは、100.100.100.100からのみ接続可能
・whellグループに属したユーザは10.10.10.10からのみ接続可能
・上記以外は拒否
となります。

実際にログで確認してみます。
まずは wheel グループに属しているユーザ確認です。

[root@cimacoppisecurity]#grep wheel /etc/group
wheel::10:root,test1

test1でsshログインをすると下記のようなログで、ログイン成功がわかります。

Oct 9 16:38:50 cimacoppi sshd[17712]: Accepted password for test1 from *.*.*.* port 9093 ssh2
Oct 9 16:38:50 cimacoppi sshd[17712]: pam_unix(sshd:session): session opened for user test1 by (uid=0)

test2でsshログインすると下記のようなログで、ログイン失敗ががわかります。

Oct 9 16:40:01 cimacoppi sshd[17743]: pam_access(sshd:account): access denied for user `test2' from `219.117.233.241.static.zoot.jp'
Oct 9 16:40:01 cimacoppi sshd[17743]: Failed password for test2 from *.*.*.* port 47543 ssh2
Oct 9 16:40:01 cimacoppi sshd[17746]: fatal: Access denied for user test2 by PAM account configuration
[PR]



by cimacoppi | 2011-10-09 16:42 | Linux

PAM認証を利用してrootにスイッチ

セキュリティを強化するため、特定の一般ユーザのみrootにスイッチできる、
設定をしたい場合があります。
そんな時はPAM認証で可能となります。

例えば test1 test2 ユーザが下記のように存在しているとします。

[root@cimacoppi ~]# id test1
uid=2001(test1) gid=2001(hoge) 所属グループ=2001(hoge),10(wheel)

[root@cimacoppi ~]# id test2
uid=2002(test2) gid=2001(hoge) 所属グループ=2001(hoge)

test1ユーザにはwheelグループに属しています。

設定は /etc/pam.d/su で行います。

vi /etc/pam.d/su
【変更前】
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid

【変更後】
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth required pam_wheel.so use_uid

上記でwhellグループに属しているユーザのみrootにパスワードなしでログインできます。

実際にテストしてみます。

[root@cimacoppi pam.d]# su - test1
-bash-3.2$ su -
[root@cimacoppi ~]# who
root pts/0

[root@cimacoppi pam.d]# su - test2
-bash-3.2$ su -
パスワード:
su: パスワードが違います

test1ではrootにスイッチできていることが分かります。
[PR]



by cimacoppi | 2011-10-09 15:37 | Linux

Linux環境でパスワードつきzipファイルを作成する

Windows環境では、パスワード生成可能な圧縮ソフトを、
利用すれば簡単に、パスワード付きzipファイルが作成できます。
同じようにLinux環境でも、パスワード付きzipファイルの作成ができます。

まずはzipコマンドのオプションを確認します。

zip -h コマンドで-eを利用できることが分かります。

-e encrypt

実際にコマンド実行すると下記のような感じとなります。

・ sampleディレクトリをパスワード付きzip圧縮
[root@ip-10-150-175-70 1006]# zip -e sample.zip sample/
Enter password:
Verify password:
adding: sample/ (stored 0%)

・確認
[root@ip-10-150-175-70 1006]# ls
sample sample.zip

・確認のためsamleディレクトリ削除
[root@ip-10-150-175-70 1006]# rm -rf sample
[root@ip-10-150-175-70 1006]# ls
sample.zip

・sample.zip 解凍
[root@ip-10-150-175-70 1006]# unzip sample.zip
Archive: sample.zip
[sample.zip] sample/ password:
creating: sample/

・確認
[root@ip-10-150-175-70 1006]# ls -l
合計 8
drwxr-xr-x 2 root root 4096 8月 30 02:10 sample
-rw-r--r-- 1 root root 174 10月 6 10:16 sample.zip
[PR]



by cimacoppi | 2011-10-06 10:26 | Linux

tarで差分圧縮を行う

tarコマンド実行時にオプションに -N を、
指定すると、差分で圧縮をすることができます。

例として /etc/httpd/confで差分圧縮を行います。

ファイルの確認
[root@ip-10-150-175-70 httpd]# ls -lR conf
conf:
合計 128
drwxr-xr-x 2 root root 4096 9月 28 15:47 acl
-rw-r--r-- 1 root root 35389 9月 28 20:39 httpd.conf
-rw-r--r-- 1 root root 33776 4月 16 16:49 httpd.conf.0418
-rw-r--r-- 1 root root 33854 5月 13 14:51 httpd.conf.0928
-rw-r--r-- 1 root root 13139 5月 4 19:54 magic

conf/acl:
合計 72
-rw-r--r-- 1 root root 60241 8月 4 11:54 acl_ezweb.conf
-rw-r--r-- 1 root root 641 8月 4 11:55 acl_imode.conf
-rw-r--r-- 1 root root 814 8月 4 11:56 acl_softbank.conf

まずはフル圧縮

[root@ip-10-150-175-70 httpd]# tar cfvz conf.tar.gz conf
conf/
conf/httpd.conf
conf/httpd.conf.0418
conf/acl/
conf/acl/acl_imode.conf
conf/acl/acl_ezweb.conf
conf/acl/acl_softbank.conf
conf/httpd.conf.0928
conf/magic

圧縮内容の確認
[root@ip-10-150-175-70 httpd]# tar tvfz conf.tar.gz
drwxr-xr-x root/root 0 2011-09-28 20:59:45 conf/
-rw-r--r-- root/root 35389 2011-09-28 20:39:47 conf/httpd.conf
-rw-r--r-- root/root 33776 2011-04-16 16:49:02 conf/httpd.conf.0418
drwxr-xr-x root/root 0 2011-09-28 15:47:28 conf/acl/
-rw-r--r-- root/root 641 2011-08-04 11:55:16 conf/acl/acl_imode.conf
-rw-r--r-- root/root 60241 2011-08-04 11:54:00 conf/acl/acl_ezweb.conf
-rw-r--r-- root/root 814 2011-08-04 11:56:48 conf/acl/acl_softbank.conf
-rw-r--r-- root/root 33854 2011-05-13 14:51:49 conf/httpd.conf.0928
-rw-r--r-- root/root 13139 2011-05-04 19:54:43 conf/magic

次に差分バックアップ(今回は7/7移行のファイルの差分圧縮とします。)

[root@ip-10-150-175-70 httpd]# tar cfvz conf0707.tar.gz -N 2011-07-07 conf
tar: 日付 `2011-07-07' を 2011-07-07 00:00:00 + 0 ナノ秒として取り扱う
conf/
conf/httpd.conf
tar: conf/httpd.conf.0418: 変更されていないのでダンプしません
conf/acl/
conf/acl/acl_imode.conf
conf/acl/acl_ezweb.conf
conf/acl/acl_softbank.conf
conf/httpd.conf.0928
tar: conf/magic: 変更されていないのでダンプしません

圧縮内容の確認
[root@ip-10-150-175-70 httpd]# tar tvfz conf0707.tar.gz
drwxr-xr-x root/root 0 2011-09-28 20:59:45 conf/
-rw-r--r-- root/root 35389 2011-09-28 20:39:47 conf/httpd.conf
drwxr-xr-x root/root 0 2011-09-28 15:47:28 conf/acl/
-rw-r--r-- root/root 641 2011-08-04 11:55:16 conf/acl/acl_imode.conf
-rw-r--r-- root/root 60241 2011-08-04 11:54:00 conf/acl/acl_ezweb.conf
-rw-r--r-- root/root 814 2011-08-04 11:56:48 conf/acl/acl_softbank.conf
-rw-r--r-- root/root 33854 2011-05-13 14:51:49 conf/httpd.conf.0928

上記から、
conf/httpd.conf.0418
conf/magic
が圧縮されていないことが分かります。

これは差分バックアップや、サーバ移行の時に便利だと思います。
[PR]



by cimacoppi | 2011-09-28 21:28 | Linux

fuserコマンドで利用ユーザを確認

umountコマンド実行時、下記のエラーでアンマウントできない場合があります。

[root@ip-10-150-175-70 ~]# umouunt /mnt/ebs/0

umount: /mnt/ebs/0: デバイスを使用中です
umount: /mnt/ebs/0: デバイスを使用中です

これは、/mnt/ebs/0以下を他のユーザが利用しているため、
アンマウントができません。

これを確認するには、fuserコマンドを利用します。
今回は、umouunt /mnt/ebs/0の確認となりますので
fuser -mv /mnt/ebs/0
を実行します。

実行結果は下記となります。
[root@ip-10-150-175-70 ~]# fuser -mv /mnt/ebs/0
USER PID ACCESS COMMAND
/mnt/ebs/0: root 2255 ..c.. bash

rootユーザが利用していることが分かります。
このrootユーザに移動もしくはログアウトしてもらえば、
umountコマンド実行可能です。
[PR]



by cimacoppi | 2011-09-27 11:04 | Linux

syslogサーバの構築

複数のサーバを運用している場合、
syslogを1台のサーバで、まとめるとログの管理が簡単な場合があります。

今回はsyslogサーバの設定を書きます。

まずはsyslogサーバの設定です。

syslogサーバを利用するには、
udpのport514を利用します。

設定は、/etc/sysconfig/syslog
を修正します。

vi /etc/sysconfig/syslog

【変更前】SYSLOGD_OPTIONS="-m 0 "

【変更後】SYSLOGD_OPTIONS="-m 0 -r"

・syslogの再起動
/etc/rc.d/init.d/syslog restart

udpのport514の起動確認
netstat -luntp | grep 514

[root@ip-10-150-175-70 sysconfig]# netstat -luntp | grep 514
↓のように表示すればOKです
udp 0 0 0.0.0.0:514 0.0.0.0:* 28003/syslogd

次はクライアント側です。
・ /etc/syslog.conf の修正
(今回は /var/log/secureをsyslogサーバに送ります。)

vi //etc/syslog.conf
【変更前】authpriv.* /var/log/secure

【変更後】authpriv.* @syslogサーバIPアドレス

・syslogの再起動
/etc/rc.d/init.d/syslog restart


確認として実際にクライアントサーバにsshログインを行います。

sshログイン後、syslogサーバの/var/log/secureを確認します。

tail /var/log/secure

Sep 22 21:10:52 ip-10-146-90-73 sshd[24084]: Accepted publickey for root from x x.x.x.x port 26144 ssh2
Sep 22 21:10:52 ip-10-146-90-73 sshd[24084]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 22 21:10:52 ip-10-146-90-73 sshd[24084]: pam_loginuid(sshd:session): set_loginuid failed opening loginuid
Sep 22 21:10:57 ip-10-150-175-70 sshd[27931]: Accepted publickey for root from x.x.x.x port 21536 ssh2
Sep 22 21:10:57 ip-10-150-175-70 sshd[27931]: pam_unix(sshd:session): session opened for user root by (uid=0)
Sep 22 21:10:57 ip-10-150-175-70 sshd[27931]: pam_loginuid(sshd:session): set_loginuid failed opening loginuid

違うホスト名
ip-10-146-90-73
ip-10-150-175-70
が確認できます。

これでsyslogサーバの完成です。
[PR]



by cimacoppi | 2011-09-22 21:23 | Linux

Wordpressのデータ復旧について

AWS上でWordpressを運用していて、不具合が発生して
データを前日データに巻き戻す必要がありました。

今回はこの、前日データへの巻き戻し方法を書きます。

まず、今回の不具合は、Wordpressの設定を修正する必要があり、
現在の状態を残したいため、Wordpressのコンテンツ領域をコピーして、
新たにバーチャルホストを設定しました。

VirtualHostはこんな感じにしました。

VirtualHost *:80
ServerAdmin webmaster@hoge.co.jp
DocumentRoot /home/www/htdocs/Wordpress/
ServerName hoge.co.jp
/VirtualHost


VirtualHost *:80
ServerAdmin webmaster@test.hoge.co.jp
DocumentRoot /home/www/htdocs/Wordpress-test/
ServerName test.hoge.co.jp
/VirtualHost

まずは、test.hoge.co.jpにアクセスして正常に表示していることを、
確認したのですが、hoge.co.jpにアクセスしたところ、レイアウトが崩れてしまいました。
これは、同じMySQLのデータペースを利用していたことが原因と思われます。
※幸いにも前日データからのWordpressの更新はありませんでした。

・まずは現行DBのバックアップ(db名はwpとします。)
mysqldump wp > wp.dump-backup

・次に前日スナップショットからAMI作成
ec2reg -K pk.pem -C cert.pem --region ap-northeast-1 -s snap-aaaaaaaa -b "/dev/sdf1=snap-bbbbbbbb:100:false" -a i386 -n wp-ami

・wp-ami AMIよりインスタンス起動

・前日インスタンスにログイン
・wpデータベース dump
mysqldump wp > wp.dump

・wp.dumpを現行サーバにアップロード

・現行サーバMySQL接続
・wp データベース削除
drop database wp;

・wp データベース作成
create database wp;

前日wpデータベースインポート
mysql wp< wp.dump

これで、巻き戻しが完成しました。

今回の作業でわかったことは
・日々のsnapshotの重要性
・クラウドはある程度の復旧は簡単にできる
[PR]



by cimacoppi | 2011-09-21 09:57 | Linux

複数のユーザを一括作成

Linuxでユーザを複数作成する時、少し大変な時があります。
そんな時は、newusersコマンドが便利です。

利用方法は

・まずはグループ作成
groupadd -g 2001 hoge

・作成するユーザをuser.txtに記述

記述方法は/etc/passwdと同じように
user:passwd:userID:groupID:comment:home-dir:shell
となります。

vi user.txt
test1:test1:2001:2001::/home/test1:/bin/bash
test2:test2:2002:2001::/home/test2:/bin/bash
test3:test3:2003:2001::/home/test3:/bin/bash
test4:test4:2004:2001::/home/test4:/bin/bash
test5:test5:2005:2001::/home/test5:/bin/bash
test6:test6:2006:2001::/home/test6:/bin/bash
test7:test7:2007:2001::/home/test7:/bin/bash
test8:test8:2008:2001::/home/test8:/bin/bash
test9:test9:2009:2001::/home/test9:/bin/bash
test10:test10:2010:2001::/home/test10:/bin/bash

newusers コマンド実行
newusers user.txt

確認
grep test /etc/passwd

test1:x:2001:2001::/home/test1:/bin/bash
test2:x:2002:2001::/home/test2:/bin/bash
test3:x:2003:2001::/home/test3:/bin/bash
test4:x:2004:2001::/home/test4:/bin/bash
test5:x:2005:2001::/home/test5:/bin/bash
test6:x:2006:2001::/home/test6:/bin/bash
test7:x:2007:2001::/home/test7:/bin/bash
test8:x:2008:2001::/home/test8:/bin/bash
test9:x:2009:2001::/home/test9:/bin/bash
test10:x:2010:2001::/home/test10:/bin/bash

ls -l /home
[root@cimacoppi home]# ls -l
drwx------ 2 test1 hoge 4096 9月 16 10:27 test1
drwx------ 2 test10 hoge 4096 9月 16 10:27 test10
drwx------ 2 test2 hoge 4096 9月 16 10:27 test2
drwx------ 2 test3 hoge 4096 9月 16 10:27 test3
drwx------ 2 test4 hoge 4096 9月 16 10:27 test4
drwx------ 2 test5 hoge 4096 9月 16 10:27 test5
drwx------ 2 test6 hoge 4096 9月 16 10:27 test6
drwx------ 2 test7 hoge 4096 9月 16 10:27 test7
drwx------ 2 test8 hoge 4096 9月 16 10:27 test8
drwx------ 2 test9 hoge 4096 9月 16 10:27 test9

ユーザ毎の秘密鍵も、まとめて作成できたら便利なんですがね
[PR]



by cimacoppi | 2011-09-16 10:36 | Linux

独自CAを利用してSSL証明書を作成2

前回CSRを作成しましたので、今回はCAの作成方法を書きます。


・CA用秘密鍵の作成
[root@ip-10-150-175-70 SAGYO]# openssl genrsa -des3 -out ca.key -rand rand.dat 2048
2738 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
....+++
...................................................................+++
Enter pass phrase for ca.key: ←パスフレーズ
Verifying - Enter pass phrase for ca.key: ←パスフレーズ


・CA用証明書の作成
[root@ip-10-150-175-70 SAGYO]# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ←国名
State or Province Name (full name) [Berkshire]:Tokyo ←都道府県
Locality Name (eg, city) [Newbury]:Minato-ku ←市町村 
Organization Name (eg, company) [My Company Ltd]:IRET ←会社名
Organizational Unit Name (eg, section) []:cloudpack ←部門
Common Name (eg, your name or your server's hostname) []:ssl.cloudpack.jp ←サーバ名
Email Address []:


サーバ用証明書の作成はmod_sslのsign.shを利用します。
(9/12時点での最新版は2.8.31-1.3.41)になります。

wget http://www.modssl.org/source/mod_ssl-2.8.31-1.3.41.tar.gz


・サーバ用証明書の作成
[root@ip-10-150-175-70 SAGYO]# ./mod_ssl-2.8.31-1.3.41/pkg.contrib/sign.sh secure.cimacoppi.biz.csr
CA signing: secure.cimacoppi.biz.csr -> secure.cimacoppi.biz.crt:
Using configuration from ca.config
Enter pass phrase for ./ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'JP'
stateOrProvinceName :PRINTABLE:'Tokyo'
localityName :PRINTABLE:'Minato-ku'
organizationName :PRINTABLE:'Umiyama inc'
organizationalUnitName:PRINTABLE:'support'
commonName :PRINTABLE:'secure.cimacoppi.biz'
Certificate is to be certified until Sep 11 04:18:16 2012 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: secure.cimacoppi.biz.crt <-> CA cert
secure.cimacoppi.biz.crt: OK

実際に作成されたファイルは下記になります。

・CA用証明書
a0173028_17331087.jpg


・サーバ用証明書
a0173028_17333877.jpg

[PR]



by cimacoppi | 2011-09-12 17:35 | Linux

独自CAを利用してSSL証明書を作成

今回は独自CAを作成して、独自ドメイン証明書の作成方法を書きます。

まずはCSRの作成です。
今回作成する独自ドメインは、
secure.cimacoppi.biz
とします。


・randファイル作成
openssl dgst /var/log/* > rand.dat


・keyファイル作成

[root@ip-10-150-175-70 SAGYO]# openssl genrsa -rand rand.dat -des3 -out secure.cimacoppi.biz.key 2048
2738 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
..............................................................+++
...............................+++
e is 65537 (0x10001)
Enter pass phrase for secure.cimacoppi.biz.key: ←パスフレーズ入力
Verifying - Enter pass phrase for secure.cimacoppi.biz.key: ←パスフレーズ入力

・CSRファイル作成

[root@ip-10-150-175-70 SAGYO]# openssl req -new -key secure.cimacoppi.biz.key -out secure.cimacoppi.biz.csr
Enter pass phrase for secure.cimacoppi.biz.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP ←国名
State or Province Name (full name) [Berkshire]:Tokyo ←都道府県
Locality Name (eg, city) [Newbury]:Minato-ku ←市町村
Organization Name (eg, company) [My Company Ltd]:Umiyama inc ←会社名
Organizational Unit Name (eg, section) []:support ←部門
Common Name (eg, your name or your server's hostname) []:secure.cimacoppi.biz Commonネーム
Email Address []: ←空白

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:←空白
An optional company name []:←空白

・CSRファイルの中身確認(Subject欄で確認)

[root@ip-10-150-175-70 SAGYO]# openssl req -noout -text -in secure.cimacoppi.biz.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=JP, ST=Tokyo, L=Minato-ku, O=Umiyama inc, OU=support, CN=secure.cimacoppi.biz
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)


・パスフレーズ確認
openssl rsa -in secure.cimacoppi.biz.key -passin pass:パスフレーズ

writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAtWGRvfOhLXRz9ExqK4CObxtTw1z2UL12JtJGYCoPEy/cmt4i


・apache起動時パスフレーズ回避

[root@ip-10-150-175-70 SAGYO]# openssl rsa < secure.cimacoppi.biz.key > secure.cimacoppi.biz.key.out
Enter pass phrase:
writing RSA key

これでCSRファイル作成完了です。

次回、このCSRファイルを利用してSSL証明書を作成します。
[PR]



by cimacoppi | 2011-09-12 10:22 | Linux

クラウド・ノイズ
by cimacoppi
プロフィールを見る
画像一覧

検索

最新の記事

mod_line_editを..
at 2012-12-14 22:25
nagiosでOracleの..
at 2012-12-13 12:25
s3cmdでmultipar..
at 2012-12-06 15:59
tcpservr をssl化する
at 2012-03-10 21:50
telnetコマンドでpop..
at 2012-03-06 15:59

最新のトラックバック

ファン

ブログジャンル

画像一覧