このブログを検索

ラベル centos の投稿を表示しています。 すべての投稿を表示
ラベル centos の投稿を表示しています。 すべての投稿を表示

2026/03/13

firewalldで即時止める

centos

fail2banは動かしている。

特に目立つIPアドレスがあって、即時止めたかったので調べて止めた。

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="80.xx.xx.xxx" drop'

firewall-cmd --reload


2023/12/03

postfix/dovecot設定@centos9

昨日から今日にかけてpostfix/dovecotの設定をやった。

まずはubuntu 23.10(digital ocean)で、そしてcentos sgreanm release 9(さくらのVPS)で。

同じ設定をしたのだが設定個所や内容は微妙に異なる。osが違うというだけではなく、設定を紹介している人の理解とかやり方によるように見える。つまり、やり方は一つではない。

ubuntuでやった時はgmailのアカウントに送れなかったので、centosでやってみたのだが、こちらはspfもdkimも設定していないのに送れた。

ドメイン名は違っていて、centosでやった方のドメインは逆引きを設定している。逆引きがあれば(spfやdkimがなくても)、gmailに送れるのだろうか?


あと、iphoneの証明書の信頼は、ただCA証明書をインストールするだけではだめで、

Settings > General > About > Certificate Trust Settings 

で、ENABLE FULL TRUST FOR ROOT CERTIFICATESを有効にする必要がある。


証明書を作るとき、サーバの秘密鍵は暗号なしで作るのが楽。

いつもこういう風にしているが、

#openssl genrsa -aes256 -out ./server.key

Enter PEM pass phrase:


これでよい。

# openssl genrsa -out ./server.key


秘密鍵を暗号化して作った場合でも、以下のようにして解除できる(パスワードを入力する必要あり)。

# openssl rsa -in server.key -out server.key


また、暗号化した秘密鍵を使って、パスワードを設定する方法もある。

さくらのVPSでメモリ枯渇

centos9を動かしているさくらのVPSにsshしてdnfしたらsshが切れる。

調べてもそんな例は見当たらない。何度やっても、どこからつないでも切れるのでコンソール(さくらの管理画面から)につないでdnfしてみたら、物騒なメッセージが出ていた。


# dnf update

[25559685.849171] dnf invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0

[25559685.852614] CPU: 1 PID: 2780910 Comm: dnf Not tainted 5.14.0-252.el9.x86_64 #1

[25559685.853720] Hardware name: Red Hat Linux KVM, BIOS 0.5.1 01/01/2011

[25559685.854759] Call Trace:

[25559685.855521]  <TASK>

(以下略)


oom-killer?

検索してみるとメモリ枯渇の時に出るようだった。

freeを実行してみるとSwapが0 ... ?


# free

               total        used        free      shared  buff/cache   available

Mem:          986668      393268       63280        2956      671788      593400

Swap:              0           0           0


freeなんていつも見ないので、この状態が異常なのか普通なのかわからない...

メモリ不足ということはなんか余計なものが動いているのだろうと思い、メモリを多く使用しているプロセスを確認するコマンドを調べて実行した。

ps aux --sort rss

試しにzabbixをインストールしたときに動かしたが使っていないmariadbだのsnmpdだのが多くのメモリを使っているようだったのでそれらを停止、アンインストールした。

dnf updateができるようになった。

が、よく見るとupdateでzabbixのモジュールを更新しようとしている。


もうzabbixはいらないのに。調べると、リポジトリ置き場(/etc/yum.repos.d)に「zabbix」のついたものがある。

ほかにもいろいろ入っている。これらは何かをインストールするときに「これを追加する」と書いてあるのをそのまま鵜呑みにして追加してそのままになっていたものだ。zabbixなんとかを名前を変えて消す。

などやって、freeを見ると、空き領域は増えたようだ。

swapは相変わらずゼロ。多分、swapを使っていないのだろう。

これはどうかと思うが、とりあえず、今回はok


# free

               total        used        free      shared  buff/cache   available

Mem:          986668      332612      416868        4788      412608      654056

Swap:              0           0           0


ちなみに私が使っているサーバのメモリは1Gである。

さくらのVPSはなんだかんだで10年くらい使っているだろうか?そんな古くない?

今調べたらさくらがVPSを提供開始したのは2010年とある。わたしはレンタルサーバを使っていて、これはいいと思ってすぐ使い始めた覚えがあるのでやはり10年以上使ってきた。

でもメモリの不足を感じたことは一度もなかった。

スケールアップしようかな...

それよりswap設定の方が先か...


2022/02/12

openvpn@centos8 第3回 証明書, iPhone, Mac

サーバがcentos8, クライアントがWindows10で、static keyで接続できた。

その時のクライアント側configをiPhoneにメールで転送してopenvpnアプリに追加して接続しようとすると、 CA not defined というエラーになって接続できない。

このあたりはOSの種類やバージョンによって変わってくることは、違うvpnを設定した時にもあったことだ。 apple製品はこの辺がwindowsより厳しくなっている。

まあ最初から証明書は作るつもりだったので。

証明書はopensslでやる。

サーバの秘密鍵を作る→csr作成→caで署名

ここは何度もやったので省略

opensslの設定はほぼデフォルト

configはサンプルをコピーして作る。configの置き場は /etc/openvpn/server/

# cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/

なるべくデフォルト設定を使う。

以下のファイルが必要

ca ca.crt #VPNサーバの証明書を発行(署名)するCAの証明書
cert server.crt #VPNサーバの証明書
key server.key #VPNサーバの秘密鍵

#   openssl dhparam -out dh2048.pem 2048
dh dh2048.pem # DHパラメータ

