Một số lưu ý khi dùng bản Ubuntu 20.04 trên máy ảo Oracle cloud:
1/ Dọn dẹp iptables:
Bản Ubuntu build sẵn của Oracle nhét đủ thứ linh tinh vào iptables, nên dọn sạch đi, đỡ rối và gây khó khăn khi cần mở port truy cập.
Code:
sudo su
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
netfilter-persistent save
Mục đích của các câu này là set iptables về defaut, mở hết tất cả các kết nối và xóa sạch các cấu hình linh tinh hiện có, sau đó lưu lại khi khởi động.
2/ Dùng UFW và chỉ cho phép 1 kết nối từ nhà vào máy ảo:
Khi iptables mở hết các kết nối thì đương nhiên là ai trên Internet cũng truy cập được vào máy ảo. Ubuntu có sẵn ứng dụng tường lửa ufw, mình sẽ dùng ufw để kiểm soát truy cập. UFW thực chất cũng gọi iptables lên để thi hành thôi, nhưng có cú pháp đơn giản hơn nhiều so với đám câu lệnh loằng ngoằng của iptables cũng như firewall-cmd.
Code:
ufw allow 22/tcp
ufw enable
Lưu ý thứ tự 2 câu trên, đầu tiên mở SSH, sau đó bật ufw lên. Do mặc định ufw sẽ chặn mọi kết nối từ ngoài vào nên nếu không mở SSH trước mà bật ufw lên thì tự mình đã khóa mình ở bên ngoài cửa luôn.
Tạo 1 script lấy IP từ tên miền dynamic dns của nhà và chỉ cho phép IP đó truy cập vào máy ảo, mình không dùng cách cho phép list IP VN truy cập vào nữa do nếu nạp list IP của VN vào thì đống câu lệnh của tường lửa sẽ phình ra quá nhiều, máy ảo xử lý cũng mệt.
Code:
nano ufw-ddns.sh
#!/bin/bash
HOSTNAME=THAY_TÊN_DDNS_VÀO_ĐÂY
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi
new_ip=$(host $HOSTNAME | head -n1 | cut -f4 -d ' ')
old_ip=$(/usr/sbin/ufw status | grep $HOSTNAME | head -n1 | tr -s ' ' | cut -f3 -d ' ')
if [ "$new_ip" = "$old_ip" ] ; then
echo IP address has not changed
else
if [ -n "$old_ip" ] ; then
/usr/sbin/ufw delete allow from $old_ip to any
fi
/usr/sbin/ufw allow from $new_ip to any comment $HOSTNAME
fi
Chỉnh cho script này chạy liên tục mỗi 2 phút để cập nhật IP:
Code:
chmod +x ufw-ddns.sh
crontab -e
*/2 * * * * /home/ubuntu/ufw-ddns.sh
Chỉnh ufw giữ trạng thái đang hoạt động khi restart máy, nếu không khi restart máy, ufw sẽ bị tắt:
Code:
nano /lib/systemd/system/ufw.service
Before=network.target
After=netfilter-persistent.service
3/ Tắt IPv6:
Mặc định máy ảo sẽ được cấp 1 IPv4 và 1 IPv6, bình thường mình chỉ dùng IPv4 nên mình tắt IPv6 này đi luôn cho đỡ rối
Code:
nano /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=1"
update-grub
reboot
Sau khi reboot xong dùng lệnh sau để xem IP, nếu IPv6 biến mất là ok: