設定 → Keyboard → 右ペインの入力ソースにある日本語(Anthy)の右の縦の点3つをクリックし、Preference をクリック ← 開いたウィンドウで辞書タブをクリックし、”辞書の編集コマンド(E):”の右端の縦の点3つをクリックし、霞ウィンドウを開く
右下の追加をクリックし、選択された単語に漢字や記号を入力し、読みに読み方を入力、頻度は500のまま、品詞に該当するものを選び、下にある保存をクリック。
開いているウィンドウを消す。
カレンダー
-
最近の投稿
カテゴリー
設定 → Keyboard → 右ペインの入力ソースにある日本語(Anthy)の右の縦の点3つをクリックし、Preference をクリック ← 開いたウィンドウで辞書タブをクリックし、”辞書の編集コマンド(E):”の右端の縦の点3つをクリックし、霞ウィンドウを開く
右下の追加をクリックし、選択された単語に漢字や記号を入力し、読みに読み方を入力、頻度は500のまま、品詞に該当するものを選び、下にある保存をクリック。
開いているウィンドウを消す。
参考:https://centossrv.com/almalinux/clamav.shtml
# dnf install -y epel-release ← EPELリポジトリインストール
# dnf -y install clamav clamav-server-systemd clamav-update clamav-scanner-systemd ← Clam AntiVirusインストール
# gedit /etc/freshclam.conf
#NotifyClamd /path/to/clamd.conf ← #を取って下記に変更
NotifyClamd /etc/clamd.d/scan.conf ← 追加(ウイルス定義ファイル更新をclamdに通知する)
保存後
# freshclam ← ウイルス定義ファイル最新化
前略
bytecode.cvd updated (version: 333, sigs: 92, f-level: 63, builder: awillia2)
ERROR: NotifyClamd: No communication socket specified in /etc/clamd.d/scan.conf
ERROR: Can’t send to clamd: Socket operation on non-socket
# gedit /etc/clamd.d/scan.conf ← Clam AntiVirus設定ファイル編集
#User clamscan ← 行頭に#を追加してコメントアウト(root権限で動作するようにする)
# Path to a local socket file the daemon will listen on.
# Default: disabled (must be specified by a user)
LocalSocket /run/clamd.scan/clamd.sock ← 行頭の#を削除
# systemctl start clamd@scan ← clamd起動
# systemctl enable clamd@scan ← clamd自動起動設定 [root@almalinux ~]
# systemctl start clamav-freshclam ← clamav-freshclam起動 [root@almalinux ~]
# systemctl enable clamav-freshclam ← clamav-freshclam自動起動設定
# clamdscan -c /etc/clamd.d/scan.conf –remove ← ウイルススキャンテスト(ウイルスなしの場合)
/root: OK
———– SCAN SUMMARY ———–
Infected files: 0
Time: 53.727 sec (0 m 53 s)
Start Date: 2023:02:10 09:54:05
End Date: 2023:02:10 09:54:59
# wget http://www.eicar.org/download/eicar.com ← テスト用ウイルスをダウンロード
# wget http://www.eicar.org/download/eicar.com.txt ← 〃
# wget http://www.eicar.org/download/eicar_com.zip ← 〃
# wget http://www.eicar.org/download/eicarcom2.zip ← 〃
# clamdscan -c /etc/clamd.d/scan.conf –remove ← ウイルススキャンテスト(ウイルスありの場合)
/root/eicar.com: Eicar-Test-Signature FOUND ← ウイルス検知 /root/eicar.com: Removed. ← ウイルス削除
/root/eicar.com.txt: Eicar-Test-Signature FOUND ← ウイルス検知 /root/eicar.com.txt: Removed. ← ウイルス削除
/root/eicar_com.zip: Eicar-Test-Signature FOUND ← ウイルス検知 /root/eicar_com.zip: Removed. ← ウイルス削除 /root/eicarcom2.zip: Eicar-Test-Signature FOUND ← ウイルス検知
/root/eicarcom2.zip: Removed. ← ウイルス削除
———– SCAN SUMMARY ———–
Infected files: 4 ← 4つのウイルスを検知した
Time: 23.913 sec (0 m 23 s)
# gedit /etc/cron.daily/clamdscan ← ウイルススキャン日次実行スクリプト作成 #!/bin/bash
# 設定ファイル
CONFIG=/etc/clamd.d/scan.conf
# スキャン実行 # ※ウイルス検知時は隔離ディレクトリへ隔離
CLAMSCANLOG=`mktemp`
QUARANTINEDIR=/tmp/clamdscan-quarantinedir-$(date +%Y%m%d)
mkdir -p ${QUARANTINEDIR}
clamdscan -c ${CONFIG} –move=${QUARANTINEDIR} / > ${CLAMSCANLOG} 2>&1
# ウイルス検知時のみroot宛にメール通知
if [ -z “$(grep FOUND$ ${CLAMSCANLOG})” ]; then
rm -rf ${QUARANTINEDIR}
else
grep -A 1 FOUND$ ${CLAMSCANLOG} | mail -s “Virus Found in `hostname` => ${QUARANTINEDIR}” root
fi
# スキャンログをシスログに出力 cat ${CLAMSCANLOG} | logger -t $(basename ${0})
rm -f ${CLAMSCANLOG}
# chmod +x /etc/cron.daily/clamdscan ← ウイルススキャン日次実行スクリプトへ実行権限付加
# echo ExcludePath ^/tmp/clamdscan-quarantinedir-.*/ >> /etc/clamd.d/scan.conf ← ウイルス隔離ディレクトリをスキャン対象外にする
# echo ExcludePath ^/proc/ >> /etc/clamd.d/scan.conf ← 例として/procディレクトリをスキャン対象外にする
# echo ExcludePath ^/sys/ >> /etc/clamd.d/scan.conf ← 例として/sysディレクトリをスキャン対象外にする
# systemctl restart clamd@scan ← clamd再起動(スキャン除外設定反映)
参考:https://centossrv.com/almalinux/chkrootkit.shtml
# git clone https://github.com/Magentron/chkrootkit.git ← rootkitのダウンロード
# cp chkrootkit/chkrootkit /usr/local/bin/ ← 保存場所の変更
# rm -rf chkrootkit ← ダウンロードしたchkrootkitを削除
# chkrootkit | grep INFECTED ← chkrootkit実行
Checking `chsh’… INFECTED
ありゃー、chshが汚染されている!almalinuxをインストールしたばかりなので、誤検知だとは思うが、chshで何だ?使ったことは無いので調べると、
ログイン時のシェルを変更するコマンドだった。
私はログインシェルを変更しないので、削除して置いた。(場所は /usr/bin/chsh)
再度チェック
# chkrootkit | grep INFECTED
今度は何も表示されないのでOK
ある時、サブホストのalmalinux8でやった時も
Searching for Linux.Xor.DDoS … INFECTED: Possible Malicious Linux.Xor.DDoS installed
となったので、/tmpを調べるとks-script-a4bxme_eとks-script-x04f19_9に実行フラグが付いていたので、それを外し、再度チェックしたら、OKだった。
chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
# gedit /etc/cron.daily/chkrootkit
#!/bin/bash
LOG=/tmp/$(basename ${0})
# chkrootkit実行
chkrootkit > $LOG 2>&1
# ログ出力
cat $LOG | logger -t $(basename ${0})
# SMTPSのbindshell誤検知対応
if [ ! -z "$(grep 465 $LOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $LOG
fi
# upstartパッケージ更新時のSuckit誤検知対応
if [ ! -z "$(grep Suckit $LOG)" ] && \
[ -z "$(rpm -V `rpm -qf /sbin/init`)" ]; then
sed -i '/Suckit/d' $LOG
fi
# rootkit検知時のみroot宛メール送信
[ ! -z "$(grep INFECTED $LOG)" ] && \
grep INFECTED $LOG | mail -s "chkrootkit report in `hostname`" root
chkrootkit実行スクリプトへ実行権限付加
# chmod 700 /etc/cron.daily/chkrootkit
コマンドが改竄された場合に備えて、汚染のないコマンド軍を保存しておく
# mkdir chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリ作成
# cp `which –skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/ ← chkrootkit使用コマンドを退避先ディレクトリへコピー # chkrootkit -p /root/chkrootkitcmd|grep INFECTED ← 試しに退避したchkrootkit使用コマンドを使用してchkrootkit実行
# zip -r chkrootkitcmd.zip chkrootkitcmd/ && rm -rf chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリを圧縮して削除
# echo|mail -a chkrootkitcmd.zip -s chkrootkitcmd.zip root ← chkrootkit使用コマンド(圧縮版)をroot宛にメール送信
# rm -f chkrootkitcmd.zip ← chkrootkit使用コマンド(圧縮版)削除
このところ危険なメールが多いなー。上の画像を見て欲い。何と私が差出人になっている。勿論こんなメールは送信していない。この時点でこのメールは破棄すること。実は差出人は偽造できるのだ。昔はデタラメなメアドを使っていたが、私のメールサーバーもそうだが、送信者が実在するか調べてから受信トレイに入れるので、デタラメなメアドは使えなくなっている。なので受信者のメアドに偽装しているのだ。
因みにこのメールはIPアドレスが157.7.88.194から発進されている。またこのメアドのプロバイダーはGMO Internet だ。何で判るかというと、ヘッダーを全て表示するにすると見る事が出来る。(thunderbirdの場合は 表示→ヘッダー→すべて)下記がそのヘッダーの一部
赤線の所が送信してきたIPアドレスで、このアドレスの持ち主を調べると(ここで調べられる) プロバイダーはGMO Internetというわけだ
皆さんはメールを読む時何に注意しますか?
今後は是非、差出人に注意してください。上の図の赤線の所を見て下さい。ここは
@xfeamqx.cnとなっています。@マーク以降はドメインと呼ばれるもので、誰が(どのドメインから)送ったかがわかりますが、肝心なのは最後の.cnです。これは中国から送られて来ています。ETCが中国からメールを送ることは絶対にありませんので、明らかに騙そうとしていますので、絶対に本文の青線部分はクリックしてはいけません。
ただ、これは偽造出来るので信じてはいけませんが、この場合は明らかにおかしいので偽造はされていません。
差出人を偽造したメールがあるので、興味がある方はここをクリック
先ずはインストールだがEPELを有効にしておく事(ここの最後を参照)
参考(https://centossrv.com/tripwire.shtml)
# dnf -y install tripwire インストール
# tripwire-setup-keyfiles 設定ファイルを作成
表示が出た後
Enter the site keyfile passphrase: ここで自分で決めたサイトPWを入力
Verify the site keyfile passphrase: 再度入力
少しして
Enter the local keyfile passphrase: ここで自分で決めたローカルPWを入力
Verify the local keyfile passphrase: 再度入力 する
少しして
Please enter your site passphrase:
となるので、サイトPWを入力 再度聞いてくる、
Please enter your site passphrase: となるので、サイトPWを入力 これで終了
# gedit /etc/tripwire/twcfg.txt 設定の修正
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =true trueに変更
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =4 4に変更
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t
で保存しておく、次にTripwire設定ファイル(暗号署名版)作成
# twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
site passphraseを聞いてくるので入力。その後設定ファイルを削除
# rm -f /etc/tripwire/twcfg.txt
ポリシーファイル最適化スクリプト作成
# gedit /etc/tripwire/twpolmake.pl
#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# ----------------------------------------------------------------
# Usage:
# perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------
#
$POLFILE=$ARGV[0];
open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;
while (<POL>) {
chomp;
if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
$myhost = `hostname` ; chomp($myhost) ;
if ($thost ne $myhost) {
$_="HOSTNAME=\"$myhost\";" ;
}
}
elsif ( /^{/ ) {
$INRULE=1 ;
}
elsif ( /^}/ ) {
$INRULE=0 ;
}
elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
$ret = ($sharp =~ s/\#//g) ;
if ($tpath eq '/sbin/e2fsadm' ) {
$cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
}
if (! -s $tpath) {
$_ = "$sharp#$tpath$cond" if ($ret == 0) ;
}
else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;
# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new ← ポリシーファイル最適化
# echo ! “/var/lib/tripwire/`hostname`.twd ;” >> /etc/tripwire/twpol.txt.new ← Tripwireデータベース自体をチェック対象外にする
# echo ! “/tmp/tripwire.log ;” >> /etc/tripwire/twpol.txt.new ← Tripwireログをチェック対象外にする
最適化済ポリシーファイルを元にポリシーファイル(暗号署名版)作成
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new
site passphraseを聞いてくるので入力。そしてポリシーファイル(テキスト版)削除
# rm -f /etc/tripwire/twpol.txt*
Tripwireデータベース作成
# tripwire -m i -s -c /etc/tripwire/tw.cfg
local passphraseを聞いてくるので入力 Tripwireチェック実行
# tripwire -m c -s -c /etc/tripwire/tw.cfg
Open Source Tripwire(R) 2.4.3.7 Integrity Check Report
Report generated by: root
Report created on: 2023年01月17日 05時40分21秒
Database last updated on: Never
=========================================================================
Report Summary:
=========================================================================
Host name: kvm5.inpac.jp
Host IP address: 133.149.213.105
Host ID: None
Policy file used: /etc/tripwire/tw.pol
Configuration file used: /etc/tripwire/tw.cfg
Database file used: /var/lib/tripwire/kvm5.inpac.jp.twd
Command line used: tripwire -m c -s -c /etc/tripwire/tw.cfg
=========================================================================
Rule Summary:
=========================================================================
-------------------------------------------------------------------------
Section: Unix File System
-------------------------------------------------------------------------
Rule Name Severity Level Added Removed Modified
--------- -------------- ----- ------- ---
User binaries 66 0 0 0
Tripwire Binaries 100 0 0 0
Libraries 66 0 0 0
Operating System Utilities 100 0 0 0
File System and Disk Administraton Programs
100 0 0 0
Kernel Administration Programs 100 0 0 0
Networking Programs 100 0 0 0
System Administration Programs 100 0 0 0
Hardware and Device Control Programs
100 0 0 0
System Information Programs 100 0 0 0
(/sbin/runlevel)
Application Information Programs
100 0 0 0
(/sbin/rtmon)
Critical Utility Sym-Links 100 0 0 0
Shell Binaries 100 0 0 0
Critical system boot files 100 0 0 0
* Tripwire Data Files 100 1 0 0
System boot changes 100 0 0 0
OS executables and libraries 100 0 0 0
Security Control 100 0 0 0
Login Scripts 100 0 0 0
Critical configuration files 100 0 0 0
* Root config files 100 0 0 1
Invariant Directories 66 0 0 0
Temporary directories 33 0 0 0
Critical devices 100 0 0 0
(/proc/kcore)
Total objects scanned: 44064
Total violations found: 2
=========================================================================
Object Summary:
=========================================================================
# Section: Unix File System
-------------------------------------------------------------------------
-------------------------------------------------------------------------
Rule Name: Tripwire Data Files (/var/lib/tripwire)
Severity Level: 100
-------------------------------------------------------------------------
Added:
"/var/lib/tripwire/kvm5.inpac.jp.twd"
-------------------------------------------------------------------------
Rule Name: Root config files (/root)
Severity Level: 100
-------------------------------------------------------------------------
Modified:
"/root/.local/share/gnome-shell/application_state"
=========================================================================
Error Report:
=========================================================================
No Errors
-------------------------------------------------------------------------
*** End of report ***
Open Source Tripwire 2.4 Portions copyright 2000-2018 Tripwire, Inc. Tripwire is a registered
trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
for details use --version. This is free software which may be redistributed
or modified only under certain conditions; see COPYING for details.
All rights reserved.
firewallスクリプトの作成
# gedit firewall.sh
#!/bin/bash #---------------------------------------# # 設定開始 # #---------------------------------------# # 内部ネットワークアドレス定義 LOCALNET=192.168.XX.0/24 #---------------------------------------# # 設定終了 # #---------------------------------------# # # ファイアウォール設定初期化 # systemctl stop firewalld rm -f /etc/firewalld/zones/* rm -f /etc/firewalld/ipsets/* systemctl start firewalld firewall-cmd --reload >/dev/null # # 内部からのアクセスを許可 # firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.0.0.0/8" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.0.0/12" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="${LOCALNET}" accept" --permanent >/dev/null # # SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 # sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf # # ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf # # ICMP Redirectパケットは拒否 # sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf done # # Source Routedパケットは拒否 # sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf done # # IPアドレスリスト取得 # IP_LIST=/tmp/cidr.txt CHK_IP_LIST=/tmp/IPLIST if [ ! -f ${IP_LIST} ]; then wget -q http://nami.jp/ipv4bycc/cidr.txt.gz gunzip -c cidr.txt.gz > ${IP_LIST} rm -f cidr.txt.gz fi rm -f ${CHK_IP_LIST} # # ゾーン(日本国内)作成 # # domestic(日本国内)ゾーン作成 firewall-cmd --new-zone=domestic --permanent >/dev/null # domestic(日本国内)IPセット作成 firewall-cmd --new-ipset=domestic --type=hash:net --permanent >/dev/null # 日本国内のIPアドレスリスト作成 domestic_ipset=`mktemp` for addr in `cat ${IP_LIST} | grep ^JP | awk '{print $2}'` do echo ${addr} >> ${domestic_ipset} done # 日本国内のIPアドレスリストをdomestic(日本国内)IPセットに登録 firewall-cmd --ipset=domestic --add-entries-from-file=${domestic_ipset} --permanent >/dev/null rm -f ${domestic_ipset} # domestic(日本国内)IPセットをdomestic(日本国内)ゾーンに登録 firewall-cmd --zone=domestic --add-source=ipset:domestic --permanent >/dev/null # IPアドレス更新チェック用に退避 grep ^JP ${IP_LIST} >> $CHK_IP_LIST # 以降,日本国内からのみアクセスを許可したい場合はdomesticゾーンにサービスを追加する # 全国警察施設への攻撃元上位5カ国(日本・アメリカを除く)からのアクセスを破棄 # 直近1週間の状況 http://www.npa.go.jp/cyberpolice/detect/observation.html # 前月の状況 http://www.npa.go.jp/cyberpolice/detect/index.html # 国コード一覧 https://ja.wikipedia.org/wiki/ISO_3166-1#%E7%95%A5%E5%8F%B7%E4%B8%80%E8%A6%A7 DROP_COUNTRY_LIST=(BG HK RO CN GB) # drop_country(アクセス禁止国)IPセット作成 firewall-cmd --new-ipset=drop_country --type=hash:net --permanent >/dev/null # アクセス禁止国のIPアドレスリスト作成 drop_ipset=`mktemp` for country in "${DROP_COUNTRY_LIST[@]}" do for addr in `cat ${IP_LIST} | grep ^${country} | awk '{print $2}'` do echo ${addr} >> ${drop_ipset} done grep ^${country} ${IP_LIST} >> ${CHK_IP_LIST} done # アクセス禁止国のIPアドレスリストをdrop_country(アクセス禁止国)IPセットに登録 firewall-cmd --ipset=drop_country --add-entries-from-file=${drop_ipset} --permanent >/dev/null rm -f ${drop_ipset} # drop_country(アクセス禁止国)IPセットをdropゾーンに登録 firewall-cmd --zone=drop --add-source=ipset:drop_country --permanent >/dev/null #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここから) # #----------------------------------------------------------# # 外部からのSSH(TCP22番ポート)へのアクセスを日本国内からのみ許可 # ※SSHサーバーを公開する場合のみ firewall-cmd --remove-service=ssh --zone=public --permanent >/dev/null firewall-cmd --add-service=ssh --zone=domestic --permanent >/dev/null # 外部からのDNS(TCP/UDP53番ポート)へのアクセスを許可 # ※外部向けDNSサーバーを運用する場合のみ firewall-cmd --add-service=dns --zone=domestic --permanent >/dev/null firewall-cmd --add-service=dns --zone=public --permanent >/dev/null # 外部からのHTTP(TCP80番ポート)へのアクセスを許可 # ※Webサーバーを公開する場合のみ firewall-cmd --add-service=http --zone=domestic --permanent >/dev/null firewall-cmd --add-service=http --zone=public --permanent >/dev/null # 外部からのHTTPS(TCP443番ポート)へのアクセスを許可 # ※Webサーバーを公開する場合のみ firewall-cmd --add-service=https --zone=domestic --permanent >/dev/null firewall-cmd --add-service=https --zone=public --permanent >/dev/null # 外部からのSMTP(TCP25番ポート)へのアクセスを許可 # ※SMTPサーバーを公開する場合のみ firewall-cmd --add-service=smtp --zone=domestic --permanent >/dev/null firewall-cmd --add-service=smtp --zone=public --permanent >/dev/null # 外部からのSUBMISSION(TCP587番ポート)へのアクセスを日本国内からのみ許可 # ※SMTPサーバーを公開する場合のみ # ※SMTPSサーバー(TCP465番ポート)を公開する場合は不要 firewall-cmd --add-service=smtp-submission --zone=domestic --permanent >/dev/null # 外部からのSMTPS(TCP465番ポート)へのアクセスを日本国内からのみ許可 # ※SMTPSサーバーを公開する場合のみ 2>&1 firewall-cmd --add-service=smtps --zone=domestic --permanent >/dev/null # 外部からのPOP3(TCP110番ポート)へのアクセスを日本国内からのみ許可 # ※POP3サーバーを公開する場合のみ firewall-cmd --add-service=pop3 --zone=domestic --permanent >/dev/null # 外部からのPOP3S(TCP995番ポート)へのアクセスを日本国内からのみ許可 # ※POP3Sサーバーを公開する場合のみ firewall-cmd --add-service=pop3s --zone=domestic --permanent >/dev/null # 外部からのIMAP(TCP143番ポート)へのアクセスを日本国内からのみ許可 # ※IMAPサーバーを公開する場合のみ firewall-cmd --add-service=imap --zone=domestic --permanent >/dev/null # 外部からのIMAPS(TCP993番ポート)へのアクセスを日本国内からのみ許可 # ※IMAPSサーバーを公開する場合のみ firewall-cmd --add-service=imaps --zone=domestic --permanent >/dev/null # 外部からのL2TP over IPsec(UDP500番ポート、UDP4500番ポート)へのアクセスを日本国内からのみ許可 # ※SoftEther VPN Serverを公開する場合のみ firewall-cmd --add-service=ipsec --zone=domestic --permanent >/dev/null # 外部からのUsermin(TCP20000番ポート)へのアクセスを日本国内からのみ許可 # ※Userminサーバーを公開する場合のみ firewall-cmd --add-port=20000/tcp --zone=domestic --permanent >/dev/null # 外部からのJpsonic(TCP8080番ポート)へのアクセスを日本国内からのみ許可 # ※Jpsonicを公開する場合のみ firewall-cmd --add-port=8080/tcp --zone=domestic --permanent >/dev/null #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここまで) # #----------------------------------------------------------# # 拒否IPアドレスからのアクセスはログを記録せずに破棄 # ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと # (/root/deny_ipがなければなにもしない) if [ -s /root/deny_ip ]; then for ip in `cat /root/deny_ip` do firewall-cmd --zone=drop --permanent --add-source=${ip} --permanent >/dev/null done fi # ファイアウォール設定反映 firewall-cmd --reload >/dev/null #!/bin/bash #---------------------------------------# # 設定開始 # #---------------------------------------# # 内部ネットワークアドレス定義 LOCALNET=192.168.1.0/24 #---------------------------------------# # 設定終了 # #---------------------------------------# # # ファイアウォール設定初期化 # systemctl stop firewalld rm -f /etc/firewalld/zones/* rm -f /etc/firewalld/ipsets/* systemctl start firewalld firewall-cmd --reload >/dev/null # # 内部からのアクセスを許可 # firewall-cmd --add-rich-rule="rule family="ipv4" source address="10.0.0.0/8" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.0.0/12" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept" --permanent >/dev/null firewall-cmd --add-rich-rule="rule family="ipv4" source address="${LOCALNET}" accept" --permanent >/dev/null # # SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 # sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf # # ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 # sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf # # ICMP Redirectパケットは拒否 # sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf done # # Source Routedパケットは拒否 # sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf done # # IPアドレスリスト取得 # IP_LIST=/tmp/cidr.txt CHK_IP_LIST=/tmp/IPLIST if [ ! -f ${IP_LIST} ]; then wget -q http://nami.jp/ipv4bycc/cidr.txt.gz gunzip -c cidr.txt.gz > ${IP_LIST} rm -f cidr.txt.gz fi rm -f ${CHK_IP_LIST} # # ゾーン(日本国内)作成 # # domestic(日本国内)ゾーン作成 firewall-cmd --new-zone=domestic --permanent >/dev/null # domestic(日本国内)IPセット作成 firewall-cmd --new-ipset=domestic --type=hash:net --permanent >/dev/null # 日本国内のIPアドレスリスト作成 domestic_ipset=`mktemp` for addr in `cat ${IP_LIST} | grep ^JP | awk '{print $2}'` do echo ${addr} >> ${domestic_ipset} done # 日本国内のIPアドレスリストをdomestic(日本国内)IPセットに登録 firewall-cmd --ipset=domestic --add-entries-from-file=${domestic_ipset} --permanent >/dev/null rm -f ${domestic_ipset} # domestic(日本国内)IPセットをdomestic(日本国内)ゾーンに登録 firewall-cmd --zone=domestic --add-source=ipset:domestic --permanent >/dev/null # IPアドレス更新チェック用に退避 grep ^JP ${IP_LIST} >> $CHK_IP_LIST # 以降,日本国内からのみアクセスを許可したい場合はdomesticゾーンにサービスを追加する # 全国警察施設への攻撃元上位5カ国(日本・アメリカを除く)からのアクセスを破棄 # 直近1週間の状況 http://www.npa.go.jp/cyberpolice/detect/observation.html # 前月の状況 http://www.npa.go.jp/cyberpolice/detect/index.html # 国コード一覧 https://ja.wikipedia.org/wiki/ISO_3166-1#%E7%95%A5%E5%8F%B7%E4%B8%80%E8%A6%A7 DROP_COUNTRY_LIST=(BG HK RO CN GB) # drop_country(アクセス禁止国)IPセット作成 firewall-cmd --new-ipset=drop_country --type=hash:net --permanent >/dev/null # アクセス禁止国のIPアドレスリスト作成 drop_ipset=`mktemp` for country in "${DROP_COUNTRY_LIST[@]}" do for addr in `cat ${IP_LIST} | grep ^${country} | awk '{print $2}'` do echo ${addr} >> ${drop_ipset} done grep ^${country} ${IP_LIST} >> ${CHK_IP_LIST} done # アクセス禁止国のIPアドレスリストをdrop_country(アクセス禁止国)IPセットに登録 firewall-cmd --ipset=drop_country --add-entries-from-file=${drop_ipset} --permanent >/dev/null rm -f ${drop_ipset} # drop_country(アクセス禁止国)IPセットをdropゾーンに登録 firewall-cmd --zone=drop --add-source=ipset:drop_country --permanent >/dev/null #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここから) # #----------------------------------------------------------# # 外部からのSSH(TCP22番ポート)へのアクセスを日本国内からのみ許可 # ※SSHサーバーを公開する場合のみ firewall-cmd --remove-service=ssh --zone=public --permanent >/dev/null firewall-cmd --add-service=ssh --zone=domestic --permanent >/dev/null # 外部からのDNS(TCP/UDP53番ポート)へのアクセスを許可 # ※外部向けDNSサーバーを運用する場合のみ firewall-cmd --add-service=dns --zone=domestic --permanent >/dev/null firewall-cmd --add-service=dns --zone=public --permanent >/dev/null # 外部からのHTTP(TCP80番ポート)へのアクセスを許可 # ※Webサーバーを公開する場合のみ firewall-cmd --add-service=http --zone=domestic --permanent >/dev/null firewall-cmd --add-service=http --zone=public --permanent >/dev/null # 外部からのHTTPS(TCP443番ポート)へのアクセスを許可 # ※Webサーバーを公開する場合のみ firewall-cmd --add-service=https --zone=domestic --permanent >/dev/null firewall-cmd --add-service=https --zone=public --permanent >/dev/null # 外部からのSMTP(TCP25番ポート)へのアクセスを許可 # ※SMTPサーバーを公開する場合のみ firewall-cmd --add-service=smtp --zone=domestic --permanent >/dev/null firewall-cmd --add-service=smtp --zone=public --permanent >/dev/null # 外部からのSUBMISSION(TCP587番ポート)へのアクセスを日本国内からのみ許可 # ※SMTPサーバーを公開する場合のみ # ※SMTPSサーバー(TCP465番ポート)を公開する場合は不要 firewall-cmd --add-service=smtp-submission --zone=domestic --permanent >/dev/null # 外部からのSMTPS(TCP465番ポート)へのアクセスを日本国内からのみ許可 # ※SMTPSサーバーを公開する場合のみ 2>&1 firewall-cmd --add-service=smtps --zone=domestic --permanent >/dev/null # 外部からのPOP3(TCP110番ポート)へのアクセスを日本国内からのみ許可 # ※POP3サーバーを公開する場合のみ firewall-cmd --add-service=pop3 --zone=domestic --permanent >/dev/null # 外部からのPOP3S(TCP995番ポート)へのアクセスを日本国内からのみ許可 # ※POP3Sサーバーを公開する場合のみ firewall-cmd --add-service=pop3s --zone=domestic --permanent >/dev/null # 外部からのIMAP(TCP143番ポート)へのアクセスを日本国内からのみ許可 # ※IMAPサーバーを公開する場合のみ firewall-cmd --add-service=imap --zone=domestic --permanent >/dev/null # 外部からのIMAPS(TCP993番ポート)へのアクセスを日本国内からのみ許可 # ※IMAPSサーバーを公開する場合のみ firewall-cmd --add-service=imaps --zone=domestic --permanent >/dev/null # 外部からのL2TP over IPsec(UDP500番ポート、UDP4500番ポート)へのアクセスを日本国内からのみ許可 # ※SoftEther VPN Serverを公開する場合のみ firewall-cmd --add-service=ipsec --zone=domestic --permanent >/dev/null # 外部からのUsermin(TCP20000番ポート)へのアクセスを日本国内からのみ許可 # ※Userminサーバーを公開する場合のみ firewall-cmd --add-port=20000/tcp --zone=domestic --permanent >/dev/null # 外部からのJpsonic(TCP8080番ポート)へのアクセスを日本国内からのみ許可 # ※Jpsonicを公開する場合のみ firewall-cmd --add-port=8080/tcp --zone=domestic --permanent >/dev/null #----------------------------------------------------------# # 各種サービスを公開する場合の設定(ここまで) # #----------------------------------------------------------# # 拒否IPアドレスからのアクセスはログを記録せずに破棄 # ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと # (/root/deny_ipがなければなにもしない) if [ -s /root/deny_ip ]; then for ip in `cat /root/deny_ip` do firewall-cmd --zone=drop --permanent --add-source=${ip} --permanent >/dev/null done fi # ファイアウォール設定反映 firewall-cmd --reload >/dev/null
IPアドレスリストチェックスクリプト作成
# gedit /etc/cron.daily/iplist_check.sh
#!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # 新旧IPLIST差分チェック件数(0を指定するとチェックしない) # ※新旧IPLIST差分がSABUN_CHKで指定した件数を越える場合はfirewall設定スクリプトを実行しない # ※新旧IPLIST差分チェック理由はhttp://centossrv.com/bbshtml/webpatio/1592.shtmlを参照 SABUN_CHK=100 [ $# -ne 0 ] && SABUN_CHK=${1} # IPアドレスリスト取得 IP_LIST=/tmp/cidr.txt CHK_IP_LIST=/tmp/IPLIST wget -q http://nami.jp/ipv4bycc/cidr.txt.gz gunzip -c cidr.txt.gz > $IP_LIST rm -f cidr.txt.gz # チェック対象IPアドレスリスト最新化 rm -f IPLIST.new for country in `awk '{print $1}' $CHK_IP_LIST |uniq` do grep ^$country $IP_LIST >> IPLIST.new done # チェック対象IPアドレスリスト更新チェック diff -q $CHK_IP_LIST IPLIST.new > /dev/null 2>&1 if [ $? -ne 0 ]; then if [ ${SABUN_CHK} -ne 0 ]; then if [ $(diff $CHK_IP_LIST IPLIST.new | egrep -c '<|>') -gt ${SABUN_CHK} ]; then ( diff $CHK_IP_LIST IPLIST.new echo echo "firewall.sh not executed." ) | mail -s 'IPLIST UPDATE' root rm -f IPLIST.new exit fi fi /bin/mv IPLIST.new $CHK_IP_LIST sh /root/firewall.sh > /dev/null else rm -f IPLIST.new fi
IPアドレスリストチェックスクリプトに実行権限付加
# chmod +x /etc/cron.daily/iplist_check.sh
ファイアウォール設定スクリプト実行
# bash firewall.sh
firewall自動起動設定
# systemctl enable firewalld
*日本語入力
どう言う訳か日本語の指定を指定してインストールしたが日本語の入力が出来ない!
ので、日本語入力が出来るように、右上のスイッチアイコンをクリックし、表示された比較的下に設定(歯車アイコン)があるのでクリック、表示されたウィンドウの左ペインでKeyboardをクリックし下の画像のように続ける
これで出来るようになるが、terminalやブラウザ等を選んでおかないと半角/全角キーを押しても切り替わらない。
*OSをアップデートする
# dnf upgrade
*SELINUXを無効にする
本来は有効のまま使用すべきとは思うが、経験上、有効にしておくと多くの設定で躓くので、私の力量では無効にしておきます。# gedit /etc/selinux/config#SELINUX=enforcing コメントアウトしてSELINUX=disabled 追記するRHEL9ではSELINUX=disabled オプションによる SELinux の無効化が出来なくなったとの事で、
このままだと再起動が必要ですが、
# setenforce 0
とコマンドを入れ、一時的に無効にしておき、作業を続けます。また、再起動時には無効になります。
# grubby –update-kernel ALL –args selinux=0 注:オプションはーー selinuxを無効化
# shutdown -r now 再起動で反映される。
上記の様にしてから、念のため
# getenforce
Disabled
に成っている事を確認しておく
*インストール時に作成した一般ユーザーが管理者に出来るように設定
# usermod -G wheel ユーザー名 管理者グループであるwheelグループに入れる
# gedit /etc/pam.d/su
開いたウィンドウの7行目くらいにある1行をコメントを取る
auth required pam_wheel.so use_uid 先頭に付いていた#を削除する
で保存しておく
*aliasを設定
このホストから色々なインフォメーションやエラーがrootに送信されるので、それを自分のメアドに転送する
# gedit /etc/aliases
開いたウィンドウの一番下にある所を上記のように変更
#root: marc #でコメントアウト
root: 自分のメアド 追記
そして
# echo test|mail root root宛に本文がtestのメールを送る
あれーエラーだ
postdrop: warning: unable to look up public/pickup: No such file or directory
調べてみるとpostfixが起動していないことが原因。メールコマンドがmailxからs-nailに変更になったので、インストールしていたが、最初からpostfixがインストールされていた見たい。なので
# systemctl start postfix postfixを起動
# systemctl enable postfix 再起動時に起動する
で、無事メールがくるようになった。
追記2023/2/10: 別のコンピューターにalmalinuxをインストールして同じ設定をしたが、まだメールが来ない。メールログを確認する(/var/log/maillog)、すると
Feb 10 05:05:33 test postfix/smtp[13792]: C0F1E200B084: to=<s-report@kinryo.net>, orig_to=<root>, relay=kinryo.net[133.149.213.105]:25, delay=1088, delays=1087/0.03/0.53/0.03, dsn=4.1.8, status=deferred (host kinryo.net[133.149.213.105] said: 450 4.1.8 <root@test.locatdomain>: Sender address rejected: Domain not found (in reply to RCPT TO command))
のログがあった。つまりtest.locatdomain何て知らないよと言っているのでメールが来ない。メールサーバーはこのホストではなく、別のホストで動いているので、ドメインを変更する
# gedit /etc/hostname
test.kinryo.net → これに変更して保存
# shutdown -r now → 設定を反映させるために再起動
これでメールは来るが、tripwireのレポートでIPアドレスがmailサーバーが動いているサーバーのグローバルIPになっている(多分tripwireが自分のIPを調べる時にDNSをチェックしているみたい)
*夜間に自動アップデート
# dnf install dnf-automatic → 自動アップデートをインストール
# gedit /etc/dnf/automatic.conf
# アップデートの種類
# default すべてのパッケージ
# security セキュリティ関係のみ
upgrade_type = default
# アップデート適用のタイミング
# yes 即時、自動更新したいならこちら
# no ダウンロードのみ
apply_updates = yes
上記の設定を記入後保存
*サードパーティリポジトリの追加 注:オプションはーー
*EPEL
# dnf config-manager –set-enabled crb ver 8は不要
# dnf -y install epel-release
# dnf -y update
*Remi
# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm ver 8
# dnf -y config-manager –set-enabled remi
でEPELとRemiのリポジトリーを追加しておきます。
バージョン8の頃はディスプレーに表示が出ず、インストール出来なかったが、今回はバージョン9.1になっていたのでトライしたらインストールが出来た。
2023-5-17追記:今日サブホストにalmalinux 8.7をインストールしたら、無事完了した。
マザーボード:Micro Start B350I PRO AC
CPU: AMD Ryzen5 5600G
メモリー:28GB
インストール
http://ftp.iij.ad.jp/pub/linux/almalinux/9.1/isos/x86_64/ からAlmaLinux-9-latest-x86_64-dvd.iso 8.0G をダウンロードする。
これをUSBにコピーする為にWindow10でrufusを使って起動ディスクを作成しますが、これは https://www.gigafree.net/system/os/Rufus.html 等を参考にしてください。
完成したら、USBをコンピューターに差し、起動しますが、DeleteキーやF2キーでBIOSに入って、BOOTディスクがUSBになっている事を確認してから、再度、起動
この後、https://centossrv.com/almalinux/almalinux8.shtml
を参考にインストールを行いますが、このページはバージョン8ですが、9でも変更ありません。
但し私はインストールするプログラムを選択する時、ベース環境は”サーバー(GUI使用)”を選択後、右のプログラムを下記のように選んでおきました。
*デバッグツール *ネットワークファイルシステムクライアント
*パーフォマンスツール *リモートデスクトップ接続クライアント
*Linux向けリモート管理 *仮想化クライアント *仮想化ハイパーバイザー
*仮想化ツール *コンソールインターネットツール *開発ツール
*グラフィカル管理ツール *セキュリティーツール *システムツール
又、IPアドレス、ホスト名等は自分の環境に合わせて設定します。
注:「Red Hat Linux 9」からは、Anacondaのバージョン依存によるものの、インストール中でもキー操作「Shift」+「PrtScn」(Print Screen)により画面キャプチャが可能となった。とあるが私は出来ませんでした。私が使用しているキーボードはfnキーとF12キーを押すとプリントスクリーンになるので、Shift+fn+F12を押しても出来ませんでした。
悪さをするのは中国人しかいないのか?
上の赤線の所を見て欲しい。ここがドメインと呼ばれるインターネットの住所に当たる所。@マークの前は無視する事、ここは好き勝手に付けることが出来る。とくに@以降の最後は.cnになっていて、これは中国のドメインだ。ただ気を付けて欲しいのはこの部分は偽造可能な事だ。今回は偽造していないが。
右下の赤線の所には yangnaizi.cnと書いてあるが、これは黄色地の”注文の詳細を表示する”の所にマウスを持って行くと表示される(携帯の場合は長押し)。やっぱり中国のWEBに飛ばされる。絶対にクリックしない事。