hylom'sWeblog

- hylom's blog
| about hylom / hylom.net | old contents | login

Fedora 25のhttpd(Apache HTTP Server)でLet's Encryptを使う

posted on 2017/02/10 20:22:39

 Fedora 25では、httpdをインストールするとデフォルトで自己署名証明書を作成してSSLを有効にする設定になっている模様。そのため、certbotコマンドでLet's Encryptで証明書を取得しようとすると失敗するようだ。

# dnf install certbot
# certbot --apche
(...ここで設定を入力する)
Failed authorization procedure. test.hylom.net (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Failed to connect to <IPアドレス>:443 for TLS-SNI-01 challenge

 対策としては、まず/etc/httpd/conf.d/ssl.confをssl.conf.orgなどにリネーム後にhttpdを再起動してSSLをいったん無効にした後、certbotコマンドを実行すれば良い。

Sambaで共有したディレクトリ内のパーミッション問題

posted on 2015/02/27 19:36:50

 Sambaで共有したLinuxマシン上のディレクトリにWindowsからアクセスした際、作成したファイルのパーミッションが755とかになってしまう問題がある。この場合、smb.confで「map archive = no」を指定すると解決する。副作用などについてはググれ。

firewalldでのファイアウォール制御・超基本編

posted on 2014/12/19 17:15:32

 Red Hat Enterprise Linux 7(やCentOS 7など)では、iptablesなどによるパケット制御をfirewalldで行うようになった。このfirewalldを使って、ファイアウォールの設定を行う手順メモ。

前提条件

  • systemctlコマンドでfirewalldを稼動させておく
  • firewalldの設定は「firewall-cmd」コマンドで行う

zone設定

 firewalldには「ゾーン」という概念があり、ゾーンごとに有効なポートなどを指定する。デフォルトで用意されているゾーンには「public」や「home」、「trusted」などが用意されている。

 現在有効なゾーンは「firewall-cmd --list-all」コマンドで確認できる。

# firewall-cmd --list-all
public (default, active)
  interfaces: enp8s0 virbr0 virbr1
  sources:
  services: dhcpv6-client samba ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

 この例では、「enp8s0」および「virbr0」、「virbr1」というインターフェイスが「public」ゾーンに割り当てられている。また、publicゾーンでは「dhcpv6-client」と「samba」、「ssh」というサービスが有効になっている。

サービスの追加

 ゾーンに「サービス」を追加することで、そのサービスを追加できる。定義されているサービスは「firewall-cmd --get-services」コマンドで確認できる。

# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

 特定のゾーンで許可されているサービスは「firewall-cmd --list-service --zone=<ゾーン名>」で確認できる。

# firewall-cmd --list-service --zone=public
dhcpv6-client samba ssh

 ゾーンにサービスを追加するには、「firewall-cmd --add-service=<サービス名> --zone=<ゾーン名>」コマンドを使用する。下記は「public」ゾーンに「http」サービスを追加する例。

# firewall-cmd --list-service --zone=public
dhcpv6-client mysql samba ssh
# firewall-cmd --add-service=http --zone=public
success
# firewall-cmd --list-service --zone=public
dhcpv6-client http mysql samba ssh

 なお、--add-serviceオプションで追加したサービスは、firewalldの再起動後には保持されない。恒久的にサービスを追加するには、「--permanent」オプションを指定する。この場合、即座にはサービスが追加されないので、その後に「firewall-cmf --reload」コマンドを実行してfirewalldの設定をリロードさせると変更が反映される。

# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --list-service --zone=public
dhcpv6-client samba ssh
# firewall-cmd --reload

 また、追加したサービスを削除するには「--remove-service」オプションを使用する。

# firewall-cmd --remove-service=dhcpv6-client --zone=public

systemdでのサービス制御・超基本編

posted on 2014/12/19 16:55:35

 Red Hat Enterprise Linux 7(やCentOS 7など)で導入されたsystemdで、サービスの開始/停止やシステム起動後の自動起動などを設定する手順メモ。

 systemdでは、「systemctl」というコマンドでサービスの制御を行う。サービスを開始/停止するには「start」および「stop」サブコマンドを使用する。また、「status」サブコマンドで稼働状況をチェックできる。

systemctl start <サービス名>
systemctl stop <サービス名>
systemctl status <サービス名>

 システムの起動時にサービスを自動起動させるには「enable」サブコマンドを、自動起動させないように設定するには「disable」サブコマンドを使う。

systemctl enable <サービス名>
systemctl disable <サービス名>

 稼働中のサービスの確認は、「list-units」サブコマンドで行える。サブコマンドを省略すると「list-units」サブコマンドが実行されるので、引数無しでsystemctlコマンドを実行しても同じ結果が得られる。

# systemctl
UNIT                        LOAD   ACTIVE SUB       DESCRIPTION
proc-sys...t_misc.automount loaded active waiting   Arbitrary Executable File Fo
sys-devi...-sda-sda1.device loaded active plugged   VBOX_HARDDISK
  :
  :

 このうち、「.service」で終わっているものがサービスとなる。また、「-t service」オプション付きでsystemctlコマンドを実行することでサービスのみを一覧表示できる。

$ systemctl -t service

 また、「list-units」サブコマンドでは「disabled」に設定されているサービスは表示されない。これらも含めて確認するには、「list-unit-files」サブコマンドを実行する。

$ systemctl list-unit-files

CentOSでRuby 1.9.3やPython 2.7、Python 3.3などを使う簡単な方法

posted on 2014/04/25 20:29:43

 昨年、『米Red Hat、RHELの開発環境をアップデートする「Developer Toolset 2.0」および「Software Collections 1.0」をリリース』という話題がありました。

 Red Hat Enterprise Linux(RHEL)は安定性を重視し、かつ長期にわたって利用されることを想定しているため、ディストリビューションに含まれているソフトウェアは比較的古めのものになっています。そのため、RHELに標準で含まれていない最新のソフトウェアを利用したい場合、自分でソースコードからビルドするか、サードパーティのリポジトリを利用する必要がありました。

 この「Software Collections」(以下SCL)は、そういった背景の下、RHELに含まれていないソフトウェア、もしくはRHELに含まれているものよりもバージョンが新しいソフトウェアを提供するもので、たとえば以下のようなソフトウェアが提供されます。

Ruby 1.9.3 (ruby193)
Python 2.7 (python27)
Python 3.3 (python33)
PHP 5.4 (php54)
Perl 5.16.3 (perl516)
Node.js 0.10 (nodejs010)
MariaDB 5.5 (mariadb55)
MySQL 5.5 (mysql55)
PostgreSQL 9.2 (postgresql92)

 特にRubyにおいては、近年RHELに収録されているRuby 1.8.7をサポートしないライブラリやソフトウェアが増えてきたため、Ruby1.9.3が簡単に導入できるのは便利なところです。

 そして、CentOSがRed Hatの正式プロジェクトとなった影響なのか、このSCLもCentOSで利用できるようになりました(CentOS-announceメーリングリストに流れたアナウンスメール)。

 導入方法は非常に簡単で、「centos-release-SCL」パッケージをインストールするだけです(ドキュメント)。ただし、利用できるのはx86_64のみとなっています。

# yum install centos-release-SCL

 centos-release-SCLパッケージのインストール後は、yumコマンドでそれぞれのパッケージをインストールできるようになります。たとえばruby 1.9.3をインストールするには、以下のようにします。

# yum install ruby193

 ただし、SCLに含まれるソフトウェアは、そのままでは実行できません(ruby193というパッケージをインストールしても、ruby193というコマンドが利用できるようになるわけではない)。実行する二は、sclコマンドを利用する必要があります。sclコマンドは、引数で指定したパッケージを有効にした状態で指定したコマンドを実行するものです。たとえば、以下のようにするとRuby 1.9.3を有効にした環境で「ruby -v」コマンドを実行できます。

$ scl enable ruby193 'ruby -v'
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]

 また、次のように引数にシェルを指定すれば、指定したパッケージが有効になったシェル環境を起動できます。

