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の場合)
- VMWareをダウンロードし、インストール
- 起動し、新しい仮想マシンの作成をクリックし、後でOSをインストールを選択し次へ
OSの種類とバージョンを選択し次へ - 仮想マシン名を入力し次へ
- ディスク容量の指定をし(デフォルトでOK)、次へ→完了
- 仮想マシンの設定の編集から、ネットワークアダプタをブリッジに、CD/DVDから接続
- ISOイメージファイルを使用するに変え、OSのISOを選択→OK
- 仮想マシンの再生
- Welcome to CentOS バージョン云々!という画面で、一番↑を選択
- ディスクのチェックをするか聞かれるが、時間がかかるのでSkip
- 使用する言語(Japanese)、キーボードの言語を選択
- Basic Storage Devicesを選択
- Yesのほうを選択
- ホストネームを入力
- ここで、左下のconfigure networkをクリックし、ネット接続の設定をする
- タイムゾーンを選択
- Root(Windows ServerでいうところのAdministrator)のPWを入力
- 上から2番目のを選択し、次へ、Write...を選択
- Minimalを選択し次へ
- インストールが完了したら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等
自宅等でサーバを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にすると隠し共有にできる
・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
・認証デーモン
pop3、smtpとlinuxとの間でよろしくやってくれるやつ
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でメールサーバ切り替え
ちゃんと切り替わったかどうか確認
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とは、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]の設定
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を使う
以下手順
- /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
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
認証デーモン
pop3、smtpとlinuxとの間でよろしくやってくれるやつ
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とは、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の部分は必ず、全て同じ文字列にすること
バーチャルホスト
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のサービスの一覧が見れる
/etc/sysconfig/network-scripts/ifcfg-XXXにある
DHCPでIPアドレスを振る場合は、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勉強(シェルスクリプト、プログラミング)
シェルとは…カーネルとユーザの橋渡しをしてくれる
シェルスクリプトとは…ユーザが長いコマンドやいくつものコマンドをいちいち打たなくていいように、自動的に行わせる方法
シェルスクリプト作成
- test.sh等、ファイルを作る
- 1行目に#!/bin/bashと、利用するシェルを指定する文章を書く
- 後はほかの言語のように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
繰り返し
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と書いてやればいい
消す場合は+を-にする