#   openvpn --genkey --secret ta.key
#
# The server and each client must have
# a copy of this key.
# The second parameter should be '0'
# on the server and '1' on the clients.
tls-auth ta.key 0 # This file is secret # tlsキー、後ろの数字は0がサーバー、1がクライアント

dhパラメータをeasyrsaで作るように説明している情報が多いがsampleコンフィグにopensslのコマンドが書いてあるのでそれを使う。

ごちゃごちゃやったが結局つながったので、configを載せておく。 サーバ証明書とクライアント証明書での接続

サーバ(コメント部分削除)
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.55.0 255.255.255.0"
keepalive 10 120
tls-auth ta.key 0
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 4
explicit-exit-notify 1

外部ファイル(server.confと同じフォルダ /etc/openvpn/server に置く) ca.crt
server.crt
server.key
dh2048.pem

pushは接続先のプライベートネットワークセグメント(アクセス先)
加えてサーバ側のfirewalld設定やip forwardingの設定が必要(前回の記事を参照)
ログ出力設定はデフォルトで無効だが有効にした

クライアント(windows) ※タグが表示されるように<>の前後にスペースを入れてある
client
remote vpn.example.com
port 1194
proto udp
dev tun
tls-auth ta.key 1
persist-tun
persist-key
verb 4
mute 10

< ca >
-----BEGIN CERTIFICATE-----
(省略、サーバ証明書にサインしたCAの証明書)
-----END CERTIFICATE-----
< /ca >
< cert >
-----BEGIN CERTIFICATE-----
(省略、クライアント証明書)
-----END CERTIFICATE-----
< /cert >
< key >
-----BEGIN RSA PRIVATE KEY-----
(省略、クライアントの秘密鍵)
-----END RSA PRIVATE KEY-----
< /key >

外部ファイル
ta.key

client が必要

クライアント(iPhone 15.2.1, Mac Monterey Version12.2)
client
remote www.monqy.net
port 1194
proto udp
dev tun
persist-tun
persist-key
verb 4
mute 10
key-direction 1
< ca >
-----BEGIN CERTIFICATE-----
(省略、サーバ証明書にサインしたCAの証明書)
-----END CERTIFICATE-----
< /ca >
< cert >
-----BEGIN CERTIFICATE-----
(省略、クライアント証明書)
-----END CERTIFICATE-----
< /cert >
< key >
-----BEGIN RSA PRIVATE KEY-----
(省略、クライアントの秘密鍵)
-----END RSA PRIVATE KEY-----
< /key >
< tls-auth >
-----BEGIN OpenVPN Static key V1-----
(省略、ta.keyの中身)
-----END OpenVPN Static key V1-----
< /tls-auth >
ポイントは、 tls-auth ta.key 1 と書くところは ta.keyの内容を< tls-auth >に貼り付けて、
key-direction 1 (client側を意味する) を書く。

2022/02/11

openvpn@centos8 第2回 スプリットトンネリング

やること 
  •  firewalldは止めずにちゃんとopenvpnを指定して許可する 
  •  接続先サーバのlan側のみをトンネリングする 
  •  接続先サーバはconohaのプライベートネットワーク(192.168.55.0/24)経由で接続されたもう一台のVPS

# cat server.conf
port 1194
proto udp
dev tun
ifconfig 10.8.0.1 10.8.0.2
secret static.key
cipher AES-128-CBC
#comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

status openvpn-status.log
log-append openvpn.log
verb 3

#クライアント側の設定ファイル (client.ovpn)
remote vpn.example.com
proto udp
dev tun
port 1194
ifconfig 10.8.0.2 10.8.0.1
secret static.key
cipher AES-128-CBC
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
route 192.168.55.0 255.255.255.0
サーバ側のconfigに下記を入れたがうまくいかない。 
クライアント側のルーティングが書き換わらない。 
openvpnを管理者として実行にしてもダメ。 

push "route 192.168.55.0 255.255.255.0"

 クライアント側の設定ファイルに下記を追加したら追加された。 (route printで確認)
route 192.168.55.0 255.255.255.0

あとは、接続先のサーバ側でip forwardingとnat設定をする。
フォワーディングは
sysctl -w net.ipv4.ip_forward=1

firewall-cmdで"Internal"ゾーンを作成し(internalというのが既存であるが)
eth1を追加

そしてNAT
あるサイトを参考に下記の設定を入れてみたら、
pingはプライベートネットワーク越しに通るようになったのだが、http/httpsが通らない。
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
悩んで調べた結果、
firewall-cmdでプライベートネットワーク側にmasquerade設定を入れることで解決
firewall-cmd --zone=Internal --add-masquerade
最初に入れた --direct --passthrough .... の設定も必要なのかはわからない。 本当は消したいのだが、消し方がわからない....

openvpn@centos8 第1回 とりあえずつなげる

最近会社のネットワークやパソコン自体も非常に制限が多くなってきて、 ほとんど仕事にならない状態。
それで、vpnをいろいろ試している。
会社から自宅にVPN接続してRDPで家のパソコンにログインしていろいろやる。

中古のVPN装置を買っていろいろ試したのだが、 まともにVPNをやろうとすると中古の機器を買ってもまあまあの出費になる。
本体は安くてもライセンスが有効なものになるとグンと値段があがる。
そこでこんどはフリーのOpenVPNを試すことにした。
以前やったことはあるが、つながったことを確認して なるほどな、くらいで終わったのだが、
今回は実用に耐えられるかまでちゃんと試す。

openvpnについてはたくさん情報があるが、ほとんどの人がeasyrsaを使っているのだが、 今まで苦労してようやくプライベートCAが安定稼働したので、 
easyrsaは使わずopensslでやる。

