カテゴリー : LAMP

アクセス制限(特定国)

postfix mailやブログに対し、特定国からのアクセス増加に伴い、iptablesで特定国の通信をブロック。

iptablesのバックアップ

 #cd /etc/sysconfig
 #iptables-save > iptables.bak
 #iptables-restore < iptables.bak    ##戻す場合
 #iptables -L   ##内容確認

 

中国、韓国をIPdenyのリストを参照し、iptablesで遮断(シェルファイルの実行権注意)

export PATH=$PATH:/sbin/
ZONE_FILE_URL="http://www.ipdeny.com/ipblocks/data/countries"
 for IP in $(wget -O - ${ZONE_FILE_URL}/{cn,kr}.zone | grep -v "^#|^$" )
 do
 iptables -A INPUT -s $IP -j DROP
 done

 

crontabで自動実行、シェルのログをiptables.logへ出力

 35 1 * * * /home/iptables_scripts/iptables.sh > /tmp/iptables.log 2>&1

 

crontabのログ

 tail -n 10 -f /var/log/cron

zabbix DB crashed

zabbix関連のエラーメールが届いていたので確認すると、
zabbix_server.logに「query failed: [2006] MySQL server has gone away [select hostid,status ・・・」
わからない。googleで同様の対処方法を載せているページを参考にさせていただきました。

DBへ接続

mysql> show databases;
 +--------------------+
 | Database |
 +--------------------+
 | information_schema |
 | mysql |
 | test |
 | wordpress |
 | zabbix |
 +--------------------+
 5 rows in set (0.00 sec)

zabbix table確認

mysql> use zabbix;
 Reading table information for completion of table and column names
 You can turn off this feature to get a quicker startup with -A
Database changed
 mysql>
 mysql> check table history extended;
 +----------------+-------+----------+-------------------------------------------------------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+-------+----------+-------------------------------------------------------+
 | zabbix.history | check | warning | Table is marked as crashed |
 | zabbix.history | check | warning | 1 client is using or hasn't closed the table properly |
 | zabbix.history | check | error | record delete-link-chain corrupted |
 | zabbix.history | check | error | Corrupt |
 +----------------+-------+----------+-------------------------------------------------------+
 4 rows in set (0.00 sec)

壊れているようです
バックアップを取り、tableのrepair

 # service mysqld stop
 Stopping mysqld: [ OK ]
 # cp -rp /var/lib/mysql /tmp/mysqlback
 # service mysqld start
 Starting mysqld: [ OK ]
mysql> repair table zabbix.history;
 +----------------+--------+----------+------------------------------------------------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+--------+----------+------------------------------------------------+
 | zabbix.history | repair | warning | Number of rows changed from 2644011 to 2644016 |
 | zabbix.history | repair | status | OK |
 +----------------+--------+----------+------------------------------------------------+
 2 rows in set (12.72 sec)
mysql> check table history extended;
 +----------------+-------+----------+----------+
 | Table | Op | Msg_type | Msg_text |
 +----------------+-------+----------+----------+
 | zabbix.history | check | status | OK |
 +----------------+-------+----------+----------+
 1 row in set (25.87 sec)

特定のIPを拒否

同一IPから不正アタックが続いたため、iptables でブロック

messagesに多数の「do_auth : auth failure」ログ

# iptables -L
 Chain INPUT (policy ACCEPT)
 target prot opt source destination
 Chain FORWARD (policy ACCEPT)
 target prot opt source destination
 Chain OUTPUT (policy ACCEPT)
 target prot opt source destination
# iptables -I INPUT -s 95.211.100.141 -j DROP

# /etc/init.d/iptables save
# /etc/init.d/iptables restart

saslauthd auth failure

messagesに以下のログが定期的に出力

saslauthd[1312]: do_auth         : auth failure: [user=adam] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1313]: do_auth         : auth failure: [user=abuse] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1315]: do_auth         : auth failure: [user=smmsp] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1311]: do_auth         : auth failure: [user=office] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1312]: do_auth         : auth failure: [user=sms] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1313]: do_auth         : auth failure: [user=rachel] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1315]: do_auth         : auth failure: [user=visitor] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1311]: do_auth         : auth failure: [user=teacher] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1314]: do_auth         : auth failure: [user=john] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1312]: do_auth         : auth failure: [user=company] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1313]: do_auth         : auth failure: [user=client] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1315]: do_auth         : auth failure: [user=postgres] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1314]: do_auth         : auth failure: [user=support] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1312]: do_auth         : auth failure: [user=adrian] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1311]: do_auth         : auth failure: [user=carrie] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1313]: do_auth         : auth failure: [user=software] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1315]: do_auth         : auth failure: [user=accouting] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1313]: do_auth         : auth failure: [user=info] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1311]: do_auth         : auth failure: [user=shop] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error] 
saslauthd[1312]: do_auth         : auth failure: [user=sys] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

これは、SMTP不正認証アタックの際に出力されるが、
SMTP-Authのブロックが効いているため影響はない。

