Linuxまとめ

自分で1から立ち上げる場合

導入 

 OSのisoをダウンロード
http://www.centos.org/に行き、Downloads→Mirror List→South American, Asian, Oceania, Middle Eastern, African and Other Regional→日本の機関を選び、HTTPもしくはFTPをクリック→バージョン選択→isos→i386→一番容量の大きいやつをダウンロード

 インストール方法(VMWareの場合)

  1.   VMWareをダウンロードし、インストール
  2. 起動し、新しい仮想マシンの作成をクリックし、後でOSをインストールを選択し次へ
    OSの種類とバージョンを選択し次へ
  3. 仮想マシン名を入力し次へ
  4. ディスク容量の指定をし(デフォルトでOK)、次へ→完了
  5. 仮想マシンの設定の編集から、ネットワークアダプタをブリッジに、CD/DVDから接続
  6. ISOイメージファイルを使用するに変え、OSのISOを選択→OK
  7. 仮想マシンの再生
  8. Welcome to CentOS バージョン云々!という画面で、一番↑を選択
  9. ディスクのチェックをするか聞かれるが、時間がかかるのでSkip
  10. 使用する言語(Japanese)、キーボードの言語を選択
  11. Basic Storage Devicesを選択
  12. Yesのほうを選択
  13. ホストネームを入力
  14. ここで、左下のconfigure networkをクリックし、ネット接続の設定をする
  15. タイムゾーンを選択
  16. Root(Windows ServerでいうところのAdministrator)のPWを入力
  17. 上から2番目のを選択し、次へ、Write...を選択
  18. Minimalを選択し次へ
  19. インストールが完了したらReBootを選択し、再起動

作業用ユーザ作成 

useradd ユーザ名で作成

passwd ユーザ名でユーザのパスワード変更

sshd、sudoの設定、特定のユーザ以外rootになれないようにする

sshdの設定、/etc/hosts.allowにsshd: jpを記述し、hosts.denyをALL:ALLに変える 

次にsudoの設定、まずwheelグループにsuとsudoを使えるようにしたいユーザを入れる

usermod -G wheel user 

sudoの設定は、visudoコマンドで/etc/sudoersファイルを開き、# %wheelとなっている部分の#を消してwheelグループを有効にする
特定のユーザ以外rootになれないようにするには、/etc/pam.d/suをviで編集して、auth required pam_wheel.so use_uidの行をコメントから外す

エイリアスを設定

作業中、うっかりやらかさないようにエイリアスを設定する
書く場所はetc/.bashrc内で、次の文章の各行の頭にaliasを必ず付ける 
cp='cp -i' 
mv='mv -i' 
rm='rm -i' 
ll='ls -l' 
ls=ls -F' 
la='ls -la'等を設定すると便利

yumでインストールできない物をインストールするためにRPMforgeを導入する

 ※以下CentOS6の場合

yum -y install yum-plugin-prioritiesでyumで入れたものをrpmで上書きしてしまわないようにyum-plugin-prioritiesを入れる

vi /etc/yum.repos.d/CentOS-Base.repoで標準リポジトリ設定ファイル編集

[base]と[updates]と[extras]の一番後ろにpriority=1を追記

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpmでrpmforge-releaseダウンロード

rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpmでRPMforgeリポジトリインストール

rm -f rpmforge-release-*でダウンロードしたファイルを削除

yum -y update rpmforge-releaseでrpmforge-releaseアップデート

以上で完了 

使える物をインストールする 

 wget,unzip,man,man-pages-ja,vim,telnet,bind-utils等の、使える物をyum installでインストールする

yum install unzip man等、半角スペースで区切ると一気にインストールできる 

サービスの設定を変えた変更したのを適応するために、絶対にservice サービス名 stop/startでサービスを再起動させる 例:sshd iptables postfix bind httpd

DNS

自宅等でサーバを1から立ち上げる場合、 selinuxを切る

/etc/selinux/configの上から2つめのSELinux = の部分の=の右側をdisabledに変える 

bind,caching-nameserverをインストール

まず/etc/resolv.confでDNSをルータに向ける (自分に向けるのはちゃんと設定ができてから)

・bindの設定
 設定ファイルは/etc/named.conf
 listen-on port 53の127.0.0.1の後ろに自分のIPアドレスを追記
 allow-queryのlocalhost;となっている部分を所属している所で使えるIPの範囲に変更(bindを使用する範囲)
viewのmatch-clientsの{}の中をanyに変更 
後ろの方に正引きの 
zone "ドメイン名";
  type master;
  file "ドメイン名.zone";
  allow-update{ none };