CentOS Linux release 8.3.2011

参考にした情報で
dnf update

していたのでやっとくかと、やると
# dnf update

CentOS Linux 8 - AppStream                   80  B/s |  38  B     00:00

エラー: repo 'appstream' のメタデータのダウンロードに失敗しました : 
Cannot prepare internal mirrorlist: No URLs in mirrorlist
調べるとなんか変わったらしいので以下を実施
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-Linux-*; 
もう一回updateすると今度は
エラー:
 問題: cannot install both device-mapper-8:1.02.177-10.el8.x86_64 and device-mapper-8:1.02.171-5.el8.x86_64
  - package device-mapper-devel-8:1.02.171-5.el8.x86_64 
  requires device-mapper = 8:1.02.171-5.el8, but none of the providers cae installed
  - cannot install the best update candidate for package device-mapper-8:1.02.171-5.el8.x86_64
  - problem with installed package device-mapper-devel-8:1.02.171-5.el8.x86_64

(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください 
または、'--skip-broken' を追加し インストール不可のパッケージをスキップしてください 
または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください
調べてもよくわからないが、言われた通り
install device-mapper-8:1.02.177-10.el8.x86_64 --allowerasing
をやる。 で、もう一度
dnf update
今度はok 結構長い。久しぶりだからな。
dnf install openvpn
すでにinstallしてあった。 

ちゃんと公式ドキュメントを見ておくか、とみると、 
証明書を使わず静的キーでやる方法が紹介されていたので まずそれでやってみる。
https://www.openvpn.jp/document/quickstart-statickey/
サーバを起動する
systemctl start openvpn-server@server.service
statusを見ると activatingで止まっている
● openvpn-server@server.service - OpenVPN service for server
   Loaded: loaded (/usr/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: exit-code) since Fri 2022-02-11 17:56:52 JST; 3s ago
/var/log/messagesを見ると

Feb 11 17:56:57 xxx openvpn[363482]: Cipher 'AES-256-GCM' mode not supported

cipherは何も指定していない。
ついこないだ別のサーバでやったときはこんなことなかったけどな...
cipher AES-128-CBC
にしたら起動した。 client側の設定にも入れるとつながった。
centosは一時的にfirewalldを止めた
#server.conf
proto udp
dev tun
port 1194
ifconfig 10.8.0.1 10.8.0.2
secret static.key
cipher AES-128-CBC
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
クライアントはとりあえずwindows10で クライアントのconfigは 
 C:\Users\(username)\OpenVPN\config 
か 
C:\Program Files\OpenVPN\config\ 
に 拡張子 .ovpn のファイルを置けばいいみたい
#client.ovpn
remote vpn.example.com
proto udp
dev tun
port 1194
ifconfig 10.8.0.2 10.8.0.1
secret static.key
cipher AES-128-CBC
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

2019/04/20

パスワードを平文で保存してはいけないならどうやって保存するのか?

あるサービスが「パスワードを平文で保存していた」というニュースに対してある有名な人が「平文で保存するなんてありえない!」と怒っていた。

「平文で保存していた」というニュースは何度か見たことがある。

では、平文で保存してはならないのならば、どうやって保存すればいいのか?

そう聞いたら、多くの人がこう答えるだろう。

「暗号化して保存する」

私もそうだと思っていた。

しかしそれは間違いで、正しくは

「パスワードのハッシュを保存する」

であった。


そういうとおそらく「暗号化もハッシュも同じようなものだ、そんな細かいことはどうでもいい」という人も多いだろう。

でも、そういう、「細かいことはどうでもいい」が積み重なって、「平文でも大丈夫」になってしまうのではないだろうか?

だから、ちょっと「細かいこと」にこだわってみよう。

ハッシュとか、暗号化とか、sha1とかmd5とかいうものの存在は知っていた。

ソフトウェアなどをダウンロードしたときにmd5チェックサムがついていて、
ファイルが壊れていないかを確認することができる、とか、

WEBサーバは、sha1は古いアルゴリズムだから、sha256を使わないといけないとか。


しかし、実際に自分がサーバ管理者やサービス提供者になったとして、
顧客のパスワードを安全に保存するにはどうすればいいかと聞かれたら答えられない。

最近、当たり前のことなのだが、知ってちょっと驚いたことがある。

それは、ハッシュというものは同じ値に対してはだれが計算しても同じ結果になる、
ということだ。


windowsのコマンドプロンプト(またはパワーシェル)で、
ハッシュを計算することができる。

別に何かのアプリなどをインストールする必要はない。

a.txt

というファイルがある。
中身は

あいうえお(改行)

で、文字コードをutf-8で保存した。


PS C:\users\taro\desktop> certutil -hashfile a.txt
SHA1 ハッシュ (対象 a.txt):
471399aeda50586bdc982b558bfde1da642c0fb3
CertUtil: -hashfile コマンドは正常に完了しました。

PS C:\users\taro\desktop> certutil -hashfile a.txt md5
MD5 ハッシュ (対象 a.txt):
0f2f3458c1553eb96d499508dc5184b4
CertUtil: -hashfile コマンドは正常に完了しました。

PS C:\users\taro\desktop> certutil -hashfile a.txt sha256
SHA256 ハッシュ (対象 a.txt):
0007a58ae5789f92155f87d6bc51edd4c9b036277d23154fe06a9daf33d0e514
CertUtil: -hashfile コマンドは正常に完了しました。


sha1(デフォルト)、md5、sha256で計算してみた。


それでは、このファイルを、私がさくらのVPSで使っているcentosのサーバにアップロードし、そこでハッシュを計算してみよう。

centosにもハッシュを計算するコマンドがある。

# sha1sum a.txt
471399aeda50586bdc982b558bfde1da642c0fb3  a.txt

# md5sum a.txt
0f2f3458c1553eb96d499508dc5184b4  a.txt

# sha256sum a.txt
0007a58ae5789f92155f87d6bc51edd4c9b036277d23154fe06a9daf33d0e514  a.txt


結果は全く同じである。

ハッシュというのは元の値に対して、人の目からは無意味である程度長く、元の値を推測も計算することもできないような値を生成する。

それはわかっていた。

しかしもうひとつ肝心なことは、同じアルゴリズム(sha1とかmd5とか)を使用すれば、
同じ値からは同じハッシュ値が生成されるということだ。

そうでなければ、たとえばユーザのパスワードのハッシュ値を保存しても、
ユーザのパスワードが正しいかを検証できない。

当たり前のことであるが。


私もパソコン、スマホ、さまざまなインターネット上のサービスなどを利用していて、
「パスワード」というものを何十個、何百個と設定して使用してきたが、
そのパスワードがテキストで読める状態で保存されているのは見たことがない。
パスワードをメールや郵便物に記載して送付されることはあったが。

あらためて、先ほどのcentosのサーバにパスワードがどのように保存されているかを見てみた。

/etc/shadow

というファイルである。

私は複数のアカウントを作成しているが、そのうちいくつかは異なるアカウントに同じパスワードを設定していた。

たとえば、taroというユーザのパスワードが password、
jiroというユーザのパスワードも password
という感じである。

「同じ値のhash値は誰が計算しても同じ」
ということは、taroとjiroのパスワードから計算したhash値は同じ文字列のはずだ......

しかし、実際には違う文字列であった。

あれ?


調べると、パスワードを保存する際にはhash値をもとの文字列からそのまま計算せず、
「ソルト(塩)」と呼ばれるランダムな値を付加して計算するのだそうだ。

その付加する方法は、文字列としてくっつけるのか、二進数でなんらかの演算をするのかわからないが、とにかくもうひと手間加えて、同じパスワードでも同じハッシュにならないようにする。


同じハッシュ値だからといっても、元の値を知ることは事実上不可能なことにはかわりないが、「複数のアカウントが同じパスワードである」という事実があれば、それらのアカウントに使用されているパスワードは誰もが思いつきそうな単純なパスワードであると推測できる。

また、よく使われそうなパスワード文字列を用意し、そのハッシュ値を計算しておいて、
ハッシュ値同士を比較すれば元の文字列がわかる。(これをレインボーテーブルという)

これらを防ぐために、ソルトというものが使われる。

しかし私はそこでひとつ疑問がわいた。

パスワードは正しい値であることを検証しなければならない。


再訪したユーザが入力したパスワード値にソルトを付加してハッシュ値を計算し、保存されたハッシュ値と同じであるかを比較しなければならない。

ではソルトをハッシュ値と一緒に保存するのか。
それは鍵をかけた金庫の横に鍵を置くようなものだ。

/etc/shadowを見てももちろんソルト値は書かれていない...

調べてみた。

ソルト値の隠し場所があった。

金庫のたとえで言うなら、鍵は金庫の横に置かれてこそいないが、
横にテープで貼り付けるくらいのことしかされていなかった。

ソルト値を使ってパスワードからhashを計算したら、
/etc/shadowに書かれているhash値と一致した。

# cat /etc/shadow | grep hiroshi
hiroshi:$6$9Qpwui9R$jrswaF/U2NRgq7Yhuk2YH7T2POuOYuDq/2eH71KMJkRDNaLxHEa25BLvmAnT3zz.ijxv/e6qUK.cEN24FN.GD0:18005:0:99999:7:::

# perl -e 'print crypt("hiroshidesu", "\$6\$9Qpwui9R");'
$6$9Qpwui9R$jrswaF/U2NRgq7Yhuk2YH7T2POuOYuDq/2eH71KMJkRDNaLxHEa25BLvmAnT3zz.ijxv/e6qUK.cEN24FN.GD0


pythonの例

# python -c 'import crypt; print(crypt.crypt("hiroshidesu", salt="$6$9Qpwui9R"))'
$6$9Qpwui9R$jrswaF/U2NRgq7Yhuk2YH7T2POuOYuDq/2eH71KMJkRDNaLxHEa25BLvmAnT3zz.ijxv/e6qUK.cEN24FN.GD0


そもそも、ハッシュ値で保存するのも、さらにその際にソルトを加えるのも、
サーバにアクセスされてかつサーバの管理アカウントでログインされてしまった場合を想定してのことである。

平文で保存していたのも、サーバにログインされないための対策を十分にしているから、
と考えてのことだろう。


sha512の計算方法とか、saltのかけ方とかはわからないが、
それを使ってますよ、というだけで、パスワードの保存方法というのはそんなに難しいことをしているわけではないというのが、分かった。

ただし、繰り返しになるが、それはあくまでも推測したパスワードからハッシュを計算して一致するかを調べる、ということであって、ハッシュ計算の脆弱性があるとか、ハッシュ値から元の値が算出できるとかいうことではない。


※関連エントリ

https://monqy.blogspot.com/2019/04/blog-post_27.html

2019/03/02

python3をデフォルトにする@centos6

google analyticsがあるcgiがinternal server errorになっていることを報告してきて、
それを直している過程で、

perl (LWP)でやっているスクレイピングが時代遅れ

pythonの2系は時代遅れ

ということを悟ったので、3系(3.6)をインストールした。

2.6とか2.7とかいろいろ入ってしまったのできれいにしようと思ったのだが、
うまく消えないのでとりあえず3系がデフォルトで動くようにした。



# pip install beautifulsoup4
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python2.7/site-packages (4.7.1)
Requirement already satisfied: soupsieve>=1.2 in /usr/local/lib/python2.7/site-packages (from beautifulsoup4) (1.8)
Requirement already satisfied: backports.functools-lru-cache; python_version < "3" in /usr/local/lib/python2.7/site-packages (from soupsieve>=1.2->beautifulsoup4) (1.5)
#


beautifulsoupなる便利なものがあると聞いて使ってみようとしたら「まだ2.7なんか使ってんのかよ」と怒られた。


# python --version
Python 2.6.6


python

とだけやると、2.6.6が起動する。

python3.6

とやれば3系が動くようにはなっているが、面倒。

# python3.6
Python 3.6.7 (default, Dec  5 2018, 15:02:16)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

"python" はシンボリックリンクなので、
それを3系にリンクしなおせばよい。

# which python
/usr/bin/python

# which python3.6
/usr/bin/python3.6


pipも

# which pip3.6
/usr/bin/pip3.6

# which pip
/usr/local/bin/pip



# ln -s /usr/bin/python3.6 /usr/bin/python
ln: creating symbolic link `/usr/bin/python': ファイルが存在します

現在のリンクを消してから3系へのリンクを作る。

# unlink /usr/bin/python

# ln -s /usr/bin/python3.6 /usr/bin/python



# ln -s /usr/bin/pip3.6 /usr/local/bin/pip
ln: creating symbolic link `/usr/local/bin/pip': ファイルが存在します

pipも同様

# unlink /usr/local/bin/pip
# ln -s /usr/bin/pip3.6 /usr/local/bin/pip




# python
Python 3.6.7 (default, Dec  5 2018, 15:02:16)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>


# pip -V
pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)