rootでFTP接続

作業時などftpがrootで使用出来ないと不便なため、一時的に許可します

#vi /etc/vsftpd/ftpusers ←rootコメントアウト
#vi /etc/vsftpd/user_list ←rootコメントアウト
#/etc/init.d/vsftpd restart
#vi /etc/hosts.allow

vsftpd: 192.168.1. ←追加

#/etc/init.d/network restart

セキュリティ的なこと

rootでsshログイン禁止、ポート番号変更

 #vi /etc/ssh/sshd_config

PermitRootLogin no ←コメントアウト
Port 22 ←変更

 #service sshd reload

iptables

 #chkconfig --list iptables
 #/etc/init.d/iptables stop ←停止

SELinux

 #getenforce

Enforcing ←有効
Permissive ←無効

#vi /etc/sysconfig/selinux

SELINUX=enforcing ←有効
SELINUX=disabled ←無効

 

ftpdアクセス制限

 #vi /etc/vsftpd/user_list ←編集
 #vi /etc/vsftpd/ftpusers  ←編集
 #/etc/init.d/vsftpd restart

 

接続ネットワーク制限

 #vi /etc/hosts.allow

sshd: 192.168.1.

#vi /etc/hosts.deny

sshd: ALL

postfix mail server 備忘的なもの

・インストールと設定

yum install postfix
vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir  ←コメントアウト追記

 

・ユーザ追加時、自動メールディレクトリ作成設定

mkdir -p /etc/skel/Maildir/{new,cur,tmp}
chmod -R 700 /etc/skel/Maildir/

 

・メールサーバ切り替え sendmail → postfix

alternatives --config mta

 

・メールサーバ起動

/etc/init.d/postfix start

#postfixポート開放

 

・dovecotインストール

yum install dovecot
vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir ←追記

・dovecot 起動

/etc/init.d/dovecot start

 

#imap用ポート開放

#smtp用ポート開放

 

useradd user

passwd ********

 

#自server環境時はクライアントPC側、hosts編集

postfix OP25B リレー対策

main.cnf

 relayhost = [smtp.xxx.server]:587
 smtp_sasl_auth_enable=yes
 smtp_sasl_password_maps=hash:/etc/postfix/isppasswd
 smtp_sasl_security_options = noanonymous
 smtp_sasl_mechanism_filter =

master.cf(コメントを外す)

 smtp      inet  n       -       n       -       -       smtpd
 submission inet n       -       n       -       -       smtpd
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject

パスワードファイル作成

vi /etc/postfix/isppasword
smtp.xxx.server アカウント:password

postmapコマンド実行

 postmap /etc/postfix/isppasswd

ライブラリをインストール

 yum -y install cyrus-sasl-plain cyrus-sasl-md5

postfix再読み込み

 /etc/init.d/postfix reload

###
mailコマンドで確認

mail -s title  アドレス
 . .
 EOT

—-

Postfix リレーエラー対策 (Relay access denied)

IPv6をpostfixが知らないため
/etc/hosts

#::1 ←コメントアウト

Zabbix 設定

zabbix設定

・ユーザ登録

・ホスト登録

監視対象

・テンプレート作成

アイテムを登録するためのテンプレート

・アイテム登録

作成したテンプレートに監視項目を登録

 

・起動

service zabbix-agent start

service zabbix-server start

カスタムコマンド zabbix_agent.confへ追記

UserParameter=名前,コマンド

手動コマンド

zabbix_get -s ホスト名 -k コマンド

Zabbix 2.0.6 インストール

スクリーンショット 2013-07-13 17.19.06

・Zabbixリポジトリ追加

#rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm

・インストール

#yum install zabbix-agent zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese
#vi /etc/my.cnf

###以下追加

innodb_file_per_table
innodb_buffer_pool_size=512M
innodb_log_file_size=64M
default-character-set = utf8
skip-character-set-client-handshake

 

#service mysqld restart

・パスが通ってなかった

#export PATH=$PATH:/usr/bin/mysql
#mysql -u root
mysql>create database zabbix character set utf8;
mysql>grant all privileges on zabbix.* to zabbix@localhost identified by 'パスワード';
mysql>SELECT Host, User, Password FROM mysql.user;
mysql>exit
#mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/schema.sql
#mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/images.sql
#mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-2.0.6/create/data.sql

 

#vi /etc/zabbix/zabbix_server.conf

以下修正

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=パスワード

 

#service zabbix-server start
#service zabbix-agent start
#vi /etc/httpd/conf.d/zabbix.conf

以下修正

php_value date.timezone Asia/Tokyo

 

#service httpd restart

・ブラウザでアクセス

http://localhost/zabbix

 

date(): It is not safe to rely on the system’s timezone settings.

phpのtimezoneが設定されていない模様

 

#vi /etc/php.ini

date.timezone = “Asia/Tokyo” ←追加

 

・個別インストール

zabbix_get

古い記事