と逆引きの
zone "2.168.192.in-addr.arpa" {
  type masterl
  file "2.168.192.zone" ;
  allow-update{ none };
の2つを追記
named-checkconf でBINDの設定をチェックすることができる

・zoneファイル

 次に、/etc/named/内にドメイン名.zoneファイルを作る
サンプルコードをコピーしてから編集すると楽
正引きのファイルに 
IN NS フルサーバ名.
IN MX 10 フルサーバ名. 
A サーバのIPアドレス
ホスト名 IN A サーバのIPアドレス
router IN A ルータのIPアドレス
www IN CNAME ホスト名等を追加
MXレコードは、メールを管理するドメインを管理するサーバのホスト名を返すもの
逆引きのファイルに
 IN NS ドメイン名.
 IPアドレスの第4オクテット IN PTR ドメイン名.を追加
serialの数字は、ファイルを変更する際に一番最初に数字を増加させる 
設定を変更したら、そのたびにnamedを停止させ、起動

・名前解決出来ているかチェック 

nslookupを使う

nslookupで特定のレコードを選択する場合は、
1、nslookup
2、ドメイン名入力
3、set q=MX 例としてMX
4、もう一度ドメイン名で出来る
LAN内のほかのクライアントからサーバへDNSを向けても名前解決が出来ない場合は、selinuxの設定を一時的に切ってみる

webサーバ

Webサーバの構築に必要なhttpdを入れる
PHPを使えるようにするためにphp,php-cli,php-commonを入れる

 ・アクセスログ

アクセスログは/var /log/httpd/access_log、
エラーログは/var/log/httpd/error_log

・ DIGEST認証

 DIGEST認証は、ホームページに認証をかけることができる
 /etc/httpd/conf/httpd.confファイルの<Directory></Directory>で囲まれてない所に
<Directory "/var/www/html/secret">
  AuthType Digest
 AuthName "Secret Zone"
 AuthUserFile /etc/httpd/.htdigest
 Require user ユーザ名
</Directory>
を追加
その後にhtdigest -c /etc/httpd/.htdigest 'Secret Zone' ユーザ名と入力し、パスワードを設定
これで認証をかけることができる
Secret Zoneの部分は必ず、全て同じ文字列にすること

・バーチャルホスト

 /etx/httpd/conf/httpd.confを編集
NameVirtualHost *:80をコメントから外す
<VirtualHost *:80>
 ServerName バーチャルホストのフルサーバ名
  DocumentRoot /var/www/バーチャルホストのフルサーバ名
 ErrorLog /var/log/httpd/バーチャルホストのフルサーバ名_log
 CustomLog /var/log/httpd/バーチャルホストのフルサーバ名_accersslog
</VirtualHost> 
/etc/httpd/conf/httpd.confの中身で
CustomLog /var/log/httpd/www2.nakamura.suncom.local_access_logの後ろにcommonをつける
commonの意味は、ログの中身で何月何日に誰が何を見に来たとかの形式

Apacheのバージョンを出さないようにする

/etc/httpd/conf/httpd.confの編集
ServerTokens OSをServerTokens Prodに変更し、httpdを再起動

VPSの場合はServerTokens ProductOnlyとServerSignature Offに変更

・ユーザのホームディレクトリからWebページ公開

ページを公開したいユーザのホームディレクトリにpublic_htmlという名前のディレクトリを作成、公開したいhtmlファイル等はこのディレクトリに入れる

パーミッションを、711にする

/etc/httpd/conf/httpd.confに色々記述

下の方に書いてあるUserDir disableをUserDir enabled ユーザ名に変更、もしくは追加

#UserDir public_htmlをコメントから外すか、 UserDir public_htmlを追加 

<Directory /home/*/public_html> ~ </Directory>をコメントから外す

これでhttp://サーバのIPアドレス/ユーザ名で、ユーザごとにWebページを公開することができる 

ファイルサーバ(Samba) 

yum install sambaで入れる

・Sambaの設定ファイルの設定

/etc/samba/smb.conf で設定

中身は3つのセクションに分かれている
[global]はサーバ全体の設定
[homes]はユーザのホームディレクトリの共有に関する設定
[printers]はプリンタの共有に関する設定 

・[global]の設定
unix charset = UTF-8
dos charset = CP932
display charset = UTF-8の3行を追加
これを追加しないと、Windows Vista以降で、Linuxからいじった物だけ日本語が文字化けする
次にworkgroup = MYGROUPMYGROUPをWindowsが所属しているWORKGROUPに変える
hosts allow = 192.168.1. 127. 内部からのみアクセスできるようにする
socket address = サーバのアドレス 

・[printers]の設定 
プリンタを使わないなら、load printers = yesの頭に;をつけてコメントに
load printers = no
disable spoolss = yes  の2行を加えてプリンタ共有を無効化に

・その他フォルダの設定
[homes]
browseableをyesにするとブラウザから見れるようになる
書き込みできるようにwritableはyesに
[public]
comment = コメント
path = 共有するフォルダのパス
public = yes
writable = yes
guest only = yes ゲストの許可
guest ok = yes どのユーザでもアクセスできるようにする
以上はWindows Serverでいうところの共有の設定なので、細かいのはフォルダやファイルのアクセス権でよろしくやると良い
browseableをnoにすると隠し共有にできる 

メールサーバ(SMTPPOP3

SMTP 

Postfixを入れる yum install postfix
以下手順
/etc/postfix/main.cfを、main.cf.org等の名前でコピー
myhostname = ホスト名を追加
mydomain = ドメイン名を追加
myorigin = $mydomainをコメントから解除
inet_interfaces = allをコメント解除
inet_interfaces = localhostをコメントに
mydestnation = hogehogeの部分に、@以降をドメインのみにしてもメールを送れるようにするため、$mydomainを追加
mynetworks = 信頼するIPアドレスを追加 例:192.168.2.0/24
/etc/postfix/main.cfのmynetworks = hogeと設定する部分に最初に書いてあるのは消すべき
168.100.189.0/28等
メールを見たり送ったりするために、mailコマンドをyum install mailxで入れる
メールを送るのはmail ユーザ名で
メール本文の入力を終わるのには.だけの行を作りEnter
メールの削除はルート権限でpostsuper -d キューIDで削除
全部削除する場合は、キューIDの所をALLにする 
メールのログは/var/log/maillog

 ・POP3

dovecotを入れる yum install dovecot
パスワード平文化を許可するために/etc/dovecot/conf.d/10-auth.confを変更
disable_plaintext_auth = no
auth_mechanisms = plain login この2行のように変更
認証をよろしくするために/etc/dovecot/conf.d/10-master.confを変更
unix_listener /var/spool/postfix/private/auth{
mode = 0666
user = postfix
group = postfix

メールの場所を指定するために/etc/dovecot/conf.d/10-mail.confを変更
mail_location = mbox:~/mail:INBOX=/var/mail/%u 

・認証デーモン

pop3smtplinuxとの間でよろしくやってくれるやつ
yum install cyrus-sasl-plain cyrus-sasl-md5で入れる
service saslauthd startで起動 

・ここでsmtp-authの設定

/etc/postfix/main.cfの一番後ろに
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth ←ここはdovecotのprivate/authの部分と合わせる
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks,permit_authenticates,reject_unauth_destination
broken_sasl_auth_clients = yes
以上を追加 
dovecot,postfxの2つを停止させてから起動(再起動はダメ)
既存ユーザのPWを1回変える(前のPWと同じでもOK) 

・rootからメールを見たり送ったりする場合

su -でrootになる

su -でrootになると、環境変数を引き継がずにrootになれる

・VPSの場合

sendmailが入っている場合を想定

まずsendmailを止める chkconfig sendmail offとservice sendmail stop

alternatives --config mtaでメールサーバ切り替え

sendmailからpostfixに切り替えるので2を選択

 ちゃんと切り替わったかどうか確認

ls -l /etc/alternatives/
# ls -l /etc/alternatives/mtalrwxrwxrwx 1 root root 26 2月 11 11:25 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix

上のようになっていればOK 

・メールの転送

転送をしたいメールが送られてくるユーザ名/.forward内に、転送先のメールアドレスを記述

この時、.forwardのパーミッションは644か600にするといいらしい 

ファイアウォール

/etc/sysconfig/iptablesで設定

VPSの場合、雛形が無いので以下に雛形を記述

 # Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*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-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

サービスを追加したら、絶対ファイアウォールの設定もする

DNS→ポート番号53、TCPとUDPの両方を許可(UDPだけでもいいかも?)

http→番号80、TCP許可

SMTP→番号25、TCP許可

POP3→110、TCP許可 

samba→137,138はUDP、139,445はTCP 

SELinux 

SELinuxとは、root権限が奪われた時のことを考えて、プロセスを最小限の権限で動かしている
このため、root権限が奪われても被害が少なくて済む
SELinuxを一時的に止めるにはsetenforce 0
恒久的に止めるには、/etc/selinux/configの上から2つめのSELinux = の部分の=の右側をdisabledに変える 

cron 

crontab -eで編集、-lで見ることができる

編集の例 * */1 * * * bash シェルスクリプトで1時間おきにシェルスクリプトを実行する
〇時間おきと指定する場合は、分の指定も必要 
*の部分は左から分、時、日、月、曜日
*を数値にかえるとその時間や日にちを指定、*/数値で〇時間おき等を指定できる
曜日は0→日、1→月  

MAILTO=メールアドレスで、cronの通知をメールアドレスへ送ることができる

シェルスクリプトはフルパスで書いた方が良い

全ての設定が終わったら、yum updateで入っているパッケージをアップデートする

シェルスクリプト 

細かいif等の使い方はhttp://s4232005.hatenablog.com/entry/2012/10/30/220837

運用

top WindowsのタスクマネージャのLinux

シフト+mでメモリを喰っている順に並ぶ、qで閉じる

kill プロセスID(PID)でプロセスを強制終了させれる、PIDはps -efで見れる

rootで動いているプロセスは、rootからじゃないと強制終了させれない

vmstat Windowsのタスクマネージャ(パフォーマンス)のLinux

-nをつけると、n秒ごとに表示

iostat ハードディスクごとに、ハードディスクをどれだけ読み書きしているかを見れる

iostatはyum install sysstatで入れる

メールでコマンド

/etc/aliasesに追記していく

hoge: "|シェルスクリプト等|"という風に書く、追記したあとはnewaliacesで更新

これで、hogeさんにメールを送ると、シェルスクリプト等と書いた部分が動く

その他

サーバを監視するためにlogwatchを入れるのも良い yum install logwatch

chkconfig サービス名 on/offで、サーバが立ち上がった時に自動でサービス名を起動するかどうかを設定できる

スクリプトで、windowsでコードを書きwinscp等でサーバへファイルを移す場合、改行コードの問題でスクリプトが動かなかったりするので、unix2dosコマンドを使い、改行コードを変換する

使用例:unix2dos hogehoge これはドツボにハマりやすいので注意、空白の行が原因でエラーが出ている 場合は、改行コードを疑うべし

yum check-updateでアップデートできるパッケージを確認できる

telnet 繋ぎたいipアドレス ポート番号で、そのポート番号が開いているかどうか確認できる、問題解決の時に使うと便利

 

Linux勉強(ファイルサーバ、その他)

Sambaを使うので、yum install sambaで入れる

Sambaの設定ファイル(/etc/samba/smb.conf)の設定

 中身は3つのセクションに分かれている

[global]はサーバ全体の設定

[homes]はユーザのホームディレクトリの共有に関する設定

[printers]はプリンタの共有に関する設定

[global]の設定

unix charset = UTF-8

dos charset = CP932

display charset = UTF-8の3行を追加

これを追加しないと、Windows Vista以降で、Linuxからいじった物だけ日本語が文字化けする

次にworkgroup = MYGROUPMYGROUPをWindowsが所属しているWORKGROUPに変える

hosts allow = 192.168.1. 127. 内部からのみアクセスできるようにする

socket address = サーバのアドレス

[printers]の設定 

 今回はプリンタを使わないので

load printers = yesの頭に;をつけてコメントに

load printers = no

disable spoolss = yes  の2行を加えてプリンタ共有を無効化に

その他フォルダの設定

[homes]

browseableをyesにするとブラウザから見れるようになる

書き込みできるようにwritableはyesに

[public]

comment = コメント

path = 共有するフォルダのパス

public = yes

writable = yes

guest only = yes ゲストの許可

guest ok = yes どのユーザでもアクセスできるようにする

以上はWindows Serverでいうところの共有の設定なので、細かいのはフォルダやファイルのアクセス権でよろしくやると良いと思う

 browseableをnoにすると隠し共有にできる 

その他 

yum updateで入っているパッケージのアップデートができる

yum check-updateでアップデートできるパッケージが見れる

定期的にシェルスクリプトを実行してくれる

crontab -eで編集、-lで見ることができる

編集の例 * */1 * * * bash シェルスクリプトで1時間おきにシェルスクリプトを実行する

〇時間おきと指定する場合は、分の指定も必要 

*の部分は左から分、時、日、月、曜日

 *を数値にかえるとその時間や日にちを指定、*/数値で〇時間おき等を指定できる

曜日は0→日、1→月 

sambaの設定をしたら、ファイアウォールの設定をする
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
上4行を追加 

Linux勉強(メールサーバ)

メールサーバ(SMTP)の設定

Postfixを使う

以下手順 

  1. /etc/postfix/main.cfを、main.cf.org等の名前でコピー
  2. myhostname = ホスト名を追加
  3. mydomain = ドメイン名を追加
  4. myorigin = $mydomainをコメントから解除
  5. inet_interfaces = allをコメント解除
  6. inet_interfaces = localhostをコメントに
  7. mydestnation = hogehogeの部分に、@以降をドメインのみにしてもメールを送れるようにするため、$mydomainを追加
  8. mynetworks = 信頼するIPアドレスを追加 例:192.168.2.0/24

/etc/postfix/main.cfのmynetworks = hogeと設定する部分に最初に書いてあるのは消すべき
168.100.189.0/28等

メールを見たり送ったりするために、mailコマンドをyum install mailxで入れる

メールを送るのはmail ユーザ名で

メール本文の入力を終わるのには.だけの行を作りEnter

メールの削除はルート権限でpostsuper -d キューIDで削除

全部削除する場合は、キューIDの所をALLにする 

メールのログは/var/log/maillog 

Dovecot(POP3)の設定 

yum install dovecotで入れる

パスワード平文化を許可するために/etc/dovecot/conf.d/10-auth.confを変更

disable_plaintext_auth = no

auth_mechanisms = plain login この2行のように変更

認証をよろしくするために/etc/dovecot/conf.d/10-master.confを変更

unix_listener /var/spool/postfix/private/auth{

mode = 0666

user = postfix

group = postfix

メールの場所を指定するために/etc/dovecot/conf.d/10-mail.confを変更

mail_location = mbox:~/mail:INBOX=/var/mail/%u

認証デーモン

pop3smtplinuxとの間でよろしくやってくれるやつ

yum install cyrus-sasl-plain cyrus-sasl-md5で入れる

service saslauthd startで起動

ここでsmtp-authの設定

/etc/postfix/main.cfの一番後ろに

smtpd_sasl_auth_enable = yes

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth ←ここはdovecotのprivate/authの部分と合わせる

smtpd_sasl_security_options = noanonymous

smtpd_recipient_restrictions = permit_mynetworks,permit_authenticates,reject_unauth_destination

broken_sasl_auth_clients = yes

以上を追加 

dovecot,postfxの2つを停止させてから起動(再起動はダメ)

 既存ユーザのPWを1回変える(前のPWと同じでもOK) 

SELinux

SELinuxとは、root権限が奪われた時のことを考えて、プロセスを最小限の権限で動かしている

このため、root権限が奪われても被害が少なくて済む

SELinuxを一時的に止めるにはgetenforce 0

恒久的に止めるには、/etc/selinux/configの上から2つめのSELinux =  の部分の=の右側をdisabledに変える

その他

POP3はサーバからメールを自分の所へ持ってくる、なので、検索等は自分の所でやる

後、サーバ側からメールを持ってきたら、サーバ側のメールは消える 

IMAP4は、サーバ側へメールを見に行く

なので、検索などはサーバ側で行う事ができる 

rootからメールを見たり送ったりする場合は、su -で環境変数を引き継がずにスーパーユーザになる

Linux勉強(DNSサーバ、Webサーバの設定)

chkconfig オプション サービス名 on/offで、Linux起動時にサービスが自動で起動するかどうかを設定できる  

サービス名例:httpd,named

DNSサーバ

DNSサーバの構築に必要なbind,caching-nameserverを入れる 

bindの設定

まず/etc/resolv.confでDNSをルータに向ける (自分に向けるのはちゃんと設定ができてから)

 設定ファイルは/etc/named.conf

 listen-on port 53の127.0.0.1の後ろに自分のIPアドレスを追記

 allow-queryのlocalhost;となっている部分を所属している所で使えるIPの範囲に変更(bindを使用する範囲)

viewのmatch-clientsの{}の中をanyに変更 

後ろの方に正引きの 

zone "ドメイン名";

  type master;

  file "ドメイン名.zone";

  allow-update{ none };

と逆引きの

zone "2.168.192.in-addr.arpa" {

  type masterl

  file "2.168.192.zone" ;

  allow-update{ none };

の2つを追記

named-checkconf でBINDの設定をチェックすることができる

zoneファイル 

次に、/etc/named/内にドメイン名.zoneファイルを作る

サンプルコードをコピーしてから編集すると楽

正引きのファイルに 

IN NS フルサーバ名.

IN  MX 10 フルサーバ名. 

A サーバのIPアドレス

ホスト名 IN A サーバのIPアドレス

router IN A ルータのIPアドレス

www  IN CNAME ホスト名等を追加

MXレコードは、メールを管理するドメインを管理するサーバのホスト名を返すもの

逆引きのファイルに

 IN NS ドメイン名.

 IPアドレスの第4オクテット IN PTR ドメイン名.を追加

serialの数字は、ファイルを変更する際に一番最初に数字を増加させる 

設定を変更したら、そのたびにnamedを停止させ、起動 

Webサーバ

Webサーバの構築に必要なhttpdを入れる
PHPを使えるようにするためにphp,php-cli,php-commonを入れる

ログファイルの場所

OSやソフトのログは/var/log/messagesに、システムのログは/var/logに

アクセスログは/var /log/httpd/access_log、

エラーログは/var/log/httpd/error_log

DIGEST認証

DIGEST認証は、ホームページに認証をかけることができる

 /etc/httpd/conf/httpd.confファイルの<Directory></Directory>で囲まれてない所に

<Directory "/var/www/html/secret">

  AuthType Digest

 AuthName "Secret Zone"

 AuthUserFile /etc/httpd/.htdigest

 Require user ユーザ名

</Directory>

を追加

その後にhtdigest -c /etc/httpd/.htdigest 'Secret Zone' ユーザ名と入力し、パスワードを設定

これで認証をかけることができる

Secret Zoneの部分は必ず、全て同じ文字列にすること

バーチャルホスト

/etx/httpd/conf/httpd.confを編集

NameVirtualHost *:80をコメントから外す

<VirtualHost *:80>

 ServerName バーチャルホストのフルサーバ名

  DocumentRoot /var/www/バーチャルホストのフルサーバ名

 ErrorLog /var/log/httpd/バーチャルホストのフルサーバ名_log

 CustomLog /var/log/httpd/バーチャルホストのフルサーバ名_accersslog

</VirtualHost>  

/etc/httpd/conf/httpd.confの中身で
CustomLog /var/log/httpd/www2.nakamura.suncom.local_access_logの後ろにcommonをつける
commonの意味は、ログの中身で何月何日に誰が何を見に来たとかの形式 

Apacheの起動、再起動、停止 

service httpd startでApache起動、startをrestartに変えれば再起動、stopに変えれば停止

DNS(ポート番号53)とHTTP(ポート番号)80をファイアウォールで許可する

DNSはtcpとudpの2種類を許可する、これをしないと、ほかのクライアントからDNSにアクセスできない

/etc/sysconfig/iptablesの中身で、
ほかの許可されているやつをコピペした後にポート番号の部分だけ変えてやればいい
許可した後は、サービスを停止させ、起動させる

その他 

 nslookupで特定のレコードを選択する場合は、
1、nslookup
2、ドメイン名入力
3、set q=MX 例としてMX
4、もう一度ドメイン名で出来る

LAN内のほかのクライアントからサーバへDNSを向けても名前解決が出来ない場合は、selinuxの設定を切る

 Apacheのバージョンを出さないようにする
/etc/httpd/conf/httpd.confの編集
ServerTokens OSをServerTokens Prodに変更し、httpdを再起動

 

 

Linux勉強(ネットワーク設定、管理)

コマンド

 traceroute ターゲット ターゲットまでの仲介するゲートウェイを調べることができる

ifconfig インターフェース IPアドレスとサブネットマスクの情報を見れる、インターフェースは省略可 

netstat ネットワークの状況を表示する、-rをつけるとコンピュータのルーティング、-nをつけると、IPアドレスを数値で表示する

ps 自分が動かしているサービスの一覧が見れる、-eをつけると全プロセスの情報、-fをつけるとユーザごとのプロセスの情報が見れる

chkconfig  サービスの自動起動の設定ができる、--listをつけると、サービスの状態の一覧が見れる

runlevel 今のランレベルを見れる 

nslookup ターゲット ターゲットの名前とIPアドレスを返す 

netstat ターゲット サービスの表示、-aをつけるとすべてのサービス、-tをつけるとTCPのサービス、-uをつけるとUDPのサービスの一覧が見れる 

RedHat系列のIPアドレスの設定ファイル

/etc/sysconfig/network-scripts/ifcfg-XXXにある

DHCPIPアドレスを振る場合は、ONBOOTをONにする、OFFになっていると、起動時にIPアドレスを自動で設定してくれない

 ゲートウェイのアドレスとホスト名

 /etc/sysconfig/networkにある

 NETWORKINGはネットワークが有効か無効かが書いてある

 ルーティングの変更

route add -net ネットワークアドレス [netmask ネットマスク] default gw ターゲット [インターフェース]で、ルーティングを追加することができる、で囲んだところは省略可

addのところをdelにかえると、消すことができる

DNSの設定 

/etc/resolv.confファイルでは、DNSサーバを3つまで指定できる

/etc/hostsファイルで、 ホストの名前とIPアドレスの関係を静的に設定することができる

ネットワークセキュリティ

TCPラッパー

 プログラム単位で制御する

アクセスを制限する/etc/hosts.denyファイルと、アクセスを許可する/etc/hosts.allowファイルがある

設定は、全てを拒否したうえで許可の設定をする

書き方はプログラムのリスト:クライアントのリスト[:シェルスクリプト]

は省略可

全てを拒否や許可する場合、リストの代わりにALLと書くこともできる

/etc/hosts.allow

sshd : 192.168.11.7

/etc/hosts.deny

ALL : ALL

全てを拒否したうえで、192.168.11.7 だけ例外で許可

ファイアウォール

 ポート単位で制御する

iptables -Lでファイアウォールの設定を表示

設定の追加はiptablesコマンドで することもできるが、再起動すると消えてしまうので、/etc/sysconfig/iptablesに書く、そうすると、サービスの起動時に設定される 

 その他

ネットワークインターフェースの再起動は、 /etc/init.d/network restartで、networkの部分をiptablesに変えると、iptablesの再起動ができる

Linux勉強(シェルスクリプト、プログラミング)

シェルとは…カーネルとユーザの橋渡しをしてくれる 

シェルスクリプトとは…ユーザが長いコマンドやいくつものコマンドをいちいち打たなくていいように、自動的に行わせる方法

 シェルスクリプト作成

  1. test.sh等、ファイルを作る
  2. 1行目に#!/bin/bashと、利用するシェルを指定する文章を書く
  3. 後はほかの言語のようにifやfor等を使ってプログラミング

 シェルスクリプトを実行するには実行権限を与えるか、bash シェルスクリプト名で実行

シェルスクリプトでのコマンド

  • echo オプション 文字列もしくは変数 文字列もしくは変数を出力、オプションに-nをつけると改行されなくなる
  • read 変数名 標準入力からデータを読み込む
  • set シェル変数の一覧を表示する、環境変数の一覧を表示したい場合はenvで
  • unset 変数名 変数名のシェル変数を削除 、環境変数の場合はexportで値を設定しない変数を作る 例:a= 
  • source  source /etc/init.d/aaa.shというふうに使うと、  ほかの/etc/init.d/aaa.shというシェルスクリプトを読み込むことができる

 コメントは行の頭に#をつける、つけた行はコメント行になる

引用符…'は全部文字列として認識、"は変数があればその変数を展開、`はコマンドを囲む時に使い、その結果を変数に代入する

 引数… シェルスクリプトを実行する時に、test.sh a b cという風に引数を渡すと、内部で左から$1、$2、$3...というふうに扱われる

特殊な文字列…"等の特殊な文字列を表示させたい場合は 、sedの時みたいに"の前に\をつける

1行が長くなる場合、行末に\をつけることで途中で折り返すことができる

シェルスクリプトでのプログラミング

 変数

  • 代入は$無しで、変数の値を使う時は$有りで使う
  • a=1といったように、変数と=と数値等の間には空白を入れない
  •  a[1]といったようにすれば、配列を使うことができる
  • 配列の中身を表示する時は${a[1]}といったように、$以外を{}で囲む
  • 変数の前にexportをつけると環境変数になり、ほかのシェルスクリプトからも変数を呼び出せる

条件分岐の例文

if文

if [ 条件式 ];then

  処理

elif [ 条件式 ];then

 処理2

else

 処理3

fi 

case文

case 変数 in

 値1)

  処理1;;

 値2)

  処理2;;

esac

 論理積、論理和はC言語と同じで&&と||でできる

繰り返し

 for文

for 変数 in 値のリスト

do

 処理

done

while、until文

while 条件式

do

 処理

done

until文はwhileの部分をuntilに変えるだけ

while文は条件が成立している間、until文は条件が成立していない間ループをまわす

 ほかの言語でのforみたいに使う場合は、exprコマンドを使ってループカウンタ用の変数に数値を加算もしくは減算してやればいい

 select文

select 変数 in リスト

do

 処理

done

ユーザに入力をさせ、その入力に対応している物をリストから出してきて、表示させたりできる 

 繰り返しの制御

 breakを使うとループから抜けることが、continueを使うとループの先頭に戻ることができる

サブルーチン 

function 関数名

{

処理

}

で、関数を作ることができる

頭のfunctionは別につけなくてもいい

returnを使えば返り値を使うことができる

 

Linux勉強(ユーザ、グループ、パスワードについてとユーザ権限とアクセス権)

ユーザ、グループ、パスワードについて

コマンド  

useradd ユーザ名 ユーザ追加

-cをつければコメントを指定、-gをつければプライマリグループ名を指定、-Gをつければ補助グループを指定、-u ユーザID番号でユーザID番号を指定 

usermod ユーザ名 ユーザアカウントを修正

userdel ユーザ名 ユーザアカウントを削除

-rをつければホームディレクトリを削除できる

groupadd グループ名 グループを作成

 -g グループID番号でグループID番号を指定

groupmod グループ名  グループの設定を変更

-nをつけると既存のグループ名を変更できる

groupdel グループ名 グループを削除

 passwd ユーザ名 指定したユーザのパスワードの登録や変更

gpasswd グループ名 指定したグループのパスワードの登録や変更

ID 所属するグループを見る

chage ユーザ ユーザのパスワードの有効期限情報を変更する 

newgrp グループ名 一時的に指定したグループに入る 

su ログインしたいユーザ名で指定したユーザでログイン、suだけならrootでログイン

 -をつけるとスタートアップファイルを読み込んで実行

sudo コマンド rootの権限でしか使えないコマンドが使える

使えるようにするには、まず、wheelグループにsudoを使いたいユーザを追加

次に、visudoコマンドで/etc/sudoersファイルを開き、# %wheelとなっている部分の#を消してwheelグループを有効にする

%wheel ALL=(ALL) ALLの、左から1つ目のALLはどこからの接続で、2つ目のALLは誰の権限で、3つ目のALLはどのコマンドが使えるかにするかを変えれるので、用途に合わせて設定することができる

ユーザの情報とグループの情報とユーザのパスワードを見るには

ユーザの情報は/etx/passwdにある

登録されている内容は左から、ユーザ名/xになっているけど前はパスワード/ユーザID/ユーザが所属するプライマリグループのID番号/コメント/ユーザのホームディレクトリ/ユーザが使うシェル

 グループの情報は/etc/groupに

内容は左からグループ名/xになっているけど前はパスワード/グループID番号/グループに所属しているユーザのリスト

ユーザのパスワードは/etc/shadowに、グループのパスワードは/etc/gshadowに入っている

ユーザ権限とアクセス権について 

コマンド 

chown ユーザ名.(グループ )ディレクトリまたはファイル ファイル所有者の変更

chgrp グループ ディレクトリまたはファイル 所有グループを変更

chmod モード ディレクトリまたはファイル ファイルのモード(アクセス権)を設定

モードの書き方は、8進数3桁での設定(rが4、wが2、xが1)と、モードの書式を複数書いて設定(所有者はu、グループはg、その他はoで指定)する方法がある

8進数の例、chmod 744 testとすると、testにrwx rw  rwという設定ができる

モードの書式の例、chmod u+rwx,go+rw-x testとすると、↑と同じ設定ができる

 ugo、3つとも全部同じ設定をする場合は、ugoをaと書き換えることもできる

↑のコマンドで、ディレクトリの変更をする時に-Rをつけると 、ディレクトリの中のディレクトリやファイルを再帰的に辿って全部変更してくれる

umask 8進数でのモードのマスク値 作成ファイルのモードを制限できる

例えばumaskで022を設定すると、グループとその他にwをつけることができなくなる 

 ファイルのモード

左からファイル種別、所有ユーザの読み書き実行、所有グループの読み書き実行、その他の読み書き実行

rが読み込みで、wが書き込みで、xが実行

ファイルの種別はdがディレクトリ、-がファイル 

例えば、d rwx  r x  r xとあれば、ファイルの種別はディレクトリで、所有ユーザだけが読み書きでき、ほかの2つは読み込みとディレクトリの中を見ることは出来るが、書き込みができない

 モードの指定で、つけると所有者として実行できるsetuidビットと、つけると所有グループとして実行できるsetgidビットと、つけると所有者以外はそのファイルを消せなくなるstickyビットがある

つけ方は、モードの書式を書いてアクセス権を設定する時に、setuidはuの後ろに+sを、setgidはgの後ろに+s、stickyビットは +tと書いてやればいい

消す場合は+を-にする