pythonもpipも3系になった。


2018/11/12

ntpがv6でしか同期できない

出張で中国へ行った際に、韓国と中国から自分のサーバにアクセスし、
掲示板に投稿しておいた。

後でそのログを見てみると、アクセスしたのと明らかに違う時刻が記録されていた。

あ、UTCなのか、と思いかけたがそんなはずはない。

試しに今投稿してみると、やっぱり時刻がずれている。

そして、そのズレはJSTになっていないとかではなく、単純に時刻があっていない。

ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.sakura.ad. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ntp1.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ntp2.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ntp3.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000


同期できていない。

きっとよくある設定ミスだろうと検索してみるが特に間違いはなさそう。

何度か設定を変えてサービスを再起動するが、上記の表示が変わらない。

いったんサービスを止めて、

 ntpdate ntp.nict.jp
12 Nov 01:58:16 ntpdate[11677]: adjust time server 2001:df0:232:eea0::fff4 offset -0.000117 sec

で、同期された。

v6で同期している?

ntp.confの設定では -4 をつけているのだが...

ntpdate -d -4 ntp.nict.jp

でv4を強制すると、

ntpdate[11874]: no server suitable for synchronization found


...ええい、逆にv6を明示的に指定してやれ

(/etc/ntp.conf)
server -6 ntp1.sakura.ad.jp iburst


#ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*2001:e42:0:1:21 10.84.87.146     2 u   53   64    7    0.510   -0.206   0.046
 ntp1.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ntp2.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000
 ntp3.jst.mfeed. .INIT.          16 u    -   64    0    0.000    0.000   0.000


v6でしか同期できない、という状況である。




2016/12/24

spamassassinに学習させる



spamassassinはほぼ完ぺきにspamを駆除していたが、

数か月たつとすり抜けるメールが増えてきたので、
学習させることにした。

#spamを学習
/usr/bin/sa-learn --spam /home/*/Maildir/.INBOX.spam/cur

#spamでないメールを学習
/usr/bin/sa-learn --ham /home/*/Maildir/cur


当然、学習させるspamメールは手動でフォルダに移動させねばならない。

私はspamassassinでspam判定したメールはspamフォルダに移動したりせず
いきなり消している。

誤判定をチェックできないがまあ、ほとんど試験的なアカウントなので。

普通はspamフォルダを作ってそこに移動させると思うが、
そのフォルダを作るには

maildirmake というコマンドを使うらしいが、そんなコマンドがない。

makedirで作ればいいのだろうがわざわざコマンド(スクリプトらしい)を使うくらいだから、
複数作ったり何か規則があったりするのだろう。

面倒くさいのでthunderbirdでspamフォルダを作った。

INBOXのしたに「spam」というフォルダを作った場合、
下記のように指定する。

/home/hoge/Maildir/.INBOX.spam/cur



これを毎日cronで動かすようにする。

0 3 * * * root /home/hoge/spamlearn.sh


中身

------------------------------------------

#! /bin/sh

# スパムメールの学習
/usr/bin/sa-learn --spam /home/*/Maildir/.INBOX.spam/cur

# 通常のメールを学習
/usr/bin/sa-learn --ham /home/*/Maildir/cur

echo done:`date`>> /home/hoge/log.txt

--------------------------------------

最後のechoは実行したかどうかわかるようにするためのもの。

コマンドをバッククォートで囲むと実行結果をechoできる。

最初 ./log.txt としたら書かれなかったのでフルパスを指定した。


2016/10/01

特定のアカウントでしか受信できない

postfix + dovecot でメールを使っていて、数個のアカウントがあるのだが、
そのうち一つは送受信できているのだが、

それ以外のアカウントは送信はできるが受信ができない。

それらのアカウントにメールを送るとエラーになって戻ってきたりはせず、

メールボックスには届いているようなのだが、受信ができない。



