Linux

Ubuntu 20.04 APM 설치

Jack Moon 2022. 6. 20. 11:34

ubuntu 버전 확인

$ cat /etc/issue
Ubuntu 20.04.4 LTS \n \l

네트워크 관련 정보 보기

$ route  (gateway)
$ ip a  (ip address)
$ systemd-resolve --status  (nameserver)

Timezone 변경

$ date
Mon 20 Jun 2022 01:42:25 AM UTC
$ sudo timedatectl set-timezone 'Asia/Seoul'
$ date
Mon 20 Jun 2022 10:43:16 AM KST

패키지 업그레이드 & 불필요해진 패키지 삭제

$ sudo apt update (리스트 업데이트)
$ sudo apt upgrade (패키지 업그레이드)
$ sudo apt autoremove (불필요해진 패키지 삭제)

Apache2 설치

$ sudo apt install apache2 
$ sudo systemctl start apache2 (시작)
$ sudo systemctl stop apache2 (중지)
$ sudo systemctl status apache2 (상태)
$ sudo systemctl enable apache2 (부팅시 자동실행)
$ sudo systemctl disable apache2 (부팅시 자동실행 해제)

apache2 설정 ( DocumentRoot /home/jack/www 라면)

$ sudo vi /etc/apache2/apache2.conf
<Directory /home/jack/www>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
$ sudo vi /etc/apache2/sites-available/000-default.conf 
DocumentRoot /home/jack/www

8080 열기

# 열려 있는 포트 확인
$ netstat -lntp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -    
# 포트 설정 변경
$ sudo vi /etc/apache2/ports.conf
Listen 80
Listen 8080
<IfModule ssl_module>
        Listen 443
</IfModule>
<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
# apache2 재실행
$ sudo systemctl restart apache2

Mariadb 설치 (2022. 6. 20 현재)

최신 버전을 설치하기 위해서 MariaDB의 apt repository 추가

https://downloads.mariadb.org/mariadb/repositories

$ sudo apt-get install apt-transport-https curl
$ sudo curl -o /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc 'https://mariadb.org/mariadb_release_signing_key.asc'
$ sudo sh -c "echo 'deb https://mirror.yongbok.net/mariadb/repo/10.8/ubuntu focal main' >>/etc/apt/sources.list"
$ sudo apt-get update

mariadb 설치

$ sudo apt install mariadb-server
$ sudo apt install mariadb-client
$ sudo systemctl enable mariadb (부팅시 자동실행)

MariaDB secure 설정 (기본값 설정해도 무방, 그래도 읽어보자)

$ sudo mysql_secure_installation

테스트

$ mysql -uroot -p
Enter password: 
MariaDB [(none)]> select version();
+-------------------------------------+
| version()                           |
+-------------------------------------+
| 10.8.3-MariaDB-1:10.8.3+maria~focal |
+-------------------------------------+
1 row in set (0.000 sec)

설정변경

$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
# 외부 IP에서 접속을 허용하고 싶은 경우
bind-address            = 0.0.0.0
# 포트 변경
port = 3300

사용자 추가 : GRANT 명령으로 추가하면 바로 추가됨

# mysql -uroot -p
Enter password: 
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* to user_id@'%' IDENTIFIED BY 'user_pw';
# 만약 특정 DB만 접속한다면
MariaDB [(none)]> GRANT ALL PRIVILEGES ON DB_name.* to user_id@'%' IDENTIFIED BY 'user_pw';

패스워드 변경

MariaDB [(none)]> set password = password('test1234');
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

PHP설치

$ sudo apt install php php-common

확장모듈 설치

$ sudo apt install php-{mysql,bz2,imagick,imap,intl,gd,mbstring,pspell,curl,readline,xml,xmlrpc,zip}
$ php -v
PHP 7.4.3 (cli) (built: Jun 13 2022 13:43:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

php.ini

/etc/php/7.4/apache2/php.ini
/etc/php/7.4/cli/php.ini
date.timezone = Asia/Seoul  # timezone 설정
memory_limit = 128M  # PHP 스크립트가 사용할 수 있는 최대 메모리 용량을 설정
post_max_size = 8M  # POST 로 파일업로드시 최대용량
upload_max_filesize = 2M  # 업로드 파일의 최대 크기
max_file_uploads = 20  # 최대 업로드 갯수
display_errors = On  # 개발 단계에서는 On 완료되면 Off

방화벽 설정하기

ufw 중지하고 iptables 사용

 

1. 패키지 설치
시스템 재부팅시 iptables 초기화됨. 저장하기 위하여 iptables-persistent netfilter-persistent 설치

apt install iptables-persistent netfilter-persistent

설치를 마치면 
/etc/iptables/rules.v4
/etc/iptables/rules.v6 
생성됨

 

2. 허용할 ip 목록의 파일을 만들고 shell 로 실행

# vi allowIP 
10.0.2.0/24
192.168.0.16
# vi iptables.sh 
#!/bin/bash
#iptables 경로
iptables=/usr/sbin/iptables
#기존 설정 모두 삭제
$iptables -F
#established and related 접속 허용
$iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 포트 스캔 방지
$iptables -A INPUT -d 0.0.0.0/0 -p icmp -j DROP
#Localhost에서의 Taraffic은 허용
$iptables -A INPUT -i lo -j ACCEPT
#invalid packets DROP 
$iptables -A INPUT -m state --state INVALID -j DROP
# ssh
while read allowip
do
	$iptables -A INPUT -s $allowip -p tcp --dport 22 -j ACCEPT
done < allowIP
# mysql
while read allowip
do
	$iptables -A INPUT -s $allowip -p tcp --dport 3306 -j ACCEPT
done < allowIP
# 80(WEB) ACCEPT 
# 1초에 10번 이상의 HTTP 접근을 할 경우 차단
$iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 10 --name HTTP -j DROP
$iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 나머지 차단
$iptables -P INPUT DROP
$iptables -P FORWARD DROP
echo -e "\nDone.\n"
exit;

iptables.sh 파일에 실행 권한을 주고

chmod +x iptables.sh

실행

 

3. iptables 설정 변경 후

# netfilter-persistent save
# netfilter-persistent reload

'Linux' 카테고리의 다른 글

Ubuntu Server 22.04  (0) 2023.02.10
리눅스 (Linux) crontab-e 하면 nano 에서 열린다. 난 vi 로 열고 싶다.  (0) 2022.08.19
sudo 사용하기  (0) 2022.06.16
centos 8 yum 에러  (0) 2022.06.16
Vi Editor 이것만은 외우자  (0) 2022.04.06