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 |