受信はiphoneでしている。

ほかのメーラーではどうかと、パソコンのthunderbirdで受信してみる。

thunderbirdはメールアドレスを入力すると設定を検索してくれる。

検索されて自動設定された設定だと、受信できた。


じゃあiphoneの設定が間違っているのかと、設定を比較してみると、

port番号はthunderbirdは143でiphoneは993になっていた。

993というのはuse sslを選択すると勝手に設定されたものだ。

use sslをオフにすると143になるがそれだとdisabledとか言われてしまう。

use sslをオンにして、かつ、ポート番号を993から143に変更したら受信できるようになった。


とりあえず解決・・・

と思ったが、もともと受信できていたアカウントのiphoneの設定をもう一度見てみると、

こちらは use ssl でポート番号は993だ。143に変えることもできる。


しかし、これ以外のアカウントは143でしか受信できない。


同じドメインの同じサーバなのに・・・。

何が間違っているのか。



受信できないアカウントは、 メールを送ると /var/mail/アカウント名 が更新されていて

mail -u アカウント名

で読むことができる。




先日spam対策のために設定したprocmailが原因だった。

各ユーザのホームディレクトリに .forward と .procmailrc をコピーして解決。

これがないと、/var/mail/アカウント名 に行ってしまう。



ただし、993/143問題はまだ謎だ。

メール設定は何度も変更したり設定追加したりしているので
自分でも何が何だかわからなくなっている。

一回全部消して作り直したいな・・・








2016/09/17

apacheでhttpsを使う

httpsを使いたい。

別にセキュアにしたいわけではなく、httpsでのアクセスを確認したいだけ。

macでやってみて証明書も自分で発行できて簡単でopensslとかならcentosも同じだろうと、やってみた。

ちょっとゴタゴタしたので、メモしておく。

# which openssl
/usr/bin/openssl

opensslは入っている。


# which mod_ssl
/usr/bin/which: no mod_ssl in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

mod_sslは入ってない。

じゃあ、入れよう。

# yum install mod_ssl
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package mod_ssl.x86_64 1:2.2.15-54.el6.centos will be インストール
--> 依存性の処理をしています: httpd = 2.2.15-54.el6.centos のパッケージ: 1:mod_ssl-2.2.15-54.el6.centos.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: 1:mod_ssl-2.2.15-54.el6.centos.x86_64 (updates)
             要求: httpd = 2.2.15-54.el6.centos
            インストール: httpd-2.2.27-1.el6.x86_64 (@CentALT)
                httpd = 2.2.27-1.el6
            利用可能: httpd-2.2.15-53.el6.centos.x86_64 (base)
                httpd = 2.2.15-53.el6.centos
            利用可能: httpd-2.2.15-54.el6.centos.x86_64 (updates)
                httpd = 2.2.15-54.el6.centos
 問題を回避するために --skip-broken を用いることができません
 これらを試行できます: rpm -Va --nofiles --nodigest


入らない。

apacheのバージョンが新しすぎるようだ。

別にバージョンなんかなんでもいいので、ダウングレードしよう。


yum downgradeをやってみたができないので、消して入れなおす。

# yum remove httpd

消えた。

インストール

# yum install httpd
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * ius: hkg.mirror.rackspace.com
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package httpd.x86_64 0:2.2.15-54.el6.centos will be インストール
--> 依存性の処理をしています: httpd-tools = 2.2.15-54.el6.centos のパッケージ: httpd-2.2.15-54.el6.centos.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: httpd-2.2.15-54.el6.centos.x86_64 (updates)
             要求: httpd-tools = 2.2.15-54.el6.centos
            インストール: httpd-tools-2.2.27-1.el6.x86_64 (@CentALT)
                httpd-tools = 2.2.27-1.el6
            利用可能: httpd-tools-2.2.15-53.el6.centos.x86_64 (base)
                httpd-tools = 2.2.15-53.el6.centos
            利用可能: httpd-tools-2.2.15-54.el6.centos.x86_64 (updates)
                httpd-tools = 2.2.15-54.el6.centos
            利用可能: httpd24u-tools-2.4.23-2.ius.centos6.x86_64 (ius)
                httpd-tools = 2.4.23-2.ius.centos6
 問題を回避するために --skip-broken を用いることができません
 これらを試行できます: rpm -Va --nofiles --nodigest


できない。

httpd-toolsとやらがひっかかってる。

こいつも消す。



# yum remove httpd-tools
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
削除処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package httpd-tools.x86_64 0:2.2.27-1.el6 will be 削除
--> 依存性解決を終了しました。

依存性を解決しました

========================================================================================================================
 パッケージ                    アーキテクチャ           バージョン                     リポジトリー                容量
========================================================================================================================
削除:
 httpd-tools                   x86_64                   2.2.27-1.el6                   @CentALT                   137 k

トランザクションの要約
========================================================================================================================
削除                 1 パッケージ

インストール済み容量: 137 k
これでいいですか? [y/N]y
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  削除中                  : httpd-tools-2.2.27-1.el6.x86_64                                                         1/1
  Verifying               : httpd-tools-2.2.27-1.el6.x86_64                                                         1/1

削除しました:
  httpd-tools.x86_64 0:2.2.27-1.el6

完了しました!


「will be 削除」(笑い)


インストール

#yum install httpd

はいった。



# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 18 2016 15:24:00


mod_sslをインストール

# yum install mod_ssl

はいった。


「will be インストール」(笑い)



これで必要なものはそろったので設定をしていく。


httpsサーバを動かすには証明書が必要。

証明書といっても、テストでhttpsアクセスするだけならお金を払って発行してもらう必要はない。