$ scl enable ruby193 bash
$ ruby -v
ruby 1.9.3p448 (2013-06-27) [x86_64-linux]
$ exit

 ちなみに、この環境でRubyGemをインストールしたい場合はroot権限でsclコマンドを実行してからgemコマンドでインストールする必要があります。

# scl enable ruby193 bash
# gem install <インストールしたいパッケージ>

 そのほかの使い方などはドキュメントをご参照ください。

fdiskでパーティションのリサイズを行う

posted on 2013/02/25 16:01:23

 パーティションのリサイズをするにはGNU partedを使うのが一般的なようです。partedはファイルシステムのリサイズも同時にやってくれる便利なツールですが、CentOS 6.3のインストールメディアに含まれているpartedはext4には対応していないようで、ext4ファイルシステムのリサイズはできません。ext4ファイルシステムのリサイズ自体はresize2fsを使って簡単に実行できるわけですが、どっちにしろパーティションのリサイズは必要になります。

 ということで、パーティションのリサイズをするためのツールを探したわけですが、なかなか見つからない。パーティション操作の定番といえばfdiskですが、リサイズというコマンドはない。そこではっと気付いたのですが、fdiskはよく考えればパーティションテーブルの操作のみを行うのであって、ファイルシステムには影響を与えません。と言うことで、リサイズしたいパーティションを削除して、そのうえで新たなパーティションを作成すればリサイズと同様の処理になるわけです。これには気付かなかった。ただ、このときパーティションのサイズがファイルシステムのサイズよりも大きくなるように気を付けなければなりません。パーティションを拡大する場合はあまり問題にはなりませんが、縮小する場合はサイズを間違えるとちょっとまずいことになる可能性があります(ただし、ext4の場合はマウント時にチェックが行われてファイルシステムのサイズよりもパーティションサイズが小さい場合はエラーが発生する)。

 ただ、fdiskでのサイズ計算はバイト単位ではなく、ブロック単位でサイズを指定する関係上ちょっと面倒臭い。これについてはまた後日(覚えていれば)。

CentOS 6のSambaでファイル共有時に問題が発生したら

posted on 2012/09/12 16:05:34

 CentOS 6のSambaでファイル共有がうまく行かない場合、SELinuxによって各種アクセスがブロックされている可能性がある。詳細はsamba_selinuxドキュメントに記載されている。

$ man samba_selinux

 とりあえず、smbclientでログインには成功するのにホームディレクトリにアクセスできない、という場合、次のコマンドで解決できた。

# setsebool -P samba_enable_home_dirs 1

NICのデバイス名を変更する

posted on 2012/09/10 19:38:15

 CentOSにおいて、複数のNICを搭載しているマシンでNICに対応しているデバイス名を変更したい場合、次のような手順をとれば良い。

 まず、ネットワークを停止させる。

# service network stop

 次に、NICのモジュールをいったんアンロードする。たとえば「e1000e」モジュールを使っている場合、次のようにする。

# rmmod e1000e

 udevの設定ファイルを編集する。ネットワークデバイスについてのMACアドレスとデバイス名の対応付けは、「/etc/udev/rules.d/70-persistent-net.rules」というファイルに記述されている。

 このファイルを適当に編集したら、「/etc/sysconfig/network-scripts/ifcfg-eth?」ファイルの「HWADDR」行を削除する。

 以上で設定完了。この状態で次のようにネットワークを再起動させると、デバイスファイル名とNICの対応が変更されているはず。

# service network start