そういう場合は自己署名証明書というものを使う。

いわゆる「オレオレ証明書」である。


(参考)
http://www.maruko2.com/mw/Apache/SSL%E8%87%AA%E5%B7%B1%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8mod_ssl%E3%81%AE%E8%A8%AD%E5%AE%9A


apache + ssl 設定の方法はいろんな人が書いているが、内容は微妙に異なる。



秘密鍵を作る。

よくわからないが、これがないと証明書が作れないし、簡単に作れるので作る。

暗号の強度とかはどうでもいいがいまどき 3desとか1024は古いのでナウくする。

パスワードを要求されるので2回入力する。

# openssl genrsa -aes128 -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...............................................................................................................................................................................................................................+++
..............................................................................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:


CSRを作る。

CSRとは証明書を発行する元ネタのようなものだ。
国だの組織名だのいろいろ聞かれるが全部適当でよい。

challenge password、emailだのは入れなくてよい。
というか、確認してないが必須項目はCNのみじゃないだろうか。

CNとはサーバのfqdnだが、自己署名証明書なので一致してなくても関係ないと思う。

一応、本当のfqdnを登録した。

下記のkintamaはもちろんサンプルである。


# openssl req -new -key server.key -sha256 -out server.csr
Enter pass phrase for server.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) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Tokyo
Organization Name (eg, company) [Default Company Ltd]:kintama
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:kintama.net
Email Address []:

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


秘密鍵とCSRがそろったら、証明書を発行する。

有効期間10年。100年とか1000年とかでもできるのだろうか?確認してない。

-in に作成したcsr、 -signkey に作成した秘密鍵の名前を指定する。

-out で指定した名前で作成される。


秘密鍵を作ったときに設定したパスワードを入力する。


# openssl x509 -in server.csr -days 3650 -req -signkey server.key -sha256 -out server.crt
Signature ok
subject=/C=JP/ST=Tokyo/L=Tokyo/O=kintama/CN=kintama.net
Getting Private key
Enter pass phrase for server.key:


証明書ができたら、ssl.confを編集する。

(参考)
http://www.ryouto.jp/linux/linux_44.html


vi /etc/httpd/conf.d/ssl.conf

変更するのは以下

DocumentRoot "/var/www/html/" #コメントを外す
ServerName kintama.net:443 #サーバ名
SSLCertificateFile /home/kintama/ssl/server.crt #コメントを外して証明書の場所を指定
SSLCertificateKeyFile /home/kintama/server.key #コメントを外して秘密鍵の場所を指定



DocumentRootは任意の場所を指定できる。

つまり、httpとhttpsで違うページを表示できる。

証明書と鍵はさっき作成したものを指定する。

場所と名前はなんでもよいがもちろんそこに先ほど作った秘密鍵と証明書がないとだめだ。



httpdを再起動する。

さっき設定したパスワードを入力する。

# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server kintama.net:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
                                                           [  OK  ]

iptablesで443を開ける。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT


おわり。


おまけ

httpdを再起動するたびにパスワードを入力するのがウザい場合は、
下記で無効にできる。

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key

無効にするときにパスワードを聞かれてイラっとするが、これが最後なので我慢する。

centosは6です。

正式なバージョンは.....

# cat /etc/redhat-release
CentOS release 6.8 (Final)



2016/04/02

apacheの更新

logwatchに、大量の不審なアクセスがある。

不審といっても、logが書かれるだけでとくになんの被害もないのだが、ウザいのでなんとかしたい。

アクセス元のIPアドレスはまちまちだ。

どうやってこんなに多様なIPアドレスからアクセスできるのかが不思議なのだが、

アドレスでブロックすることは実質的に不可能だ。


たとえば、国とかプロバイダとかでガバっとブロックしてしまおうかとも思うが、

それはやりたくない。


基本的に私はインターネットにサーバを公開する以上、

アクセス方法を問わずにブロックするという中国のGFW的な態度はとりたくない。


この不審なアクセスは、サーバに存在しないファイルへアクセスしている。

それはあきらかに故意になされている。


しかし頻度はそれほど高くない。

そして、アクセス内容を特定できるある文字列を含んでいる。


最初はその文字列を含むアクセスをiptablesでブロックしようと思ったが、

うまくいかない。これは確認中である。



そのうち、そもそもWEBサーバ自体になにか脆弱性があるのではないかと思い、

診断ツールで調べてみた。

niktoとかいうものだ。


特に致命的な脆弱性はなかったが、バージョンが古いと言われた。

2.2.15 である。

yumでupdateすると最新と言われる。


最新にするにはrepositoryを変更する必要がある。



centosのデフォルトレポジトリで最新なら別にいいかとも思うが、

このさい最新にしてみる。


更新後ちょっとゴタゴタしたが、無事に2.2.27になった。


ゴタゴタしたというのは設定ファイルが初期状態になったとか

proxy moduleが読めないとか

サービスが停止できないとかである。

設定ファイルはれいのrpmsaveだかなんかを戻し、

moduleは不要なものを読まないようにし、

停止できないのはkillで殺したが死なないのでサーバごとリブートした。

2016/03/06

ldapserver@centos7


最近仕事で認証がらみのことをよくやるようになったので、
ldapサーバを設定してみる。

ldapというのは、アクティブディレクトリで使われるプロトコルである。

というか、ldapといったらADつまりWindowsサーバである場合がほとんどではないだろうか。

Windowsサーバを買ったり借りたりするのはまだまだ高価なので、

さくらのクラウドで借りているcentos7で作ってみる。




インストール

yum install openldap openldap-servers openldap-lclients


DB設定をつくる(exampleをコピー)

cp /userr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG


パスワード生成(この値をあとで使う)

[root@adam ~]# slappasswd
New password: 
Re-enter new password: 
{SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


firewallでldapを許可

[root@adam ~]# firewall-cmd a--add-service=ldap --zone=public
success
[root@adam ~]# firewall-cmd --add-service=ldap --zone=public --permanent
success



slapd を起動

[root@adam ~]# systemctl enable slapd
[root@adam ~]# systemctl enable slapdstart slapd


設定はファイルを直接編集するのではなく、
.ldifという拡張子のついたファイルを作ってそこに設定内容を書き、
それをコマンドで読み込ませておこなう。


.ldifファイルは任意の場所で任意の名前で作ってよいようだ。


rootパスワードの設定(slappasswdで生成された値を書く)

[root@adam]# cat rootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx



ここではまったのが、「replace: olcRootPW」の部分だ。
参考にした複数の情報では「add: olcRootPW」になっていたが、
それだと下記のようなエラーになる。


[root@adam]#  ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
ldap_modify: Inappropriate matching (18)
additional info: modify/add: olcRootPW: no equality matching rule


成功すると下記のようになる

[root@adam]# ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"


(なんでこうするのかはわからない。後で調べる)
→たぶん、参考にしたある情報ではrootpasswordを直接書き込んでいて、
olcRootPWのエントリがすでにあったから「add」ができなかったのだと思う。
デフォルト状態であればaddでよいはず。


ドメイン名

[root@adam]# cat change-domain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  read by dn.base="cn=Manager,dc=monqy,dc=net" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=monqy,dc=net

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=monqy,dc=net

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx



[root@adam]# ldapmodify -Y EXTERNAL -H ldapi:/// -f .change-domain.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"



組織情報(Users, Groups)



[root@adam]# cat org.ldif
dn: dc=monqy,dc=net
objectClass: dcObject
objectClass: organization
dc: monqy
o: monqy

dn: ou=Users,dc=monqy,dc=net
objectClass: organizationalUnit
ou: Users

dn: ou=Groups,dc=monqy,dc=net
objectClass: organizationalUnit
ou: Groups
[root@adam]#



[root@adam]# ldapadd -x -D "cn=Manager,dc=monqy,dc=net" -W -f org.ldif
Enter LDAP Password:
adding new entry "dc=monqy,dc=net"

adding new entry "ou=Users,dc=monqy,dc=net"

adding new entry "ou=Groups,dc=monqy,dc=net"




クライアントからアクセスしてみる。

WindowsにJXPlorerというアプリをインストールする。

左上の connect to DSAというアイコンをクリックし、
ldapサーバのホスト名を入力して「はい」をクリックすると、
上記で設定したUsersやGroupsが表示される。


実際の認証は、後程



2016/02/26

さくらのVPSにVNC接続

以前にも一度やったのだが、
いろいろうまくいかず放置していたのを、やり直す。

vncはtigervncというのを使う。

セットアップについては省略。以前書いた気がする。

そのあと、ちょこちょこ修正というか設定が必要だった。


まず
# chkconfig messagebus on

それから
# dbus-uuidgen > /var/lib/dbus/machine-id


portが開いてるかの確認は

nmap localhost

が速い。



2015/07/25

iptablesの設定をコマンドで追加

私はいつも /etc/sysconfig/iptables をviで直接編集している。

さっき、いつもやらないがコマンドで設定した。

てっきり、コマンドで設定したら上記のファイルに書かれると思っていたが、開いてみるとかかれていない。

設定が反映していないのかと思ったが、iptables -L などで見るとちゃんと有効になっている。

どういうこと?

wwwをつけないとアクセスできない

nginxに移行しようとしていて気づいたのだが、
いつの間にか、urlにwwwをつけないとアクセスできなくなっていた。

そんなところに影響するような設定変更は何もしていないのに。

自宅のパソコンから example.com (仮名)にpingを打つと帰ってくるから、
DNSの問題ではない。

http://example.com/ だとアクセスできなくなっている。

http://www.example.com/ としないと。


おかしいな・・・

なんでだろう・・・


apacheの設定しか考えられない。

実はこないだoom-killerが発動してhttpdが落ちており、再起動した。

そのときに何か保存していない設定が戻ってしまったのか・・・。


クソー、nginxの移行がすんなりいかないと思ったら、今までできてたことができなくなってしまった・・・




iptablesのせいだった。

この前追加した、特定の文字列を含むアクセスを停めるつもりの設定を消したら治った。


でも、あれがないとウザいアクセスが大量に来るんだよな・・・

apacheからnginxへの移行@centos6.6@さくらのVPS

予想以上に難航。

fastcgiとかなんとか。

インストールでコケまくる。

とりあえず、下記ページには助けられた。

http://github.tiankonguse.com/blog/2015/01/19/cgi-nginx-three/


てこずりそうなので、apacheはあげておいて、
nginxは違うポート番号で動かす。



続きは以下で

apacheからnginxへの移行@centos6.6@さくらのVPS【完結編】

2015/07/23

iptablesで特定の文字列へのアクセスを拒否する

-A INPUT -m string --to 60 --algo bm --string "wiki" -j DROP


なんかうまくいかないのでマネしないでください。



2015/07/19

iptableがftpを通さない

vsftpdをインストールした後、iptablesを有効にしているとftpできなかった。

原因はよくわからず、ftpはあまり使わないので放置していた。

下記の設定が必要であった。

/etc/sysconfig/iptables-config

IPTABLES_MODULES="ip_conntrack_ftp ip_nat_ftp"


こんなこと、1台目ではやった覚えがないけどな・・・